
void setjstatus(int j)

{
  uint *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int *ps;
  int iVar10;
  
  puVar3 = PTR___environ_00145154;
  puVar2 = PTR_jobs_00144e5c;
  piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4);
  piVar7 = (int *)*piVar8;
  if (piVar7 == piVar8) {
    iVar10 = 2;
  }
  else {
    piVar4 = piVar7;
    iVar6 = 1;
    do {
      iVar10 = iVar6;
      piVar4 = (int *)*piVar4;
      iVar6 = iVar10 + 1;
    } while (piVar4 != piVar8);
    iVar10 = iVar10 + 2;
  }
  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);
  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {
    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);
    iVar6 = *(int *)puVar2;
    *(int **)(puVar3 + -0x7034) = piVar4;
    *(int *)(puVar3 + -0x7038) = iVar10;
    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);
    piVar7 = (int *)*piVar8;
  }
  iVar10 = 0;
  piVar9 = piVar8;
  ps = piVar4;
  while( true ) {
    puVar1 = (uint *)(piVar8 + 2);
    iVar10 = iVar10 + 1;
    uVar5 = *puVar1 & 0x7f;
    iVar6 = uVar5 + 0x80;
    piVar8 = piVar7;
    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {
      iVar6 = process_exit_status(*puVar1);
      piVar8 = piVar7;
    }
    *piVar4 = iVar6;
    piVar4 = piVar4 + 1;
    if (piVar9 == piVar8) break;
    piVar7 = (int *)*piVar8;
  }
  ps[iVar10] = -1;
  set_pipestatus_array(ps,iVar10);
  return;
}



void FUN_00064d0c(int param_1)

{
  uint *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  
  puVar3 = PTR___environ_00145154;
  puVar2 = PTR_jobs_00144e5c;
  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);
  piVar6 = (int *)*piVar7;
  if (piVar6 == piVar7) {
    iVar10 = 2;
  }
  else {
    piVar4 = piVar6;
    iVar5 = 1;
    do {
      iVar10 = iVar5;
      piVar4 = (int *)*piVar4;
      iVar5 = iVar10 + 1;
    } while (piVar4 != piVar7);
    iVar10 = iVar10 + 2;
  }
  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);
  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {
    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);
    iVar5 = *(int *)puVar2;
    *(int **)(puVar3 + -0x7034) = piVar4;
    *(int *)(puVar3 + -0x7038) = iVar10;
    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);
    piVar6 = (int *)*piVar7;
  }
  iVar10 = 0;
  piVar8 = piVar7;
  piVar9 = piVar4;
  while( true ) {
    puVar1 = (uint *)(piVar7 + 2);
    iVar10 = iVar10 + 1;
    iVar5 = (*puVar1 & 0x7f) + 0x80;
    piVar7 = piVar6;
    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {
      iVar5 = FUN_00064cec();
      piVar7 = piVar6;
    }
    *piVar4 = iVar5;
    piVar4 = piVar4 + 1;
    if (piVar8 == piVar7) break;
    piVar6 = (int *)*piVar7;
  }
  piVar9[iVar10] = -1;
  set_pipestatus_array(piVar9);
  return;
}


