
symint_t add_aux_sym_symint(symint_t aux_word)

{
  symint_t sVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  
  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);
  if (iVar5 != 0) {
    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {
      add_varray_page((varray_t *)(iVar5 + 0xb4));
      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    }
    sVar1 = *(symint_t *)(iVar5 + 0xbc);
    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);
    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;
    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);
    puVar3[1] = aux_word;
    *puVar3 = 4;
    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;
    return sVar1;
  }
                    /* WARNING: Subroutine does not return */
  add_aux_sym_symint(aux_word);
}



void FUN_00029c40(undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  
  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);
  if (iVar5 != 0) {
    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {
      FUN_00029af0(iVar5 + 0xb4);
      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    }
    iVar1 = *(int *)(iVar5 + 0xbc);
    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);
    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;
    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);
    puVar3[1] = param_1;
    *puVar3 = 4;
    *(int *)(iVar5 + 0xbc) = iVar1 + 1;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00029844();
}


lui gp,0x9
addiu gp,gp,0x4040
addu gp,gp,t9
lw v0,-0x7fb0(gp)
addiu sp,sp,-0x28
sw s0,0x1c(sp)
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s1,0x20(sp)
lw s0,-0x12e8(v0)
beq s0,zero,0x00029cdc
_lw t9,-0x7c80(gp)
lhu v1,0xc4(s0)
lhu v0,0xc2(s0)
beq v0,v1,0x00029cc4
_or s1,a0,zero
lw a0,0xb8(s0)
sll a2,v1,0x3
lw v0,0xbc(s0)
addiu v1,v1,0x1
lw ra,0x24(sp)
lw a0,0x8(a0)
addiu a1,v0,0x1
sh v1,0xc4(s0)
addu v1,a0,a2
li a0,0x4
sw s1,0x4(v1)
sw a0,0x0(v1)
sw a1,0xbc(s0)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
lw t9,-0x7c80(gp)
addiu t9,t9,-0x6510
bal 0x00029af0
_addiu a0,s0,0xb4
b 0x00029c80
_lhu v1,0xc4(s0)
addiu t9,t9,-0x67bc
bal 0x00029844
_nop
(translation_unit "void FUN_00029c40(undefined4 param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00029844();\n}\n\n" (function_definition "void FUN_00029c40(undefined4 param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00029844();\n}" primitive_type (function_declarator "FUN_00029c40(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00029844();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);" (assignment_expression "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" identifier = (pointer_expression "*(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" * (cast_expression "(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (binary_expression "PTR_mips_opcodes_000b5cd0 + -0x12e8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" { (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) (if_statement "if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" if (parenthesized_expression "(*(ushort *)(iVar5 + 0xc2) == uVar2)" ( (binary_expression "*(ushort *)(iVar5 + 0xc2) == uVar2" (pointer_expression "*(ushort *)(iVar5 + 0xc2)" * (cast_expression "(ushort *)(iVar5 + 0xc2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc2)" ( (binary_expression "iVar5 + 0xc2" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" { (expression_statement "FUN_00029af0(iVar5 + 0xb4);" (call_expression "FUN_00029af0(iVar5 + 0xb4)" identifier (argument_list "(iVar5 + 0xb4)" ( (binary_expression "iVar5 + 0xb4" identifier + number_literal) ))) ;) (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar1 = *(int *)(iVar5 + 0xbc);" (assignment_expression "iVar1 = *(int *)(iVar5 + 0xbc)" identifier = (pointer_expression "*(int *)(iVar5 + 0xbc)" * (cast_expression "(int *)(iVar5 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(iVar5 + 0xb8) + 8)" * (cast_expression "(int *)(*(int *)(iVar5 + 0xb8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0xb8) + 8)" ( (binary_expression "*(int *)(iVar5 + 0xb8) + 8" (pointer_expression "*(int *)(iVar5 + 0xb8)" * (cast_expression "(int *)(iVar5 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb8)" ( (binary_expression "iVar5 + 0xb8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;" (assignment_expression "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1" (pointer_expression "*(short *)(iVar5 + 0xc4)" * (cast_expression "(short *)(iVar5 + 0xc4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) )))) = (binary_expression "(short)uVar2 + 1" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar2 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar2 * 8)" ( (binary_expression "iVar4 + uVar2 * 8" identifier + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) ;) (expression_statement "puVar3[1] = param_1;" (assignment_expression "puVar3[1] = param_1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = 4;" (assignment_expression "*puVar3 = 4" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "*(int *)(iVar5 + 0xbc) = iVar1 + 1;" (assignment_expression "*(int *)(iVar5 + 0xbc) = iVar1 + 1" (pointer_expression "*(int *)(iVar5 + 0xbc)" * (cast_expression "(int *)(iVar5 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_00029844();" (call_expression "FUN_00029844()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "symint_t add_aux_sym_symint(symint_t aux_word)\n\n{\n  symint_t sVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    sVar1 = *(symint_t *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = aux_word;\n    *puVar3 = 4;\n    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;\n    return sVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  add_aux_sym_symint(aux_word);\n}\n\n" (function_definition "symint_t add_aux_sym_symint(symint_t aux_word)\n\n{\n  symint_t sVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    sVar1 = *(symint_t *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = aux_word;\n    *puVar3 = 4;\n    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;\n    return sVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  add_aux_sym_symint(aux_word);\n}" type_identifier (function_declarator "add_aux_sym_symint(symint_t aux_word)" identifier (parameter_list "(symint_t aux_word)" ( (parameter_declaration "symint_t aux_word" type_identifier identifier) ))) (compound_statement "{\n  symint_t sVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    sVar1 = *(symint_t *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = aux_word;\n    *puVar3 = 4;\n    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;\n    return sVar1;\n  }\n                    /* WARNING: Subroutine does not return */\n  add_aux_sym_symint(aux_word);\n}" { (declaration "symint_t sVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);" (assignment_expression "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" identifier = (pointer_expression "*(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" * (cast_expression "(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (binary_expression "PTR_mips_opcodes_000b5cd0 + -0x12e8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    sVar1 = *(symint_t *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = aux_word;\n    *puVar3 = 4;\n    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;\n    return sVar1;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    sVar1 = *(symint_t *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = aux_word;\n    *puVar3 = 4;\n    *(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;\n    return sVar1;\n  }" { (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) (if_statement "if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" if (parenthesized_expression "(*(ushort *)(iVar5 + 0xc2) == uVar2)" ( (binary_expression "*(ushort *)(iVar5 + 0xc2) == uVar2" (pointer_expression "*(ushort *)(iVar5 + 0xc2)" * (cast_expression "(ushort *)(iVar5 + 0xc2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc2)" ( (binary_expression "iVar5 + 0xc2" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      add_varray_page((varray_t *)(iVar5 + 0xb4));\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" { (expression_statement "add_varray_page((varray_t *)(iVar5 + 0xb4));" (call_expression "add_varray_page((varray_t *)(iVar5 + 0xb4))" identifier (argument_list "((varray_t *)(iVar5 + 0xb4))" ( (cast_expression "(varray_t *)(iVar5 + 0xb4)" ( (type_descriptor "varray_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb4)" ( (binary_expression "iVar5 + 0xb4" identifier + number_literal) ))) ))) ;) (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) })) (expression_statement "sVar1 = *(symint_t *)(iVar5 + 0xbc);" (assignment_expression "sVar1 = *(symint_t *)(iVar5 + 0xbc)" identifier = (pointer_expression "*(symint_t *)(iVar5 + 0xbc)" * (cast_expression "(symint_t *)(iVar5 + 0xbc)" ( (type_descriptor "symint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(iVar5 + 0xb8) + 8)" * (cast_expression "(int *)(*(int *)(iVar5 + 0xb8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0xb8) + 8)" ( (binary_expression "*(int *)(iVar5 + 0xb8) + 8" (pointer_expression "*(int *)(iVar5 + 0xb8)" * (cast_expression "(int *)(iVar5 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb8)" ( (binary_expression "iVar5 + 0xb8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;" (assignment_expression "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1" (pointer_expression "*(short *)(iVar5 + 0xc4)" * (cast_expression "(short *)(iVar5 + 0xc4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) )))) = (binary_expression "(short)uVar2 + 1" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar2 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar2 * 8)" ( (binary_expression "iVar4 + uVar2 * 8" identifier + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) ;) (expression_statement "puVar3[1] = aux_word;" (assignment_expression "puVar3[1] = aux_word" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = 4;" (assignment_expression "*puVar3 = 4" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "*(symint_t *)(iVar5 + 0xbc) = sVar1 + 1;" (assignment_expression "*(symint_t *)(iVar5 + 0xbc) = sVar1 + 1" (pointer_expression "*(symint_t *)(iVar5 + 0xbc)" * (cast_expression "(symint_t *)(iVar5 + 0xbc)" ( (type_descriptor "symint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) )))) = (binary_expression "sVar1 + 1" identifier + number_literal)) ;) (return_statement "return sVar1;" return identifier ;) })) comment (expression_statement "add_aux_sym_symint(aux_word);" (call_expression "add_aux_sym_symint(aux_word)" identifier (argument_list "(aux_word)" ( identifier ))) ;) })))
(translation_unit "void FUN_00029c40(undefined4 param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    \n  FUN_00029844();\n}\n\n" (function_definition "void FUN_00029c40(undefined4 param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    \n  FUN_00029844();\n}" primitive_type (function_declarator "FUN_00029c40(undefined4 param_1)" identifier (parameter_list "(undefined4 param_1)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    \n  FUN_00029844();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);" (assignment_expression "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" identifier = (pointer_expression "*(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" * (cast_expression "(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_mips_opcodes_000b5cd0 + -0x12e8)" ( (binary_expression "PTR_mips_opcodes_000b5cd0 + -0x12e8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" { (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) (if_statement "if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" if (parenthesized_expression "(*(ushort *)(iVar5 + 0xc2) == uVar2)" ( (binary_expression "*(ushort *)(iVar5 + 0xc2) == uVar2" (pointer_expression "*(ushort *)(iVar5 + 0xc2)" * (cast_expression "(ushort *)(iVar5 + 0xc2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc2)" ( (binary_expression "iVar5 + 0xc2" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" { (expression_statement "FUN_00029af0(iVar5 + 0xb4);" (call_expression "FUN_00029af0(iVar5 + 0xb4)" identifier (argument_list "(iVar5 + 0xb4)" ( (binary_expression "iVar5 + 0xb4" identifier + number_literal) ))) ;) (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" identifier = (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar5 + 0xc4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar1 = *(int *)(iVar5 + 0xbc);" (assignment_expression "iVar1 = *(int *)(iVar5 + 0xbc)" identifier = (pointer_expression "*(int *)(iVar5 + 0xbc)" * (cast_expression "(int *)(iVar5 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(iVar5 + 0xb8) + 8)" * (cast_expression "(int *)(*(int *)(iVar5 + 0xb8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0xb8) + 8)" ( (binary_expression "*(int *)(iVar5 + 0xb8) + 8" (pointer_expression "*(int *)(iVar5 + 0xb8)" * (cast_expression "(int *)(iVar5 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb8)" ( (binary_expression "iVar5 + 0xb8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;" (assignment_expression "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1" (pointer_expression "*(short *)(iVar5 + 0xc4)" * (cast_expression "(short *)(iVar5 + 0xc4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc4)" ( (binary_expression "iVar5 + 0xc4" identifier + number_literal) )))) = (binary_expression "(short)uVar2 + 1" (cast_expression "(short)uVar2" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar2 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar2 * 8)" ( (binary_expression "iVar4 + uVar2 * 8" identifier + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) ;) (expression_statement "puVar3[1] = param_1;" (assignment_expression "puVar3[1] = param_1" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = 4;" (assignment_expression "*puVar3 = 4" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "*(int *)(iVar5 + 0xbc) = iVar1 + 1;" (assignment_expression "*(int *)(iVar5 + 0xbc) = iVar1 + 1" (pointer_expression "*(int *)(iVar5 + 0xbc)" * (cast_expression "(int *)(iVar5 + 0xbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xbc)" ( (binary_expression "iVar5 + 0xbc" identifier + number_literal) )))) = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00029844();" (call_expression "FUN_00029844()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00029c40(undefined4 param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    \n  FUN_00029844();\n}" (primitive_type "void") (function_declarator "FUN_00029c40(undefined4 param_1)" (identifier "FUN_00029c40") (parameter_list "(undefined4 param_1)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  int iVar5;\n  \n  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);\n  if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }\n                    \n  FUN_00029844();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (expression_statement "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);" (assignment_expression "iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" (* "*") (cast_expression "(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_mips_opcodes_000b5cd0 + -0x12e8)" (( "(") (binary_expression "PTR_mips_opcodes_000b5cd0 + -0x12e8" (identifier "PTR_mips_opcodes_000b5cd0") (+ "+") (number_literal "-0x12e8")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) {\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }\n    iVar1 = *(int *)(iVar5 + 0xbc);\n    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);\n    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;\n    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);\n    puVar3[1] = param_1;\n    *puVar3 = 4;\n    *(int *)(iVar5 + 0xbc) = iVar1 + 1;\n    return;\n  }" ({ "{") (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar5 + 0xc4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc4)" (( "(") (binary_expression "iVar5 + 0xc4" (identifier "iVar5") (+ "+") (number_literal "0xc4")) () ")"))))) (; ";")) (if_statement "if (*(ushort *)(iVar5 + 0xc2) == uVar2) {\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" (if "if") (parenthesized_expression "(*(ushort *)(iVar5 + 0xc2) == uVar2)" (( "(") (binary_expression "*(ushort *)(iVar5 + 0xc2) == uVar2" (pointer_expression "*(ushort *)(iVar5 + 0xc2)" (* "*") (cast_expression "(ushort *)(iVar5 + 0xc2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc2)" (( "(") (binary_expression "iVar5 + 0xc2" (identifier "iVar5") (+ "+") (number_literal "0xc2")) () ")")))) (== "==") (identifier "uVar2")) () ")")) (compound_statement "{\n      FUN_00029af0(iVar5 + 0xb4);\n      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);\n    }" ({ "{") (expression_statement "FUN_00029af0(iVar5 + 0xb4);" (call_expression "FUN_00029af0(iVar5 + 0xb4)" (identifier "FUN_00029af0") (argument_list "(iVar5 + 0xb4)" (( "(") (binary_expression "iVar5 + 0xb4" (identifier "iVar5") (+ "+") (number_literal "0xb4")) () ")"))) (; ";")) (expression_statement "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);" (assignment_expression "uVar2 = (uint)*(ushort *)(iVar5 + 0xc4)" (identifier "uVar2") (= "=") (binary_expression "(uint)*(ushort *)(iVar5 + 0xc4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar5 + 0xc4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc4)" (( "(") (binary_expression "iVar5 + 0xc4" (identifier "iVar5") (+ "+") (number_literal "0xc4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(iVar5 + 0xbc);" (assignment_expression "iVar1 = *(int *)(iVar5 + 0xbc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar5 + 0xbc)" (* "*") (cast_expression "(int *)(iVar5 + 0xbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xbc)" (( "(") (binary_expression "iVar5 + 0xbc" (identifier "iVar5") (+ "+") (number_literal "0xbc")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);" (assignment_expression "iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(iVar5 + 0xb8) + 8)" (* "*") (cast_expression "(int *)(*(int *)(iVar5 + 0xb8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar5 + 0xb8) + 8)" (( "(") (binary_expression "*(int *)(iVar5 + 0xb8) + 8" (pointer_expression "*(int *)(iVar5 + 0xb8)" (* "*") (cast_expression "(int *)(iVar5 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xb8)" (( "(") (binary_expression "iVar5 + 0xb8" (identifier "iVar5") (+ "+") (number_literal "0xb8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;" (assignment_expression "*(short *)(iVar5 + 0xc4) = (short)uVar2 + 1" (pointer_expression "*(short *)(iVar5 + 0xc4)" (* "*") (cast_expression "(short *)(iVar5 + 0xc4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc4)" (( "(") (binary_expression "iVar5 + 0xc4" (identifier "iVar5") (+ "+") (number_literal "0xc4")) () ")")))) (= "=") (binary_expression "(short)uVar2 + 1" (cast_expression "(short)uVar2" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar2 * 8)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(iVar4 + uVar2 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar2 * 8)" (( "(") (binary_expression "iVar4 + uVar2 * 8" (identifier "iVar4") (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "puVar3[1] = param_1;" (assignment_expression "puVar3[1] = param_1" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*puVar3 = 4;" (assignment_expression "*puVar3 = 4" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "4")) (; ";")) (expression_statement "*(int *)(iVar5 + 0xbc) = iVar1 + 1;" (assignment_expression "*(int *)(iVar5 + 0xbc) = iVar1 + 1" (pointer_expression "*(int *)(iVar5 + 0xbc)" (* "*") (cast_expression "(int *)(iVar5 + 0xbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xbc)" (( "(") (binary_expression "iVar5 + 0xbc" (identifier "iVar5") (+ "+") (number_literal "0xbc")) () ")")))) (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00029844();" (call_expression "FUN_00029844()" (identifier "FUN_00029844") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

type_1 function_1(type_1 aux_word)

{
  type_1 var_6;
  type_2 var_3;
  type_3 *puVar3;
  int var_5;
  int var_2;
  
  var_2 = *(int *)(var_1 + -0x12e8);
  if (var_2 != 0) {
    var_3 = (type_2)*(type_4 *)(var_2 + 0xc4);
    if (*(type_4 *)(var_2 + 0xc2) == var_3) {
      var_4((type_5 *)(var_2 + 0xb4));
      var_3 = (type_2)*(type_4 *)(var_2 + 0xc4);
    }
    var_6 = *(type_1 *)(var_2 + 0xbc);
    var_5 = *(int *)(*(int *)(var_2 + 0xb8) + 8);
    *(short *)(var_2 + 0xc4) = (short)var_3 + 1;
    puVar3 = (type_3 *)(var_5 + var_3 * 8);
    puVar3[1] = aux_word;
    *puVar3 = 4;
    *(type_1 *)(var_2 + 0xbc) = var_6 + 1;
    return var_6;
  }
                    /* WARNING: Subroutine does not return */
  function_1(aux_word);
}


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

void MASKED(undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  
  iVar5 = *(int *)(PTR_mips_opcodes_000b5cd0 + -0x12e8);
  if (iVar5 != 0) {
    uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    if (*(ushort *)(iVar5 + 0xc2) == uVar2) {
      FUN_00029af0(iVar5 + 0xb4);
      uVar2 = (uint)*(ushort *)(iVar5 + 0xc4);
    }
    iVar1 = *(int *)(iVar5 + 0xbc);
    iVar4 = *(int *)(*(int *)(iVar5 + 0xb8) + 8);
    *(short *)(iVar5 + 0xc4) = (short)uVar2 + 1;
    puVar3 = (undefined4 *)(iVar4 + uVar2 * 8);
    puVar3[1] = param_1;
    *puVar3 = 4;
    *(int *)(iVar5 + 0xbc) = iVar1 + 1;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00029844();
}

