
/* (anonymous namespace)::pool::allocate(unsigned int) [clone .constprop.3] */

uint * (anonymous_namespace)::pool::allocate(uint param_1)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint *puVar8;
  int unaff_EDI;
  pool *in_stack_ffffffd8;
  uint in_stack_ffffffdc;
  uint *puVar9;
  
  iVar2 = __x86_get_pc_thunk_di();
  iVar5 = *(int *)(unaff_EDI + 0x1a849b);
  if ((iVar5 != 0) &&
     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {
    __throw_concurrence_lock_error();
                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */
    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);
    return puVar8;
  }
  uVar4 = iVar2 + 0x10;
  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);
  if (uVar4 < 8) {
    uVar4 = 8;
  }
  uVar4 = uVar4 + 0xf & 0xfffffff0;
  if (puVar8 == (uint *)0x0) {
    puVar8 = (uint *)0x0;
  }
  else {
    uVar7 = *puVar8;
    if (uVar7 < uVar4) {
      do {
        puVar9 = puVar8;
        puVar8 = (uint *)puVar9[1];
        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;
        uVar7 = *puVar8;
      } while (uVar7 < uVar4);
      puVar9 = puVar9 + 1;
    }
    else {
      puVar9 = (uint *)(unaff_EDI + 0x1af86f);
    }
    if (uVar7 - uVar4 < 8) {
      *puVar8 = uVar7;
      *puVar9 = puVar8[1];
    }
    else {
      puVar1 = (uint *)((int)puVar8 + uVar4);
      puVar1[1] = puVar8[1];
      *puVar1 = uVar7 - uVar4;
      puVar8 = (uint *)*puVar9;
      *puVar8 = uVar4;
      *puVar9 = (uint)puVar1;
    }
    puVar8 = puVar8 + 4;
  }
LAB_001e6af7:
  if ((iVar5 != 0) &&
     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {
    piVar6 = (int *)__cxa_allocate_exception(4);
    *piVar6 = unaff_EDI + 0x1a5527;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */
    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));
  }
  return puVar8;
}



uint * FUN_001e6a80(void)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint *puVar8;
  int unaff_EDI;
  uint *local_24;
  
  iVar2 = FUN_000559ee();
  iVar5 = *(int *)(unaff_EDI + 0x1a849b);
  if ((iVar5 != 0) &&
     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {
    FUN_001e68a0();
                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */
    puVar8 = (uint *)FUN_00031f8a();
    return puVar8;
  }
  uVar4 = iVar2 + 0x10;
  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);
  if (uVar4 < 8) {
    uVar4 = 8;
  }
  uVar4 = uVar4 + 0xf & 0xfffffff0;
  if (puVar8 == (uint *)0x0) {
    puVar8 = (uint *)0x0;
  }
  else {
    uVar7 = *puVar8;
    if (uVar7 < uVar4) {
      do {
        local_24 = puVar8;
        puVar8 = (uint *)local_24[1];
        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;
        uVar7 = *puVar8;
      } while (uVar7 < uVar4);
      local_24 = local_24 + 1;
    }
    else {
      local_24 = (uint *)(unaff_EDI + 0x1af86f);
    }
    if (uVar7 - uVar4 < 8) {
      *puVar8 = uVar7;
      *local_24 = puVar8[1];
    }
    else {
      puVar1 = (uint *)((int)puVar8 + uVar4);
      puVar1[1] = puVar8[1];
      *puVar1 = uVar7 - uVar4;
      puVar8 = (uint *)*local_24;
      *puVar8 = uVar4;
      *local_24 = (uint)puVar1;
    }
    puVar8 = puVar8 + 4;
  }
LAB_001e6af7:
  if ((iVar5 != 0) &&
     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {
    piVar6 = (int *)FUN_001e6be0(4);
    *piVar6 = unaff_EDI + 0x1a5527;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */
    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))
    ;
  }
  return puVar8;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x000559ee
