
void * valueToText(sqlite3_value *pVal,u8 enc)

{
  ushort uVar1;
  byte bVar3;
  int iVar2;
  
  uVar1 = pVal->flags;
  if ((uVar1 & 0x12) == 0) {
    sqlite3VdbeMemStringify(pVal,enc,'\0');
    bVar3 = pVal->enc;
    goto LAB_00062aa8;
  }
  if ((uVar1 & 0x4000) == 0) {
    pVal->flags = uVar1 | 2;
    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;
LAB_00062acc:
    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);
    if ((enc & 8) != 0) goto LAB_00062a80;
    uVar1 = pVal->flags;
  }
  else {
    iVar2 = sqlite3VdbeMemExpandBlob(pVal);
    if (iVar2 != 0) {
      return (void *)0x0;
    }
    pVal->flags = pVal->flags | 2;
    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;
LAB_00062a74:
    if ((enc & 8) != 0) {
LAB_00062a80:
      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {
        return (void *)0x0;
      }
    }
    uVar1 = pVal->flags;
  }
  if ((uVar1 & 0x202) == 2) {
    vdbeMemAddTerminator(pVal);
    bVar3 = pVal->enc;
  }
  else {
    bVar3 = pVal->enc;
  }
LAB_00062aa8:
  if (bVar3 != (enc & 0xf7)) {
    return (void *)0x0;
  }
  return pVal->z;
}



undefined4 FUN_00062a20(int param_1,uint param_2)

{
  ushort uVar1;
  uint uVar2;
  int iVar3;
  
  uVar1 = *(ushort *)(param_1 + 8);
  if ((uVar1 & 0x12) == 0) {
    FUN_000628b8(param_1,param_2,0);
    uVar2 = (uint)*(byte *)(param_1 + 10);
    goto LAB_00062aa8;
  }
  if ((uVar1 & 0x4000) == 0) {
    *(ushort *)(param_1 + 8) = uVar1 | 2;
    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;
LAB_00062acc:
    FUN_0005b204(param_1,param_2 & 0xf7);
    if ((param_2 & 8) != 0) goto LAB_00062a80;
    uVar1 = *(ushort *)(param_1 + 8);
  }
  else {
    iVar3 = FUN_0005894c();
    if (iVar3 != 0) {
      return 0;
    }
    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;
    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;
LAB_00062a74:
    if ((param_2 & 8) != 0) {
LAB_00062a80:
      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {
        return 0;
      }
    }
    uVar1 = *(ushort *)(param_1 + 8);
  }
  if ((uVar1 & 0x202) == 2) {
    FUN_00058acc(param_1);
    uVar2 = (uint)*(byte *)(param_1 + 10);
  }
  else {
    uVar2 = (uint)*(byte *)(param_1 + 10);
  }
LAB_00062aa8:
  if (uVar2 != (param_2 & 0xf7)) {
    return 0;
  }
  return *(undefined4 *)(param_1 + 0x10);
}


