
void png_do_packswap(png_row_infop row_info,png_bytep row)

{
  byte bVar1;
  byte *pbVar2;
  undefined *puVar3;
  
  bVar1 = row_info->bit_depth;
  if (bVar1 < 8) {
    pbVar2 = row + row_info->rowbytes;
    if (bVar1 == 1) {
      puVar3 = PTR_LAB_0005601c + 0x4b40;
    }
    else if (bVar1 == 2) {
      puVar3 = PTR_LAB_0005601c + 0x4a40;
    }
    else {
      if (bVar1 != 4) {
        return;
      }
      puVar3 = PTR_LAB_0005601c + 0x4940;
    }
    if (row < pbVar2) {
      do {
        *row = puVar3[*row];
        row = row + 1;
      } while (pbVar2 != row);
    }
  }
  return;
}



void FUN_000375a0(int param_1,byte *param_2)

{
  byte bVar1;
  byte *pbVar2;
  undefined *puVar3;
  
  bVar1 = *(byte *)(param_1 + 9);
  if (bVar1 < 8) {
    pbVar2 = param_2 + *(int *)(param_1 + 4);
    if (bVar1 == 1) {
      puVar3 = PTR_LAB_0005601c + 0x4b40;
    }
    else if (bVar1 == 2) {
      puVar3 = PTR_LAB_0005601c + 0x4a40;
    }
    else {
      if (bVar1 != 4) {
        return;
      }
      puVar3 = PTR_LAB_0005601c + 0x4940;
    }
    if (param_2 < pbVar2) {
      do {
        *param_2 = puVar3[*param_2];
        param_2 = param_2 + 1;
      } while (pbVar2 != param_2);
    }
  }
  return;
}