ADD EDI,0x1a8577
PUSH ESI
MOV ESI,EAX
PUSH EBX
SUB ESP,0x1c
MOV EAX,dword ptr [EDI + 0xffffff24]
MOV dword ptr [EBP + -0x1c],EAX
TEST EAX,EAX
JZ 0x001e6abf
SUB ESP,0xc
LEA EAX,[EDI + 0x72e0]
MOV EBX,EDI
PUSH EAX
CALL 0x000297c0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001e6b94
LEA EAX,[ESI + 0x10]
MOV EDX,0x8
MOV ECX,dword ptr [EDI + 0x72f8]
CMP EAX,0x8
CMOVC EAX,EDX
ADD EAX,0xf
AND EAX,0xfffffff0
TEST ECX,ECX
JZ 0x001e6b59
MOV EDX,dword ptr [ECX]
CMP EAX,EDX
JA 0x001e6af0
JMP 0x001e6b5d
MOV EDX,dword ptr [ESI]
CMP EAX,EDX
JBE 0x001e6b20
MOV ECX,ESI
MOV ESI,dword ptr [ECX + 0x4]
TEST ESI,ESI
JNZ 0x001e6ae8
MOV EAX,dword ptr [EBP + -0x1c]
TEST EAX,EAX
JZ 0x001e6b16
SUB ESP,0xc
LEA EAX,[EDI + 0x72e0]
MOV EBX,EDI
PUSH EAX
CALL 0x00029500
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001e6b6a
LEA ESP,[EBP + -0xc]
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EBX,[ECX + 0x4]
MOV dword ptr [EBP + -0x20],EBX
MOV ECX,EDX
MOV EBX,dword ptr [ESI + 0x4]
SUB ECX,EAX
CMP ECX,0x7
JBE 0x001e6b50
LEA EDX,[ESI + EAX*0x1]
MOV dword ptr [EDX + 0x4],EBX
MOV EBX,dword ptr [EBP + -0x20]
MOV dword ptr [EDX],ECX
MOV ESI,dword ptr [EBX]
MOV dword ptr [ESI],EAX
MOV dword ptr [EBX],EDX
ADD ESI,0x10
JMP 0x001e6af7
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [ESI],EDX
MOV dword ptr [EAX],EBX
JMP 0x001e6b43
XOR ESI,ESI
JMP 0x001e6af7
LEA EBX,[EDI + 0x72f8]
MOV ESI,ECX
MOV dword ptr [EBP + -0x20],EBX
JMP 0x001e6b26
SUB ESP,0xc
PUSH 0x4
CALL 0x001e6be0
LEA EDX,[EDI + 0xffffcfa8]
ADD ESP,0xc
ADD EDX,0x8
MOV dword ptr [EAX],EDX
PUSH dword ptr [EDI + 0xffffffdc]
PUSH dword ptr [EDI + 0xfffffbc0]
PUSH EAX
CALL 0x001e5630
CALL 0x001e68a0
JMP 0x00031f8a
(translation_unit "uint * FUN_001e6a80(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}\n\n" (function_definition "uint * FUN_001e6a80(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_001e6a80(void)" * (function_declarator "FUN_001e6a80(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "iVar2 = FUN_000559ee();" (assignment_expression "iVar2 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *(int *)(unaff_EDI + 0x1a849b);" (assignment_expression "iVar5 = *(int *)(unaff_EDI + 0x1a849b)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x1a849b)" * (cast_expression "(int *)(unaff_EDI + 0x1a849b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a849b)" ( (binary_expression "unaff_EDI + 0x1a849b" identifier + number_literal) ))))) ;) (if_statement "if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" ( (comma_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0" (assignment_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    FUN_001e68a0();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" { (expression_statement "FUN_001e68a0();" (call_expression "FUN_001e68a0()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "puVar8 = (uint *)FUN_00031f8a();" (assignment_expression "puVar8 = (uint *)FUN_00031f8a()" identifier = (cast_expression "(uint *)FUN_00031f8a()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031f8a()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "uVar4 = iVar2 + 0x10;" (assignment_expression "uVar4 = iVar2 + 0x10" identifier = (binary_expression "iVar2 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8 = *(uint **)(unaff_EDI + 0x1af86f);" (assignment_expression "puVar8 = *(uint **)(unaff_EDI + 0x1af86f)" identifier = (pointer_expression "*(uint **)(unaff_EDI + 0x1af86f)" * (cast_expression "(uint **)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < 8) {\n    uVar4 = 8;\n  }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar4 = 8;\n  }" { (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) })) (expression_statement "uVar4 = uVar4 + 0xf & 0xfffffff0;" (assignment_expression "uVar4 = uVar4 + 0xf & 0xfffffff0" identifier = (binary_expression "uVar4 + 0xf & 0xfffffff0" (binary_expression "uVar4 + 0xf" identifier + number_literal) & number_literal)) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar8 = (uint *)0x0;\n  }" { (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" else (compound_statement "{\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" { (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (if_statement "if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" if (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) (compound_statement "{\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }" { (do_statement "do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);" do (compound_statement "{\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      }" { (expression_statement "local_24 = puVar8;" (assignment_expression "local_24 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = (uint *)local_24[1];" (assignment_expression "puVar8 = (uint *)local_24[1]" identifier = (cast_expression "(uint *)local_24[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar8 == (uint *)0x0) goto LAB_001e6af7;" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e6af7;" goto statement_identifier ;)) (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) }) while (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) ;) (expression_statement "local_24 = local_24 + 1;" (assignment_expression "local_24 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" else (compound_statement "{\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" { (expression_statement "local_24 = (uint *)(unaff_EDI + 0x1af86f);" (assignment_expression "local_24 = (uint *)(unaff_EDI + 0x1af86f)" identifier = (cast_expression "(uint *)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) )))) ;) }))) (if_statement "if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" if (parenthesized_expression "(uVar7 - uVar4 < 8)" ( (binary_expression "uVar7 - uVar4 < 8" (binary_expression "uVar7 - uVar4" identifier - identifier) < number_literal) )) (compound_statement "{\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }" { (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*local_24 = puVar8[1];" (assignment_expression "*local_24 = puVar8[1]" (pointer_expression "*local_24" * identifier) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" else (compound_statement "{\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" { (expression_statement "puVar1 = (uint *)((int)puVar8 + uVar4);" (assignment_expression "puVar1 = (uint *)((int)puVar8 + uVar4)" identifier = (cast_expression "(uint *)((int)puVar8 + uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + uVar4)" ( (binary_expression "(int)puVar8 + uVar4" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar1[1] = puVar8[1];" (assignment_expression "puVar1[1] = puVar8[1]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar1 = uVar7 - uVar4;" (assignment_expression "*puVar1 = uVar7 - uVar4" (pointer_expression "*puVar1" * identifier) = (binary_expression "uVar7 - uVar4" identifier - identifier)) ;) (expression_statement "puVar8 = (uint *)*local_24;" (assignment_expression "puVar8 = (uint *)*local_24" identifier = (cast_expression "(uint *)*local_24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_24" * identifier))) ;) (expression_statement "*puVar8 = uVar4;" (assignment_expression "*puVar8 = uVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*local_24 = (uint)puVar1;" (assignment_expression "*local_24 = (uint)puVar1" (pointer_expression "*local_24" * identifier) = (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "puVar8 = puVar8 + 4;" (assignment_expression "puVar8 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) }))) (labeled_statement "LAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" statement_identifier : (if_statement "if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" ( (comma_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0" (assignment_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" { (expression_statement "piVar6 = (int *)FUN_001e6be0(4);" (assignment_expression "piVar6 = (int *)FUN_001e6be0(4)" identifier = (cast_expression "(int *)FUN_001e6be0(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e6be0(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*piVar6 = unaff_EDI + 0x1a5527;" (assignment_expression "*piVar6 = unaff_EDI + 0x1a5527" (pointer_expression "*piVar6" * identifier) = (binary_expression "unaff_EDI + 0x1a5527" identifier + number_literal)) ;) comment comment (expression_statement "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;" (call_expression "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" identifier (argument_list "(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" ( identifier , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8137)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8137)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8137)" ( (binary_expression "unaff_EDI + 0x1a8137" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8553)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8553)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8553)" ( (binary_expression "unaff_EDI + 0x1a8553" identifier + number_literal) )))) ))) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "/* (anonymous namespace)::pool::allocate(unsigned int) [clone .constprop.3] */\n\nuint * (anonymous_namespace)::pool::allocate(uint param_1)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  pool *in_stack_ffffffd8;\n  uint in_stack_ffffffdc;\n  uint *puVar9;\n  \n  iVar2 = __x86_get_pc_thunk_di();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    __throw_concurrence_lock_error();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }\n  return puVar8;\n}\n\n" comment (ERROR "uint * (anonymous_namespace)::" (binary_expression "uint * (anonymous_namespace)" identifier * (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : :) (labeled_statement "pool::allocate(uint param_1)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  pool *in_stack_ffffffd8;\n  uint in_stack_ffffffdc;\n  uint *puVar9;\n  \n  iVar2 = __x86_get_pc_thunk_di();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    __throw_concurrence_lock_error();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }\n  return puVar8;\n}" statement_identifier : (ERROR ":allocate(uint param_1)" : (macro_type_specifier "allocate(uint param_1)" identifier ( (ERROR "uint" type_identifier) (type_descriptor "param_1" type_identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  pool *in_stack_ffffffd8;\n  uint in_stack_ffffffdc;\n  uint *puVar9;\n  \n  iVar2 = __x86_get_pc_thunk_di();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    __throw_concurrence_lock_error();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }\n  return puVar8;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "pool *in_stack_ffffffd8;" type_identifier (pointer_declarator "*in_stack_ffffffd8" * identifier) ;) (declaration "uint in_stack_ffffffdc;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "iVar2 = __x86_get_pc_thunk_di();" (assignment_expression "iVar2 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *(int *)(unaff_EDI + 0x1a849b);" (assignment_expression "iVar5 = *(int *)(unaff_EDI + 0x1a849b)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x1a849b)" * (cast_expression "(int *)(unaff_EDI + 0x1a849b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a849b)" ( (binary_expression "unaff_EDI + 0x1a849b" identifier + number_literal) ))))) ;) (if_statement "if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    __throw_concurrence_lock_error();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);\n    return puVar8;\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" ( (comma_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0" (assignment_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    __throw_concurrence_lock_error();\n                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */\n    puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);\n    return puVar8;\n  }" { (expression_statement "__throw_concurrence_lock_error();" (call_expression "__throw_concurrence_lock_error()" identifier (argument_list "()" ( ))) ;) comment (expression_statement "puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc);" (assignment_expression "puVar8 = (uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc)" identifier = (cast_expression "(uint *)allocate(in_stack_ffffffd8,in_stack_ffffffdc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "allocate(in_stack_ffffffd8,in_stack_ffffffdc)" identifier (argument_list "(in_stack_ffffffd8,in_stack_ffffffdc)" ( identifier , identifier ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "uVar4 = iVar2 + 0x10;" (assignment_expression "uVar4 = iVar2 + 0x10" identifier = (binary_expression "iVar2 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8 = *(uint **)(unaff_EDI + 0x1af86f);" (assignment_expression "puVar8 = *(uint **)(unaff_EDI + 0x1af86f)" identifier = (pointer_expression "*(uint **)(unaff_EDI + 0x1af86f)" * (cast_expression "(uint **)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < 8) {\n    uVar4 = 8;\n  }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar4 = 8;\n  }" { (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) })) (expression_statement "uVar4 = uVar4 + 0xf & 0xfffffff0;" (assignment_expression "uVar4 = uVar4 + 0xf & 0xfffffff0" identifier = (binary_expression "uVar4 + 0xf & 0xfffffff0" (binary_expression "uVar4 + 0xf" identifier + number_literal) & number_literal)) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar8 = (uint *)0x0;\n  }" { (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" else (compound_statement "{\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" { (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (if_statement "if (uVar7 < uVar4) {\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }\n    else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }" if (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) (compound_statement "{\n      do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      puVar9 = puVar9 + 1;\n    }" { (do_statement "do {\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);" do (compound_statement "{\n        puVar9 = puVar8;\n        puVar8 = (uint *)puVar9[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      }" { (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = (uint *)puVar9[1];" (assignment_expression "puVar8 = (uint *)puVar9[1]" identifier = (cast_expression "(uint *)puVar9[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar8 == (uint *)0x0) goto LAB_001e6af7;" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e6af7;" goto statement_identifier ;)) (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) }) while (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }" else (compound_statement "{\n      puVar9 = (uint *)(unaff_EDI + 0x1af86f);\n    }" { (expression_statement "puVar9 = (uint *)(unaff_EDI + 0x1af86f);" (assignment_expression "puVar9 = (uint *)(unaff_EDI + 0x1af86f)" identifier = (cast_expression "(uint *)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) )))) ;) }))) (if_statement "if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }" if (parenthesized_expression "(uVar7 - uVar4 < 8)" ( (binary_expression "uVar7 - uVar4 < 8" (binary_expression "uVar7 - uVar4" identifier - identifier) < number_literal) )) (compound_statement "{\n      *puVar8 = uVar7;\n      *puVar9 = puVar8[1];\n    }" { (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*puVar9 = puVar8[1];" (assignment_expression "*puVar9 = puVar8[1]" (pointer_expression "*puVar9" * identifier) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }" else (compound_statement "{\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*puVar9;\n      *puVar8 = uVar4;\n      *puVar9 = (uint)puVar1;\n    }" { (expression_statement "puVar1 = (uint *)((int)puVar8 + uVar4);" (assignment_expression "puVar1 = (uint *)((int)puVar8 + uVar4)" identifier = (cast_expression "(uint *)((int)puVar8 + uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + uVar4)" ( (binary_expression "(int)puVar8 + uVar4" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar1[1] = puVar8[1];" (assignment_expression "puVar1[1] = puVar8[1]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar1 = uVar7 - uVar4;" (assignment_expression "*puVar1 = uVar7 - uVar4" (pointer_expression "*puVar1" * identifier) = (binary_expression "uVar7 - uVar4" identifier - identifier)) ;) (expression_statement "puVar8 = (uint *)*puVar9;" (assignment_expression "puVar8 = (uint *)*puVar9" identifier = (cast_expression "(uint *)*puVar9" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) (expression_statement "*puVar8 = uVar4;" (assignment_expression "*puVar8 = uVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*puVar9 = (uint)puVar1;" (assignment_expression "*puVar9 = (uint)puVar1" (pointer_expression "*puVar9" * identifier) = (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "puVar8 = puVar8 + 4;" (assignment_expression "puVar8 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) }))) (labeled_statement "LAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }" statement_identifier : (if_statement "if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" ( (comma_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0" (assignment_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    piVar6 = (int *)__cxa_allocate_exception(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */\n    __cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));\n  }" { (expression_statement "piVar6 = (int *)__cxa_allocate_exception(4);" (assignment_expression "piVar6 = (int *)__cxa_allocate_exception(4)" identifier = (cast_expression "(int *)__cxa_allocate_exception(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "__cxa_allocate_exception(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*piVar6 = unaff_EDI + 0x1a5527;" (assignment_expression "*piVar6 = unaff_EDI + 0x1a5527" (pointer_expression "*piVar6" * identifier) = (binary_expression "unaff_EDI + 0x1a5527" identifier + number_literal)) ;) comment comment (expression_statement "__cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553));" (call_expression "__cxa_throw(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" identifier (argument_list "(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" ( identifier , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8137)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8137)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8137)" ( (binary_expression "unaff_EDI + 0x1a8137" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8553)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8553)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8553)" ( (binary_expression "unaff_EDI + 0x1a8553" identifier + number_literal) )))) ))) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "uint * FUN_001e6a80(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}\n\n" (function_definition "uint * FUN_001e6a80(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_001e6a80(void)" * (function_declarator "FUN_001e6a80(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "iVar2 = FUN_000559ee();" (assignment_expression "iVar2 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *(int *)(unaff_EDI + 0x1a849b);" (assignment_expression "iVar5 = *(int *)(unaff_EDI + 0x1a849b)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x1a849b)" * (cast_expression "(int *)(unaff_EDI + 0x1a849b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a849b)" ( (binary_expression "unaff_EDI + 0x1a849b" identifier + number_literal) ))))) ;) (if_statement "if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" ( (comma_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0" (assignment_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" { (expression_statement "FUN_001e68a0();" (call_expression "FUN_001e68a0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar8 = (uint *)FUN_00031f8a();" (assignment_expression "puVar8 = (uint *)FUN_00031f8a()" identifier = (cast_expression "(uint *)FUN_00031f8a()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031f8a()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "uVar4 = iVar2 + 0x10;" (assignment_expression "uVar4 = iVar2 + 0x10" identifier = (binary_expression "iVar2 + 0x10" identifier + number_literal)) ;) (expression_statement "puVar8 = *(uint **)(unaff_EDI + 0x1af86f);" (assignment_expression "puVar8 = *(uint **)(unaff_EDI + 0x1af86f)" identifier = (pointer_expression "*(uint **)(unaff_EDI + 0x1af86f)" * (cast_expression "(uint **)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < 8) {\n    uVar4 = 8;\n  }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar4 = 8;\n  }" { (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) })) (expression_statement "uVar4 = uVar4 + 0xf & 0xfffffff0;" (assignment_expression "uVar4 = uVar4 + 0xf & 0xfffffff0" identifier = (binary_expression "uVar4 + 0xf & 0xfffffff0" (binary_expression "uVar4 + 0xf" identifier + number_literal) & number_literal)) ;) (if_statement "if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar8 = (uint *)0x0;\n  }" { (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" else (compound_statement "{\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" { (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (if_statement "if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" if (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) (compound_statement "{\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }" { (do_statement "do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);" do (compound_statement "{\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      }" { (expression_statement "local_24 = puVar8;" (assignment_expression "local_24 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = (uint *)local_24[1];" (assignment_expression "puVar8 = (uint *)local_24[1]" identifier = (cast_expression "(uint *)local_24[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar8 == (uint *)0x0) goto LAB_001e6af7;" if (parenthesized_expression "(puVar8 == (uint *)0x0)" ( (binary_expression "puVar8 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e6af7;" goto statement_identifier ;)) (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) }) while (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) ;) (expression_statement "local_24 = local_24 + 1;" (assignment_expression "local_24 = local_24 + 1" identifier = (binary_expression "local_24 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" else (compound_statement "{\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" { (expression_statement "local_24 = (uint *)(unaff_EDI + 0x1af86f);" (assignment_expression "local_24 = (uint *)(unaff_EDI + 0x1af86f)" identifier = (cast_expression "(uint *)(unaff_EDI + 0x1af86f)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af86f)" ( (binary_expression "unaff_EDI + 0x1af86f" identifier + number_literal) )))) ;) }))) (if_statement "if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" if (parenthesized_expression "(uVar7 - uVar4 < 8)" ( (binary_expression "uVar7 - uVar4 < 8" (binary_expression "uVar7 - uVar4" identifier - identifier) < number_literal) )) (compound_statement "{\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }" { (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*local_24 = puVar8[1];" (assignment_expression "*local_24 = puVar8[1]" (pointer_expression "*local_24" * identifier) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" else (compound_statement "{\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" { (expression_statement "puVar1 = (uint *)((int)puVar8 + uVar4);" (assignment_expression "puVar1 = (uint *)((int)puVar8 + uVar4)" identifier = (cast_expression "(uint *)((int)puVar8 + uVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + uVar4)" ( (binary_expression "(int)puVar8 + uVar4" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar1[1] = puVar8[1];" (assignment_expression "puVar1[1] = puVar8[1]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar1 = uVar7 - uVar4;" (assignment_expression "*puVar1 = uVar7 - uVar4" (pointer_expression "*puVar1" * identifier) = (binary_expression "uVar7 - uVar4" identifier - identifier)) ;) (expression_statement "puVar8 = (uint *)*local_24;" (assignment_expression "puVar8 = (uint *)*local_24" identifier = (cast_expression "(uint *)*local_24" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_24" * identifier))) ;) (expression_statement "*puVar8 = uVar4;" (assignment_expression "*puVar8 = uVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*local_24 = (uint)puVar1;" (assignment_expression "*local_24 = (uint)puVar1" (pointer_expression "*local_24" * identifier) = (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "puVar8 = puVar8 + 4;" (assignment_expression "puVar8 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) }))) (labeled_statement "LAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" statement_identifier : (if_statement "if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" if (parenthesized_expression "((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0))" ( (binary_expression "(iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" ( (comma_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0" (assignment_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier = (call_expression "pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" identifier (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" ( (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" ( (type_descriptor "pthread_mutex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1af857)" ( (binary_expression "unaff_EDI + 0x1af857" identifier + number_literal) ))) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" { (expression_statement "piVar6 = (int *)FUN_001e6be0(4);" (assignment_expression "piVar6 = (int *)FUN_001e6be0(4)" identifier = (cast_expression "(int *)FUN_001e6be0(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e6be0(4)" identifier (argument_list "(4)" ( number_literal ))))) ;) (expression_statement "*piVar6 = unaff_EDI + 0x1a5527;" (assignment_expression "*piVar6 = unaff_EDI + 0x1a5527" (pointer_expression "*piVar6" * identifier) = (binary_expression "unaff_EDI + 0x1a5527" identifier + number_literal)) ;) (expression_statement "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;" (call_expression "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" identifier (argument_list "(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" ( identifier , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8137)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8137)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8137)" ( (binary_expression "unaff_EDI + 0x1a8137" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8553)" * (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8553)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1a8553)" ( (binary_expression "unaff_EDI + 0x1a8553" identifier + number_literal) )))) ))) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return 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 IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "uint * FUN_001e6a80(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" (type_identifier "uint") (pointer_declarator "* FUN_001e6a80(void)" (* "*") (function_declarator "FUN_001e6a80(void)" (identifier "FUN_001e6a80") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int *piVar6;\n  uint uVar7;\n  uint *puVar8;\n  int unaff_EDI;\n  uint *local_24;\n  \n  iVar2 = FUN_000559ee();\n  iVar5 = *(int *)(unaff_EDI + 0x1a849b);\n  if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }\n  uVar4 = iVar2 + 0x10;\n  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);\n  if (uVar4 < 8) {\n    uVar4 = 8;\n  }\n  uVar4 = uVar4 + 0xf & 0xfffffff0;\n  if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }\nLAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }\n  return puVar8;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "uint *local_24;" (type_identifier "uint") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "iVar2 = FUN_000559ee();" (assignment_expression "iVar2 = FUN_000559ee()" (identifier "iVar2") (= "=") (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = *(int *)(unaff_EDI + 0x1a849b);" (assignment_expression "iVar5 = *(int *)(unaff_EDI + 0x1a849b)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(unaff_EDI + 0x1a849b)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x1a849b)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a849b)" (( "(") (binary_expression "unaff_EDI + 0x1a849b" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a849b")) () ")"))))) (; ";")) (if_statement "if ((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" (if "if") (parenthesized_expression "((iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0))" (( "(") (binary_expression "(iVar5 != 0) &&\n     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)" (( "(") (comma_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0" (assignment_expression "iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (identifier "iVar3") (= "=") (call_expression "pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (identifier "pthread_mutex_lock") (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (( "(") (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" (( "(") (type_descriptor "pthread_mutex_t *" (type_identifier "pthread_mutex_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1af857)" (( "(") (binary_expression "unaff_EDI + 0x1af857" (identifier "unaff_EDI") (+ "+") (number_literal "0x1af857")) () ")"))) () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    FUN_001e68a0();\n                    \n    puVar8 = (uint *)FUN_00031f8a();\n    return puVar8;\n  }" ({ "{") (expression_statement "FUN_001e68a0();" (call_expression "FUN_001e68a0()" (identifier "FUN_001e68a0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = (uint *)FUN_00031f8a();" (assignment_expression "puVar8 = (uint *)FUN_00031f8a()" (identifier "puVar8") (= "=") (cast_expression "(uint *)FUN_00031f8a()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00031f8a()" (identifier "FUN_00031f8a") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (expression_statement "uVar4 = iVar2 + 0x10;" (assignment_expression "uVar4 = iVar2 + 0x10" (identifier "uVar4") (= "=") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar8 = *(uint **)(unaff_EDI + 0x1af86f);" (assignment_expression "puVar8 = *(uint **)(unaff_EDI + 0x1af86f)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(unaff_EDI + 0x1af86f)" (* "*") (cast_expression "(uint **)(unaff_EDI + 0x1af86f)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EDI + 0x1af86f)" (( "(") (binary_expression "unaff_EDI + 0x1af86f" (identifier "unaff_EDI") (+ "+") (number_literal "0x1af86f")) () ")"))))) (; ";")) (if_statement "if (uVar4 < 8) {\n    uVar4 = 8;\n  }" (if "if") (parenthesized_expression "(uVar4 < 8)" (( "(") (binary_expression "uVar4 < 8" (identifier "uVar4") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    uVar4 = 8;\n  }" ({ "{") (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" (identifier "uVar4") (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar4 + 0xf & 0xfffffff0;" (assignment_expression "uVar4 = uVar4 + 0xf & 0xfffffff0" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 0xf & 0xfffffff0" (binary_expression "uVar4 + 0xf" (identifier "uVar4") (+ "+") (number_literal "0xf")) (& "&") (number_literal "0xfffffff0"))) (; ";")) (if_statement "if (puVar8 == (uint *)0x0) {\n    puVar8 = (uint *)0x0;\n  }\n  else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" (if "if") (parenthesized_expression "(puVar8 == (uint *)0x0)" (( "(") (binary_expression "puVar8 == (uint *)0x0" (identifier "puVar8") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar8 = (uint *)0x0;\n  }" ({ "{") (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" (identifier "puVar8") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" (else "else") (compound_statement "{\n    uVar7 = *puVar8;\n    if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }\n    if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }\n    puVar8 = puVar8 + 4;\n  }" ({ "{") (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" (identifier "uVar7") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (if_statement "if (uVar7 < uVar4) {\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }\n    else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" (if "if") (parenthesized_expression "(uVar7 < uVar4)" (( "(") (binary_expression "uVar7 < uVar4" (identifier "uVar7") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);\n      local_24 = local_24 + 1;\n    }" ({ "{") (do_statement "do {\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      } while (uVar7 < uVar4);" (do "do") (compound_statement "{\n        local_24 = puVar8;\n        puVar8 = (uint *)local_24[1];\n        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;\n        uVar7 = *puVar8;\n      }" ({ "{") (expression_statement "local_24 = puVar8;" (assignment_expression "local_24 = puVar8" (identifier "local_24") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar8 = (uint *)local_24[1];" (assignment_expression "puVar8 = (uint *)local_24[1]" (identifier "puVar8") (= "=") (cast_expression "(uint *)local_24[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_24[1]" (identifier "local_24") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar8 == (uint *)0x0) goto LAB_001e6af7;" (if "if") (parenthesized_expression "(puVar8 == (uint *)0x0)" (( "(") (binary_expression "puVar8 == (uint *)0x0" (identifier "puVar8") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001e6af7;" (goto "goto") (statement_identifier "LAB_001e6af7") (; ";"))) (expression_statement "uVar7 = *puVar8;" (assignment_expression "uVar7 = *puVar8" (identifier "uVar7") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 < uVar4)" (( "(") (binary_expression "uVar7 < uVar4" (identifier "uVar7") (< "<") (identifier "uVar4")) () ")")) (; ";")) (expression_statement "local_24 = local_24 + 1;" (assignment_expression "local_24 = local_24 + 1" (identifier "local_24") (= "=") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" (else "else") (compound_statement "{\n      local_24 = (uint *)(unaff_EDI + 0x1af86f);\n    }" ({ "{") (expression_statement "local_24 = (uint *)(unaff_EDI + 0x1af86f);" (assignment_expression "local_24 = (uint *)(unaff_EDI + 0x1af86f)" (identifier "local_24") (= "=") (cast_expression "(uint *)(unaff_EDI + 0x1af86f)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1af86f)" (( "(") (binary_expression "unaff_EDI + 0x1af86f" (identifier "unaff_EDI") (+ "+") (number_literal "0x1af86f")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar7 - uVar4 < 8) {\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }\n    else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" (if "if") (parenthesized_expression "(uVar7 - uVar4 < 8)" (( "(") (binary_expression "uVar7 - uVar4 < 8" (binary_expression "uVar7 - uVar4" (identifier "uVar7") (- "-") (identifier "uVar4")) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n      *puVar8 = uVar7;\n      *local_24 = puVar8[1];\n    }" ({ "{") (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*local_24 = puVar8[1];" (assignment_expression "*local_24 = puVar8[1]" (pointer_expression "*local_24" (* "*") (identifier "local_24")) (= "=") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" (else "else") (compound_statement "{\n      puVar1 = (uint *)((int)puVar8 + uVar4);\n      puVar1[1] = puVar8[1];\n      *puVar1 = uVar7 - uVar4;\n      puVar8 = (uint *)*local_24;\n      *puVar8 = uVar4;\n      *local_24 = (uint)puVar1;\n    }" ({ "{") (expression_statement "puVar1 = (uint *)((int)puVar8 + uVar4);" (assignment_expression "puVar1 = (uint *)((int)puVar8 + uVar4)" (identifier "puVar1") (= "=") (cast_expression "(uint *)((int)puVar8 + uVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + uVar4)" (( "(") (binary_expression "(int)puVar8 + uVar4" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "puVar1[1] = puVar8[1];" (assignment_expression "puVar1[1] = puVar8[1]" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar1 = uVar7 - uVar4;" (assignment_expression "*puVar1 = uVar7 - uVar4" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "uVar7 - uVar4" (identifier "uVar7") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "puVar8 = (uint *)*local_24;" (assignment_expression "puVar8 = (uint *)*local_24" (identifier "puVar8") (= "=") (cast_expression "(uint *)*local_24" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_24" (* "*") (identifier "local_24")))) (; ";")) (expression_statement "*puVar8 = uVar4;" (assignment_expression "*puVar8 = uVar4" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*local_24 = (uint)puVar1;" (assignment_expression "*local_24 = (uint)puVar1" (pointer_expression "*local_24" (* "*") (identifier "local_24")) (= "=") (cast_expression "(uint)puVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar1"))) (; ";")) (} "}")))) (expression_statement "puVar8 = puVar8 + 4;" (assignment_expression "puVar8 = puVar8 + 4" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (labeled_statement "LAB_001e6af7:\n  if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" (statement_identifier "LAB_001e6af7") (: ":") (if_statement "if ((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" (if "if") (parenthesized_expression "((iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0))" (( "(") (binary_expression "(iVar5 != 0) &&\n     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)" (( "(") (comma_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0" (assignment_expression "iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (identifier "iVar5") (= "=") (call_expression "pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (identifier "pthread_mutex_unlock") (argument_list "((pthread_mutex_t *)(unaff_EDI + 0x1af857))" (( "(") (cast_expression "(pthread_mutex_t *)(unaff_EDI + 0x1af857)" (( "(") (type_descriptor "pthread_mutex_t *" (type_identifier "pthread_mutex_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1af857)" (( "(") (binary_expression "unaff_EDI + 0x1af857" (identifier "unaff_EDI") (+ "+") (number_literal "0x1af857")) () ")"))) () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    piVar6 = (int *)FUN_001e6be0(4);\n    *piVar6 = unaff_EDI + 0x1a5527;\n                    \n                    \n    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;\n  }" ({ "{") (expression_statement "piVar6 = (int *)FUN_001e6be0(4);" (assignment_expression "piVar6 = (int *)FUN_001e6be0(4)" (identifier "piVar6") (= "=") (cast_expression "(int *)FUN_001e6be0(4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e6be0(4)" (identifier "FUN_001e6be0") (argument_list "(4)" (( "(") (number_literal "4") () ")"))))) (; ";")) (expression_statement "*piVar6 = unaff_EDI + 0x1a5527;" (assignment_expression "*piVar6 = unaff_EDI + 0x1a5527" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "unaff_EDI + 0x1a5527" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a5527"))) (; ";")) (expression_statement "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))\n    ;" (call_expression "FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" (identifier "FUN_001e5630") (argument_list "(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))" (( "(") (identifier "piVar6") (, ",") (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8137)" (* "*") (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8137)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a8137)" (( "(") (binary_expression "unaff_EDI + 0x1a8137" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a8137")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(unaff_EDI + 0x1a8553)" (* "*") (cast_expression "(undefined4 *)(unaff_EDI + 0x1a8553)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1a8553)" (( "(") (binary_expression "unaff_EDI + 0x1a8553" (identifier "unaff_EDI") (+ "+") (number_literal "0x1a8553")) () ")")))) () ")"))) (; ";")) (} "}")))) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}")))

/* (anonymous namespace)::pool::allocate(unsigned int) [clone .constprop.3] */

type_1 * (anonymous_namespace)::pool::var_7(type_1 param_1)

{
  type_1 *puVar1;
  int var_8;
  int var_5;
  type_1 var_9;
  int var_3;
  int *piVar6;
  type_1 var_11;
  type_1 *var_10;
  int var_2;
  type_2 *in_stack_ffffffd8;
  type_1 in_stack_ffffffdc;
  type_1 *var_12;
  
  var_8 = var_1();
  var_3 = *(int *)(var_2 + 0x1a849b);
  if ((var_3 != 0) &&
     (var_5 = var_4((type_3 *)(var_2 + 0x1af857)), var_5 != 0)) {
    var_6();
                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */
    var_10 = (type_1 *)var_7(in_stack_ffffffd8,in_stack_ffffffdc);
    return var_10;
  }
  var_9 = var_8 + 0x10;
  var_10 = *(type_1 **)(var_2 + 0x1af86f);
  if (var_9 < 8) {
    var_9 = 8;
  }
  var_9 = var_9 + 0xf & 0xfffffff0;
  if (var_10 == (type_1 *)0x0) {
    var_10 = (type_1 *)0x0;
  }
  else {
    var_11 = *var_10;
    if (var_11 < var_9) {
      do {
        var_12 = var_10;
        var_10 = (type_1 *)var_12[1];
        if (var_10 == (type_1 *)0x0) goto LAB_001e6af7;
        var_11 = *var_10;
      } while (var_11 < var_9);
      var_12 = var_12 + 1;
    }
    else {
      var_12 = (type_1 *)(var_2 + 0x1af86f);
    }
    if (var_11 - var_9 < 8) {
      *var_10 = var_11;
      *var_12 = var_10[1];
    }
    else {
      puVar1 = (type_1 *)((int)var_10 + var_9);
      puVar1[1] = var_10[1];
      *puVar1 = var_11 - var_9;
      var_10 = (type_1 *)*var_12;
      *var_10 = var_9;
      *var_12 = (type_1)puVar1;
    }
    var_10 = var_10 + 4;
  }
LAB_001e6af7:
  if ((var_3 != 0) &&
     (var_3 = var_13((type_3 *)(var_2 + 0x1af857)), var_3 != 0)) {
    piVar6 = (int *)var_14(4);
    *piVar6 = var_2 + 0x1a5527;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */
    var_15(piVar6,*(type_4 *)(var_2 + 0x1a8137),*(type_4 *)(var_2 + 0x1a8553));
  }
  return var_10;
}


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

uint * MASKED(void)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint *puVar8;
  int unaff_EDI;
  uint *local_24;
  
  iVar2 = FUN_000559ee();
  iVar5 = *(int *)(unaff_EDI + 0x1a849b);
  if ((iVar5 != 0) &&
     (iVar3 = pthread_mutex_lock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar3 != 0)) {
    FUN_001e68a0();
                    /* catch() { ... } // from try @ 001e6b8f with catch @ 001e6b99 */
    puVar8 = (uint *)FUN_00031f8a();
    return puVar8;
  }
  uVar4 = iVar2 + 0x10;
  puVar8 = *(uint **)(unaff_EDI + 0x1af86f);
  if (uVar4 < 8) {
    uVar4 = 8;
  }
  uVar4 = uVar4 + 0xf & 0xfffffff0;
  if (puVar8 == (uint *)0x0) {
    puVar8 = (uint *)0x0;
  }
  else {
    uVar7 = *puVar8;
    if (uVar7 < uVar4) {
      do {
        local_24 = puVar8;
        puVar8 = (uint *)local_24[1];
        if (puVar8 == (uint *)0x0) goto LAB_001e6af7;
        uVar7 = *puVar8;
      } while (uVar7 < uVar4);
      local_24 = local_24 + 1;
    }
    else {
      local_24 = (uint *)(unaff_EDI + 0x1af86f);
    }
    if (uVar7 - uVar4 < 8) {
      *puVar8 = uVar7;
      *local_24 = puVar8[1];
    }
    else {
      puVar1 = (uint *)((int)puVar8 + uVar4);
      puVar1[1] = puVar8[1];
      *puVar1 = uVar7 - uVar4;
      puVar8 = (uint *)*local_24;
      *puVar8 = uVar4;
      *local_24 = (uint)puVar1;
    }
    puVar8 = puVar8 + 4;
  }
LAB_001e6af7:
  if ((iVar5 != 0) &&
     (iVar5 = pthread_mutex_unlock((pthread_mutex_t *)(unaff_EDI + 0x1af857)), iVar5 != 0)) {
    piVar6 = (int *)FUN_001e6be0(4);
    *piVar6 = unaff_EDI + 0x1a5527;
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001e6b8f to 001e6b93 has its CatchHandler @ 001e6b99 */
    FUN_001e5630(piVar6,*(undefined4 *)(unaff_EDI + 0x1a8137),*(undefined4 *)(unaff_EDI + 0x1a8553))
    ;
  }
  return puVar8;
}

