
int nops_for_sequence(int num_insns,int ignore,mips_cl_insn *hist,...)

{
  mips_cl_insn *pmVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  mips_cl_insn *pmVar5;
  undefined1 *puVar6;
  fixS *pfVar7;
  fixS *pfVar8;
  fixS *pfVar9;
  long lVar10;
  frag *pfVar11;
  ulong uVar12;
  mips_cl_insn buffer [4];
  va_list args;
  
  pmVar1 = (mips_cl_insn *)
           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20);
  if (buffer < pmVar1) {
    puVar6 = &stack0x00000010;
    pmVar5 = pmVar1;
    do {
      puVar2 = *(undefined4 **)(puVar6 + -4);
      puVar6 = puVar6 + 4;
      uVar12 = puVar2[1];
      pfVar11 = (frag *)puVar2[2];
      lVar10 = puVar2[3];
      pfVar9 = (fixS *)puVar2[4];
      pfVar8 = (fixS *)puVar2[5];
      pfVar7 = (fixS *)puVar2[6];
      uVar3 = puVar2[7];
      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;
      pmVar5[-1].insn_opcode = uVar12;
      pmVar5[-1].frag = pfVar11;
      pmVar5[-1].where = lVar10;
      pmVar5[-1].fixp[0] = pfVar9;
      pmVar5[-1].fixp[1] = pfVar8;
      pmVar5[-1].fixp[2] = pfVar7;
      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;
      pmVar5 = pmVar5 + -1;
    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);
  }
  iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0);
  return iVar4;
}



void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 local_resc;
  undefined4 auStack_98 [32];
  undefined4 *local_18;
  
  local_18 = &local_resc;
  local_resc = param_4;
  puVar1 = (undefined4 *)
           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);
  if (auStack_98 < puVar1) {
    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;
    puVar2 = local_18 + 1;
    do {
      local_18 = puVar2;
      puVar2 = (undefined4 *)local_18[-1];
      uVar10 = puVar2[1];
      uVar9 = puVar2[2];
      uVar8 = puVar2[3];
      uVar7 = puVar2[4];
      uVar6 = puVar2[5];
      uVar5 = puVar2[6];
      uVar3 = puVar2[7];
      puVar1[-8] = *puVar2;
      puVar1[-7] = uVar10;
      puVar1[-6] = uVar9;
      puVar1[-5] = uVar8;
      puVar1[-4] = uVar7;
      puVar1[-3] = uVar6;
      puVar1[-2] = uVar5;
      puVar1[-1] = uVar3;
      puVar1 = puVar1 + -8;
      puVar2 = local_18 + 1;
    } while (local_18 + 1 != puVar4);
  }
  FUN_000601f4(param_2,auStack_98,0);
  return;
}