lui gp,0x2
addiu gp,gp,0x6a50
addu gp,gp,t9
lbu v0,0x9(a0)
sltiu v1,v0,0x8
beq v1,zero,0x0003761c
_nop
lw v1,0x4(a0)
li a0,0x1
beq v0,a0,0x000375ec
_addu v1,a1,v1
li a0,0x2
beq v0,a0,0x00037624
_lw a0,-0x7fd4(gp)
li a0,0x4
bne v0,a0,0x0003761c
_lw a0,-0x7fd4(gp)
b 0x000375f4
_addiu a0,a0,0x4940
lw a0,-0x7fd4(gp)
addiu a0,a0,0x4b40
sltu v0,a1,v1
beq v0,zero,0x0003761c
_nop
lbu v0,0x0(a1)
addu v0,a0,v0
lbu v0,0x0(v0)
sb v0,0x0(a1)
addiu a1,a1,0x1
bne v1,a1,0x00037600
_nop
jr ra
_nop
b 0x000375f4
_addiu a0,a0,0x4a40
(translation_unit "void FUN_000375a0(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000375a0(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000375a0(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 9);" (assignment_expression "bVar1 = *(byte *)(param_1 + 9)" identifier = (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" { (expression_statement "pbVar2 = param_2 + *(int *)(param_1 + 4);" (assignment_expression "pbVar2 = param_2 + *(int *)(param_1 + 4)" identifier = (binary_expression "param_2 + *(int *)(param_1 + 4)" identifier + (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (if_statement "if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 1)" ( (binary_expression "bVar1 == 1" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4b40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4b40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4b40" identifier + number_literal)) ;) }) (else_clause "else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (if_statement "if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4a40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4a40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4a40" identifier + number_literal)) ;) }) (else_clause "else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (compound_statement "{\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" { (if_statement "if (bVar1 != 4) {\n        return;\n      }" if (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4940;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4940" identifier = (binary_expression "PTR_LAB_0005601c + 0x4940" identifier + number_literal)) ;) }))))) (if_statement "if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" if (parenthesized_expression "(param_2 < pbVar2)" ( (binary_expression "param_2 < pbVar2" identifier < identifier) )) (compound_statement "{\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" { (do_statement "do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);" do (compound_statement "{\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      }" { (expression_statement "*param_2 = puVar3[*param_2];" (assignment_expression "*param_2 = puVar3[*param_2]" (pointer_expression "*param_2" * identifier) = (subscript_expression "puVar3[*param_2]" identifier [ (pointer_expression "*param_2" * identifier) ])) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar2 != param_2)" ( (binary_expression "pbVar2 != param_2" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void png_do_packswap(png_row_infop row_info,png_bytep row)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = row_info->bit_depth;\n  if (bVar1 < 8) {\n    pbVar2 = row + row_info->rowbytes;\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }\n  }\n  return;\n}\n\n" (function_definition "void png_do_packswap(png_row_infop row_info,png_bytep row)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = row_info->bit_depth;\n  if (bVar1 < 8) {\n    pbVar2 = row + row_info->rowbytes;\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "png_do_packswap(png_row_infop row_info,png_bytep row)" identifier (parameter_list "(png_row_infop row_info,png_bytep row)" ( (parameter_declaration "png_row_infop row_info" type_identifier identifier) , (parameter_declaration "png_bytep row" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = row_info->bit_depth;\n  if (bVar1 < 8) {\n    pbVar2 = row + row_info->rowbytes;\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = row_info->bit_depth;" (assignment_expression "bVar1 = row_info->bit_depth" identifier = (field_expression "row_info->bit_depth" identifier -> field_identifier)) ;) (if_statement "if (bVar1 < 8) {\n    pbVar2 = row + row_info->rowbytes;\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }\n  }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n    pbVar2 = row + row_info->rowbytes;\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }\n  }" { (expression_statement "pbVar2 = row + row_info->rowbytes;" (assignment_expression "pbVar2 = row + row_info->rowbytes" identifier = (binary_expression "row + row_info->rowbytes" identifier + (field_expression "row_info->rowbytes" identifier -> field_identifier))) ;) (if_statement "if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 1)" ( (binary_expression "bVar1 == 1" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4b40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4b40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4b40" identifier + number_literal)) ;) }) (else_clause "else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (if_statement "if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4a40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4a40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4a40" identifier + number_literal)) ;) }) (else_clause "else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (compound_statement "{\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" { (if_statement "if (bVar1 != 4) {\n        return;\n      }" if (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4940;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4940" identifier = (binary_expression "PTR_LAB_0005601c + 0x4940" identifier + number_literal)) ;) }))))) (if_statement "if (row < pbVar2) {\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }" if (parenthesized_expression "(row < pbVar2)" ( (binary_expression "row < pbVar2" identifier < identifier) )) (compound_statement "{\n      do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);\n    }" { (do_statement "do {\n        *row = puVar3[*row];\n        row = row + 1;\n      } while (pbVar2 != row);" do (compound_statement "{\n        *row = puVar3[*row];\n        row = row + 1;\n      }" { (expression_statement "*row = puVar3[*row];" (assignment_expression "*row = puVar3[*row]" (pointer_expression "*row" * identifier) = (subscript_expression "puVar3[*row]" identifier [ (pointer_expression "*row" * identifier) ])) ;) (expression_statement "row = row + 1;" (assignment_expression "row = row + 1" identifier = (binary_expression "row + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar2 != row)" ( (binary_expression "pbVar2 != row" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000375a0(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000375a0(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000375a0(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 9);" (assignment_expression "bVar1 = *(byte *)(param_1 + 9)" identifier = (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" { (expression_statement "pbVar2 = param_2 + *(int *)(param_1 + 4);" (assignment_expression "pbVar2 = param_2 + *(int *)(param_1 + 4)" identifier = (binary_expression "param_2 + *(int *)(param_1 + 4)" identifier + (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (if_statement "if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 1)" ( (binary_expression "bVar1 == 1" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4b40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4b40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4b40" identifier + number_literal)) ;) }) (else_clause "else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (if_statement "if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }" { (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4a40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4a40" identifier = (binary_expression "PTR_LAB_0005601c + 0x4a40" identifier + number_literal)) ;) }) (else_clause "else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" else (compound_statement "{\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" { (if_statement "if (bVar1 != 4) {\n        return;\n      }" if (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4940;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4940" identifier = (binary_expression "PTR_LAB_0005601c + 0x4940" identifier + number_literal)) ;) }))))) (if_statement "if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" if (parenthesized_expression "(param_2 < pbVar2)" ( (binary_expression "param_2 < pbVar2" identifier < identifier) )) (compound_statement "{\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" { (do_statement "do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);" do (compound_statement "{\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      }" { (expression_statement "*param_2 = puVar3[*param_2];" (assignment_expression "*param_2 = puVar3[*param_2]" (pointer_expression "*param_2" * identifier) = (subscript_expression "puVar3[*param_2]" identifier [ (pointer_expression "*param_2" * identifier) ])) ;) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar2 != param_2)" ( (binary_expression "pbVar2 != param_2" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 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 IDENT + LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ (pointer_expression * IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_000375a0(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000375a0(int param_1,byte *param_2)" (identifier "FUN_000375a0") (parameter_list "(int param_1,byte *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  undefined *puVar3;\n  \n  bVar1 = *(byte *)(param_1 + 9);\n  if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 9);" (assignment_expression "bVar1 = *(byte *)(param_1 + 9)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (if_statement "if (bVar1 < 8) {\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" (if "if") (parenthesized_expression "(bVar1 < 8)" (( "(") (binary_expression "bVar1 < 8" (identifier "bVar1") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    pbVar2 = param_2 + *(int *)(param_1 + 4);\n    if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }\n    if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }\n  }" ({ "{") (expression_statement "pbVar2 = param_2 + *(int *)(param_1 + 4);" (assignment_expression "pbVar2 = param_2 + *(int *)(param_1 + 4)" (identifier "pbVar2") (= "=") (binary_expression "param_2 + *(int *)(param_1 + 4)" (identifier "param_2") (+ "+") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (bVar1 == 1) {\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }\n    else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" (if "if") (parenthesized_expression "(bVar1 == 1)" (( "(") (binary_expression "bVar1 == 1" (identifier "bVar1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4b40;\n    }" ({ "{") (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4b40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4b40" (identifier "puVar3") (= "=") (binary_expression "PTR_LAB_0005601c + 0x4b40" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x4b40"))) (; ";")) (} "}")) (else_clause "else if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" (else "else") (if_statement "if (bVar1 == 2) {\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }\n    else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" (if "if") (parenthesized_expression "(bVar1 == 2)" (( "(") (binary_expression "bVar1 == 2" (identifier "bVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      puVar3 = PTR_LAB_0005601c + 0x4a40;\n    }" ({ "{") (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4a40;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4a40" (identifier "puVar3") (= "=") (binary_expression "PTR_LAB_0005601c + 0x4a40" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x4a40"))) (; ";")) (} "}")) (else_clause "else {\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" (else "else") (compound_statement "{\n      if (bVar1 != 4) {\n        return;\n      }\n      puVar3 = PTR_LAB_0005601c + 0x4940;\n    }" ({ "{") (if_statement "if (bVar1 != 4) {\n        return;\n      }" (if "if") (parenthesized_expression "(bVar1 != 4)" (( "(") (binary_expression "bVar1 != 4" (identifier "bVar1") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_LAB_0005601c + 0x4940;" (assignment_expression "puVar3 = PTR_LAB_0005601c + 0x4940" (identifier "puVar3") (= "=") (binary_expression "PTR_LAB_0005601c + 0x4940" (identifier "PTR_LAB_0005601c") (+ "+") (number_literal "0x4940"))) (; ";")) (} "}")))))) (if_statement "if (param_2 < pbVar2) {\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" (if "if") (parenthesized_expression "(param_2 < pbVar2)" (( "(") (binary_expression "param_2 < pbVar2" (identifier "param_2") (< "<") (identifier "pbVar2")) () ")")) (compound_statement "{\n      do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);\n    }" ({ "{") (do_statement "do {\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      } while (pbVar2 != param_2);" (do "do") (compound_statement "{\n        *param_2 = puVar3[*param_2];\n        param_2 = param_2 + 1;\n      }" ({ "{") (expression_statement "*param_2 = puVar3[*param_2];" (assignment_expression "*param_2 = puVar3[*param_2]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (subscript_expression "puVar3[*param_2]" (identifier "puVar3") ([ "[") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (] "]"))) (; ";")) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar2 != param_2)" (( "(") (binary_expression "pbVar2 != param_2" (identifier "pbVar2") (!= "!=") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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: (identifier) right: (number_literal))))) alternative: (else_clause (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: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (return_statement))))

void MASKED(int param_1,byte *param_2)

{
  byte bVar1;
  byte *pbVar2;
  undefined *puVar3;
  
  bVar1 = *(byte *)(param_1 + 9);
  if (bVar1 < 8) {
    pbVar2 = param_2 + *(int *)(param_1 + 4);
    if (bVar1 == 1) {
      puVar3 = PTR_LAB_0005601c + 0x4b40;
    }
    else if (bVar1 == 2) {
      puVar3 = PTR_LAB_0005601c + 0x4a40;
    }
    else {
      if (bVar1 != 4) {
        return;
      }
      puVar3 = PTR_LAB_0005601c + 0x4940;
    }
    if (param_2 < pbVar2) {
      do {
        *param_2 = puVar3[*param_2];
        param_2 = param_2 + 1;
      } while (pbVar2 != param_2);
    }
  }
  return;
}