lui gp,0x10
addiu gp,gp,0xb90
addu gp,gp,t9
addiu sp,sp,-0x28
sw s1,0x1c(sp)
or s1,a1,zero
sw s0,0x18(sp)
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s2,0x20(sp)
lhu v0,0x8(a0)
andi v1,v0,0x12
beq v1,zero,0x00062b58
_or s0,a0,zero
andi v1,v0,0x4000
bne v1,zero,0x00062af0
_ori v0,v0,0x2
lbu v1,0xa(s0)
andi s2,s1,0xf7
bne v1,s2,0x00062ac8
_sh v0,0x8(s0)
andi s1,s1,0x8
beq s1,zero,0x00062a90
_nop
lw v0,0x10(s0)
andi v0,v0,0x1
bne v0,zero,0x00062b28
_lw t9,-0x7ea0(gp)
lhu v0,0x8(s0)
li v1,0x2
andi v0,v0,0x202
beq v0,v1,0x00062b74
_lw t9,-0x7ea0(gp)
lbu v0,0xa(s0)
bne v0,s2,0x00062b3c
_lw ra,0x24(sp)
lw v0,0x10(s0)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x7ea0(gp)
or a1,s2,zero
or a0,s0,zero
addiu t9,t9,-0x4dfc
bal 0x0005b204
_andi s1,s1,0x8
bne s1,zero,0x00062a80
_lw gp,0x10(sp)
b 0x00062a94
_lhu v0,0x8(s0)
lw t9,-0x7ea0(gp)
addiu t9,t9,-0x76b4
bal 0x0005894c
_nop
bne v0,zero,0x00062b3c
_lw gp,0x10(sp)
lhu v0,0x8(s0)
andi s2,s1,0xf7
lbu v1,0xa(s0)
ori v0,v0,0x2
beq v1,s2,0x00062a74
_sh v0,0x8(s0)
b 0x00062acc
_lw t9,-0x7ea0(gp)
addiu t9,t9,-0x74a8
bal 0x00058b58
_or a0,s0,zero
beq v0,zero,0x00062a90
_lw gp,0x10(sp)
lw ra,0x24(sp)
or v0,zero,zero
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x7ea0(gp)
or a2,zero,zero
addiu t9,t9,0x28b8
bal 0x000628b8
_andi s2,a1,0xf7
b 0x00062aa8
_lbu v0,0xa(s0)
addiu t9,t9,-0x7534
bal 0x00058acc
_or a0,s0,zero
b 0x00062aa8
_lbu v0,0xa(s0)
(translation_unit "undefined4 FUN_00062a20(int param_1,uint param_2)\n\n{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}\n\n" (function_definition "undefined4 FUN_00062a20(int param_1,uint param_2)\n\n{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" type_identifier (function_declarator "FUN_00062a20(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" if (parenthesized_expression "((uVar1 & 0x12) == 0)" ( (binary_expression "(uVar1 & 0x12) == 0" (parenthesized_expression "(uVar1 & 0x12)" ( (binary_expression "uVar1 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" { (expression_statement "FUN_000628b8(param_1,param_2,0);" (call_expression "FUN_000628b8(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00062aa8;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" if (parenthesized_expression "((uVar1 & 0x4000) == 0)" ( (binary_expression "(uVar1 & 0x4000) == 0" (parenthesized_expression "(uVar1 & 0x4000)" ( (binary_expression "uVar1 & 0x4000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" { (expression_statement "*(ushort *)(param_1 + 8) = uVar1 | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar1 | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "uVar1 | 2" identifier | number_literal)) ;) (if_statement "if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;" if (parenthesized_expression "((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7))" ( (binary_expression "(uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062a74;" goto statement_identifier ;)) (labeled_statement "LAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);" statement_identifier : (expression_statement "FUN_0005b204(param_1,param_2 & 0xf7);" (call_expression "FUN_0005b204(param_1,param_2 & 0xf7)" identifier (argument_list "(param_1,param_2 & 0xf7)" ( identifier , (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) ;)) (if_statement "if ((param_2 & 8) != 0) goto LAB_00062a80;" if (parenthesized_expression "((param_2 & 8) != 0)" ( (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00062a80;" goto statement_identifier ;)) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" else (compound_statement "{\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" { (expression_statement "iVar3 = FUN_0005894c();" (assignment_expression "iVar3 = FUN_0005894c()" identifier = (call_expression "FUN_0005894c()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;" if (parenthesized_expression "((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7))" ( (binary_expression "(uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) != (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062acc;" goto statement_identifier ;)) (labeled_statement "LAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" statement_identifier : (if_statement "if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" if (parenthesized_expression "((param_2 & 8) != 0)" ( (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" { (labeled_statement "LAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" statement_identifier : (if_statement "if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0))" ( (binary_expression "((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)" (parenthesized_expression "((*(uint *)(param_1 + 0x10) & 1) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x10) & 1)" ( (binary_expression "*(uint *)(param_1 + 0x10) & 1" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar3 = FUN_00058b58(param_1), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00058b58(param_1), iVar3 != 0" (assignment_expression "iVar3 = FUN_00058b58(param_1)" identifier = (call_expression "FUN_00058b58(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) }))) }))) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" if (parenthesized_expression "((uVar1 & 0x202) == 2)" ( (binary_expression "(uVar1 & 0x202) == 2" (parenthesized_expression "(uVar1 & 0x202)" ( (binary_expression "uVar1 & 0x202" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" { (expression_statement "FUN_00058acc(param_1);" (call_expression "FUN_00058acc(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" else (compound_statement "{\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" { (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) }))) (labeled_statement "LAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" statement_identifier : (if_statement "if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" if (parenthesized_expression "(uVar2 != (param_2 & 0xf7))" ( (binary_expression "uVar2 != (param_2 & 0xf7)" identifier != (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return *(undefined4 *)(param_1 + 0x10);" return (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ;) })))
(translation_unit "void * valueToText(sqlite3_value *pVal,u8 enc)\n\n{\n  ushort uVar1;\n  byte bVar3;\n  int iVar2;\n  \n  uVar1 = pVal->flags;\n  if ((uVar1 & 0x12) == 0) {\n    sqlite3VdbeMemStringify(pVal,enc,'\0');\n    bVar3 = pVal->enc;\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    pVal->flags = uVar1 | 2;\n    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);\n    if ((enc & 8) != 0) goto LAB_00062a80;\n    uVar1 = pVal->flags;\n  }\n  else {\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }\n  if ((uVar1 & 0x202) == 2) {\n    vdbeMemAddTerminator(pVal);\n    bVar3 = pVal->enc;\n  }\n  else {\n    bVar3 = pVal->enc;\n  }\nLAB_00062aa8:\n  if (bVar3 != (enc & 0xf7)) {\n    return (void *)0x0;\n  }\n  return pVal->z;\n}\n\n" (function_definition "void * valueToText(sqlite3_value *pVal,u8 enc)\n\n{\n  ushort uVar1;\n  byte bVar3;\n  int iVar2;\n  \n  uVar1 = pVal->flags;\n  if ((uVar1 & 0x12) == 0) {\n    sqlite3VdbeMemStringify(pVal,enc,'\0');\n    bVar3 = pVal->enc;\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    pVal->flags = uVar1 | 2;\n    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);\n    if ((enc & 8) != 0) goto LAB_00062a80;\n    uVar1 = pVal->flags;\n  }\n  else {\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }\n  if ((uVar1 & 0x202) == 2) {\n    vdbeMemAddTerminator(pVal);\n    bVar3 = pVal->enc;\n  }\n  else {\n    bVar3 = pVal->enc;\n  }\nLAB_00062aa8:\n  if (bVar3 != (enc & 0xf7)) {\n    return (void *)0x0;\n  }\n  return pVal->z;\n}" primitive_type (pointer_declarator "* valueToText(sqlite3_value *pVal,u8 enc)" * (function_declarator "valueToText(sqlite3_value *pVal,u8 enc)" identifier (parameter_list "(sqlite3_value *pVal,u8 enc)" ( (parameter_declaration "sqlite3_value *pVal" type_identifier (pointer_declarator "*pVal" * identifier)) , (parameter_declaration "u8 enc" type_identifier identifier) )))) (compound_statement "{\n  ushort uVar1;\n  byte bVar3;\n  int iVar2;\n  \n  uVar1 = pVal->flags;\n  if ((uVar1 & 0x12) == 0) {\n    sqlite3VdbeMemStringify(pVal,enc,'\0');\n    bVar3 = pVal->enc;\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    pVal->flags = uVar1 | 2;\n    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);\n    if ((enc & 8) != 0) goto LAB_00062a80;\n    uVar1 = pVal->flags;\n  }\n  else {\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }\n  if ((uVar1 & 0x202) == 2) {\n    vdbeMemAddTerminator(pVal);\n    bVar3 = pVal->enc;\n  }\n  else {\n    bVar3 = pVal->enc;\n  }\nLAB_00062aa8:\n  if (bVar3 != (enc & 0xf7)) {\n    return (void *)0x0;\n  }\n  return pVal->z;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "uVar1 = pVal->flags;" (assignment_expression "uVar1 = pVal->flags" identifier = (field_expression "pVal->flags" identifier -> field_identifier)) ;) (if_statement "if ((uVar1 & 0x12) == 0) {\n    sqlite3VdbeMemStringify(pVal,enc,'\0');\n    bVar3 = pVal->enc;\n    goto LAB_00062aa8;\n  }" if (parenthesized_expression "((uVar1 & 0x12) == 0)" ( (binary_expression "(uVar1 & 0x12) == 0" (parenthesized_expression "(uVar1 & 0x12)" ( (binary_expression "uVar1 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    sqlite3VdbeMemStringify(pVal,enc,'\0');\n    bVar3 = pVal->enc;\n    goto LAB_00062aa8;\n  }" { (expression_statement "sqlite3VdbeMemStringify(pVal,enc,'\0');" (call_expression "sqlite3VdbeMemStringify(pVal,enc,'\0')" identifier (argument_list "(pVal,enc,'\0')" ( identifier , identifier , (char_literal "'\0'" ' escape_sequence ') ))) ;) (expression_statement "bVar3 = pVal->enc;" (assignment_expression "bVar3 = pVal->enc" identifier = (field_expression "pVal->enc" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00062aa8;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x4000) == 0) {\n    pVal->flags = uVar1 | 2;\n    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);\n    if ((enc & 8) != 0) goto LAB_00062a80;\n    uVar1 = pVal->flags;\n  }\n  else {\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }" if (parenthesized_expression "((uVar1 & 0x4000) == 0)" ( (binary_expression "(uVar1 & 0x4000) == 0" (parenthesized_expression "(uVar1 & 0x4000)" ( (binary_expression "uVar1 & 0x4000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pVal->flags = uVar1 | 2;\n    if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);\n    if ((enc & 8) != 0) goto LAB_00062a80;\n    uVar1 = pVal->flags;\n  }" { (expression_statement "pVal->flags = uVar1 | 2;" (assignment_expression "pVal->flags = uVar1 | 2" (field_expression "pVal->flags" identifier -> field_identifier) = (binary_expression "uVar1 | 2" identifier | number_literal)) ;) (if_statement "if (pVal->enc == (enc & 0xf7)) goto LAB_00062a74;" if (parenthesized_expression "(pVal->enc == (enc & 0xf7))" ( (binary_expression "pVal->enc == (enc & 0xf7)" (field_expression "pVal->enc" identifier -> field_identifier) == (parenthesized_expression "(enc & 0xf7)" ( (binary_expression "enc & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062a74;" goto statement_identifier ;)) (labeled_statement "LAB_00062acc:\n    sqlite3VdbeMemTranslate(pVal,enc & 0xf7);" statement_identifier : (expression_statement "sqlite3VdbeMemTranslate(pVal,enc & 0xf7);" (call_expression "sqlite3VdbeMemTranslate(pVal,enc & 0xf7)" identifier (argument_list "(pVal,enc & 0xf7)" ( identifier , (binary_expression "enc & 0xf7" identifier & number_literal) ))) ;)) (if_statement "if ((enc & 8) != 0) goto LAB_00062a80;" if (parenthesized_expression "((enc & 8) != 0)" ( (binary_expression "(enc & 8) != 0" (parenthesized_expression "(enc & 8)" ( (binary_expression "enc & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00062a80;" goto statement_identifier ;)) (expression_statement "uVar1 = pVal->flags;" (assignment_expression "uVar1 = pVal->flags" identifier = (field_expression "pVal->flags" identifier -> field_identifier)) ;) }) (else_clause "else {\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }" else (compound_statement "{\n    iVar2 = sqlite3VdbeMemExpandBlob(pVal);\n    if (iVar2 != 0) {\n      return (void *)0x0;\n    }\n    pVal->flags = pVal->flags | 2;\n    if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }\n    uVar1 = pVal->flags;\n  }" { (expression_statement "iVar2 = sqlite3VdbeMemExpandBlob(pVal);" (assignment_expression "iVar2 = sqlite3VdbeMemExpandBlob(pVal)" identifier = (call_expression "sqlite3VdbeMemExpandBlob(pVal)" identifier (argument_list "(pVal)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      return (void *)0x0;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return (void *)0x0;\n    }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pVal->flags = pVal->flags | 2;" (assignment_expression "pVal->flags = pVal->flags | 2" (field_expression "pVal->flags" identifier -> field_identifier) = (binary_expression "pVal->flags | 2" (field_expression "pVal->flags" identifier -> field_identifier) | number_literal)) ;) (if_statement "if (pVal->enc != (enc & 0xf7)) goto LAB_00062acc;" if (parenthesized_expression "(pVal->enc != (enc & 0xf7))" ( (binary_expression "pVal->enc != (enc & 0xf7)" (field_expression "pVal->enc" identifier -> field_identifier) != (parenthesized_expression "(enc & 0xf7)" ( (binary_expression "enc & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062acc;" goto statement_identifier ;)) (labeled_statement "LAB_00062a74:\n    if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }" statement_identifier : (if_statement "if ((enc & 8) != 0) {\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }" if (parenthesized_expression "((enc & 8) != 0)" ( (binary_expression "(enc & 8) != 0" (parenthesized_expression "(enc & 8)" ( (binary_expression "enc & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }\n    }" { (labeled_statement "LAB_00062a80:\n      if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }" statement_identifier : (if_statement "if ((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)) {\n        return (void *)0x0;\n      }" if (parenthesized_expression "((((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0))" ( (binary_expression "(((uint)pVal->z & 1) != 0) && (iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)" (parenthesized_expression "(((uint)pVal->z & 1) != 0)" ( (binary_expression "((uint)pVal->z & 1) != 0" (parenthesized_expression "((uint)pVal->z & 1)" ( (binary_expression "(uint)pVal->z & 1" (cast_expression "(uint)pVal->z" ( (type_descriptor "uint" type_identifier) ) (field_expression "pVal->z" identifier -> field_identifier)) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0)" ( (comma_expression "iVar2 = sqlite3VdbeMemMakeWriteable(pVal), iVar2 != 0" (assignment_expression "iVar2 = sqlite3VdbeMemMakeWriteable(pVal)" identifier = (call_expression "sqlite3VdbeMemMakeWriteable(pVal)" identifier (argument_list "(pVal)" ( identifier )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return (void *)0x0;\n      }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) }))) (expression_statement "uVar1 = pVal->flags;" (assignment_expression "uVar1 = pVal->flags" identifier = (field_expression "pVal->flags" identifier -> field_identifier)) ;) }))) (if_statement "if ((uVar1 & 0x202) == 2) {\n    vdbeMemAddTerminator(pVal);\n    bVar3 = pVal->enc;\n  }\n  else {\n    bVar3 = pVal->enc;\n  }" if (parenthesized_expression "((uVar1 & 0x202) == 2)" ( (binary_expression "(uVar1 & 0x202) == 2" (parenthesized_expression "(uVar1 & 0x202)" ( (binary_expression "uVar1 & 0x202" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    vdbeMemAddTerminator(pVal);\n    bVar3 = pVal->enc;\n  }" { (expression_statement "vdbeMemAddTerminator(pVal);" (call_expression "vdbeMemAddTerminator(pVal)" identifier (argument_list "(pVal)" ( identifier ))) ;) (expression_statement "bVar3 = pVal->enc;" (assignment_expression "bVar3 = pVal->enc" identifier = (field_expression "pVal->enc" identifier -> field_identifier)) ;) }) (else_clause "else {\n    bVar3 = pVal->enc;\n  }" else (compound_statement "{\n    bVar3 = pVal->enc;\n  }" { (expression_statement "bVar3 = pVal->enc;" (assignment_expression "bVar3 = pVal->enc" identifier = (field_expression "pVal->enc" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_00062aa8:\n  if (bVar3 != (enc & 0xf7)) {\n    return (void *)0x0;\n  }" statement_identifier : (if_statement "if (bVar3 != (enc & 0xf7)) {\n    return (void *)0x0;\n  }" if (parenthesized_expression "(bVar3 != (enc & 0xf7))" ( (binary_expression "bVar3 != (enc & 0xf7)" identifier != (parenthesized_expression "(enc & 0xf7)" ( (binary_expression "enc & 0xf7" identifier & number_literal) ))) )) (compound_statement "{\n    return (void *)0x0;\n  }" { (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pVal->z;" return (field_expression "pVal->z" identifier -> field_identifier) ;) })))
(translation_unit "undefined4 FUN_00062a20(int param_1,uint param_2)\n\n{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}\n\n" (function_definition "undefined4 FUN_00062a20(int param_1,uint param_2)\n\n{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" type_identifier (function_declarator "FUN_00062a20(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" if (parenthesized_expression "((uVar1 & 0x12) == 0)" ( (binary_expression "(uVar1 & 0x12) == 0" (parenthesized_expression "(uVar1 & 0x12)" ( (binary_expression "uVar1 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" { (expression_statement "FUN_000628b8(param_1,param_2,0);" (call_expression "FUN_000628b8(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00062aa8;" goto statement_identifier ;) })) (if_statement "if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" if (parenthesized_expression "((uVar1 & 0x4000) == 0)" ( (binary_expression "(uVar1 & 0x4000) == 0" (parenthesized_expression "(uVar1 & 0x4000)" ( (binary_expression "uVar1 & 0x4000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" { (expression_statement "*(ushort *)(param_1 + 8) = uVar1 | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar1 | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "uVar1 | 2" identifier | number_literal)) ;) (if_statement "if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;" if (parenthesized_expression "((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7))" ( (binary_expression "(uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062a74;" goto statement_identifier ;)) (labeled_statement "LAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);" statement_identifier : (expression_statement "FUN_0005b204(param_1,param_2 & 0xf7);" (call_expression "FUN_0005b204(param_1,param_2 & 0xf7)" identifier (argument_list "(param_1,param_2 & 0xf7)" ( identifier , (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) ;)) (if_statement "if ((param_2 & 8) != 0) goto LAB_00062a80;" if (parenthesized_expression "((param_2 & 8) != 0)" ( (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00062a80;" goto statement_identifier ;)) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" else (compound_statement "{\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" { (expression_statement "iVar3 = FUN_0005894c();" (assignment_expression "iVar3 = FUN_0005894c()" identifier = (call_expression "FUN_0005894c()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;" if (parenthesized_expression "((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7))" ( (binary_expression "(uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) != (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (goto_statement "goto LAB_00062acc;" goto statement_identifier ;)) (labeled_statement "LAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" statement_identifier : (if_statement "if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" if (parenthesized_expression "((param_2 & 8) != 0)" ( (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" ( (binary_expression "param_2 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" { (labeled_statement "LAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" statement_identifier : (if_statement "if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0))" ( (binary_expression "((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)" (parenthesized_expression "((*(uint *)(param_1 + 0x10) & 1) != 0)" ( (binary_expression "(*(uint *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x10) & 1)" ( (binary_expression "*(uint *)(param_1 + 0x10) & 1" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar3 = FUN_00058b58(param_1), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00058b58(param_1), iVar3 != 0" (assignment_expression "iVar3 = FUN_00058b58(param_1)" identifier = (call_expression "FUN_00058b58(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) }))) }))) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" identifier = (pointer_expression "*(ushort *)(param_1 + 8)" * (cast_expression "(ushort *)(param_1 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) }))) (if_statement "if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" if (parenthesized_expression "((uVar1 & 0x202) == 2)" ( (binary_expression "(uVar1 & 0x202) == 2" (parenthesized_expression "(uVar1 & 0x202)" ( (binary_expression "uVar1 & 0x202" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" { (expression_statement "FUN_00058acc(param_1);" (call_expression "FUN_00058acc(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" else (compound_statement "{\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" { (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" identifier = (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) }))) (labeled_statement "LAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" statement_identifier : (if_statement "if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" if (parenthesized_expression "(uVar2 != (param_2 & 0xf7))" ( (binary_expression "uVar2 != (param_2 & 0xf7)" identifier != (parenthesized_expression "(param_2 & 0xf7)" ( (binary_expression "param_2 & 0xf7" identifier & number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) }))) (return_statement "return *(undefined4 *)(param_1 + 0x10);" return (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT & LIT) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return LIT ;) }))) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (compound_statement { (return_statement return LIT ;) }))) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })))
(function_definition "undefined4 FUN_00062a20(int param_1,uint param_2)\n\n{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" (type_identifier "undefined4") (function_declarator "FUN_00062a20(int param_1,uint param_2)" (identifier "FUN_00062a20") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  ushort uVar1;\n  uint uVar2;\n  int iVar3;\n  \n  uVar1 = *(ushort *)(param_1 + 8);\n  if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }\n  if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\nLAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }\n  return *(undefined4 *)(param_1 + 0x10);\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((uVar1 & 0x12) == 0) {\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" (if "if") (parenthesized_expression "((uVar1 & 0x12) == 0)" (( "(") (binary_expression "(uVar1 & 0x12) == 0" (parenthesized_expression "(uVar1 & 0x12)" (( "(") (binary_expression "uVar1 & 0x12" (identifier "uVar1") (& "&") (number_literal "0x12")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000628b8(param_1,param_2,0);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n    goto LAB_00062aa8;\n  }" ({ "{") (expression_statement "FUN_000628b8(param_1,param_2,0);" (call_expression "FUN_000628b8(param_1,param_2,0)" (identifier "FUN_000628b8") (argument_list "(param_1,param_2,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (goto_statement "goto LAB_00062aa8;" (goto "goto") (statement_identifier "LAB_00062aa8") (; ";")) (} "}"))) (if_statement "if ((uVar1 & 0x4000) == 0) {\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }\n  else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" (if "if") (parenthesized_expression "((uVar1 & 0x4000) == 0)" (( "(") (binary_expression "(uVar1 & 0x4000) == 0" (parenthesized_expression "(uVar1 & 0x4000)" (( "(") (binary_expression "uVar1 & 0x4000" (identifier "uVar1") (& "&") (number_literal "0x4000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(ushort *)(param_1 + 8) = uVar1 | 2;\n    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;\nLAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);\n    if ((param_2 & 8) != 0) goto LAB_00062a80;\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" ({ "{") (expression_statement "*(ushort *)(param_1 + 8) = uVar1 | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = uVar1 | 2" (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "uVar1 | 2" (identifier "uVar1") (| "|") (number_literal "2"))) (; ";")) (if_statement "if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;" (if "if") (parenthesized_expression "((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7))" (( "(") (binary_expression "(uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (== "==") (parenthesized_expression "(param_2 & 0xf7)" (( "(") (binary_expression "param_2 & 0xf7" (identifier "param_2") (& "&") (number_literal "0xf7")) () ")"))) () ")")) (goto_statement "goto LAB_00062a74;" (goto "goto") (statement_identifier "LAB_00062a74") (; ";"))) (labeled_statement "LAB_00062acc:\n    FUN_0005b204(param_1,param_2 & 0xf7);" (statement_identifier "LAB_00062acc") (: ":") (expression_statement "FUN_0005b204(param_1,param_2 & 0xf7);" (call_expression "FUN_0005b204(param_1,param_2 & 0xf7)" (identifier "FUN_0005b204") (argument_list "(param_1,param_2 & 0xf7)" (( "(") (identifier "param_1") (, ",") (binary_expression "param_2 & 0xf7" (identifier "param_2") (& "&") (number_literal "0xf7")) () ")"))) (; ";"))) (if_statement "if ((param_2 & 8) != 0) goto LAB_00062a80;" (if "if") (parenthesized_expression "((param_2 & 8) != 0)" (( "(") (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" (( "(") (binary_expression "param_2 & 8" (identifier "param_2") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00062a80;" (goto "goto") (statement_identifier "LAB_00062a80") (; ";"))) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" (else "else") (compound_statement "{\n    iVar3 = FUN_0005894c();\n    if (iVar3 != 0) {\n      return 0;\n    }\n    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;\n    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;\nLAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }\n    uVar1 = *(ushort *)(param_1 + 8);\n  }" ({ "{") (expression_statement "iVar3 = FUN_0005894c();" (assignment_expression "iVar3 = FUN_0005894c()" (identifier "iVar3") (= "=") (call_expression "FUN_0005894c()" (identifier "FUN_0005894c") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;" (assignment_expression "*(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(ushort *)(param_1 + 8) | 2" (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (if_statement "if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;" (if "if") (parenthesized_expression "((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7))" (( "(") (binary_expression "(uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)" (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (!= "!=") (parenthesized_expression "(param_2 & 0xf7)" (( "(") (binary_expression "param_2 & 0xf7" (identifier "param_2") (& "&") (number_literal "0xf7")) () ")"))) () ")")) (goto_statement "goto LAB_00062acc;" (goto "goto") (statement_identifier "LAB_00062acc") (; ";"))) (labeled_statement "LAB_00062a74:\n    if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" (statement_identifier "LAB_00062a74") (: ":") (if_statement "if ((param_2 & 8) != 0) {\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" (if "if") (parenthesized_expression "((param_2 & 8) != 0)" (( "(") (binary_expression "(param_2 & 8) != 0" (parenthesized_expression "(param_2 & 8)" (( "(") (binary_expression "param_2 & 8" (identifier "param_2") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }\n    }" ({ "{") (labeled_statement "LAB_00062a80:\n      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" (statement_identifier "LAB_00062a80") (: ":") (if_statement "if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0))" (( "(") (binary_expression "((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)" (parenthesized_expression "((*(uint *)(param_1 + 0x10) & 1) != 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x10) & 1) != 0" (parenthesized_expression "(*(uint *)(param_1 + 0x10) & 1)" (( "(") (binary_expression "*(uint *)(param_1 + 0x10) & 1" (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_00058b58(param_1), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_00058b58(param_1), iVar3 != 0" (assignment_expression "iVar3 = FUN_00058b58(param_1)" (identifier "iVar3") (= "=") (call_expression "FUN_00058b58(param_1)" (identifier "FUN_00058b58") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (} "}")))) (expression_statement "uVar1 = *(ushort *)(param_1 + 8);" (assignment_expression "uVar1 = *(ushort *)(param_1 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(param_1 + 8)" (* "*") (cast_expression "(ushort *)(param_1 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((uVar1 & 0x202) == 2) {\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }\n  else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" (if "if") (parenthesized_expression "((uVar1 & 0x202) == 2)" (( "(") (binary_expression "(uVar1 & 0x202) == 2" (parenthesized_expression "(uVar1 & 0x202)" (( "(") (binary_expression "uVar1 & 0x202" (identifier "uVar1") (& "&") (number_literal "0x202")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    FUN_00058acc(param_1);\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" ({ "{") (expression_statement "FUN_00058acc(param_1);" (call_expression "FUN_00058acc(param_1)" (identifier "FUN_00058acc") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" (else "else") (compound_statement "{\n    uVar2 = (uint)*(byte *)(param_1 + 10);\n  }" ({ "{") (expression_statement "uVar2 = (uint)*(byte *)(param_1 + 10);" (assignment_expression "uVar2 = (uint)*(byte *)(param_1 + 10)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(byte *)(param_1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_00062aa8:\n  if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" (statement_identifier "LAB_00062aa8") (: ":") (if_statement "if (uVar2 != (param_2 & 0xf7)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar2 != (param_2 & 0xf7))" (( "(") (binary_expression "uVar2 != (param_2 & 0xf7)" (identifier "uVar2") (!= "!=") (parenthesized_expression "(param_2 & 0xf7)" (( "(") (binary_expression "param_2 & 0xf7" (identifier "param_2") (& "&") (number_literal "0xf7")) () ")"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (return_statement "return *(undefined4 *)(param_1 + 0x10);" (return "return") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal))))) (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))

undefined4 MASKED(int param_1,uint param_2)

{
  ushort uVar1;
  uint uVar2;
  int iVar3;
  
  uVar1 = *(ushort *)(param_1 + 8);
  if ((uVar1 & 0x12) == 0) {
    FUN_000628b8(param_1,param_2,0);
    uVar2 = (uint)*(byte *)(param_1 + 10);
    goto LAB_00062aa8;
  }
  if ((uVar1 & 0x4000) == 0) {
    *(ushort *)(param_1 + 8) = uVar1 | 2;
    if ((uint)*(byte *)(param_1 + 10) == (param_2 & 0xf7)) goto LAB_00062a74;
LAB_00062acc:
    FUN_0005b204(param_1,param_2 & 0xf7);
    if ((param_2 & 8) != 0) goto LAB_00062a80;
    uVar1 = *(ushort *)(param_1 + 8);
  }
  else {
    iVar3 = FUN_0005894c();
    if (iVar3 != 0) {
      return 0;
    }
    *(ushort *)(param_1 + 8) = *(ushort *)(param_1 + 8) | 2;
    if ((uint)*(byte *)(param_1 + 10) != (param_2 & 0xf7)) goto LAB_00062acc;
LAB_00062a74:
    if ((param_2 & 8) != 0) {
LAB_00062a80:
      if (((*(uint *)(param_1 + 0x10) & 1) != 0) && (iVar3 = FUN_00058b58(param_1), iVar3 != 0)) {
        return 0;
      }
    }
    uVar1 = *(ushort *)(param_1 + 8);
  }
  if ((uVar1 & 0x202) == 2) {
    FUN_00058acc(param_1);
    uVar2 = (uint)*(byte *)(param_1 + 10);
  }
  else {
    uVar2 = (uint)*(byte *)(param_1 + 10);
  }
LAB_00062aa8:
  if (uVar2 != (param_2 & 0xf7)) {
    return 0;
  }
  return *(undefined4 *)(param_1 + 0x10);
}