lui gp,0x6
addiu gp,gp,-0x2ef0
addu gp,gp,t9
addiu sp,sp,-0xb0
lw t9,-0x74ec(gp)
li v0,0x4
sll v1,a0,0x5
subu v0,v0,a0
sw s0,0xa4(sp)
addiu s0,sp,0x18
sw a3,0xbc(sp)
or a3,a2,zero
sw gp,0x10(sp)
addu v1,s0,v1
sw s1,0xa8(sp)
sll a2,v0,0x5
sw ra,0xac(sp)
addiu v0,sp,0xbc
or a0,v1,zero
sw v0,0x98(sp)
or s1,a1,zero
jalr t9
_or a1,a3,zero
or v1,v0,zero
sltu v0,s0,v0
beq v0,zero,0x00060c50
_lw gp,0x10(sp)
nor a1,zero,s0
lw a0,0x98(sp)
addu a1,v1,a1
srl a1,a1,0x5
addiu v0,a0,0x8
sll a1,a1,0x2
addiu a0,a0,0x4
addu a1,a1,v0
lw v0,-0x4(a0)
addiu v1,v1,-0x20
sw a0,0x98(sp)
addiu a0,a0,0x4
lw t4,0x0(v0)
lw t3,0x4(v0)
lw t2,0x8(v0)
lw t1,0xc(v0)
lw t0,0x10(v0)
lw a3,0x14(v0)
lw a2,0x18(v0)
lw v0,0x1c(v0)
sw t4,0x0(v1)
sw t3,0x4(v1)
sw t2,0x8(v1)
sw t1,0xc(v1)
sw t0,0x10(v1)
sw a3,0x14(v1)
sw a2,0x18(v1)
bne a0,a1,0x00060bfc
_sw v0,0x1c(v1)
lw t9,-0x78bc(gp)
or a2,zero,zero
or a1,s0,zero
addiu t9,t9,0x1f4
bal 0x000601f4
_or a0,s1,zero
lw ra,0xac(sp)
lw s1,0xa8(sp)
lw s0,0xa4(sp)
jr ra
_addiu sp,sp,0xb0
(translation_unit "void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}\n\n" (function_definition "void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" primitive_type (function_declarator "FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 local_resc;" type_identifier identifier ;) (declaration "undefined4 auStack_98 [32];" type_identifier (array_declarator "auStack_98 [32]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (expression_statement "local_18 = &local_resc;" (assignment_expression "local_18 = &local_resc" identifier = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);" (assignment_expression "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" identifier = (cast_expression "(undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (parenthesized_expression "(*(code *)PTR_memcpy_000b6794)" ( (pointer_expression "*(code *)PTR_memcpy_000b6794" * (cast_expression "(code *)PTR_memcpy_000b6794" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" ( (binary_expression "auStack_98 + param_1 * 8" identifier + (binary_expression "param_1 * 8" identifier * number_literal)) , identifier , (binary_expression "(4 - param_1) * 0x20" (parenthesized_expression "(4 - param_1)" ( (binary_expression "4 - param_1" number_literal - identifier) )) * number_literal) ))))) ;) (if_statement "if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" if (parenthesized_expression "(auStack_98 < puVar1)" ( (binary_expression "auStack_98 < puVar1" identifier < identifier) )) (compound_statement "{\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" { (expression_statement "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;" (assignment_expression "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" identifier = (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5)" identifier + (parenthesized_expression "((int)puVar1 + ~(uint)auStack_98 >> 5)" ( (binary_expression "(int)puVar1 + ~(uint)auStack_98 >> 5" (binary_expression "(int)puVar1 + ~(uint)auStack_98" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (unary_expression "~(uint)auStack_98" ~ (cast_expression "(uint)auStack_98" ( (type_descriptor "uint" type_identifier) ) identifier))) >> number_literal) ))) + number_literal)) ;) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" identifier = (binary_expression "local_18 + 1" identifier + number_literal)) ;) (do_statement "do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);" do (compound_statement "{\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    }" { (expression_statement "local_18 = puVar2;" (assignment_expression "local_18 = puVar2" identifier = identifier) ;) (expression_statement "puVar2 = (undefined4 *)local_18[-1];" (assignment_expression "puVar2 = (undefined4 *)local_18[-1]" identifier = (cast_expression "(undefined4 *)local_18[-1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_18[-1]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = puVar2[1];" (assignment_expression "uVar10 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar2[2];" (assignment_expression "uVar9 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = puVar2[3];" (assignment_expression "uVar8 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar2[4];" (assignment_expression "uVar7 = puVar2[4]" identifier = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar2[6];" (assignment_expression "uVar5 = puVar2[6]" identifier = (subscript_expression "puVar2[6]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar2[7];" (assignment_expression "uVar3 = puVar2[7]" identifier = (subscript_expression "puVar2[7]" identifier [ number_literal ])) ;) (expression_statement "puVar1[-8] = *puVar2;" (assignment_expression "puVar1[-8] = *puVar2" (subscript_expression "puVar1[-8]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar1[-7] = uVar10;" (assignment_expression "puVar1[-7] = uVar10" (subscript_expression "puVar1[-7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-6] = uVar9;" (assignment_expression "puVar1[-6] = uVar9" (subscript_expression "puVar1[-6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-5] = uVar8;" (assignment_expression "puVar1[-5] = uVar8" (subscript_expression "puVar1[-5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-4] = uVar7;" (assignment_expression "puVar1[-4] = uVar7" (subscript_expression "puVar1[-4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-3] = uVar6;" (assignment_expression "puVar1[-3] = uVar6" (subscript_expression "puVar1[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-2] = uVar5;" (assignment_expression "puVar1[-2] = uVar5" (subscript_expression "puVar1[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-1] = uVar3;" (assignment_expression "puVar1[-1] = uVar3" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = puVar1 + -8;" (assignment_expression "puVar1 = puVar1 + -8" identifier = (binary_expression "puVar1 + -8" identifier + number_literal)) ;) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" identifier = (binary_expression "local_18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_18 + 1 != puVar4)" ( (binary_expression "local_18 + 1 != puVar4" (binary_expression "local_18 + 1" identifier + number_literal) != identifier) )) ;) })) (expression_statement "FUN_000601f4(param_2,auStack_98,0);" (call_expression "FUN_000601f4(param_2,auStack_98,0)" identifier (argument_list "(param_2,auStack_98,0)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int nops_for_sequence(int num_insns,int ignore,mips_cl_insn *hist,...)\n\n{\n  mips_cl_insn *pmVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  mips_cl_insn *pmVar5;\n  undefined1 *puVar6;\n  fixS *pfVar7;\n  fixS *pfVar8;\n  fixS *pfVar9;\n  long lVar10;\n  frag *pfVar11;\n  ulong uVar12;\n  mips_cl_insn buffer [4];\n  va_list args;\n  \n  pmVar1 = (mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20);\n  if (buffer < pmVar1) {\n    puVar6 = &stack0x00000010;\n    pmVar5 = pmVar1;\n    do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);\n  }\n  iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0);\n  return iVar4;\n}\n\n" (function_definition "int nops_for_sequence(int num_insns,int ignore,mips_cl_insn *hist,...)\n\n{\n  mips_cl_insn *pmVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  mips_cl_insn *pmVar5;\n  undefined1 *puVar6;\n  fixS *pfVar7;\n  fixS *pfVar8;\n  fixS *pfVar9;\n  long lVar10;\n  frag *pfVar11;\n  ulong uVar12;\n  mips_cl_insn buffer [4];\n  va_list args;\n  \n  pmVar1 = (mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20);\n  if (buffer < pmVar1) {\n    puVar6 = &stack0x00000010;\n    pmVar5 = pmVar1;\n    do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);\n  }\n  iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0);\n  return iVar4;\n}" primitive_type (function_declarator "nops_for_sequence(int num_insns,int ignore,mips_cl_insn *hist,...)" identifier (parameter_list "(int num_insns,int ignore,mips_cl_insn *hist,...)" ( (parameter_declaration "int num_insns" primitive_type identifier) , (parameter_declaration "int ignore" primitive_type identifier) , (parameter_declaration "mips_cl_insn *hist" type_identifier (pointer_declarator "*hist" * identifier)) , (variadic_parameter "..." ...) ))) (compound_statement "{\n  mips_cl_insn *pmVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  mips_cl_insn *pmVar5;\n  undefined1 *puVar6;\n  fixS *pfVar7;\n  fixS *pfVar8;\n  fixS *pfVar9;\n  long lVar10;\n  frag *pfVar11;\n  ulong uVar12;\n  mips_cl_insn buffer [4];\n  va_list args;\n  \n  pmVar1 = (mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20);\n  if (buffer < pmVar1) {\n    puVar6 = &stack0x00000010;\n    pmVar5 = pmVar1;\n    do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);\n  }\n  iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0);\n  return iVar4;\n}" { (declaration "mips_cl_insn *pmVar1;" type_identifier (pointer_declarator "*pmVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "mips_cl_insn *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "fixS *pfVar7;" type_identifier (pointer_declarator "*pfVar7" * identifier) ;) (declaration "fixS *pfVar8;" type_identifier (pointer_declarator "*pfVar8" * identifier) ;) (declaration "fixS *pfVar9;" type_identifier (pointer_declarator "*pfVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "frag *pfVar11;" type_identifier (pointer_declarator "*pfVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "mips_cl_insn buffer [4];" type_identifier (array_declarator "buffer [4]" identifier [ number_literal ]) ;) (declaration "va_list args;" type_identifier identifier ;) (expression_statement "pmVar1 = (mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20);" (assignment_expression "pmVar1 = (mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20)" identifier = (cast_expression "(mips_cl_insn *)\n           (*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20)" ( (type_descriptor "mips_cl_insn *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_000b6794)(buffer + num_insns,hist,(4 - num_insns) * 0x20)" (parenthesized_expression "(*(code *)PTR_memcpy_000b6794)" ( (pointer_expression "*(code *)PTR_memcpy_000b6794" * (cast_expression "(code *)PTR_memcpy_000b6794" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(buffer + num_insns,hist,(4 - num_insns) * 0x20)" ( (binary_expression "buffer + num_insns" identifier + identifier) , identifier , (binary_expression "(4 - num_insns) * 0x20" (parenthesized_expression "(4 - num_insns)" ( (binary_expression "4 - num_insns" number_literal - identifier) )) * number_literal) ))))) ;) (if_statement "if (buffer < pmVar1) {\n    puVar6 = &stack0x00000010;\n    pmVar5 = pmVar1;\n    do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);\n  }" if (parenthesized_expression "(buffer < pmVar1)" ( (binary_expression "buffer < pmVar1" identifier < identifier) )) (compound_statement "{\n    puVar6 = &stack0x00000010;\n    pmVar5 = pmVar1;\n    do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);\n  }" { (expression_statement "puVar6 = &stack0x00000010;" (assignment_expression "puVar6 = &stack0x00000010" identifier = (pointer_expression "&stack0x00000010" & identifier)) ;) (expression_statement "pmVar5 = pmVar1;" (assignment_expression "pmVar5 = pmVar1" identifier = identifier) ;) (do_statement "do {\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    } while (puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4);" do (compound_statement "{\n      puVar2 = *(undefined4 **)(puVar6 + -4);\n      puVar6 = puVar6 + 4;\n      uVar12 = puVar2[1];\n      pfVar11 = (frag *)puVar2[2];\n      lVar10 = puVar2[3];\n      pfVar9 = (fixS *)puVar2[4];\n      pfVar8 = (fixS *)puVar2[5];\n      pfVar7 = (fixS *)puVar2[6];\n      uVar3 = puVar2[7];\n      pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;\n      pmVar5[-1].insn_opcode = uVar12;\n      pmVar5[-1].frag = pfVar11;\n      pmVar5[-1].where = lVar10;\n      pmVar5[-1].fixp[0] = pfVar9;\n      pmVar5[-1].fixp[1] = pfVar8;\n      pmVar5[-1].fixp[2] = pfVar7;\n      *(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;\n      pmVar5 = pmVar5 + -1;\n    }" { (expression_statement "puVar2 = *(undefined4 **)(puVar6 + -4);" (assignment_expression "puVar2 = *(undefined4 **)(puVar6 + -4)" identifier = (pointer_expression "*(undefined4 **)(puVar6 + -4)" * (cast_expression "(undefined4 **)(puVar6 + -4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -4)" ( (binary_expression "puVar6 + -4" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "uVar12 = puVar2[1];" (assignment_expression "uVar12 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "pfVar11 = (frag *)puVar2[2];" (assignment_expression "pfVar11 = (frag *)puVar2[2]" identifier = (cast_expression "(frag *)puVar2[2]" ( (type_descriptor "frag *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (expression_statement "lVar10 = puVar2[3];" (assignment_expression "lVar10 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "pfVar9 = (fixS *)puVar2[4];" (assignment_expression "pfVar9 = (fixS *)puVar2[4]" identifier = (cast_expression "(fixS *)puVar2[4]" ( (type_descriptor "fixS *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[4]" identifier [ number_literal ]))) ;) (expression_statement "pfVar8 = (fixS *)puVar2[5];" (assignment_expression "pfVar8 = (fixS *)puVar2[5]" identifier = (cast_expression "(fixS *)puVar2[5]" ( (type_descriptor "fixS *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[5]" identifier [ number_literal ]))) ;) (expression_statement "pfVar7 = (fixS *)puVar2[6];" (assignment_expression "pfVar7 = (fixS *)puVar2[6]" identifier = (cast_expression "(fixS *)puVar2[6]" ( (type_descriptor "fixS *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = puVar2[7];" (assignment_expression "uVar3 = puVar2[7]" identifier = (subscript_expression "puVar2[7]" identifier [ number_literal ])) ;) (expression_statement "pmVar5[-1].insn_mo = (mips_opcode *)*puVar2;" (assignment_expression "pmVar5[-1].insn_mo = (mips_opcode *)*puVar2" (field_expression "pmVar5[-1].insn_mo" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mips_opcode *)*puVar2" ( (type_descriptor "mips_opcode *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "pmVar5[-1].insn_opcode = uVar12;" (assignment_expression "pmVar5[-1].insn_opcode = uVar12" (field_expression "pmVar5[-1].insn_opcode" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pmVar5[-1].frag = pfVar11;" (assignment_expression "pmVar5[-1].frag = pfVar11" (field_expression "pmVar5[-1].frag" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pmVar5[-1].where = lVar10;" (assignment_expression "pmVar5[-1].where = lVar10" (field_expression "pmVar5[-1].where" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pmVar5[-1].fixp[0] = pfVar9;" (assignment_expression "pmVar5[-1].fixp[0] = pfVar9" (subscript_expression "pmVar5[-1].fixp[0]" (field_expression "pmVar5[-1].fixp" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pmVar5[-1].fixp[1] = pfVar8;" (assignment_expression "pmVar5[-1].fixp[1] = pfVar8" (subscript_expression "pmVar5[-1].fixp[1]" (field_expression "pmVar5[-1].fixp" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pmVar5[-1].fixp[2] = pfVar7;" (assignment_expression "pmVar5[-1].fixp[2] = pfVar7" (subscript_expression "pmVar5[-1].fixp[2]" (field_expression "pmVar5[-1].fixp" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)&pmVar5[-1].field_0x1c = uVar3;" (assignment_expression "*(undefined4 *)&pmVar5[-1].field_0x1c = uVar3" (pointer_expression "*(undefined4 *)&pmVar5[-1].field_0x1c" * (cast_expression "(undefined4 *)&pmVar5[-1].field_0x1c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar5[-1].field_0x1c" & (field_expression "pmVar5[-1].field_0x1c" (subscript_expression "pmVar5[-1]" identifier [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "pmVar5 = pmVar5 + -1;" (assignment_expression "pmVar5 = pmVar5 + -1" identifier = (binary_expression "pmVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4)" ( (binary_expression "puVar6 != &stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4" identifier != (binary_expression "&stack0x00000014 + ((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4" (pointer_expression "&stack0x00000014" & identifier) + (binary_expression "((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5) * 4" (parenthesized_expression "((int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5)" ( (binary_expression "(int)pmVar1->fixp + (~(uint)buffer - 0x10) >> 5" (binary_expression "(int)pmVar1->fixp + (~(uint)buffer - 0x10)" (cast_expression "(int)pmVar1->fixp" ( (type_descriptor "int" primitive_type) ) (field_expression "pmVar1->fixp" identifier -> field_identifier)) + (parenthesized_expression "(~(uint)buffer - 0x10)" ( (binary_expression "~(uint)buffer - 0x10" (unary_expression "~(uint)buffer" ~ (cast_expression "(uint)buffer" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) ))) >> number_literal) )) * number_literal))) )) ;) })) (expression_statement "iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0);" (assignment_expression "iVar4 = nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0)" identifier = (call_expression "nops_for_insn(ignore,buffer,(mips_cl_insn *)0x0)" identifier (argument_list "(ignore,buffer,(mips_cl_insn *)0x0)" ( identifier , identifier , (cast_expression "(mips_cl_insn *)0x0" ( (type_descriptor "mips_cl_insn *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}\n\n" (function_definition "void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" primitive_type (function_declarator "FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 local_resc;" type_identifier identifier ;) (declaration "undefined4 auStack_98 [32];" type_identifier (array_declarator "auStack_98 [32]" identifier [ number_literal ]) ;) (declaration "undefined4 *local_18;" type_identifier (pointer_declarator "*local_18" * identifier) ;) (expression_statement "local_18 = &local_resc;" (assignment_expression "local_18 = &local_resc" identifier = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (expression_statement "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);" (assignment_expression "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" identifier = (cast_expression "(undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (parenthesized_expression "(*(code *)PTR_memcpy_000b6794)" ( (pointer_expression "*(code *)PTR_memcpy_000b6794" * (cast_expression "(code *)PTR_memcpy_000b6794" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" ( (binary_expression "auStack_98 + param_1 * 8" identifier + (binary_expression "param_1 * 8" identifier * number_literal)) , identifier , (binary_expression "(4 - param_1) * 0x20" (parenthesized_expression "(4 - param_1)" ( (binary_expression "4 - param_1" number_literal - identifier) )) * number_literal) ))))) ;) (if_statement "if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" if (parenthesized_expression "(auStack_98 < puVar1)" ( (binary_expression "auStack_98 < puVar1" identifier < identifier) )) (compound_statement "{\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" { (expression_statement "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;" (assignment_expression "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" identifier = (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5)" identifier + (parenthesized_expression "((int)puVar1 + ~(uint)auStack_98 >> 5)" ( (binary_expression "(int)puVar1 + ~(uint)auStack_98 >> 5" (binary_expression "(int)puVar1 + ~(uint)auStack_98" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) + (unary_expression "~(uint)auStack_98" ~ (cast_expression "(uint)auStack_98" ( (type_descriptor "uint" type_identifier) ) identifier))) >> number_literal) ))) + number_literal)) ;) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" identifier = (binary_expression "local_18 + 1" identifier + number_literal)) ;) (do_statement "do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);" do (compound_statement "{\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    }" { (expression_statement "local_18 = puVar2;" (assignment_expression "local_18 = puVar2" identifier = identifier) ;) (expression_statement "puVar2 = (undefined4 *)local_18[-1];" (assignment_expression "puVar2 = (undefined4 *)local_18[-1]" identifier = (cast_expression "(undefined4 *)local_18[-1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_18[-1]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = puVar2[1];" (assignment_expression "uVar10 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar2[2];" (assignment_expression "uVar9 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = puVar2[3];" (assignment_expression "uVar8 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar2[4];" (assignment_expression "uVar7 = puVar2[4]" identifier = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar2[6];" (assignment_expression "uVar5 = puVar2[6]" identifier = (subscript_expression "puVar2[6]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = puVar2[7];" (assignment_expression "uVar3 = puVar2[7]" identifier = (subscript_expression "puVar2[7]" identifier [ number_literal ])) ;) (expression_statement "puVar1[-8] = *puVar2;" (assignment_expression "puVar1[-8] = *puVar2" (subscript_expression "puVar1[-8]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar1[-7] = uVar10;" (assignment_expression "puVar1[-7] = uVar10" (subscript_expression "puVar1[-7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-6] = uVar9;" (assignment_expression "puVar1[-6] = uVar9" (subscript_expression "puVar1[-6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-5] = uVar8;" (assignment_expression "puVar1[-5] = uVar8" (subscript_expression "puVar1[-5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-4] = uVar7;" (assignment_expression "puVar1[-4] = uVar7" (subscript_expression "puVar1[-4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-3] = uVar6;" (assignment_expression "puVar1[-3] = uVar6" (subscript_expression "puVar1[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-2] = uVar5;" (assignment_expression "puVar1[-2] = uVar5" (subscript_expression "puVar1[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[-1] = uVar3;" (assignment_expression "puVar1[-1] = uVar3" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = puVar1 + -8;" (assignment_expression "puVar1 = puVar1 + -8" identifier = (binary_expression "puVar1 + -8" identifier + number_literal)) ;) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" identifier = (binary_expression "local_18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_18 + 1 != puVar4)" ( (binary_expression "local_18 + 1 != puVar4" (binary_expression "local_18 + 1" identifier + number_literal) != identifier) )) ;) })) (expression_statement "FUN_000601f4(param_2,auStack_98,0);" (call_expression "FUN_000601f4(param_2,auStack_98,0)" identifier (argument_list "(param_2,auStack_98,0)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT))) >> LIT) ))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00060b70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00060b70") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 local_resc;\n  undefined4 auStack_98 [32];\n  undefined4 *local_18;\n  \n  local_18 = &local_resc;\n  local_resc = param_4;\n  puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);\n  if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }\n  FUN_000601f4(param_2,auStack_98,0);\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "undefined4 local_resc;" (type_identifier "undefined4") (identifier "local_resc") (; ";")) (declaration "undefined4 auStack_98 [32];" (type_identifier "undefined4") (array_declarator "auStack_98 [32]" (identifier "auStack_98") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "undefined4 *local_18;" (type_identifier "undefined4") (pointer_declarator "*local_18" (* "*") (identifier "local_18")) (; ";")) (expression_statement "local_18 = &local_resc;" (assignment_expression "local_18 = &local_resc" (identifier "local_18") (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "local_resc = param_4;" (assignment_expression "local_resc = param_4" (identifier "local_resc") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);" (assignment_expression "puVar1 = (undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)\n           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (parenthesized_expression "(*(code *)PTR_memcpy_000b6794)" (( "(") (pointer_expression "*(code *)PTR_memcpy_000b6794" (* "*") (cast_expression "(code *)PTR_memcpy_000b6794" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_000b6794"))) () ")")) (argument_list "(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20)" (( "(") (binary_expression "auStack_98 + param_1 * 8" (identifier "auStack_98") (+ "+") (binary_expression "param_1 * 8" (identifier "param_1") (* "*") (number_literal "8"))) (, ",") (identifier "param_3") (, ",") (binary_expression "(4 - param_1) * 0x20" (parenthesized_expression "(4 - param_1)" (( "(") (binary_expression "4 - param_1" (number_literal "4") (- "-") (identifier "param_1")) () ")")) (* "*") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (auStack_98 < puVar1) {\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" (if "if") (parenthesized_expression "(auStack_98 < puVar1)" (( "(") (binary_expression "auStack_98 < puVar1" (identifier "auStack_98") (< "<") (identifier "puVar1")) () ")")) (compound_statement "{\n    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;\n    puVar2 = local_18 + 1;\n    do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);\n  }" ({ "{") (expression_statement "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;" (assignment_expression "puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" (identifier "puVar4") (= "=") (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2" (binary_expression "local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5)" (identifier "local_18") (+ "+") (parenthesized_expression "((int)puVar1 + ~(uint)auStack_98 >> 5)" (( "(") (binary_expression "(int)puVar1 + ~(uint)auStack_98 >> 5" (binary_expression "(int)puVar1 + ~(uint)auStack_98" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (+ "+") (unary_expression "~(uint)auStack_98" (~ "~") (cast_expression "(uint)auStack_98" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "auStack_98")))) (>> ">>") (number_literal "5")) () ")"))) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" (identifier "puVar2") (= "=") (binary_expression "local_18 + 1" (identifier "local_18") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    } while (local_18 + 1 != puVar4);" (do "do") (compound_statement "{\n      local_18 = puVar2;\n      puVar2 = (undefined4 *)local_18[-1];\n      uVar10 = puVar2[1];\n      uVar9 = puVar2[2];\n      uVar8 = puVar2[3];\n      uVar7 = puVar2[4];\n      uVar6 = puVar2[5];\n      uVar5 = puVar2[6];\n      uVar3 = puVar2[7];\n      puVar1[-8] = *puVar2;\n      puVar1[-7] = uVar10;\n      puVar1[-6] = uVar9;\n      puVar1[-5] = uVar8;\n      puVar1[-4] = uVar7;\n      puVar1[-3] = uVar6;\n      puVar1[-2] = uVar5;\n      puVar1[-1] = uVar3;\n      puVar1 = puVar1 + -8;\n      puVar2 = local_18 + 1;\n    }" ({ "{") (expression_statement "local_18 = puVar2;" (assignment_expression "local_18 = puVar2" (identifier "local_18") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = (undefined4 *)local_18[-1];" (assignment_expression "puVar2 = (undefined4 *)local_18[-1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)local_18[-1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_18[-1]" (identifier "local_18") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "uVar10 = puVar2[1];" (assignment_expression "uVar10 = puVar2[1]" (identifier "uVar10") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = puVar2[2];" (assignment_expression "uVar9 = puVar2[2]" (identifier "uVar9") (= "=") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar8 = puVar2[3];" (assignment_expression "uVar8 = puVar2[3]" (identifier "uVar8") (= "=") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar2[4];" (assignment_expression "uVar7 = puVar2[4]" (identifier "uVar7") (= "=") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" (identifier "uVar6") (= "=") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "uVar5 = puVar2[6];" (assignment_expression "uVar5 = puVar2[6]" (identifier "uVar5") (= "=") (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar3 = puVar2[7];" (assignment_expression "uVar3 = puVar2[7]" (identifier "uVar3") (= "=") (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "puVar1[-8] = *puVar2;" (assignment_expression "puVar1[-8] = *puVar2" (subscript_expression "puVar1[-8]" (identifier "puVar1") ([ "[") (number_literal "-8") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar1[-7] = uVar10;" (assignment_expression "puVar1[-7] = uVar10" (subscript_expression "puVar1[-7]" (identifier "puVar1") ([ "[") (number_literal "-7") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar1[-6] = uVar9;" (assignment_expression "puVar1[-6] = uVar9" (subscript_expression "puVar1[-6]" (identifier "puVar1") ([ "[") (number_literal "-6") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar1[-5] = uVar8;" (assignment_expression "puVar1[-5] = uVar8" (subscript_expression "puVar1[-5]" (identifier "puVar1") ([ "[") (number_literal "-5") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar1[-4] = uVar7;" (assignment_expression "puVar1[-4] = uVar7" (subscript_expression "puVar1[-4]" (identifier "puVar1") ([ "[") (number_literal "-4") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar1[-3] = uVar6;" (assignment_expression "puVar1[-3] = uVar6" (subscript_expression "puVar1[-3]" (identifier "puVar1") ([ "[") (number_literal "-3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar1[-2] = uVar5;" (assignment_expression "puVar1[-2] = uVar5" (subscript_expression "puVar1[-2]" (identifier "puVar1") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar1[-1] = uVar3;" (assignment_expression "puVar1[-1] = uVar3" (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar1 = puVar1 + -8;" (assignment_expression "puVar1 = puVar1 + -8" (identifier "puVar1") (= "=") (binary_expression "puVar1 + -8" (identifier "puVar1") (+ "+") (number_literal "-8"))) (; ";")) (expression_statement "puVar2 = local_18 + 1;" (assignment_expression "puVar2 = local_18 + 1" (identifier "puVar2") (= "=") (binary_expression "local_18 + 1" (identifier "local_18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_18 + 1 != puVar4)" (( "(") (binary_expression "local_18 + 1 != puVar4" (binary_expression "local_18 + 1" (identifier "local_18") (+ "+") (number_literal "1")) (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_000601f4(param_2,auStack_98,0);" (call_expression "FUN_000601f4(param_2,auStack_98,0)" (identifier "FUN_000601f4") (argument_list "(param_2,auStack_98,0)" (( "(") (identifier "param_2") (, ",") (identifier "auStack_98") (, ",") (number_literal "0") () ")"))) (; ";")) (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: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (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))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (return_statement))))

void MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 local_resc;
  undefined4 auStack_98 [32];
  undefined4 *local_18;
  
  local_18 = &local_resc;
  local_resc = param_4;
  puVar1 = (undefined4 *)
           (*(code *)PTR_memcpy_000b6794)(auStack_98 + param_1 * 8,param_3,(4 - param_1) * 0x20);
  if (auStack_98 < puVar1) {
    puVar4 = local_18 + ((int)puVar1 + ~(uint)auStack_98 >> 5) + 2;
    puVar2 = local_18 + 1;
    do {
      local_18 = puVar2;
      puVar2 = (undefined4 *)local_18[-1];
      uVar10 = puVar2[1];
      uVar9 = puVar2[2];
      uVar8 = puVar2[3];
      uVar7 = puVar2[4];
      uVar6 = puVar2[5];
      uVar5 = puVar2[6];
      uVar3 = puVar2[7];
      puVar1[-8] = *puVar2;
      puVar1[-7] = uVar10;
      puVar1[-6] = uVar9;
      puVar1[-5] = uVar8;
      puVar1[-4] = uVar7;
      puVar1[-3] = uVar6;
      puVar1[-2] = uVar5;
      puVar1[-1] = uVar3;
      puVar1 = puVar1 + -8;
      puVar2 = local_18 + 1;
    } while (local_18 + 1 != puVar4);
  }
  FUN_000601f4(param_2,auStack_98,0);
  return;
}

