
bfd_boolean mips_parse_register(char **sptr,uint *symval_ptr,uint *channels_ptr)

{
  byte *pbVar1;
  byte bVar2;
  byte *e;
  bfd_boolean bVar3;
  undefined *puVar4;
  bfd_boolean bVar5;
  byte bVar6;
  uint uVar7;
  byte *e_00;
  byte bVar8;
  byte *s;
  uint uVar9;
  uint symval;
  
  s = (byte *)*sptr;
  bVar2 = PTR_lex_type_000b5e9c[*s];
  e = s;
  if ((bVar2 & 2) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[s[1]];
    e = s + 1;
  }
  while ((bVar2 & 1) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[e[1]];
    e = e + 1;
  }
  bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval);
  if (bVar3 == 0) {
    bVar3 = 0;
    if (channels_ptr != (uint *)0x0) {
      uVar7 = 1;
      uVar9 = 0;
      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;
      e_00 = e;
      bVar2 = 0x7a;
      bVar8 = 0x77;
      while( true ) {
        bVar6 = bVar2;
        if ((s < e_00) && (e_00[-1] == bVar8)) {
          e_00 = e_00 + -1;
          uVar9 = uVar9 | uVar7;
        }
        uVar7 = uVar7 << 1;
        if (bVar6 == 0) break;
        pbVar1 = puVar4 + 2;
        puVar4 = puVar4 + 1;
        bVar2 = *pbVar1;
        bVar8 = bVar6;
      }
      if (((uVar9 != 0) &&
          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&
         ((symval & 0x460000) != 0)) {
        bVar3 = 1;
        *sptr = (char *)e;
        *symval_ptr = symval;
        *channels_ptr = uVar9;
      }
    }
  }
  else {
    *sptr = (char *)e;
    *symval_ptr = symval;
    if (channels_ptr == (uint *)0x0) {
      return 1;
    }
    bVar3 = 1;
    *channels_ptr = 0;
  }
  return bVar3;
}



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

{
  byte *pbVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  undefined *puVar5;
  byte bVar6;
  uint uVar7;
  byte *pbVar8;
  byte bVar9;
  byte *pbVar10;
  undefined4 uVar11;
  uint uVar12;
  uint local_30 [2];
  
  pbVar10 = (byte *)*param_1;
  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];
  pbVar3 = pbVar10;
  if ((bVar2 & 2) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];
    pbVar3 = pbVar10 + 1;
  }
  while ((bVar2 & 1) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];
    pbVar3 = pbVar3 + 1;
  }
  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);
  if (iVar4 == 0) {
    uVar11 = 0;
    if (param_3 != (uint *)0x0) {
      uVar7 = 1;
      uVar12 = 0;
      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;
      pbVar8 = pbVar3;
      bVar2 = 0x7a;
      bVar9 = 0x77;
      while( true ) {
        bVar6 = bVar2;
        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {
          pbVar8 = pbVar8 + -1;
          uVar12 = uVar12 | uVar7;
        }
        uVar7 = uVar7 << 1;
        if (bVar6 == 0) break;
        pbVar1 = puVar5 + 2;
        puVar5 = puVar5 + 1;
        bVar2 = *pbVar1;
        bVar9 = bVar6;
      }
      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&
         ((local_30[0] & 0x460000) != 0)) {
        uVar11 = 1;
        *param_1 = pbVar3;
        *param_2 = local_30[0];
        *param_3 = uVar12;
      }
    }
  }
  else {
    *param_1 = pbVar3;
    *param_2 = local_30[0];
    if (param_3 == (uint *)0x0) {
      return 1;
    }
    uVar11 = 1;
    *param_3 = 0;
  }
  return uVar11;
}