lui gp,0xe
addiu gp,gp,0x7834
addu gp,gp,t9
addiu sp,sp,-0x30
sw s4,0x28(sp)
lw s4,-0x76e4(gp)
sw s1,0x1c(sp)
sll s1,a0,0x2
sw gp,0x10(sp)
sw ra,0x2c(sp)
lw v0,0x0(s4)
sw s3,0x24(sp)
sw s2,0x20(sp)
addu v0,v0,s1
sw s0,0x18(sp)
lw v0,0x0(v0)
lw t0,0x4(v0)
lw a2,0x0(t0)
beq a2,t0,0x00064e58
_or v0,a2,zero
b 0x00064d68
_li v1,0x1
or v1,a0,zero
lw v0,0x0(v0)
bne v0,t0,0x00064d64
_addiu a0,v1,0x1
addiu s0,v1,0x2
lw s2,-0x73ec(gp)
lw s3,-0x73ec(gp)
lw v0,-0x7038(s2)
slt v0,v0,s0
bne v0,zero,0x00064e20
_lw t1,-0x7034(s3)
lw t9,-0x7550(gp)
or a1,zero,zero
or a3,t1,zero
or v0,t0,zero
b 0x00064db0
_addiu t9,t9,0x4cec
or v0,a2,zero
lw a2,0x0(a2)
lw a0,0x8(v0)
addiu a1,a1,0x1
andi v0,a0,0x7f
addiu v1,v0,0x1
seb v1,v1
sra v1,v1,0x1
bgtz v1,0x00064ddc
_addiu v0,v0,0x80
bal 0x00064cec
_nop
lw gp,0x10(sp)
sw v0,0x0(a3)
bne t0,a2,0x00064da8
_addiu a3,a3,0x4
sll v0,a1,0x2
lw ra,0x2c(sp)
li v1,-0x1
lw s4,0x28(sp)
addu v0,t1,v0
lw s3,0x24(sp)
lw s2,0x20(sp)
or a0,t1,zero
lw s1,0x1c(sp)
lw s0,0x18(sp)
lw t9,-0x745c(gp)
sw v1,0x0(v0)
b 0x0005e69c
_addiu sp,sp,0x30
lw t9,-0x7e04(gp)
sll a1,s0,0x2
jalr t9
_or a0,t1,zero
lw v1,0x0(s4)
or t1,v0,zero
sw v0,-0x7034(s3)
sw s0,-0x7038(s2)
addu s1,v1,s1
lw gp,0x10(sp)
lw v0,0x0(s1)
lw t0,0x4(v0)
b 0x00064d90
_lw a2,0x0(t0)
b 0x00064d78
_li s0,0x2
(translation_unit "void FUN_00064d0c(int param_1)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}\n\n" (function_definition "void FUN_00064d0c(int param_1)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" primitive_type (function_declarator "FUN_00064d0c(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___environ_00145154;" (assignment_expression "puVar3 = PTR___environ_00145154" identifier = identifier) ;) (expression_statement "puVar2 = PTR_jobs_00144e5c;" (assignment_expression "puVar2 = PTR_jobs_00144e5c" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" * (cast_expression "(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" ( (binary_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4" (pointer_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" * (cast_expression "(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_jobs_00144e5c + param_1 * 4)" ( (binary_expression "*(int *)PTR_jobs_00144e5c + param_1 * 4" (pointer_expression "*(int *)PTR_jobs_00144e5c" * (cast_expression "(int *)PTR_jobs_00144e5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "param_1 * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" if (parenthesized_expression "(piVar6 == piVar7)" ( (binary_expression "piVar6 == piVar7" identifier == identifier) )) (compound_statement "{\n    iVar10 = 2;\n  }" { (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) }) (else_clause "else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" else (compound_statement "{\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" { (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" identifier = identifier) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);" do (compound_statement "{\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    }" { (expression_statement "iVar10 = iVar5;" (assignment_expression "iVar10 = iVar5" identifier = identifier) ;) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 != piVar7)" ( (binary_expression "piVar4 != piVar7" identifier != identifier) )) ;) (expression_statement "iVar10 = iVar10 + 2;" (assignment_expression "iVar10 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) }))) (expression_statement "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);" (assignment_expression "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034)" identifier = (pointer_expression "*(int **)(PTR___environ_00145154 + -0x7034)" * (cast_expression "(int **)(PTR___environ_00145154 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7034)" ( (binary_expression "PTR___environ_00145154 + -0x7034" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" if (parenthesized_expression "(*(int *)(PTR___environ_00145154 + -0x7038) < iVar10)" ( (binary_expression "*(int *)(PTR___environ_00145154 + -0x7038) < iVar10" (pointer_expression "*(int *)(PTR___environ_00145154 + -0x7038)" * (cast_expression "(int *)(PTR___environ_00145154 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7038)" ( (binary_expression "PTR___environ_00145154 + -0x7038" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" { (expression_statement "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);" (assignment_expression "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" identifier = (cast_expression "(int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (parenthesized_expression "(*(code *)PTR_xrealloc_0014473c)" ( (pointer_expression "*(code *)PTR_xrealloc_0014473c" * (cast_expression "(code *)PTR_xrealloc_0014473c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar4,iVar10 << 2)" ( identifier , (binary_expression "iVar10 << 2" identifier << number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int **)(puVar3 + -0x7034) = piVar4;" (assignment_expression "*(int **)(puVar3 + -0x7034) = piVar4" (pointer_expression "*(int **)(puVar3 + -0x7034)" * (cast_expression "(int **)(puVar3 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x7034)" ( (binary_expression "puVar3 + -0x7034" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar3 + -0x7038) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x7038) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x7038)" * (cast_expression "(int *)(puVar3 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x7038)" ( (binary_expression "puVar3 + -0x7038" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" * (cast_expression "(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar5 + param_1 * 4) + 4)" ( (binary_expression "*(int *)(iVar5 + param_1 * 4) + 4" (pointer_expression "*(int *)(iVar5 + param_1 * 4)" * (cast_expression "(int *)(iVar5 + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + param_1 * 4)" ( (binary_expression "iVar5 + param_1 * 4" identifier + (binary_expression "param_1 * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" identifier = identifier) ;) (while_statement "while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" { (expression_statement "puVar1 = (uint *)(piVar7 + 2);" (assignment_expression "puVar1 = (uint *)(piVar7 + 2)" identifier = (cast_expression "(uint *)(piVar7 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = (*puVar1 & 0x7f) + 0x80;" (assignment_expression "iVar5 = (*puVar1 & 0x7f) + 0x80" identifier = (binary_expression "(*puVar1 & 0x7f) + 0x80" (parenthesized_expression "(*puVar1 & 0x7f)" ( (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" * identifier) & number_literal) )) + number_literal)) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) (if_statement "if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" if (parenthesized_expression "((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(*puVar1 & 0x7f) + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)(*puVar1 & 0x7f) + '\x01')" ( (binary_expression "(char)(*puVar1 & 0x7f) + '\x01'" (cast_expression "(char)(*puVar1 & 0x7f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*puVar1 & 0x7f)" ( (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" * identifier) & number_literal) ))) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" { (expression_statement "iVar5 = FUN_00064cec();" (assignment_expression "iVar5 = FUN_00064cec()" identifier = (call_expression "FUN_00064cec()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) })) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (if_statement "if (piVar8 == piVar7) break;" if (parenthesized_expression "(piVar8 == piVar7)" ( (binary_expression "piVar8 == piVar7" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) })) (expression_statement "piVar9[iVar10] = -1;" (assignment_expression "piVar9[iVar10] = -1" (subscript_expression "piVar9[iVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "set_pipestatus_array(piVar9);" (call_expression "set_pipestatus_array(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void setjstatus(int j)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *ps;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4);\n  piVar7 = (int *)*piVar8;\n  if (piVar7 == piVar8) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar6 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);\n    piVar7 = (int *)*piVar8;\n  }\n  iVar10 = 0;\n  piVar9 = piVar8;\n  ps = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar8 + 2);\n    iVar10 = iVar10 + 1;\n    uVar5 = *puVar1 & 0x7f;\n    iVar6 = uVar5 + 0x80;\n    piVar8 = piVar7;\n    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }\n    *piVar4 = iVar6;\n    piVar4 = piVar4 + 1;\n    if (piVar9 == piVar8) break;\n    piVar7 = (int *)*piVar8;\n  }\n  ps[iVar10] = -1;\n  set_pipestatus_array(ps,iVar10);\n  return;\n}\n\n" (function_definition "void setjstatus(int j)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *ps;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4);\n  piVar7 = (int *)*piVar8;\n  if (piVar7 == piVar8) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar6 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);\n    piVar7 = (int *)*piVar8;\n  }\n  iVar10 = 0;\n  piVar9 = piVar8;\n  ps = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar8 + 2);\n    iVar10 = iVar10 + 1;\n    uVar5 = *puVar1 & 0x7f;\n    iVar6 = uVar5 + 0x80;\n    piVar8 = piVar7;\n    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }\n    *piVar4 = iVar6;\n    piVar4 = piVar4 + 1;\n    if (piVar9 == piVar8) break;\n    piVar7 = (int *)*piVar8;\n  }\n  ps[iVar10] = -1;\n  set_pipestatus_array(ps,iVar10);\n  return;\n}" primitive_type (function_declarator "setjstatus(int j)" identifier (parameter_list "(int j)" ( (parameter_declaration "int j" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int *ps;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4);\n  piVar7 = (int *)*piVar8;\n  if (piVar7 == piVar8) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar6 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);\n    piVar7 = (int *)*piVar8;\n  }\n  iVar10 = 0;\n  piVar9 = piVar8;\n  ps = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar8 + 2);\n    iVar10 = iVar10 + 1;\n    uVar5 = *puVar1 & 0x7f;\n    iVar6 = uVar5 + 0x80;\n    piVar8 = piVar7;\n    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }\n    *piVar4 = iVar6;\n    piVar4 = piVar4 + 1;\n    if (piVar9 == piVar8) break;\n    piVar7 = (int *)*piVar8;\n  }\n  ps[iVar10] = -1;\n  set_pipestatus_array(ps,iVar10);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *ps;" primitive_type (pointer_declarator "*ps" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___environ_00145154;" (assignment_expression "puVar3 = PTR___environ_00145154" identifier = identifier) ;) (expression_statement "puVar2 = PTR_jobs_00144e5c;" (assignment_expression "puVar2 = PTR_jobs_00144e5c" identifier = identifier) ;) (expression_statement "piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4);" (assignment_expression "piVar8 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4)" * (cast_expression "(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4)" ( (binary_expression "*(int *)(*(int *)PTR_jobs_00144e5c + j * 4) + 4" (pointer_expression "*(int *)(*(int *)PTR_jobs_00144e5c + j * 4)" * (cast_expression "(int *)(*(int *)PTR_jobs_00144e5c + j * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_jobs_00144e5c + j * 4)" ( (binary_expression "*(int *)PTR_jobs_00144e5c + j * 4" (pointer_expression "*(int *)PTR_jobs_00144e5c" * (cast_expression "(int *)PTR_jobs_00144e5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "j * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) (if_statement "if (piVar7 == piVar8) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }" if (parenthesized_expression "(piVar7 == piVar8)" ( (binary_expression "piVar7 == piVar8" identifier == identifier) )) (compound_statement "{\n    iVar10 = 2;\n  }" { (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) }) (else_clause "else {\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }" else (compound_statement "{\n    piVar4 = piVar7;\n    iVar6 = 1;\n    do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);\n    iVar10 = iVar10 + 2;\n  }" { (expression_statement "piVar4 = piVar7;" (assignment_expression "piVar4 = piVar7" identifier = identifier) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (do_statement "do {\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    } while (piVar4 != piVar8);" do (compound_statement "{\n      iVar10 = iVar6;\n      piVar4 = (int *)*piVar4;\n      iVar6 = iVar10 + 1;\n    }" { (expression_statement "iVar10 = iVar6;" (assignment_expression "iVar10 = iVar6" identifier = identifier) ;) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "iVar6 = iVar10 + 1;" (assignment_expression "iVar6 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 != piVar8)" ( (binary_expression "piVar4 != piVar8" identifier != identifier) )) ;) (expression_statement "iVar10 = iVar10 + 2;" (assignment_expression "iVar10 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) }))) (expression_statement "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);" (assignment_expression "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034)" identifier = (pointer_expression "*(int **)(PTR___environ_00145154 + -0x7034)" * (cast_expression "(int **)(PTR___environ_00145154 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7034)" ( (binary_expression "PTR___environ_00145154 + -0x7034" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar6 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);\n    piVar7 = (int *)*piVar8;\n  }" if (parenthesized_expression "(*(int *)(PTR___environ_00145154 + -0x7038) < iVar10)" ( (binary_expression "*(int *)(PTR___environ_00145154 + -0x7038) < iVar10" (pointer_expression "*(int *)(PTR___environ_00145154 + -0x7038)" * (cast_expression "(int *)(PTR___environ_00145154 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7038)" ( (binary_expression "PTR___environ_00145154 + -0x7038" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar6 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);\n    piVar7 = (int *)*piVar8;\n  }" { (expression_statement "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);" (assignment_expression "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" identifier = (cast_expression "(int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (parenthesized_expression "(*(code *)PTR_xrealloc_0014473c)" ( (pointer_expression "*(code *)PTR_xrealloc_0014473c" * (cast_expression "(code *)PTR_xrealloc_0014473c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar4,iVar10 << 2)" ( identifier , (binary_expression "iVar10 << 2" identifier << number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)puVar2;" (assignment_expression "iVar6 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int **)(puVar3 + -0x7034) = piVar4;" (assignment_expression "*(int **)(puVar3 + -0x7034) = piVar4" (pointer_expression "*(int **)(puVar3 + -0x7034)" * (cast_expression "(int **)(puVar3 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x7034)" ( (binary_expression "puVar3 + -0x7034" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar3 + -0x7038) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x7038) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x7038)" * (cast_expression "(int *)(puVar3 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x7038)" ( (binary_expression "puVar3 + -0x7038" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4);" (assignment_expression "piVar8 = *(int **)(*(int *)(iVar6 + j * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar6 + j * 4) + 4)" * (cast_expression "(int **)(*(int *)(iVar6 + j * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar6 + j * 4) + 4)" ( (binary_expression "*(int *)(iVar6 + j * 4) + 4" (pointer_expression "*(int *)(iVar6 + j * 4)" * (cast_expression "(int *)(iVar6 + j * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + j * 4)" ( (binary_expression "iVar6 + j * 4" identifier + (binary_expression "j * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar9 = piVar8;" (assignment_expression "piVar9 = piVar8" identifier = identifier) ;) (expression_statement "ps = piVar4;" (assignment_expression "ps = piVar4" identifier = identifier) ;) (while_statement "while( true ) {\n    puVar1 = (uint *)(piVar8 + 2);\n    iVar10 = iVar10 + 1;\n    uVar5 = *puVar1 & 0x7f;\n    iVar6 = uVar5 + 0x80;\n    piVar8 = piVar7;\n    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }\n    *piVar4 = iVar6;\n    piVar4 = piVar4 + 1;\n    if (piVar9 == piVar8) break;\n    piVar7 = (int *)*piVar8;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar1 = (uint *)(piVar8 + 2);\n    iVar10 = iVar10 + 1;\n    uVar5 = *puVar1 & 0x7f;\n    iVar6 = uVar5 + 0x80;\n    piVar8 = piVar7;\n    if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }\n    *piVar4 = iVar6;\n    piVar4 = piVar4 + 1;\n    if (piVar9 == piVar8) break;\n    piVar7 = (int *)*piVar8;\n  }" { (expression_statement "puVar1 = (uint *)(piVar8 + 2);" (assignment_expression "puVar1 = (uint *)(piVar8 + 2)" identifier = (cast_expression "(uint *)(piVar8 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar1 & 0x7f;" (assignment_expression "uVar5 = *puVar1 & 0x7f" identifier = (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" * identifier) & number_literal)) ;) (expression_statement "iVar6 = uVar5 + 0x80;" (assignment_expression "iVar6 = uVar5 + 0x80" identifier = (binary_expression "uVar5 + 0x80" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (if_statement "if ((char)((char)uVar5 + '\x01') >> 1 < '\x01') {\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }" if (parenthesized_expression "((char)((char)uVar5 + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)uVar5 + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)uVar5 + '\x01') >> 1" (cast_expression "(char)((char)uVar5 + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)uVar5 + '\x01')" ( (binary_expression "(char)uVar5 + '\x01'" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      iVar6 = process_exit_status(*puVar1);\n      piVar8 = piVar7;\n    }" { (expression_statement "iVar6 = process_exit_status(*puVar1);" (assignment_expression "iVar6 = process_exit_status(*puVar1)" identifier = (call_expression "process_exit_status(*puVar1)" identifier (argument_list "(*puVar1)" ( (pointer_expression "*puVar1" * identifier) )))) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) })) (expression_statement "*piVar4 = iVar6;" (assignment_expression "*piVar4 = iVar6" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (if_statement "if (piVar9 == piVar8) break;" if (parenthesized_expression "(piVar9 == piVar8)" ( (binary_expression "piVar9 == piVar8" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "piVar7 = (int *)*piVar8;" (assignment_expression "piVar7 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) })) (expression_statement "ps[iVar10] = -1;" (assignment_expression "ps[iVar10] = -1" (subscript_expression "ps[iVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "set_pipestatus_array(ps,iVar10);" (call_expression "set_pipestatus_array(ps,iVar10)" identifier (argument_list "(ps,iVar10)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00064d0c(int param_1)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}\n\n" (function_definition "void FUN_00064d0c(int param_1)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" primitive_type (function_declarator "FUN_00064d0c(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___environ_00145154;" (assignment_expression "puVar3 = PTR___environ_00145154" identifier = identifier) ;) (expression_statement "puVar2 = PTR_jobs_00144e5c;" (assignment_expression "puVar2 = PTR_jobs_00144e5c" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" * (cast_expression "(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" ( (binary_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4" (pointer_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" * (cast_expression "(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_jobs_00144e5c + param_1 * 4)" ( (binary_expression "*(int *)PTR_jobs_00144e5c + param_1 * 4" (pointer_expression "*(int *)PTR_jobs_00144e5c" * (cast_expression "(int *)PTR_jobs_00144e5c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "param_1 * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" if (parenthesized_expression "(piVar6 == piVar7)" ( (binary_expression "piVar6 == piVar7" identifier == identifier) )) (compound_statement "{\n    iVar10 = 2;\n  }" { (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" identifier = number_literal) ;) }) (else_clause "else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" else (compound_statement "{\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" { (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" identifier = identifier) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);" do (compound_statement "{\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    }" { (expression_statement "iVar10 = iVar5;" (assignment_expression "iVar10 = iVar5" identifier = identifier) ;) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 != piVar7)" ( (binary_expression "piVar4 != piVar7" identifier != identifier) )) ;) (expression_statement "iVar10 = iVar10 + 2;" (assignment_expression "iVar10 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) }))) (expression_statement "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);" (assignment_expression "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034)" identifier = (pointer_expression "*(int **)(PTR___environ_00145154 + -0x7034)" * (cast_expression "(int **)(PTR___environ_00145154 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7034)" ( (binary_expression "PTR___environ_00145154 + -0x7034" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" if (parenthesized_expression "(*(int *)(PTR___environ_00145154 + -0x7038) < iVar10)" ( (binary_expression "*(int *)(PTR___environ_00145154 + -0x7038) < iVar10" (pointer_expression "*(int *)(PTR___environ_00145154 + -0x7038)" * (cast_expression "(int *)(PTR___environ_00145154 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___environ_00145154 + -0x7038)" ( (binary_expression "PTR___environ_00145154 + -0x7038" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" { (expression_statement "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);" (assignment_expression "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" identifier = (cast_expression "(int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (parenthesized_expression "(*(code *)PTR_xrealloc_0014473c)" ( (pointer_expression "*(code *)PTR_xrealloc_0014473c" * (cast_expression "(code *)PTR_xrealloc_0014473c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar4,iVar10 << 2)" ( identifier , (binary_expression "iVar10 << 2" identifier << number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int **)(puVar3 + -0x7034) = piVar4;" (assignment_expression "*(int **)(puVar3 + -0x7034) = piVar4" (pointer_expression "*(int **)(puVar3 + -0x7034)" * (cast_expression "(int **)(puVar3 + -0x7034)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x7034)" ( (binary_expression "puVar3 + -0x7034" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar3 + -0x7038) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x7038) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x7038)" * (cast_expression "(int *)(puVar3 + -0x7038)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x7038)" ( (binary_expression "puVar3 + -0x7038" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" identifier = (pointer_expression "*(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" * (cast_expression "(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar5 + param_1 * 4) + 4)" ( (binary_expression "*(int *)(iVar5 + param_1 * 4) + 4" (pointer_expression "*(int *)(iVar5 + param_1 * 4)" * (cast_expression "(int *)(iVar5 + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + param_1 * 4)" ( (binary_expression "iVar5 + param_1 * 4" identifier + (binary_expression "param_1 * 4" identifier * number_literal)) )))) + number_literal) ))))) ;) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" identifier = identifier) ;) (while_statement "while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" { (expression_statement "puVar1 = (uint *)(piVar7 + 2);" (assignment_expression "puVar1 = (uint *)(piVar7 + 2)" identifier = (cast_expression "(uint *)(piVar7 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 2)" ( (binary_expression "piVar7 + 2" identifier + number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = (*puVar1 & 0x7f) + 0x80;" (assignment_expression "iVar5 = (*puVar1 & 0x7f) + 0x80" identifier = (binary_expression "(*puVar1 & 0x7f) + 0x80" (parenthesized_expression "(*puVar1 & 0x7f)" ( (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" * identifier) & number_literal) )) + number_literal)) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) (if_statement "if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" if (parenthesized_expression "((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01')" ( (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(*puVar1 & 0x7f) + '\x01')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)(*puVar1 & 0x7f) + '\x01')" ( (binary_expression "(char)(*puVar1 & 0x7f) + '\x01'" (cast_expression "(char)(*puVar1 & 0x7f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*puVar1 & 0x7f)" ( (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" * identifier) & number_literal) ))) + (char_literal "'\x01'" ' escape_sequence ')) ))) >> number_literal) < (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" { (expression_statement "iVar5 = FUN_00064cec();" (assignment_expression "iVar5 = FUN_00064cec()" identifier = (call_expression "FUN_00064cec()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" identifier = identifier) ;) })) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (if_statement "if (piVar8 == piVar7) break;" if (parenthesized_expression "(piVar8 == piVar7)" ( (binary_expression "piVar8 == piVar7" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) })) (expression_statement "piVar9[iVar10] = -1;" (assignment_expression "piVar9[iVar10] = -1" (subscript_expression "piVar9[iVar10]" identifier [ identifier ]) = number_literal) ;) (expression_statement "set_pipestatus_array(piVar9);" (call_expression "set_pipestatus_array(piVar9)" identifier (argument_list "(piVar9)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + (binary_expression IDENT * LIT)) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (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 ( IDENT , (binary_expression IDENT << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) + (char_literal ' escape_sequence ')) ))) >> LIT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00064d0c(int param_1)\n\n{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00064d0c(int param_1)" (identifier "FUN_00064d0c") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  int iVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  \n  puVar3 = PTR___environ_00145154;\n  puVar2 = PTR_jobs_00144e5c;\n  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);\n  piVar6 = (int *)*piVar7;\n  if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }\n  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);\n  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }\n  iVar10 = 0;\n  piVar8 = piVar7;\n  piVar9 = piVar4;\n  while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }\n  piVar9[iVar10] = -1;\n  set_pipestatus_array(piVar9);\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (expression_statement "puVar3 = PTR___environ_00145154;" (assignment_expression "puVar3 = PTR___environ_00145154" (identifier "puVar3") (= "=") (identifier "PTR___environ_00145154")) (; ";")) (expression_statement "puVar2 = PTR_jobs_00144e5c;" (assignment_expression "puVar2 = PTR_jobs_00144e5c" (identifier "puVar2") (= "=") (identifier "PTR_jobs_00144e5c")) (; ";")) (expression_statement "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" (* "*") (cast_expression "(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4)" (( "(") (binary_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4" (pointer_expression "*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" (* "*") (cast_expression "(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)PTR_jobs_00144e5c + param_1 * 4)" (( "(") (binary_expression "*(int *)PTR_jobs_00144e5c + param_1 * 4" (pointer_expression "*(int *)PTR_jobs_00144e5c" (* "*") (cast_expression "(int *)PTR_jobs_00144e5c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_jobs_00144e5c"))) (+ "+") (binary_expression "param_1 * 4" (identifier "param_1") (* "*") (number_literal "4"))) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (if_statement "if (piVar6 == piVar7) {\n    iVar10 = 2;\n  }\n  else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" (if "if") (parenthesized_expression "(piVar6 == piVar7)" (( "(") (binary_expression "piVar6 == piVar7" (identifier "piVar6") (== "==") (identifier "piVar7")) () ")")) (compound_statement "{\n    iVar10 = 2;\n  }" ({ "{") (expression_statement "iVar10 = 2;" (assignment_expression "iVar10 = 2" (identifier "iVar10") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" (else "else") (compound_statement "{\n    piVar4 = piVar6;\n    iVar5 = 1;\n    do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);\n    iVar10 = iVar10 + 2;\n  }" ({ "{") (expression_statement "piVar4 = piVar6;" (assignment_expression "piVar4 = piVar6" (identifier "piVar4") (= "=") (identifier "piVar6")) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    } while (piVar4 != piVar7);" (do "do") (compound_statement "{\n      iVar10 = iVar5;\n      piVar4 = (int *)*piVar4;\n      iVar5 = iVar10 + 1;\n    }" ({ "{") (expression_statement "iVar10 = iVar5;" (assignment_expression "iVar10 = iVar5" (identifier "iVar10") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "piVar4 = (int *)*piVar4;" (assignment_expression "piVar4 = (int *)*piVar4" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (expression_statement "iVar5 = iVar10 + 1;" (assignment_expression "iVar5 = iVar10 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar4 != piVar7)" (( "(") (binary_expression "piVar4 != piVar7" (identifier "piVar4") (!= "!=") (identifier "piVar7")) () ")")) (; ";")) (expression_statement "iVar10 = iVar10 + 2;" (assignment_expression "iVar10 = iVar10 + 2" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);" (assignment_expression "piVar4 = *(int **)(PTR___environ_00145154 + -0x7034)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(PTR___environ_00145154 + -0x7034)" (* "*") (cast_expression "(int **)(PTR___environ_00145154 + -0x7034)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR___environ_00145154 + -0x7034)" (( "(") (binary_expression "PTR___environ_00145154 + -0x7034" (identifier "PTR___environ_00145154") (+ "+") (number_literal "-0x7034")) () ")"))))) (; ";")) (if_statement "if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" (if "if") (parenthesized_expression "(*(int *)(PTR___environ_00145154 + -0x7038) < iVar10)" (( "(") (binary_expression "*(int *)(PTR___environ_00145154 + -0x7038) < iVar10" (pointer_expression "*(int *)(PTR___environ_00145154 + -0x7038)" (* "*") (cast_expression "(int *)(PTR___environ_00145154 + -0x7038)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR___environ_00145154 + -0x7038)" (( "(") (binary_expression "PTR___environ_00145154 + -0x7038" (identifier "PTR___environ_00145154") (+ "+") (number_literal "-0x7038")) () ")")))) (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);\n    iVar5 = *(int *)puVar2;\n    *(int **)(puVar3 + -0x7034) = piVar4;\n    *(int *)(puVar3 + -0x7038) = iVar10;\n    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);\n    piVar6 = (int *)*piVar7;\n  }" ({ "{") (expression_statement "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);" (assignment_expression "piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (identifier "piVar4") (= "=") (cast_expression "(int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2)" (parenthesized_expression "(*(code *)PTR_xrealloc_0014473c)" (( "(") (pointer_expression "*(code *)PTR_xrealloc_0014473c" (* "*") (cast_expression "(code *)PTR_xrealloc_0014473c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_xrealloc_0014473c"))) () ")")) (argument_list "(piVar4,iVar10 << 2)" (( "(") (identifier "piVar4") (, ",") (binary_expression "iVar10 << 2" (identifier "iVar10") (<< "<<") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" (identifier "iVar5") (= "=") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) (; ";")) (expression_statement "*(int **)(puVar3 + -0x7034) = piVar4;" (assignment_expression "*(int **)(puVar3 + -0x7034) = piVar4" (pointer_expression "*(int **)(puVar3 + -0x7034)" (* "*") (cast_expression "(int **)(puVar3 + -0x7034)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x7034)" (( "(") (binary_expression "puVar3 + -0x7034" (identifier "puVar3") (+ "+") (number_literal "-0x7034")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "*(int *)(puVar3 + -0x7038) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x7038) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x7038)" (* "*") (cast_expression "(int *)(puVar3 + -0x7038)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x7038)" (( "(") (binary_expression "puVar3 + -0x7038" (identifier "puVar3") (+ "+") (number_literal "-0x7038")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);" (assignment_expression "piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" (* "*") (cast_expression "(int **)(*(int *)(iVar5 + param_1 * 4) + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar5 + param_1 * 4) + 4)" (( "(") (binary_expression "*(int *)(iVar5 + param_1 * 4) + 4" (pointer_expression "*(int *)(iVar5 + param_1 * 4)" (* "*") (cast_expression "(int *)(iVar5 + param_1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + param_1 * 4)" (( "(") (binary_expression "iVar5 + param_1 * 4" (identifier "iVar5") (+ "+") (binary_expression "param_1 * 4" (identifier "param_1") (* "*") (number_literal "4"))) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" (identifier "piVar8") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" (identifier "piVar9") (= "=") (identifier "piVar4")) (; ";")) (while_statement "while( true ) {\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar1 = (uint *)(piVar7 + 2);\n    iVar10 = iVar10 + 1;\n    iVar5 = (*puVar1 & 0x7f) + 0x80;\n    piVar7 = piVar6;\n    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }\n    *piVar4 = iVar5;\n    piVar4 = piVar4 + 1;\n    if (piVar8 == piVar7) break;\n    piVar6 = (int *)*piVar7;\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(piVar7 + 2);" (assignment_expression "puVar1 = (uint *)(piVar7 + 2)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(piVar7 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 2)" (( "(") (binary_expression "piVar7 + 2" (identifier "piVar7") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = (*puVar1 & 0x7f) + 0x80;" (assignment_expression "iVar5 = (*puVar1 & 0x7f) + 0x80" (identifier "iVar5") (= "=") (binary_expression "(*puVar1 & 0x7f) + 0x80" (parenthesized_expression "(*puVar1 & 0x7f)" (( "(") (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (& "&") (number_literal "0x7f")) () ")")) (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" (identifier "piVar7") (= "=") (identifier "piVar6")) (; ";")) (if_statement "if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" (if "if") (parenthesized_expression "((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01')" (( "(") (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01'" (binary_expression "(char)((char)(*puVar1 & 0x7f) + '\x01') >> 1" (cast_expression "(char)((char)(*puVar1 & 0x7f) + '\x01')" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)(*puVar1 & 0x7f) + '\x01')" (( "(") (binary_expression "(char)(*puVar1 & 0x7f) + '\x01'" (cast_expression "(char)(*puVar1 & 0x7f)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(*puVar1 & 0x7f)" (( "(") (binary_expression "*puVar1 & 0x7f" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (& "&") (number_literal "0x7f")) () ")"))) (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) (>> ">>") (number_literal "1")) (< "<") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      iVar5 = FUN_00064cec();\n      piVar7 = piVar6;\n    }" ({ "{") (expression_statement "iVar5 = FUN_00064cec();" (assignment_expression "iVar5 = FUN_00064cec()" (identifier "iVar5") (= "=") (call_expression "FUN_00064cec()" (identifier "FUN_00064cec") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar7 = piVar6;" (assignment_expression "piVar7 = piVar6" (identifier "piVar7") (= "=") (identifier "piVar6")) (; ";")) (} "}"))) (expression_statement "*piVar4 = iVar5;" (assignment_expression "*piVar4 = iVar5" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 1" (identifier "piVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar8 == piVar7) break;" (if "if") (parenthesized_expression "(piVar8 == piVar7)" (( "(") (binary_expression "piVar8 == piVar7" (identifier "piVar8") (== "==") (identifier "piVar7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar6 = (int *)*piVar7;" (assignment_expression "piVar6 = (int *)*piVar7" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}"))) (expression_statement "piVar9[iVar10] = -1;" (assignment_expression "piVar9[iVar10] = -1" (subscript_expression "piVar9[iVar10]" (identifier "piVar9") ([ "[") (identifier "iVar10") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "set_pipestatus_array(piVar9);" (call_expression "set_pipestatus_array(piVar9)" (identifier "set_pipestatus_array") (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(int var_1)

{
  type_1 *puVar1;
  type_2 *puVar2;
  type_2 *var_7;
  int *var_5;
  type_1 var_9;
  int var_8;
  int *var_2;
  int *var_3;
  int *var_11;
  int *ps;
  int var_4;
  
  var_7 = var_6;
  puVar2 = PTR_jobs_00144e5c;
  var_3 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + var_1 * 4) + 4);
  var_2 = (int *)*var_3;
  if (var_2 == var_3) {
    var_4 = 2;
  }
  else {
    var_5 = var_2;
    var_8 = 1;
    do {
      var_4 = var_8;
      var_5 = (int *)*var_5;
      var_8 = var_4 + 1;
    } while (var_5 != var_3);
    var_4 = var_4 + 2;
  }
  var_5 = *(int **)(var_6 + -0x7034);
  if (*(int *)(var_6 + -0x7038) < var_4) {
    var_5 = (int *)(*(type_3 *)PTR_xrealloc_0014473c)(var_5,var_4 << 2);
    var_8 = *(int *)puVar2;
    *(int **)(var_7 + -0x7034) = var_5;
    *(int *)(var_7 + -0x7038) = var_4;
    var_3 = *(int **)(*(int *)(var_8 + var_1 * 4) + 4);
    var_2 = (int *)*var_3;
  }
  var_4 = 0;
  var_11 = var_3;
  ps = var_5;
  while( true ) {
    puVar1 = (type_1 *)(var_3 + 2);
    var_4 = var_4 + 1;
    var_9 = *puVar1 & 0x7f;
    var_8 = var_9 + 0x80;
    var_3 = var_2;
    if ((char)((char)var_9 + '\x01') >> 1 < '\x01') {
      var_8 = var_10(*puVar1);
      var_3 = var_2;
    }
    *var_5 = var_8;
    var_5 = var_5 + 1;
    if (var_11 == var_3) break;
    var_2 = (int *)*var_3;
  }
  ps[var_4] = -1;
  var_12(ps,var_4);
  return;
}


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

void MASKED(int param_1)

{
  uint *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  
  puVar3 = PTR___environ_00145154;
  puVar2 = PTR_jobs_00144e5c;
  piVar7 = *(int **)(*(int *)(*(int *)PTR_jobs_00144e5c + param_1 * 4) + 4);
  piVar6 = (int *)*piVar7;
  if (piVar6 == piVar7) {
    iVar10 = 2;
  }
  else {
    piVar4 = piVar6;
    iVar5 = 1;
    do {
      iVar10 = iVar5;
      piVar4 = (int *)*piVar4;
      iVar5 = iVar10 + 1;
    } while (piVar4 != piVar7);
    iVar10 = iVar10 + 2;
  }
  piVar4 = *(int **)(PTR___environ_00145154 + -0x7034);
  if (*(int *)(PTR___environ_00145154 + -0x7038) < iVar10) {
    piVar4 = (int *)(*(code *)PTR_xrealloc_0014473c)(piVar4,iVar10 << 2);
    iVar5 = *(int *)puVar2;
    *(int **)(puVar3 + -0x7034) = piVar4;
    *(int *)(puVar3 + -0x7038) = iVar10;
    piVar7 = *(int **)(*(int *)(iVar5 + param_1 * 4) + 4);
    piVar6 = (int *)*piVar7;
  }
  iVar10 = 0;
  piVar8 = piVar7;
  piVar9 = piVar4;
  while( true ) {
    puVar1 = (uint *)(piVar7 + 2);
    iVar10 = iVar10 + 1;
    iVar5 = (*puVar1 & 0x7f) + 0x80;
    piVar7 = piVar6;
    if ((char)((char)(*puVar1 & 0x7f) + '\x01') >> 1 < '\x01') {
      iVar5 = FUN_00064cec();
      piVar7 = piVar6;
    }
    *piVar4 = iVar5;
    piVar4 = piVar4 + 1;
    if (piVar8 == piVar7) break;
    piVar6 = (int *)*piVar7;
  }
  piVar9[iVar10] = -1;
  set_pipestatus_array(piVar9);
  return;
}