lui gp,0x6
addiu gp,gp,0x2928
addu gp,gp,t9
addiu sp,sp,-0x48
lw v1,-0x7de4(gp)
sw s2,0x28(sp)
sw s6,0x38(sp)
or s6,a2,zero
sw s5,0x34(sp)
or s5,a0,zero
sw s1,0x24(sp)
sw gp,0x10(sp)
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s0,0x20(sp)
lw s2,0x0(a0)
lbu v0,0x0(s2)
addu v0,v1,v0
lbu v0,0x0(v0)
andi a0,v0,0x2
beq a0,zero,0x0005b504
_or s1,a1,zero
lbu v0,0x1(s2)
addu v0,v1,v0
lbu v0,0x0(v0)
andi v0,v0,0x1
beq v0,zero,0x0005b3f0
_addiu s0,s2,0x1
addiu s0,s0,0x1
lbu v0,0x0(s0)
addu v0,v1,v0
lbu v0,0x0(v0)
andi v0,v0,0x1
bne v0,zero,0x0005b3d4
_nop
lw s4,-0x78bc(gp)
addiu s3,sp,0x18
or a1,s0,zero
or a2,s3,zero
addiu s4,s4,-0x4d64
or t9,s4,zero
bal 0x0005b29c
_or a0,s2,zero
lw gp,0x10(sp)
bne v0,zero,0x0005b4e4
_or s7,v0,zero
beq s6,zero,0x0005b4b0
_lw v0,-0x7e34(gp)
li v1,0x7a
li a0,0x1
or s8,zero,zero
addiu v0,v0,-0x5cd8
li a3,0x77
b 0x0005b448
_or a1,s0,zero
or a3,v1,zero
lb v1,0x1(v0)
sltu a2,s2,a1
beq a2,zero,0x0005b468
_nop
lb a2,-0x1(a1)
bne a2,a3,0x0005b468
_nop
addiu a1,a1,-0x1
or s8,s8,a0
addiu v0,v0,0x1
bne v1,zero,0x0005b440
_sll a0,a0,0x1
beq s8,zero,0x0005b4b0
_or a2,s3,zero
or t9,s4,zero
bal 0x0005b29c
_or a0,s2,zero
beq v0,zero,0x0005b4b0
_lw v1,0x18(sp)
lui v0,0x46
and v0,v1,v0
beq v0,zero,0x0005b4b4
_lw ra,0x44(sp)
li s7,0x1
sw s0,0x0(s5)
sw v1,0x0(s1)
sw s8,0x0(s6)
lw ra,0x44(sp)
or v0,s7,zero
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
lw v0,0x18(sp)
sw s0,0x0(s5)
beq s6,zero,0x0005b50c
_sw v0,0x0(s1)
or s8,zero,zero
li s7,0x1
b 0x0005b4b0
_sw s8,0x0(s6)
b 0x0005b3e4
_or s0,s2,zero
lw ra,0x44(sp)
li s7,0x1
lw s8,0x40(sp)
or v0,s7,zero
lw s6,0x38(sp)
lw s7,0x3c(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
(translation_unit "undefined4 FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}\n\n" (function_definition "undefined4 FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" type_identifier (function_declarator "FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(undefined4 *param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint local_30 [2];" type_identifier (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar2 = PTR_lex_type_000b5e9c[*pbVar10];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[*pbVar10]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[*pbVar10]" identifier [ (pointer_expression "*pbVar10" * identifier) ])) ;) (expression_statement "pbVar3 = pbVar10;" (assignment_expression "pbVar3 = pbVar10" identifier = identifier) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[pbVar10[1]]" identifier [ (subscript_expression "pbVar10[1]" identifier [ number_literal ]) ])) ;) (expression_statement "pbVar3 = pbVar10 + 1;" (assignment_expression "pbVar3 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) })) (while_statement "while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" while (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[pbVar3[1]]" identifier [ (subscript_expression "pbVar3[1]" identifier [ number_literal ]) ])) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30)" identifier = (call_expression "FUN_0005b29c(pbVar10,pbVar3,local_30)" identifier (argument_list "(pbVar10,pbVar3,local_30)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;" (assignment_expression "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8" identifier = (binary_expression "PTR_s_operand_000b5e4c + -0x5cd8" identifier + number_literal)) ;) (expression_statement "pbVar8 = pbVar3;" (assignment_expression "pbVar8 = pbVar3" identifier = identifier) ;) (expression_statement "bVar2 = 0x7a;" (assignment_expression "bVar2 = 0x7a" identifier = number_literal) ;) (expression_statement "bVar9 = 0x77;" (assignment_expression "bVar9 = 0x77" identifier = number_literal) ;) (while_statement "while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" { (expression_statement "bVar6 = bVar2;" (assignment_expression "bVar6 = bVar2" identifier = identifier) ;) (if_statement "if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" if (parenthesized_expression "((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9))" ( (binary_expression "(pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)" (parenthesized_expression "(pbVar10 < pbVar8)" ( (binary_expression "pbVar10 < pbVar8" identifier < identifier) )) && (parenthesized_expression "(pbVar8[-1] == bVar9)" ( (binary_expression "pbVar8[-1] == bVar9" (subscript_expression "pbVar8[-1]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" { (expression_statement "pbVar8 = pbVar8 + -1;" (assignment_expression "pbVar8 = pbVar8 + -1" identifier = (binary_expression "pbVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | uVar7;" (assignment_expression "uVar12 = uVar12 | uVar7" identifier = (binary_expression "uVar12 | uVar7" identifier | identifier)) ;) })) (expression_statement "uVar7 = uVar7 << 1;" (assignment_expression "uVar7 = uVar7 << 1" identifier = (binary_expression "uVar7 << 1" identifier << number_literal)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar1 = puVar5 + 2;" (assignment_expression "pbVar1 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar1;" (assignment_expression "bVar2 = *pbVar1" identifier = (pointer_expression "*pbVar1" * identifier)) ;) (expression_statement "bVar9 = bVar6;" (assignment_expression "bVar9 = bVar6" identifier = identifier) ;) })) (if_statement "if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" if (parenthesized_expression "(((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0))" ( (binary_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)" (parenthesized_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0))" ( (binary_expression "(uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30)" identifier = (call_expression "FUN_0005b29c(pbVar10,pbVar8,local_30)" identifier (argument_list "(pbVar10,pbVar8,local_30)" ( identifier , identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((local_30[0] & 0x460000) != 0)" ( (binary_expression "(local_30[0] & 0x460000) != 0" (parenthesized_expression "(local_30[0] & 0x460000)" ( (binary_expression "local_30[0] & 0x460000" (subscript_expression "local_30[0]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = uVar12;" (assignment_expression "*param_3 = uVar12" (pointer_expression "*param_3" * identifier) = identifier) ;) })) })) }) (else_clause "else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" else (compound_statement "{\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" { (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (if_statement "if (param_3 == (uint *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;) }))) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "bfd_boolean mips_parse_register(char **sptr,uint *symval_ptr,uint *channels_ptr)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *e;\n  bfd_boolean bVar3;\n  undefined *puVar4;\n  bfd_boolean bVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *e_00;\n  byte bVar8;\n  byte *s;\n  uint uVar9;\n  uint symval;\n  \n  s = (byte *)*sptr;\n  bVar2 = PTR_lex_type_000b5e9c[*s];\n  e = s;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[s[1]];\n    e = s + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[e[1]];\n    e = e + 1;\n  }\n  bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval);\n  if (bVar3 == 0) {\n    bVar3 = 0;\n    if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }\n  }\n  else {\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }\n  return bVar3;\n}\n\n" (function_definition "bfd_boolean mips_parse_register(char **sptr,uint *symval_ptr,uint *channels_ptr)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *e;\n  bfd_boolean bVar3;\n  undefined *puVar4;\n  bfd_boolean bVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *e_00;\n  byte bVar8;\n  byte *s;\n  uint uVar9;\n  uint symval;\n  \n  s = (byte *)*sptr;\n  bVar2 = PTR_lex_type_000b5e9c[*s];\n  e = s;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[s[1]];\n    e = s + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[e[1]];\n    e = e + 1;\n  }\n  bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval);\n  if (bVar3 == 0) {\n    bVar3 = 0;\n    if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }\n  }\n  else {\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }\n  return bVar3;\n}" type_identifier (function_declarator "mips_parse_register(char **sptr,uint *symval_ptr,uint *channels_ptr)" identifier (parameter_list "(char **sptr,uint *symval_ptr,uint *channels_ptr)" ( (parameter_declaration "char **sptr" primitive_type (pointer_declarator "**sptr" * (pointer_declarator "*sptr" * identifier))) , (parameter_declaration "uint *symval_ptr" type_identifier (pointer_declarator "*symval_ptr" * identifier)) , (parameter_declaration "uint *channels_ptr" type_identifier (pointer_declarator "*channels_ptr" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  byte *e;\n  bfd_boolean bVar3;\n  undefined *puVar4;\n  bfd_boolean bVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *e_00;\n  byte bVar8;\n  byte *s;\n  uint uVar9;\n  uint symval;\n  \n  s = (byte *)*sptr;\n  bVar2 = PTR_lex_type_000b5e9c[*s];\n  e = s;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[s[1]];\n    e = s + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[e[1]];\n    e = e + 1;\n  }\n  bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval);\n  if (bVar3 == 0) {\n    bVar3 = 0;\n    if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }\n  }\n  else {\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }\n  return bVar3;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *e;" type_identifier (pointer_declarator "*e" * identifier) ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "bfd_boolean bVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *e_00;" type_identifier (pointer_declarator "*e_00" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint symval;" type_identifier identifier ;) (expression_statement "s = (byte *)*sptr;" (assignment_expression "s = (byte *)*sptr" identifier = (cast_expression "(byte *)*sptr" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*sptr" * identifier))) ;) (expression_statement "bVar2 = PTR_lex_type_000b5e9c[*s];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[*s]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[*s]" identifier [ (pointer_expression "*s" * identifier) ])) ;) (expression_statement "e = s;" (assignment_expression "e = s" identifier = identifier) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[s[1]];\n    e = s + 1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[s[1]];\n    e = s + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[s[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[s[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[s[1]]" identifier [ (subscript_expression "s[1]" identifier [ number_literal ]) ])) ;) (expression_statement "e = s + 1;" (assignment_expression "e = s + 1" identifier = (binary_expression "s + 1" identifier + number_literal)) ;) })) (while_statement "while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[e[1]];\n    e = e + 1;\n  }" while (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[e[1]];\n    e = e + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[e[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[e[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[e[1]]" identifier [ (subscript_expression "e[1]" identifier [ number_literal ]) ])) ;) (expression_statement "e = e + 1;" (assignment_expression "e = e + 1" identifier = (binary_expression "e + 1" identifier + number_literal)) ;) })) (expression_statement "bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval);" (assignment_expression "bVar3 = mips_parse_register_1((char *)s,(char *)e,&symval)" identifier = (call_expression "mips_parse_register_1((char *)s,(char *)e,&symval)" identifier (argument_list "((char *)s,(char *)e,&symval)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&symval" & identifier) )))) ;) (if_statement "if (bVar3 == 0) {\n    bVar3 = 0;\n    if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }\n  }\n  else {\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar3 = 0;\n    if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }\n  }" { (expression_statement "bVar3 = 0;" (assignment_expression "bVar3 = 0" identifier = number_literal) ;) (if_statement "if (channels_ptr != (uint *)0x0) {\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }" if (parenthesized_expression "(channels_ptr != (uint *)0x0)" ( (binary_expression "channels_ptr != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = 1;\n      uVar9 = 0;\n      puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;\n      e_00 = e;\n      bVar2 = 0x7a;\n      bVar8 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }\n      if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "puVar4 = PTR_s_operand_000b5e4c + -0x5cd8;" (assignment_expression "puVar4 = PTR_s_operand_000b5e4c + -0x5cd8" identifier = (binary_expression "PTR_s_operand_000b5e4c + -0x5cd8" identifier + number_literal)) ;) (expression_statement "e_00 = e;" (assignment_expression "e_00 = e" identifier = identifier) ;) (expression_statement "bVar2 = 0x7a;" (assignment_expression "bVar2 = 0x7a" identifier = number_literal) ;) (expression_statement "bVar8 = 0x77;" (assignment_expression "bVar8 = 0x77" identifier = number_literal) ;) (while_statement "while( true ) {\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar6 = bVar2;\n        if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar4 + 2;\n        puVar4 = puVar4 + 1;\n        bVar2 = *pbVar1;\n        bVar8 = bVar6;\n      }" { (expression_statement "bVar6 = bVar2;" (assignment_expression "bVar6 = bVar2" identifier = identifier) ;) (if_statement "if ((s < e_00) && (e_00[-1] == bVar8)) {\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }" if (parenthesized_expression "((s < e_00) && (e_00[-1] == bVar8))" ( (binary_expression "(s < e_00) && (e_00[-1] == bVar8)" (parenthesized_expression "(s < e_00)" ( (binary_expression "s < e_00" identifier < identifier) )) && (parenthesized_expression "(e_00[-1] == bVar8)" ( (binary_expression "e_00[-1] == bVar8" (subscript_expression "e_00[-1]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n          e_00 = e_00 + -1;\n          uVar9 = uVar9 | uVar7;\n        }" { (expression_statement "e_00 = e_00 + -1;" (assignment_expression "e_00 = e_00 + -1" identifier = (binary_expression "e_00 + -1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar9 | uVar7;" (assignment_expression "uVar9 = uVar9 | uVar7" identifier = (binary_expression "uVar9 | uVar7" identifier | identifier)) ;) })) (expression_statement "uVar7 = uVar7 << 1;" (assignment_expression "uVar7 = uVar7 << 1" identifier = (binary_expression "uVar7 << 1" identifier << number_literal)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar1 = puVar4 + 2;" (assignment_expression "pbVar1 = puVar4 + 2" identifier = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar1;" (assignment_expression "bVar2 = *pbVar1" identifier = (pointer_expression "*pbVar1" * identifier)) ;) (expression_statement "bVar8 = bVar6;" (assignment_expression "bVar8 = bVar6" identifier = identifier) ;) })) (if_statement "if (((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)) {\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }" if (parenthesized_expression "(((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0))" ( (binary_expression "((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)) &&\n         ((symval & 0x460000) != 0)" (parenthesized_expression "((uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0))" ( (binary_expression "(uVar9 != 0) &&\n          (bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)" (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0)" ( (comma_expression "bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval), bVar5 != 0" (assignment_expression "bVar5 = mips_parse_register_1((char *)s,(char *)e_00,&symval)" identifier = (call_expression "mips_parse_register_1((char *)s,(char *)e_00,&symval)" identifier (argument_list "((char *)s,(char *)e_00,&symval)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)e_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&symval" & identifier) )))) , (binary_expression "bVar5 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((symval & 0x460000) != 0)" ( (binary_expression "(symval & 0x460000) != 0" (parenthesized_expression "(symval & 0x460000)" ( (binary_expression "symval & 0x460000" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        bVar3 = 1;\n        *sptr = (char *)e;\n        *symval_ptr = symval;\n        *channels_ptr = uVar9;\n      }" { (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) (expression_statement "*sptr = (char *)e;" (assignment_expression "*sptr = (char *)e" (pointer_expression "*sptr" * identifier) = (cast_expression "(char *)e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*symval_ptr = symval;" (assignment_expression "*symval_ptr = symval" (pointer_expression "*symval_ptr" * identifier) = identifier) ;) (expression_statement "*channels_ptr = uVar9;" (assignment_expression "*channels_ptr = uVar9" (pointer_expression "*channels_ptr" * identifier) = identifier) ;) })) })) }) (else_clause "else {\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }" else (compound_statement "{\n    *sptr = (char *)e;\n    *symval_ptr = symval;\n    if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }\n    bVar3 = 1;\n    *channels_ptr = 0;\n  }" { (expression_statement "*sptr = (char *)e;" (assignment_expression "*sptr = (char *)e" (pointer_expression "*sptr" * identifier) = (cast_expression "(char *)e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*symval_ptr = symval;" (assignment_expression "*symval_ptr = symval" (pointer_expression "*symval_ptr" * identifier) = identifier) ;) (if_statement "if (channels_ptr == (uint *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(channels_ptr == (uint *)0x0)" ( (binary_expression "channels_ptr == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) (expression_statement "*channels_ptr = 0;" (assignment_expression "*channels_ptr = 0" (pointer_expression "*channels_ptr" * identifier) = number_literal) ;) }))) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit "undefined4 FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}\n\n" (function_definition "undefined4 FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" type_identifier (function_declarator "FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(undefined4 *param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint local_30 [2];" type_identifier (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar2 = PTR_lex_type_000b5e9c[*pbVar10];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[*pbVar10]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[*pbVar10]" identifier [ (pointer_expression "*pbVar10" * identifier) ])) ;) (expression_statement "pbVar3 = pbVar10;" (assignment_expression "pbVar3 = pbVar10" identifier = identifier) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[pbVar10[1]]" identifier [ (subscript_expression "pbVar10[1]" identifier [ number_literal ]) ])) ;) (expression_statement "pbVar3 = pbVar10 + 1;" (assignment_expression "pbVar3 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) })) (while_statement "while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" while (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" { (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]]" identifier = (subscript_expression "PTR_lex_type_000b5e9c[pbVar3[1]]" identifier [ (subscript_expression "pbVar3[1]" identifier [ number_literal ]) ])) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30)" identifier = (call_expression "FUN_0005b29c(pbVar10,pbVar3,local_30)" identifier (argument_list "(pbVar10,pbVar3,local_30)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;" (assignment_expression "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8" identifier = (binary_expression "PTR_s_operand_000b5e4c + -0x5cd8" identifier + number_literal)) ;) (expression_statement "pbVar8 = pbVar3;" (assignment_expression "pbVar8 = pbVar3" identifier = identifier) ;) (expression_statement "bVar2 = 0x7a;" (assignment_expression "bVar2 = 0x7a" identifier = number_literal) ;) (expression_statement "bVar9 = 0x77;" (assignment_expression "bVar9 = 0x77" identifier = number_literal) ;) (while_statement "while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" { (expression_statement "bVar6 = bVar2;" (assignment_expression "bVar6 = bVar2" identifier = identifier) ;) (if_statement "if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" if (parenthesized_expression "((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9))" ( (binary_expression "(pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)" (parenthesized_expression "(pbVar10 < pbVar8)" ( (binary_expression "pbVar10 < pbVar8" identifier < identifier) )) && (parenthesized_expression "(pbVar8[-1] == bVar9)" ( (binary_expression "pbVar8[-1] == bVar9" (subscript_expression "pbVar8[-1]" identifier [ number_literal ]) == identifier) ))) )) (compound_statement "{\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" { (expression_statement "pbVar8 = pbVar8 + -1;" (assignment_expression "pbVar8 = pbVar8 + -1" identifier = (binary_expression "pbVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 | uVar7;" (assignment_expression "uVar12 = uVar12 | uVar7" identifier = (binary_expression "uVar12 | uVar7" identifier | identifier)) ;) })) (expression_statement "uVar7 = uVar7 << 1;" (assignment_expression "uVar7 = uVar7 << 1" identifier = (binary_expression "uVar7 << 1" identifier << number_literal)) ;) (if_statement "if (bVar6 == 0) break;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar1 = puVar5 + 2;" (assignment_expression "pbVar1 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar1;" (assignment_expression "bVar2 = *pbVar1" identifier = (pointer_expression "*pbVar1" * identifier)) ;) (expression_statement "bVar9 = bVar6;" (assignment_expression "bVar9 = bVar6" identifier = identifier) ;) })) (if_statement "if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" if (parenthesized_expression "(((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0))" ( (binary_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)" (parenthesized_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0))" ( (binary_expression "(uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" ( (comma_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30)" identifier = (call_expression "FUN_0005b29c(pbVar10,pbVar8,local_30)" identifier (argument_list "(pbVar10,pbVar8,local_30)" ( identifier , identifier , identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((local_30[0] & 0x460000) != 0)" ( (binary_expression "(local_30[0] & 0x460000) != 0" (parenthesized_expression "(local_30[0] & 0x460000)" ( (binary_expression "local_30[0] & 0x460000" (subscript_expression "local_30[0]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (expression_statement "*param_3 = uVar12;" (assignment_expression "*param_3 = uVar12" (pointer_expression "*param_3" * identifier) = identifier) ;) })) })) }) (else_clause "else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" else (compound_statement "{\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" { (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" * identifier) = (subscript_expression "local_30[0]" identifier [ number_literal ])) ;) (if_statement "if (param_3 == (uint *)0x0) {\n      return 1;\n    }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;) }))) (return_statement "return uVar11;" 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 (pointer_declarator * IDENT)) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (pointer_expression * IDENT) ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" (type_identifier "undefined4") (function_declarator "FUN_0005b358(undefined4 *param_1,uint *param_2,uint *param_3)" (identifier "FUN_0005b358") (parameter_list "(undefined4 *param_1,uint *param_2,uint *param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  byte *pbVar3;\n  int iVar4;\n  undefined *puVar5;\n  byte bVar6;\n  uint uVar7;\n  byte *pbVar8;\n  byte bVar9;\n  byte *pbVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  uint local_30 [2];\n  \n  pbVar10 = (byte *)*param_1;\n  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];\n  pbVar3 = pbVar10;\n  if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }\n  while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }\n  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);\n  if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }\n  return uVar11;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint local_30 [2];" (type_identifier "uint") (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" (identifier "pbVar10") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "bVar2 = PTR_lex_type_000b5e9c[*pbVar10];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[*pbVar10]" (identifier "bVar2") (= "=") (subscript_expression "PTR_lex_type_000b5e9c[*pbVar10]" (identifier "PTR_lex_type_000b5e9c") ([ "[") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (] "]"))) (; ";")) (expression_statement "pbVar3 = pbVar10;" (assignment_expression "pbVar3 = pbVar10" (identifier "pbVar3") (= "=") (identifier "pbVar10")) (; ";")) (if_statement "if ((bVar2 & 2) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" (if "if") (parenthesized_expression "((bVar2 & 2) != 0)" (( "(") (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" (( "(") (binary_expression "bVar2 & 2" (identifier "bVar2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];\n    pbVar3 = pbVar10 + 1;\n  }" ({ "{") (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]]" (identifier "bVar2") (= "=") (subscript_expression "PTR_lex_type_000b5e9c[pbVar10[1]]" (identifier "PTR_lex_type_000b5e9c") ([ "[") (subscript_expression "pbVar10[1]" (identifier "pbVar10") ([ "[") (number_literal "1") (] "]")) (] "]"))) (; ";")) (expression_statement "pbVar3 = pbVar10 + 1;" (assignment_expression "pbVar3 = pbVar10 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (while_statement "while ((bVar2 & 1) != 0) {\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" (while "while") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];\n    pbVar3 = pbVar3 + 1;\n  }" ({ "{") (expression_statement "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];" (assignment_expression "bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]]" (identifier "bVar2") (= "=") (subscript_expression "PTR_lex_type_000b5e9c[pbVar3[1]]" (identifier "PTR_lex_type_000b5e9c") ([ "[") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (] "]"))) (; ";")) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30)" (identifier "iVar4") (= "=") (call_expression "FUN_0005b29c(pbVar10,pbVar3,local_30)" (identifier "FUN_0005b29c") (argument_list "(pbVar10,pbVar3,local_30)" (( "(") (identifier "pbVar10") (, ",") (identifier "pbVar3") (, ",") (identifier "local_30") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }\n  else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = 0;\n    if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 != (uint *)0x0) {\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" (if "if") (parenthesized_expression "(param_3 != (uint *)0x0)" (( "(") (binary_expression "param_3 != (uint *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar7 = 1;\n      uVar12 = 0;\n      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;\n      pbVar8 = pbVar3;\n      bVar2 = 0x7a;\n      bVar9 = 0x77;\n      while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }\n      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }\n    }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;" (assignment_expression "puVar5 = PTR_s_operand_000b5e4c + -0x5cd8" (identifier "puVar5") (= "=") (binary_expression "PTR_s_operand_000b5e4c + -0x5cd8" (identifier "PTR_s_operand_000b5e4c") (+ "+") (number_literal "-0x5cd8"))) (; ";")) (expression_statement "pbVar8 = pbVar3;" (assignment_expression "pbVar8 = pbVar3" (identifier "pbVar8") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "bVar2 = 0x7a;" (assignment_expression "bVar2 = 0x7a" (identifier "bVar2") (= "=") (number_literal "0x7a")) (; ";")) (expression_statement "bVar9 = 0x77;" (assignment_expression "bVar9 = 0x77" (identifier "bVar9") (= "=") (number_literal "0x77")) (; ";")) (while_statement "while( true ) {\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        bVar6 = bVar2;\n        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }\n        uVar7 = uVar7 << 1;\n        if (bVar6 == 0) break;\n        pbVar1 = puVar5 + 2;\n        puVar5 = puVar5 + 1;\n        bVar2 = *pbVar1;\n        bVar9 = bVar6;\n      }" ({ "{") (expression_statement "bVar6 = bVar2;" (assignment_expression "bVar6 = bVar2" (identifier "bVar6") (= "=") (identifier "bVar2")) (; ";")) (if_statement "if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" (if "if") (parenthesized_expression "((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9))" (( "(") (binary_expression "(pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)" (parenthesized_expression "(pbVar10 < pbVar8)" (( "(") (binary_expression "pbVar10 < pbVar8" (identifier "pbVar10") (< "<") (identifier "pbVar8")) () ")")) (&& "&&") (parenthesized_expression "(pbVar8[-1] == bVar9)" (( "(") (binary_expression "pbVar8[-1] == bVar9" (subscript_expression "pbVar8[-1]" (identifier "pbVar8") ([ "[") (number_literal "-1") (] "]")) (== "==") (identifier "bVar9")) () ")"))) () ")")) (compound_statement "{\n          pbVar8 = pbVar8 + -1;\n          uVar12 = uVar12 | uVar7;\n        }" ({ "{") (expression_statement "pbVar8 = pbVar8 + -1;" (assignment_expression "pbVar8 = pbVar8 + -1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + -1" (identifier "pbVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar12 = uVar12 | uVar7;" (assignment_expression "uVar12 = uVar12 | uVar7" (identifier "uVar12") (= "=") (binary_expression "uVar12 | uVar7" (identifier "uVar12") (| "|") (identifier "uVar7"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 << 1;" (assignment_expression "uVar7 = uVar7 << 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 << 1" (identifier "uVar7") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (bVar6 == 0) break;" (if "if") (parenthesized_expression "(bVar6 == 0)" (( "(") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar1 = puVar5 + 2;" (assignment_expression "pbVar1 = puVar5 + 2" (identifier "pbVar1") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *pbVar1;" (assignment_expression "bVar2 = *pbVar1" (identifier "bVar2") (= "=") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1"))) (; ";")) (expression_statement "bVar9 = bVar6;" (assignment_expression "bVar9 = bVar6" (identifier "bVar9") (= "=") (identifier "bVar6")) (; ";")) (} "}"))) (if_statement "if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)) {\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" (if "if") (parenthesized_expression "(((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0))" (( "(") (binary_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&\n         ((local_30[0] & 0x460000) != 0)" (parenthesized_expression "((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0))" (( "(") (binary_expression "(uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)" (( "(") (comma_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0" (assignment_expression "iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30)" (identifier "iVar4") (= "=") (call_expression "FUN_0005b29c(pbVar10,pbVar8,local_30)" (identifier "FUN_0005b29c") (argument_list "(pbVar10,pbVar8,local_30)" (( "(") (identifier "pbVar10") (, ",") (identifier "pbVar8") (, ",") (identifier "local_30") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_30[0] & 0x460000) != 0)" (( "(") (binary_expression "(local_30[0] & 0x460000) != 0" (parenthesized_expression "(local_30[0] & 0x460000)" (( "(") (binary_expression "local_30[0] & 0x460000" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0x460000")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar11 = 1;\n        *param_1 = pbVar3;\n        *param_2 = local_30[0];\n        *param_3 = uVar12;\n      }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*param_3 = uVar12;" (assignment_expression "*param_3 = uVar12" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" (else "else") (compound_statement "{\n    *param_1 = pbVar3;\n    *param_2 = local_30[0];\n    if (param_3 == (uint *)0x0) {\n      return 1;\n    }\n    uVar11 = 1;\n    *param_3 = 0;\n  }" ({ "{") (expression_statement "*param_1 = pbVar3;" (assignment_expression "*param_1 = pbVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "*param_2 = local_30[0];" (assignment_expression "*param_2 = local_30[0]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (param_3 == (uint *)0x0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(param_3 == (uint *)0x0)" (( "(") (binary_expression "param_3 == (uint *)0x0" (identifier "param_3") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))
(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: (pointer_declarator 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: (primitive_type) 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: (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: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (subscript_expression argument: (identifier) index: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (return_statement (identifier)))))

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

{
  byte *pbVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  undefined *puVar5;
  byte bVar6;
  uint uVar7;
  byte *pbVar8;
  byte bVar9;
  byte *pbVar10;
  undefined4 uVar11;
  uint uVar12;
  uint local_30 [2];
  
  pbVar10 = (byte *)*param_1;
  bVar2 = PTR_lex_type_000b5e9c[*pbVar10];
  pbVar3 = pbVar10;
  if ((bVar2 & 2) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[pbVar10[1]];
    pbVar3 = pbVar10 + 1;
  }
  while ((bVar2 & 1) != 0) {
    bVar2 = PTR_lex_type_000b5e9c[pbVar3[1]];
    pbVar3 = pbVar3 + 1;
  }
  iVar4 = FUN_0005b29c(pbVar10,pbVar3,local_30);
  if (iVar4 == 0) {
    uVar11 = 0;
    if (param_3 != (uint *)0x0) {
      uVar7 = 1;
      uVar12 = 0;
      puVar5 = PTR_s_operand_000b5e4c + -0x5cd8;
      pbVar8 = pbVar3;
      bVar2 = 0x7a;
      bVar9 = 0x77;
      while( true ) {
        bVar6 = bVar2;
        if ((pbVar10 < pbVar8) && (pbVar8[-1] == bVar9)) {
          pbVar8 = pbVar8 + -1;
          uVar12 = uVar12 | uVar7;
        }
        uVar7 = uVar7 << 1;
        if (bVar6 == 0) break;
        pbVar1 = puVar5 + 2;
        puVar5 = puVar5 + 1;
        bVar2 = *pbVar1;
        bVar9 = bVar6;
      }
      if (((uVar12 != 0) && (iVar4 = FUN_0005b29c(pbVar10,pbVar8,local_30), iVar4 != 0)) &&
         ((local_30[0] & 0x460000) != 0)) {
        uVar11 = 1;
        *param_1 = pbVar3;
        *param_2 = local_30[0];
        *param_3 = uVar12;
      }
    }
  }
  else {
    *param_1 = pbVar3;
    *param_2 = local_30[0];
    if (param_3 == (uint *)0x0) {
      return 1;
    }
    uVar11 = 1;
    *param_3 = 0;
  }
  return uVar11;
}

