
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Build_id_task_runner * this, Workqueue * workqueue, Task *
   param_2) */

void __thiscall
gold::Build_id_task_runner::run(Build_id_task_runner *this,Workqueue *workqueue,Task *param_3)

{
  pointer pcVar1;
  int *piVar2;
  Output_file *pOVar3;
  Layout *pLVar4;
  General_options *pGVar5;
  pointer pcVar6;
  Task *pTVar7;
  _func_int_varargs **pp_Var8;
  Task *pTVar9;
  int iVar10;
  pointer pcVar11;
  uint uVar12;
  byte *pbVar13;
  byte *pbVar14;
  _func_int_varargs *p_Var15;
  pointer pcVar16;
  undefined1 uVar17;
  undefined1 uVar18;
  bool bVar19;
  byte bVar20;
  _func_int_varargs *local_38;
  Task *local_34;
  
  bVar20 = 0;
  uVar17 = &stack0xfffffff0 < (undefined1 *)0x48;
  uVar18 = &stack0x00000000 == (undefined1 *)0x58;
  pTVar7 = (Task *)operator_new(0x14);
  iVar10 = 5;
  (pTVar7->name_)._M_dataplus._M_p = (pointer)0x0;
  *(undefined1 *)&pTVar7->_vptr_Task = 1;
  pOVar3 = this->of_;
  pTVar7->list_next_ = (Task *)0x0;
  (pTVar7->name_)._M_string_length = 0;
  (pTVar7->name_).field_2._M_allocated_capacity = 0;
  pLVar4 = this->layout_;
  pGVar5 = this->options_;
  pbVar13 = (byte *)(pGVar5->build_id_).value;
  pbVar14 = &DAT_00253013;
  do {
    if (iVar10 == 0) break;
    iVar10 = iVar10 + -1;
    uVar17 = *pbVar13 < *pbVar14;
    uVar18 = *pbVar13 == *pbVar14;
    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;
    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;
  } while ((bool)uVar18);
  if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {
    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;
    pcVar16 = (pointer)0x0;
    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {
      pcVar16 = *(pointer *)&pLVar4->output_file_size_;
    }
    if ((pcVar6 != (pointer)0x0 ||
         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&
       (pcVar16 != (pointer)0x0)) {
      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);
      p_Var15 = (_func_int_varargs *)0x0;
      local_38 = (_func_int_varargs *)0x0;
      if (*piVar2 == 0 &&
          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=
          (uint)-*piVar2) {
        pcVar1 = pcVar16 + -1;
        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);
        pTVar7->list_next_ = pTVar9;
        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);
        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);
        local_34 = (Task *)0x0;
        uVar12 = 0;
        do {
          pcVar11 = pcVar16;
          if (pcVar6 <= pcVar16) {
            pcVar11 = pcVar6;
          }
          pcVar16 = pcVar16 + -(int)pcVar6;
          pTVar9 = (Task *)operator_new(0x38);
          pTVar9->list_next_ = (Task *)0x0;
          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;
          pTVar9[1].name_._M_dataplus._M_p = pcVar11;
          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;
          (pTVar9->name_)._M_string_length = 0;
          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;
          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);
          (pTVar9->name_).field_2._M_local_buf[0] = '\0';
          pTVar9->should_run_soon_ = false;
          pTVar9[1].list_next_ = local_34;
          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;
          Workqueue::queue(workqueue,pTVar9);
          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);
          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;
          uVar12 = uVar12 + 1;
        } while (bVar19);
      }
      goto LAB_000a7c83;
    }
  }
  local_38 = (_func_int_varargs *)0x0;
  p_Var15 = (_func_int_varargs *)0x0;
LAB_000a7c83:
  pp_Var8 = (_func_int_varargs **)operator_new(0x18);
  *pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8;
  pGVar5 = this->options_;
  pp_Var8[4] = p_Var15;
  pp_Var8[1] = (_func_int_varargs *)pGVar5;
  pp_Var8[2] = (_func_int_varargs *)pLVar4;
  pp_Var8[3] = (_func_int_varargs *)pOVar3;
  pp_Var8[5] = local_38;
  pTVar9 = (Task *)operator_new(0x30);
  pTVar9[1]._vptr_Task = pp_Var8;
  (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;
  pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c;
  pTVar9[1].list_next_ = pTVar7;
  pTVar9->list_next_ = (Task *)0x0;
  (pTVar9->name_)._M_string_length = 0;
  (pTVar9->name_).field_2._M_local_buf[0] = '\0';
  pTVar9->should_run_soon_ = false;
  pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";
  Workqueue::queue(workqueue,pTVar9);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_000a7bd0(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined1 *puVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  byte *pbVar13;
  byte *pbVar14;
  uint uVar15;
  undefined1 uVar16;
  undefined1 uVar17;
  bool bVar18;
  byte bVar19;
  int local_38;
  int local_34;
  
  bVar19 = 0;
  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;
  uVar17 = &stack0x00000000 == (undefined1 *)0x58;
  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);
  iVar10 = 5;
  *(undefined4 *)(puVar6 + 8) = 0;
  *puVar6 = 1;
  uVar1 = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(puVar6 + 4) = 0;
  *(undefined4 *)(puVar6 + 0xc) = 0;
  *(undefined4 *)(puVar6 + 0x10) = 0;
  iVar2 = *(int *)(param_1 + 8);
  iVar3 = *(int *)(param_1 + 4);
  pbVar13 = *(byte **)(iVar3 + 0x478);
  pbVar14 = &DAT_00253013;
  do {
    if (iVar10 == 0) break;
    iVar10 = iVar10 + -1;
    uVar16 = *pbVar13 < *pbVar14;
    uVar17 = *pbVar13 == *pbVar14;
    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
  } while ((bool)uVar17);
  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {
    uVar4 = *(uint *)(iVar3 + 0x4bc);
    uVar15 = 0;
    if (-1 < *(int *)(iVar2 + 0x1c0)) {
      uVar15 = *(uint *)(iVar2 + 0x1bc);
    }
    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {
      iVar10 = 0;
      local_38 = 0;
      if (*(int *)(iVar3 + 0x508) == 0 &&
          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {
        uVar9 = (uVar15 - 1) / uVar4;
        local_38 = uVar9 + 1;
        *(int *)(puVar6 + 4) = local_38;
        local_38 = local_38 * 0x10;
        iVar10 = FUN_001aa840(local_38);
        local_34 = 0;
        uVar12 = 0;
        do {
          uVar11 = uVar15;
          if (uVar4 <= uVar15) {
            uVar11 = uVar4;
          }
          uVar15 = uVar15 - uVar4;
          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);
          puVar7[1] = 0;
          puVar7[2] = puVar7 + 4;
          puVar7[0xb] = uVar11;
          *puVar7 = &PTR_FUN_00333a00;
          puVar7[3] = 0;
          puVar7[9] = uVar1;
          puVar7[0xc] = uVar12 * 0x10 + iVar10;
          *(undefined1 *)(puVar7 + 4) = 0;
          *(undefined1 *)(puVar7 + 8) = 0;
          puVar7[10] = local_34;
          puVar7[0xd] = puVar6;
          FUN_00160dc0(param_2,puVar7);
          local_34 = local_34 + uVar4;
          bVar18 = uVar9 != uVar12;
          uVar12 = uVar12 + 1;
        } while (bVar18);
      }
      goto LAB_000a7c83;
    }
  }
  local_38 = 0;
  iVar10 = 0;
LAB_000a7c83:
  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);
  *puVar7 = &PTR_FUN_00333ac8;
  uVar5 = *(undefined4 *)(param_1 + 4);
  puVar7[4] = iVar10;
  puVar7[1] = uVar5;
  puVar7[2] = iVar2;
  puVar7[3] = uVar1;
  puVar7[5] = local_38;
  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);
  puVar8[9] = puVar7;
  puVar8[2] = puVar8 + 4;
  *puVar8 = &PTR_FUN_0033367c;
  puVar8[10] = puVar6;
  puVar8[1] = 0;
  puVar8[3] = 0;
  *(undefined1 *)(puVar8 + 4) = 0;
  *(undefined1 *)(puVar8 + 8) = 0;
  puVar8[0xb] = "Task_function Close_task_runner";
  FUN_00160dc0(param_2,puVar8);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035680
ADD EBX,0x297427
SUB ESP,0x48
PUSH 0x14
CALL 0x001aa8c0
MOV EDI,dword ptr [ESP + 0x60]
MOV ECX,0x5
MOV dword ptr [EAX + 0x8],0x0
MOV EBP,EAX
MOV byte ptr [EAX],0x1
MOV EDI,dword ptr [EDI + 0xc]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x10],0x0
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x20],EDI
MOV EDI,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDI + 0x4]
LEA EDI,[EBX + 0xfff14013]
MOV ESI,dword ptr [EAX + 0x478]
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
ADD ESP,0x10
MOVSX EDX,DL
TEST EDX,EDX
JNZ 0x000a7c79
MOV ECX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ECX + 0x1c0]
MOV EDI,ECX
MOV ECX,EDX
TEST ESI,ESI
MOV ESI,dword ptr [EAX + 0x4bc]
CMOVNS ECX,dword ptr [EDI + 0x1bc]
MOV EDI,ESI
OR EDI,dword ptr [EAX + 0x4c0]
JZ 0x000a7c79
TEST ECX,ECX
JNZ 0x000a7d10
MOV dword ptr [ESP + 0x14],0x0
XOR EDI,EDI
SUB ESP,0xc
PUSH 0x18
CALL 0x001aa8c0
LEA EDX,[EBX + 0xffff4ac8]
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESI],EDX
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0x10],EDI
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESI + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESI + 0x14],EAX
MOV dword ptr [ESP],0x30
CALL 0x001aa8c0
LEA EDX,[EAX + 0x10]
MOV dword ptr [EAX + 0x24],ESI
MOV dword ptr [EAX + 0x8],EDX
LEA EDX,[EBX + 0xffff467c]
MOV dword ptr [EAX],EDX
LEA EDX,[EBX + 0xfff141a4]
MOV dword ptr [EAX + 0x28],EBP
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0xc],0x0
MOV byte ptr [EAX + 0x10],0x0
MOV byte ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x2c],EDX
POP EDX
POP ECX
PUSH EAX
PUSH dword ptr [ESP + 0x60]
CALL 0x00160dc0
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP ECX,dword ptr [EAX + 0x504]
SBB EDX,dword ptr [EAX + 0x508]
MOV EDI,0x0
MOV dword ptr [ESP + 0x14],0x0
JC 0x000a7c83
LEA EAX,[ECX + -0x1]
XOR EDX,EDX
MOV dword ptr [ESP + 0x1c],ECX
SUB ESP,0xc
DIV ESI
MOV dword ptr [ESP + 0x34],EAX
ADD EAX,0x1
MOV dword ptr [EBP + 0x4],EAX
SHL EAX,0x4
MOV dword ptr [ESP + 0x20],EAX
PUSH EAX
CALL 0x001aa840
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x1c]
XOR EDX,EDX
MOV EDI,EAX
LEA EAX,[EBX + 0xffff4a00]
MOV dword ptr [ESP + 0x24],EBP
MOV EBP,EDX
MOV dword ptr [ESP + 0x20],EDI
MOV EDI,ECX
MOV dword ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000a7d82
MOV EBP,EAX
CMP ESI,EDI
MOV EDX,EDI
CMOVBE EDX,ESI
SUB ESP,0xc
SUB EDI,ESI
MOV dword ptr [ESP + 0x28],EDX
PUSH 0x38
CALL 0x001aa8c0
MOV EDX,dword ptr [ESP + 0x2c]
LEA ECX,[EAX + 0x10]
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],ECX
MOV ECX,dword ptr [ESP + 0x3c]
MOV dword ptr [EAX + 0x2c],EDX
MOV EDX,EBP
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [ESP + 0x20]
SHL EDX,0x4
ADD EDX,dword ptr [ESP + 0x30]
MOV dword ptr [EAX + 0xc],0x0
MOV dword ptr [EAX + 0x24],ECX
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [EAX + 0x30],EDX
MOV EDX,dword ptr [ESP + 0x34]
MOV byte ptr [EAX + 0x10],0x0
MOV byte ptr [EAX + 0x20],0x0
MOV dword ptr [EAX + 0x28],ECX
MOV dword ptr [EAX + 0x34],EDX
POP EDX
POP ECX
PUSH EAX
PUSH dword ptr [ESP + 0x60]
CALL 0x00160dc0
ADD dword ptr [ESP + 0x28],ESI
ADD ESP,0x10
LEA EAX,[EBP + 0x1]
CMP dword ptr [ESP + 0x28],EBP
JNZ 0x000a7d80
MOV EDI,dword ptr [ESP + 0x20]
MOV EBP,dword ptr [ESP + 0x24]
JMP 0x000a7c83
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_000a7bd0(int param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}\n\n" comment (function_definition "void FUN_000a7bd0(int param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" primitive_type (function_declarator "FUN_000a7bd0(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;" (assignment_expression "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48" identifier = (binary_expression "&stack0xfffffff0 < (undefined1 *)0x48" (pointer_expression "&stack0xfffffff0" & identifier) < (cast_expression "(undefined1 *)0x48" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar17 = &stack0x00000000 == (undefined1 *)0x58;" (assignment_expression "uVar17 = &stack0x00000000 == (undefined1 *)0x58" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x58" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar6 = (undefined1 *)FUN_001aa8c0(0x14);" (assignment_expression "puVar6 = (undefined1 *)FUN_001aa8c0(0x14)" identifier = (cast_expression "(undefined1 *)FUN_001aa8c0(0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 8)" * (cast_expression "(undefined4 *)(puVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 8)" ( (binary_expression "puVar6 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0xc)" * (cast_expression "(undefined4 *)(puVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0xc)" ( (binary_expression "puVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0x10)" * (cast_expression "(undefined4 *)(puVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = *(byte **)(iVar3 + 0x478);" (assignment_expression "pbVar13 = *(byte **)(iVar3 + 0x478)" identifier = (pointer_expression "*(byte **)(iVar3 + 0x478)" * (cast_expression "(byte **)(iVar3 + 0x478)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x478)" ( (binary_expression "iVar3 + 0x478" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = &DAT_00253013;" (assignment_expression "pbVar14 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);" do (compound_statement "{\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar16 = *pbVar13 < *pbVar14;" (assignment_expression "uVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar17)" ( (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" if (parenthesized_expression "((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16)" ( (binary_expression "(!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16" (parenthesized_expression "(!(bool)uVar16 && !(bool)uVar17)" ( (binary_expression "!(bool)uVar16 && !(bool)uVar17" (unary_expression "!(bool)uVar16" ! (cast_expression "(bool)uVar16" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar16" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(iVar3 + 0x4bc);" (assignment_expression "uVar4 = *(uint *)(iVar3 + 0x4bc)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x4bc)" * (cast_expression "(uint *)(iVar3 + 0x4bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4bc)" ( (binary_expression "iVar3 + 0x4bc" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" if (parenthesized_expression "(-1 < *(int *)(iVar2 + 0x1c0))" ( (binary_expression "-1 < *(int *)(iVar2 + 0x1c0)" number_literal < (pointer_expression "*(int *)(iVar2 + 0x1c0)" * (cast_expression "(int *)(iVar2 + 0x1c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c0)" ( (binary_expression "iVar2 + 0x1c0" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" { (expression_statement "uVar15 = *(uint *)(iVar2 + 0x1bc);" (assignment_expression "uVar15 = *(uint *)(iVar2 + 0x1bc)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x1bc)" * (cast_expression "(uint *)(iVar2 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1bc)" ( (binary_expression "iVar2 + 0x1bc" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" if (parenthesized_expression "((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0))" ( (binary_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)" (parenthesized_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0)" ( (binary_expression "uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0" (binary_expression "uVar4 != 0" identifier != number_literal) || (binary_expression "*(int *)(iVar3 + 0x4c0) != 0" (pointer_expression "*(int *)(iVar3 + 0x4c0)" * (cast_expression "(int *)(iVar3 + 0x4c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4c0)" ( (binary_expression "iVar3 + 0x4c0" identifier + number_literal) )))) != number_literal)) )) && (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" if (parenthesized_expression "(*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508))" ( (binary_expression "*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (binary_expression "*(int *)(iVar3 + 0x508) == 0" (pointer_expression "*(int *)(iVar3 + 0x508)" * (cast_expression "(int *)(iVar3 + 0x508)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x508)" ( (binary_expression "iVar3 + 0x508" identifier + number_literal) )))) == number_literal) && (binary_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (call_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < *(uint *)(iVar3 + 0x504))" ( (binary_expression "uVar15 < *(uint *)(iVar3 + 0x504)" identifier < (pointer_expression "*(uint *)(iVar3 + 0x504)" * (cast_expression "(uint *)(iVar3 + 0x504)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x504)" ( (binary_expression "iVar3 + 0x504" identifier + number_literal) ))))) ))) <= (binary_expression "(uint)-*(int *)(iVar3 + 0x508)" (parenthesized_expression "(uint)" ( identifier )) - (pointer_expression "*(int *)(iVar3 + 0x508)" * (cast_expression "(int *)(iVar3 + 0x508)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x508)" ( (binary_expression "iVar3 + 0x508" identifier + number_literal) ))))))) )) (compound_statement "{\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" { (expression_statement "uVar9 = (uVar15 - 1) / uVar4;" (assignment_expression "uVar9 = (uVar15 - 1) / uVar4" identifier = (binary_expression "(uVar15 - 1) / uVar4" (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )) / identifier)) ;) (expression_statement "local_38 = uVar9 + 1;" (assignment_expression "local_38 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar6 + 4) = local_38;" (assignment_expression "*(int *)(puVar6 + 4) = local_38" (pointer_expression "*(int *)(puVar6 + 4)" * (cast_expression "(int *)(puVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_38 = local_38 * 0x10;" (assignment_expression "local_38 = local_38 * 0x10" identifier = (binary_expression "local_38 * 0x10" identifier * number_literal)) ;) (expression_statement "iVar10 = FUN_001aa840(local_38);" (assignment_expression "iVar10 = FUN_001aa840(local_38)" identifier = (call_expression "FUN_001aa840(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);" do (compound_statement "{\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        }" { (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) (if_statement "if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }" if (parenthesized_expression "(uVar4 <= uVar15)" ( (binary_expression "uVar4 <= uVar15" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar4;\n          }" { (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) })) (expression_statement "uVar15 = uVar15 - uVar4;" (assignment_expression "uVar15 = uVar15 - uVar4" identifier = (binary_expression "uVar15 - uVar4" identifier - identifier)) ;) (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x38);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x38)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = puVar7 + 4;" (assignment_expression "puVar7[2] = puVar7 + 4" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (binary_expression "puVar7 + 4" identifier + number_literal)) ;) (expression_statement "puVar7[0xb] = uVar11;" (assignment_expression "puVar7[0xb] = uVar11" (subscript_expression "puVar7[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar7 = &PTR_FUN_00333a00;" (assignment_expression "*puVar7 = &PTR_FUN_00333a00" (pointer_expression "*puVar7" * identifier) = (pointer_expression "&PTR_FUN_00333a00" & identifier)) ;) (expression_statement "puVar7[3] = 0;" (assignment_expression "puVar7[3] = 0" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[9] = uVar1;" (assignment_expression "puVar7[9] = uVar1" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[0xc] = uVar12 * 0x10 + iVar10;" (assignment_expression "puVar7[0xc] = uVar12 * 0x10 + iVar10" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) = (binary_expression "uVar12 * 0x10 + iVar10" (binary_expression "uVar12 * 0x10" identifier * number_literal) + identifier)) ;) (expression_statement "*(undefined1 *)(puVar7 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 4)" * (cast_expression "(undefined1 *)(puVar7 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 4)" ( (binary_expression "puVar7 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar7 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 8)" * (cast_expression "(undefined1 *)(puVar7 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 8)" ( (binary_expression "puVar7 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar7[10] = local_34;" (assignment_expression "puVar7[10] = local_34" (subscript_expression "puVar7[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[0xd] = puVar6;" (assignment_expression "puVar7[0xd] = puVar6" (subscript_expression "puVar7[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00160dc0(param_2,puVar7);" (call_expression "FUN_00160dc0(param_2,puVar7)" identifier (argument_list "(param_2,puVar7)" ( identifier , identifier ))) ;) (expression_statement "local_34 = local_34 + uVar4;" (assignment_expression "local_34 = local_34 + uVar4" identifier = (binary_expression "local_34 + uVar4" identifier + identifier)) ;) (expression_statement "bVar18 = uVar9 != uVar12;" (assignment_expression "bVar18 = uVar9 != uVar12" identifier = (binary_expression "uVar9 != uVar12" identifier != identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) })) (goto_statement "goto LAB_000a7c83;" goto statement_identifier ;) })) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" statement_identifier : (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x18)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "*puVar7 = &PTR_FUN_00333ac8;" (assignment_expression "*puVar7 = &PTR_FUN_00333ac8" (pointer_expression "*puVar7" * identifier) = (pointer_expression "&PTR_FUN_00333ac8" & identifier)) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar7[4] = iVar10;" (assignment_expression "puVar7[4] = iVar10" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[1] = uVar5;" (assignment_expression "puVar7[1] = uVar5" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[2] = iVar2;" (assignment_expression "puVar7[2] = iVar2" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[5] = local_38;" (assignment_expression "puVar7[5] = local_38" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0x30);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0x30)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "puVar8[9] = puVar7;" (assignment_expression "puVar8[9] = puVar7" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[2] = puVar8 + 4;" (assignment_expression "puVar8[2] = puVar8 + 4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "*puVar8 = &PTR_FUN_0033367c;" (assignment_expression "*puVar8 = &PTR_FUN_0033367c" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_0033367c" & identifier)) ;) (expression_statement "puVar8[10] = puVar6;" (assignment_expression "puVar8[10] = puVar6" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" * (cast_expression "(undefined1 *)(puVar8 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 8)" * (cast_expression "(undefined1 *)(puVar8 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[0xb] = "Task_function Close_task_runner";" (assignment_expression "puVar8[0xb] = "Task_function Close_task_runner"" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = (string_literal ""Task_function Close_task_runner"" " string_content ")) ;) (expression_statement "FUN_00160dc0(param_2,puVar8);" (call_expression "FUN_00160dc0(param_2,puVar8)" identifier (argument_list "(param_2,puVar8)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void run(Build_id_task_runner * this, Workqueue * workqueue, Task *\n   param_2) */\n\nvoid __thiscall\ngold::Build_id_task_runner::run(Build_id_task_runner *this,Workqueue *workqueue,Task *param_3)\n\n{\n  pointer pcVar1;\n  int *piVar2;\n  Output_file *pOVar3;\n  Layout *pLVar4;\n  General_options *pGVar5;\n  pointer pcVar6;\n  Task *pTVar7;\n  _func_int_varargs **pp_Var8;\n  Task *pTVar9;\n  int iVar10;\n  pointer pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  _func_int_varargs *p_Var15;\n  pointer pcVar16;\n  undefined1 uVar17;\n  undefined1 uVar18;\n  bool bVar19;\n  byte bVar20;\n  _func_int_varargs *local_38;\n  Task *local_34;\n  \n  bVar20 = 0;\n  uVar17 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar18 = &stack0x00000000 == (undefined1 *)0x58;\n  pTVar7 = (Task *)operator_new(0x14);\n  iVar10 = 5;\n  (pTVar7->name_)._M_dataplus._M_p = (pointer)0x0;\n  *(undefined1 *)&pTVar7->_vptr_Task = 1;\n  pOVar3 = this->of_;\n  pTVar7->list_next_ = (Task *)0x0;\n  (pTVar7->name_)._M_string_length = 0;\n  (pTVar7->name_).field_2._M_allocated_capacity = 0;\n  pLVar4 = this->layout_;\n  pGVar5 = this->options_;\n  pbVar13 = (byte *)(pGVar5->build_id_).value;\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar17 = *pbVar13 < *pbVar14;\n    uVar18 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;\n  } while ((bool)uVar18);\n  if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {\n    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;\n    pcVar16 = (pointer)0x0;\n    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }\n    if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = (_func_int_varargs *)0x0;\n  p_Var15 = (_func_int_varargs *)0x0;\nLAB_000a7c83:\n  pp_Var8 = (_func_int_varargs **)operator_new(0x18);\n  *pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8;\n  pGVar5 = this->options_;\n  pp_Var8[4] = p_Var15;\n  pp_Var8[1] = (_func_int_varargs *)pGVar5;\n  pp_Var8[2] = (_func_int_varargs *)pLVar4;\n  pp_Var8[3] = (_func_int_varargs *)pOVar3;\n  pp_Var8[5] = local_38;\n  pTVar9 = (Task *)operator_new(0x30);\n  pTVar9[1]._vptr_Task = pp_Var8;\n  (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n  pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c;\n  pTVar9[1].list_next_ = pTVar7;\n  pTVar9->list_next_ = (Task *)0x0;\n  (pTVar9->name_)._M_string_length = 0;\n  (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n  pTVar9->should_run_soon_ = false;\n  pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";\n  Workqueue::queue(workqueue,pTVar9);\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Build_id_task_runner::run(Build_id_task_runner *this,Workqueue *workqueue,Task *param_3)\n\n{\n  pointer pcVar1;\n  int *piVar2;\n  Output_file *pOVar3;\n  Layout *pLVar4;\n  General_options *pGVar5;\n  pointer pcVar6;\n  Task *pTVar7;\n  _func_int_varargs **pp_Var8;\n  Task *pTVar9;\n  int iVar10;\n  pointer pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  _func_int_varargs *p_Var15;\n  pointer pcVar16;\n  undefined1 uVar17;\n  undefined1 uVar18;\n  bool bVar19;\n  byte bVar20;\n  _func_int_varargs *local_38;\n  Task *local_34;\n  \n  bVar20 = 0;\n  uVar17 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar18 = &stack0x00000000 == (undefined1 *)0x58;\n  pTVar7 = (Task *)operator_new(0x14);\n  iVar10 = 5;\n  (pTVar7->name_)._M_dataplus._M_p = (pointer)0x0;\n  *(undefined1 *)&pTVar7->_vptr_Task = 1;\n  pOVar3 = this->of_;\n  pTVar7->list_next_ = (Task *)0x0;\n  (pTVar7->name_)._M_string_length = 0;\n  (pTVar7->name_).field_2._M_allocated_capacity = 0;\n  pLVar4 = this->layout_;\n  pGVar5 = this->options_;\n  pbVar13 = (byte *)(pGVar5->build_id_).value;\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar17 = *pbVar13 < *pbVar14;\n    uVar18 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;\n  } while ((bool)uVar18);\n  if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {\n    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;\n    pcVar16 = (pointer)0x0;\n    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }\n    if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = (_func_int_varargs *)0x0;\n  p_Var15 = (_func_int_varargs *)0x0;\nLAB_000a7c83:\n  pp_Var8 = (_func_int_varargs **)operator_new(0x18);\n  *pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8;\n  pGVar5 = this->options_;\n  pp_Var8[4] = p_Var15;\n  pp_Var8[1] = (_func_int_varargs *)pGVar5;\n  pp_Var8[2] = (_func_int_varargs *)pLVar4;\n  pp_Var8[3] = (_func_int_varargs *)pOVar3;\n  pp_Var8[5] = local_38;\n  pTVar9 = (Task *)operator_new(0x30);\n  pTVar9[1]._vptr_Task = pp_Var8;\n  (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n  pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c;\n  pTVar9[1].list_next_ = pTVar7;\n  pTVar9->list_next_ = (Task *)0x0;\n  (pTVar9->name_)._M_string_length = 0;\n  (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n  pTVar9->should_run_soon_ = false;\n  pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";\n  Workqueue::queue(workqueue,pTVar9);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Build_id_task_runner::" identifier : : identifier : :) (function_declarator "run(Build_id_task_runner *this,Workqueue *workqueue,Task *param_3)" identifier (parameter_list "(Build_id_task_runner *this,Workqueue *workqueue,Task *param_3)" ( (parameter_declaration "Build_id_task_runner *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Workqueue *workqueue" type_identifier (pointer_declarator "*workqueue" * identifier)) , (parameter_declaration "Task *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  pointer pcVar1;\n  int *piVar2;\n  Output_file *pOVar3;\n  Layout *pLVar4;\n  General_options *pGVar5;\n  pointer pcVar6;\n  Task *pTVar7;\n  _func_int_varargs **pp_Var8;\n  Task *pTVar9;\n  int iVar10;\n  pointer pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  _func_int_varargs *p_Var15;\n  pointer pcVar16;\n  undefined1 uVar17;\n  undefined1 uVar18;\n  bool bVar19;\n  byte bVar20;\n  _func_int_varargs *local_38;\n  Task *local_34;\n  \n  bVar20 = 0;\n  uVar17 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar18 = &stack0x00000000 == (undefined1 *)0x58;\n  pTVar7 = (Task *)operator_new(0x14);\n  iVar10 = 5;\n  (pTVar7->name_)._M_dataplus._M_p = (pointer)0x0;\n  *(undefined1 *)&pTVar7->_vptr_Task = 1;\n  pOVar3 = this->of_;\n  pTVar7->list_next_ = (Task *)0x0;\n  (pTVar7->name_)._M_string_length = 0;\n  (pTVar7->name_).field_2._M_allocated_capacity = 0;\n  pLVar4 = this->layout_;\n  pGVar5 = this->options_;\n  pbVar13 = (byte *)(pGVar5->build_id_).value;\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar17 = *pbVar13 < *pbVar14;\n    uVar18 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;\n  } while ((bool)uVar18);\n  if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {\n    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;\n    pcVar16 = (pointer)0x0;\n    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }\n    if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = (_func_int_varargs *)0x0;\n  p_Var15 = (_func_int_varargs *)0x0;\nLAB_000a7c83:\n  pp_Var8 = (_func_int_varargs **)operator_new(0x18);\n  *pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8;\n  pGVar5 = this->options_;\n  pp_Var8[4] = p_Var15;\n  pp_Var8[1] = (_func_int_varargs *)pGVar5;\n  pp_Var8[2] = (_func_int_varargs *)pLVar4;\n  pp_Var8[3] = (_func_int_varargs *)pOVar3;\n  pp_Var8[5] = local_38;\n  pTVar9 = (Task *)operator_new(0x30);\n  pTVar9[1]._vptr_Task = pp_Var8;\n  (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n  pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c;\n  pTVar9[1].list_next_ = pTVar7;\n  pTVar9->list_next_ = (Task *)0x0;\n  (pTVar9->name_)._M_string_length = 0;\n  (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n  pTVar9->should_run_soon_ = false;\n  pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";\n  Workqueue::queue(workqueue,pTVar9);\n  return;\n}" { (declaration "pointer pcVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "Output_file *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "Layout *pLVar4;" type_identifier (pointer_declarator "*pLVar4" * identifier) ;) (declaration "General_options *pGVar5;" type_identifier (pointer_declarator "*pGVar5" * identifier) ;) (declaration "pointer pcVar6;" type_identifier identifier ;) (declaration "Task *pTVar7;" type_identifier (pointer_declarator "*pTVar7" * identifier) ;) (declaration "_func_int_varargs **pp_Var8;" type_identifier (pointer_declarator "**pp_Var8" * (pointer_declarator "*pp_Var8" * identifier)) ;) (declaration "Task *pTVar9;" type_identifier (pointer_declarator "*pTVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "pointer pcVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "_func_int_varargs *p_Var15;" type_identifier (pointer_declarator "*p_Var15" * identifier) ;) (declaration "pointer pcVar16;" type_identifier identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "undefined1 uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "_func_int_varargs *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "Task *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = &stack0xfffffff0 < (undefined1 *)0x48;" (assignment_expression "uVar17 = &stack0xfffffff0 < (undefined1 *)0x48" identifier = (binary_expression "&stack0xfffffff0 < (undefined1 *)0x48" (pointer_expression "&stack0xfffffff0" & identifier) < (cast_expression "(undefined1 *)0x48" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar18 = &stack0x00000000 == (undefined1 *)0x58;" (assignment_expression "uVar18 = &stack0x00000000 == (undefined1 *)0x58" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x58" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pTVar7 = (Task *)operator_new(0x14);" (assignment_expression "pTVar7 = (Task *)operator_new(0x14)" identifier = (cast_expression "(Task *)operator_new(0x14)" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) (expression_statement "(pTVar7->name_)._M_dataplus._M_p = (pointer)0x0;" (assignment_expression "(pTVar7->name_)._M_dataplus._M_p = (pointer)0x0" (field_expression "(pTVar7->name_)._M_dataplus._M_p" (field_expression "(pTVar7->name_)._M_dataplus" (parenthesized_expression "(pTVar7->name_)" ( (field_expression "pTVar7->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "*(undefined1 *)&pTVar7->_vptr_Task = 1;" (assignment_expression "*(undefined1 *)&pTVar7->_vptr_Task = 1" (pointer_expression "*(undefined1 *)&pTVar7->_vptr_Task" * (cast_expression "(undefined1 *)&pTVar7->_vptr_Task" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pTVar7->_vptr_Task" & (field_expression "pTVar7->_vptr_Task" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "pOVar3 = this->of_;" (assignment_expression "pOVar3 = this->of_" identifier = (field_expression "this->of_" identifier -> field_identifier)) ;) (expression_statement "pTVar7->list_next_ = (Task *)0x0;" (assignment_expression "pTVar7->list_next_ = (Task *)0x0" (field_expression "pTVar7->list_next_" identifier -> field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(pTVar7->name_)._M_string_length = 0;" (assignment_expression "(pTVar7->name_)._M_string_length = 0" (field_expression "(pTVar7->name_)._M_string_length" (parenthesized_expression "(pTVar7->name_)" ( (field_expression "pTVar7->name_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pTVar7->name_).field_2._M_allocated_capacity = 0;" (assignment_expression "(pTVar7->name_).field_2._M_allocated_capacity = 0" (field_expression "(pTVar7->name_).field_2._M_allocated_capacity" (field_expression "(pTVar7->name_).field_2" (parenthesized_expression "(pTVar7->name_)" ( (field_expression "pTVar7->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pLVar4 = this->layout_;" (assignment_expression "pLVar4 = this->layout_" identifier = (field_expression "this->layout_" identifier -> field_identifier)) ;) (expression_statement "pGVar5 = this->options_;" (assignment_expression "pGVar5 = this->options_" identifier = (field_expression "this->options_" identifier -> field_identifier)) ;) (expression_statement "pbVar13 = (byte *)(pGVar5->build_id_).value;" (assignment_expression "pbVar13 = (byte *)(pGVar5->build_id_).value" identifier = (cast_expression "(byte *)(pGVar5->build_id_).value" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pGVar5->build_id_).value" (parenthesized_expression "(pGVar5->build_id_)" ( (field_expression "pGVar5->build_id_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pbVar14 = &DAT_00253013;" (assignment_expression "pbVar14 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar17 = *pbVar13 < *pbVar14;\n    uVar18 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;\n  } while ((bool)uVar18);" do (compound_statement "{\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar17 = *pbVar13 < *pbVar14;\n    uVar18 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;\n  }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *pbVar13 < *pbVar14;" (assignment_expression "uVar17 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "uVar18 = *pbVar13 == *pbVar14;" (assignment_expression "uVar18 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar20 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar20 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar18)" ( (cast_expression "(bool)uVar18" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {\n    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;\n    pcVar16 = (pointer)0x0;\n    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }\n    if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }\n  }" if (parenthesized_expression "((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17)" ( (binary_expression "(!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17" (parenthesized_expression "(!(bool)uVar17 && !(bool)uVar18)" ( (binary_expression "!(bool)uVar17 && !(bool)uVar18" (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar18" ! (cast_expression "(bool)uVar18" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n    pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;\n    pcVar16 = (pointer)0x0;\n    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }\n    if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }\n  }" { (expression_statement "pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value;" (assignment_expression "pcVar6 = *(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value" identifier = (pointer_expression "*(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value" * (cast_expression "(pointer *)&(pGVar5->build_id_chunk_size_for_treehash_).value" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pGVar5->build_id_chunk_size_for_treehash_).value" & (field_expression "(pGVar5->build_id_chunk_size_for_treehash_).value" (parenthesized_expression "(pGVar5->build_id_chunk_size_for_treehash_)" ( (field_expression "pGVar5->build_id_chunk_size_for_treehash_" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "pcVar16 = (pointer)0x0;" (assignment_expression "pcVar16 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }" if (parenthesized_expression "(-1 < *(int *)((int)&pLVar4->output_file_size_ + 4))" ( (binary_expression "-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)" number_literal < (pointer_expression "*(int *)((int)&pLVar4->output_file_size_ + 4)" * (cast_expression "(int *)((int)&pLVar4->output_file_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pLVar4->output_file_size_ + 4)" ( (binary_expression "(int)&pLVar4->output_file_size_ + 4" (cast_expression "(int)&pLVar4->output_file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pLVar4->output_file_size_" & (field_expression "pLVar4->output_file_size_" identifier -> field_identifier))) + number_literal) ))))) )) (compound_statement "{\n      pcVar16 = *(pointer *)&pLVar4->output_file_size_;\n    }" { (expression_statement "pcVar16 = *(pointer *)&pLVar4->output_file_size_;" (assignment_expression "pcVar16 = *(pointer *)&pLVar4->output_file_size_" identifier = (pointer_expression "*(pointer *)&pLVar4->output_file_size_" * (cast_expression "(pointer *)&pLVar4->output_file_size_" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pLVar4->output_file_size_" & (field_expression "pLVar4->output_file_size_" identifier -> field_identifier))))) ;) })) (if_statement "if ((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)) {\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }" if (parenthesized_expression "((pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0))" ( (binary_expression "(pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&\n       (pcVar16 != (pointer)0x0)" (parenthesized_expression "(pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0)" ( (binary_expression "pcVar6 != (pointer)0x0 ||\n         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0" (binary_expression "pcVar6 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) || (binary_expression "*(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0" (pointer_expression "*(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4)" * (cast_expression "(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4)" ( (binary_expression "(int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4" (cast_expression "(int)&(pGVar5->build_id_chunk_size_for_treehash_).value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pGVar5->build_id_chunk_size_for_treehash_).value" & (field_expression "(pGVar5->build_id_chunk_size_for_treehash_).value" (parenthesized_expression "(pGVar5->build_id_chunk_size_for_treehash_)" ( (field_expression "pGVar5->build_id_chunk_size_for_treehash_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) != number_literal)) )) && (parenthesized_expression "(pcVar16 != (pointer)0x0)" ( (binary_expression "pcVar16 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);\n      p_Var15 = (_func_int_varargs *)0x0;\n      local_38 = (_func_int_varargs *)0x0;\n      if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }\n      goto LAB_000a7c83;\n    }" { (expression_statement "piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);" (assignment_expression "piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4)" identifier = (cast_expression "(int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4)" ( (binary_expression "(int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4" (cast_expression "(int)&(pGVar5->build_id_min_file_size_for_treehash_).value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pGVar5->build_id_min_file_size_for_treehash_).value" & (field_expression "(pGVar5->build_id_min_file_size_for_treehash_).value" (parenthesized_expression "(pGVar5->build_id_min_file_size_for_treehash_)" ( (field_expression "pGVar5->build_id_min_file_size_for_treehash_" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) ;) (expression_statement "p_Var15 = (_func_int_varargs *)0x0;" (assignment_expression "p_Var15 = (_func_int_varargs *)0x0" identifier = (cast_expression "(_func_int_varargs *)0x0" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = (_func_int_varargs *)0x0;" (assignment_expression "local_38 = (_func_int_varargs *)0x0" identifier = (cast_expression "(_func_int_varargs *)0x0" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2) {\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }" if (parenthesized_expression "(*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2)" ( (binary_expression "*piVar2 == 0 &&\n          (uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2" (binary_expression "*piVar2 == 0" (pointer_expression "*piVar2" * identifier) == number_literal) && (binary_expression "(uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=\n          (uint)-*piVar2" (call_expression "(uint)(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value)" ( (binary_expression "pcVar16 < *(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value" identifier < (pointer_expression "*(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value" * (cast_expression "(pointer *)&(pGVar5->build_id_min_file_size_for_treehash_).value" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pGVar5->build_id_min_file_size_for_treehash_).value" & (field_expression "(pGVar5->build_id_min_file_size_for_treehash_).value" (parenthesized_expression "(pGVar5->build_id_min_file_size_for_treehash_)" ( (field_expression "pGVar5->build_id_min_file_size_for_treehash_" identifier -> field_identifier) )) . field_identifier))))) ))) <= (binary_expression "(uint)-*piVar2" (parenthesized_expression "(uint)" ( identifier )) - (pointer_expression "*piVar2" * identifier)))) )) (compound_statement "{\n        pcVar1 = pcVar16 + -1;\n        pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);\n        pTVar7->list_next_ = pTVar9;\n        local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);\n        p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);\n        local_34 = (Task *)0x0;\n        uVar12 = 0;\n        do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);\n      }" { (expression_statement "pcVar1 = pcVar16 + -1;" (assignment_expression "pcVar1 = pcVar16 + -1" identifier = (binary_expression "pcVar16 + -1" identifier + number_literal)) ;) (expression_statement "pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1);" (assignment_expression "pTVar9 = (Task *)((uint)pcVar1 / (uint)pcVar6 + 1)" identifier = (cast_expression "(Task *)((uint)pcVar1 / (uint)pcVar6 + 1)" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pcVar1 / (uint)pcVar6 + 1)" ( (binary_expression "(uint)pcVar1 / (uint)pcVar6 + 1" (binary_expression "(uint)pcVar1 / (uint)pcVar6" (cast_expression "(uint)pcVar1" ( (type_descriptor "uint" type_identifier) ) identifier) / (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) + number_literal) )))) ;) (expression_statement "pTVar7->list_next_ = pTVar9;" (assignment_expression "pTVar7->list_next_ = pTVar9" (field_expression "pTVar7->list_next_" identifier -> field_identifier) = identifier) ;) (expression_statement "local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10);" (assignment_expression "local_38 = (_func_int_varargs *)((int)pTVar9 * 0x10)" identifier = (cast_expression "(_func_int_varargs *)((int)pTVar9 * 0x10)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pTVar9 * 0x10)" ( (binary_expression "(int)pTVar9 * 0x10" (cast_expression "(int)pTVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38);" (assignment_expression "p_Var15 = (_func_int_varargs *)operator_new__((uint)local_38)" identifier = (cast_expression "(_func_int_varargs *)operator_new__((uint)local_38)" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__((uint)local_38)" identifier (argument_list "((uint)local_38)" ( (cast_expression "(uint)local_38" ( (type_descriptor "uint" type_identifier) ) identifier) ))))) ;) (expression_statement "local_34 = (Task *)0x0;" (assignment_expression "local_34 = (Task *)0x0" identifier = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar19);" do (compound_statement "{\n          pcVar11 = pcVar16;\n          if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }\n          pcVar16 = pcVar16 + -(int)pcVar6;\n          pTVar9 = (Task *)operator_new(0x38);\n          pTVar9->list_next_ = (Task *)0x0;\n          (pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;\n          pTVar9[1].name_._M_dataplus._M_p = pcVar11;\n          pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;\n          (pTVar9->name_)._M_string_length = 0;\n          pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;\n          pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);\n          (pTVar9->name_).field_2._M_local_buf[0] = '\0';\n          pTVar9->should_run_soon_ = false;\n          pTVar9[1].list_next_ = local_34;\n          pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;\n          Workqueue::queue(workqueue,pTVar9);\n          local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);\n          bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;\n          uVar12 = uVar12 + 1;\n        }" { (expression_statement "pcVar11 = pcVar16;" (assignment_expression "pcVar11 = pcVar16" identifier = identifier) ;) (if_statement "if (pcVar6 <= pcVar16) {\n            pcVar11 = pcVar6;\n          }" if (parenthesized_expression "(pcVar6 <= pcVar16)" ( (binary_expression "pcVar6 <= pcVar16" identifier <= identifier) )) (compound_statement "{\n            pcVar11 = pcVar6;\n          }" { (expression_statement "pcVar11 = pcVar6;" (assignment_expression "pcVar11 = pcVar6" identifier = identifier) ;) })) (expression_statement "pcVar16 = pcVar16 + -(int)pcVar6;" (assignment_expression "pcVar16 = pcVar16 + -(int)pcVar6" identifier = (binary_expression "pcVar16 + -(int)pcVar6" identifier + (unary_expression "-(int)pcVar6" - (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pTVar9 = (Task *)operator_new(0x38);" (assignment_expression "pTVar9 = (Task *)operator_new(0x38)" identifier = (cast_expression "(Task *)operator_new(0x38)" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "pTVar9->list_next_ = (Task *)0x0;" (assignment_expression "pTVar9->list_next_ = (Task *)0x0" (field_expression "pTVar9->list_next_" identifier -> field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;" (assignment_expression "(pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2" (field_expression "(pTVar9->name_)._M_dataplus._M_p" (field_expression "(pTVar9->name_)._M_dataplus" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pTVar9->name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pTVar9->name_).field_2" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pTVar9[1].name_._M_dataplus._M_p = pcVar11;" (assignment_expression "pTVar9[1].name_._M_dataplus._M_p = pcVar11" (field_expression "pTVar9[1].name_._M_dataplus._M_p" (field_expression "pTVar9[1].name_._M_dataplus" (field_expression "pTVar9[1].name_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00;" (assignment_expression "pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Hash_task_00333a00" (field_expression "pTVar9->_vptr_Task" identifier -> field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Hash_task_00333a00" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Hash_task_00333a00" & identifier))) ;) (expression_statement "(pTVar9->name_)._M_string_length = 0;" (assignment_expression "(pTVar9->name_)._M_string_length = 0" (field_expression "(pTVar9->name_)._M_string_length" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3;" (assignment_expression "pTVar9[1]._vptr_Task = (_func_int_varargs **)pOVar3" (field_expression "pTVar9[1]._vptr_Task" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(_func_int_varargs **)pOVar3" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10);" (assignment_expression "pTVar9[1].name_._M_string_length = (size_type)(p_Var15 + uVar12 * 0x10)" (field_expression "pTVar9[1].name_._M_string_length" (field_expression "pTVar9[1].name_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (call_expression "(size_type)(p_Var15 + uVar12 * 0x10)" (parenthesized_expression "(size_type)" ( identifier )) (argument_list "(p_Var15 + uVar12 * 0x10)" ( (binary_expression "p_Var15 + uVar12 * 0x10" identifier + (binary_expression "uVar12 * 0x10" identifier * number_literal)) )))) ;) (expression_statement "(pTVar9->name_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(pTVar9->name_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(pTVar9->name_).field_2._M_local_buf[0]" (field_expression "(pTVar9->name_).field_2._M_local_buf" (field_expression "(pTVar9->name_).field_2" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pTVar9->should_run_soon_ = false;" (assignment_expression "pTVar9->should_run_soon_ = false" (field_expression "pTVar9->should_run_soon_" identifier -> field_identifier) = false) ;) (expression_statement "pTVar9[1].list_next_ = local_34;" (assignment_expression "pTVar9[1].list_next_ = local_34" (field_expression "pTVar9[1].list_next_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7;" (assignment_expression "pTVar9[1].name_.field_2._M_allocated_capacity = (size_type)pTVar7" (field_expression "pTVar9[1].name_.field_2._M_allocated_capacity" (field_expression "pTVar9[1].name_.field_2" (field_expression "pTVar9[1].name_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(size_type)pTVar7" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (labeled_statement "Workqueue::queue(workqueue,pTVar9);" statement_identifier : (ERROR ":" :) (expression_statement "queue(workqueue,pTVar9);" (call_expression "queue(workqueue,pTVar9)" identifier (argument_list "(workqueue,pTVar9)" ( identifier , identifier ))) ;)) (expression_statement "local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6);" (assignment_expression "local_34 = (Task *)((int)&local_34->_vptr_Task + (int)pcVar6)" identifier = (cast_expression "(Task *)((int)&local_34->_vptr_Task + (int)pcVar6)" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_34->_vptr_Task + (int)pcVar6)" ( (binary_expression "(int)&local_34->_vptr_Task + (int)pcVar6" (cast_expression "(int)&local_34->_vptr_Task" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_34->_vptr_Task" & (field_expression "local_34->_vptr_Task" identifier -> field_identifier))) + (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12;" (assignment_expression "bVar19 = (uint)pcVar1 / (uint)pcVar6 != uVar12" identifier = (binary_expression "(uint)pcVar1 / (uint)pcVar6 != uVar12" (binary_expression "(uint)pcVar1 / (uint)pcVar6" (cast_expression "(uint)pcVar1" ( (type_descriptor "uint" type_identifier) ) identifier) / (cast_expression "(uint)pcVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) != identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar19)" ( identifier )) ;) })) (goto_statement "goto LAB_000a7c83;" goto statement_identifier ;) })) })) (expression_statement "local_38 = (_func_int_varargs *)0x0;" (assignment_expression "local_38 = (_func_int_varargs *)0x0" identifier = (cast_expression "(_func_int_varargs *)0x0" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var15 = (_func_int_varargs *)0x0;" (assignment_expression "p_Var15 = (_func_int_varargs *)0x0" identifier = (cast_expression "(_func_int_varargs *)0x0" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a7c83:\n  pp_Var8 = (_func_int_varargs **)operator_new(0x18);" statement_identifier : (expression_statement "pp_Var8 = (_func_int_varargs **)operator_new(0x18);" (assignment_expression "pp_Var8 = (_func_int_varargs **)operator_new(0x18)" identifier = (cast_expression "(_func_int_varargs **)operator_new(0x18)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "*pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8;" (assignment_expression "*pp_Var8 = (_func_int_varargs *)&PTR__Close_task_runner_00333ac8" (pointer_expression "*pp_Var8" * identifier) = (cast_expression "(_func_int_varargs *)&PTR__Close_task_runner_00333ac8" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&PTR__Close_task_runner_00333ac8" & identifier))) ;) (expression_statement "pGVar5 = this->options_;" (assignment_expression "pGVar5 = this->options_" identifier = (field_expression "this->options_" identifier -> field_identifier)) ;) (expression_statement "pp_Var8[4] = p_Var15;" (assignment_expression "pp_Var8[4] = p_Var15" (subscript_expression "pp_Var8[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pp_Var8[1] = (_func_int_varargs *)pGVar5;" (assignment_expression "pp_Var8[1] = (_func_int_varargs *)pGVar5" (subscript_expression "pp_Var8[1]" identifier [ number_literal ]) = (cast_expression "(_func_int_varargs *)pGVar5" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pp_Var8[2] = (_func_int_varargs *)pLVar4;" (assignment_expression "pp_Var8[2] = (_func_int_varargs *)pLVar4" (subscript_expression "pp_Var8[2]" identifier [ number_literal ]) = (cast_expression "(_func_int_varargs *)pLVar4" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pp_Var8[3] = (_func_int_varargs *)pOVar3;" (assignment_expression "pp_Var8[3] = (_func_int_varargs *)pOVar3" (subscript_expression "pp_Var8[3]" identifier [ number_literal ]) = (cast_expression "(_func_int_varargs *)pOVar3" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pp_Var8[5] = local_38;" (assignment_expression "pp_Var8[5] = local_38" (subscript_expression "pp_Var8[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pTVar9 = (Task *)operator_new(0x30);" (assignment_expression "pTVar9 = (Task *)operator_new(0x30)" identifier = (cast_expression "(Task *)operator_new(0x30)" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "pTVar9[1]._vptr_Task = pp_Var8;" (assignment_expression "pTVar9[1]._vptr_Task = pp_Var8" (field_expression "pTVar9[1]._vptr_Task" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "(pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2;" (assignment_expression "(pTVar9->name_)._M_dataplus._M_p = (pointer)&(pTVar9->name_).field_2" (field_expression "(pTVar9->name_)._M_dataplus._M_p" (field_expression "(pTVar9->name_)._M_dataplus" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pTVar9->name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pTVar9->name_).field_2" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c;" (assignment_expression "pTVar9->_vptr_Task = (_func_int_varargs **)&PTR__Task_function_0033367c" (field_expression "pTVar9->_vptr_Task" identifier -> field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Task_function_0033367c" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Task_function_0033367c" & identifier))) ;) (expression_statement "pTVar9[1].list_next_ = pTVar7;" (assignment_expression "pTVar9[1].list_next_ = pTVar7" (field_expression "pTVar9[1].list_next_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pTVar9->list_next_ = (Task *)0x0;" (assignment_expression "pTVar9->list_next_ = (Task *)0x0" (field_expression "pTVar9->list_next_" identifier -> field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(pTVar9->name_)._M_string_length = 0;" (assignment_expression "(pTVar9->name_)._M_string_length = 0" (field_expression "(pTVar9->name_)._M_string_length" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pTVar9->name_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(pTVar9->name_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(pTVar9->name_).field_2._M_local_buf[0]" (field_expression "(pTVar9->name_).field_2._M_local_buf" (field_expression "(pTVar9->name_).field_2" (parenthesized_expression "(pTVar9->name_)" ( (field_expression "pTVar9->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pTVar9->should_run_soon_ = false;" (assignment_expression "pTVar9->should_run_soon_ = false" (field_expression "pTVar9->should_run_soon_" identifier -> field_identifier) = false) ;) (expression_statement "pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";" (assignment_expression "pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner"" (field_expression "pTVar9[1].name_._M_dataplus._M_p" (field_expression "pTVar9[1].name_._M_dataplus" (field_expression "pTVar9[1].name_" (subscript_expression "pTVar9[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) . field_identifier) = (string_literal ""Task_function Close_task_runner"" " string_content ")) ;) (labeled_statement "Workqueue::queue(workqueue,pTVar9);" statement_identifier : (ERROR ":" :) (expression_statement "queue(workqueue,pTVar9);" (call_expression "queue(workqueue,pTVar9)" identifier (argument_list "(workqueue,pTVar9)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000a7bd0(int param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}\n\n" (function_definition "void FUN_000a7bd0(int param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" primitive_type (function_declarator "FUN_000a7bd0(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "undefined1 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;" (assignment_expression "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48" identifier = (binary_expression "&stack0xfffffff0 < (undefined1 *)0x48" (pointer_expression "&stack0xfffffff0" & identifier) < (cast_expression "(undefined1 *)0x48" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "uVar17 = &stack0x00000000 == (undefined1 *)0x58;" (assignment_expression "uVar17 = &stack0x00000000 == (undefined1 *)0x58" identifier = (binary_expression "&stack0x00000000 == (undefined1 *)0x58" (pointer_expression "&stack0x00000000" & identifier) == (cast_expression "(undefined1 *)0x58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar6 = (undefined1 *)FUN_001aa8c0(0x14);" (assignment_expression "puVar6 = (undefined1 *)FUN_001aa8c0(0x14)" identifier = (cast_expression "(undefined1 *)FUN_001aa8c0(0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 8)" * (cast_expression "(undefined4 *)(puVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 8)" ( (binary_expression "puVar6 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0xc)" * (cast_expression "(undefined4 *)(puVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0xc)" ( (binary_expression "puVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0x10)" * (cast_expression "(undefined4 *)(puVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = *(byte **)(iVar3 + 0x478);" (assignment_expression "pbVar13 = *(byte **)(iVar3 + 0x478)" identifier = (pointer_expression "*(byte **)(iVar3 + 0x478)" * (cast_expression "(byte **)(iVar3 + 0x478)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x478)" ( (binary_expression "iVar3 + 0x478" identifier + number_literal) ))))) ;) (expression_statement "pbVar14 = &DAT_00253013;" (assignment_expression "pbVar14 = &DAT_00253013" identifier = (pointer_expression "&DAT_00253013" & identifier)) ;) (do_statement "do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);" do (compound_statement "{\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  }" { (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar16 = *pbVar13 < *pbVar14;" (assignment_expression "uVar16 = *pbVar13 < *pbVar14" identifier = (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" identifier = (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "((bool)uVar17)" ( (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier) )) ;) (if_statement "if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" if (parenthesized_expression "((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16)" ( (binary_expression "(!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16" (parenthesized_expression "(!(bool)uVar16 && !(bool)uVar17)" ( (binary_expression "!(bool)uVar16 && !(bool)uVar17" (unary_expression "!(bool)uVar16" ! (cast_expression "(bool)uVar16" ( (type_descriptor "bool" primitive_type) ) identifier)) && (unary_expression "!(bool)uVar17" ! (cast_expression "(bool)uVar17" ( (type_descriptor "bool" primitive_type) ) identifier))) )) == (cast_expression "(bool)uVar16" ( (type_descriptor "bool" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(iVar3 + 0x4bc);" (assignment_expression "uVar4 = *(uint *)(iVar3 + 0x4bc)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x4bc)" * (cast_expression "(uint *)(iVar3 + 0x4bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4bc)" ( (binary_expression "iVar3 + 0x4bc" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" if (parenthesized_expression "(-1 < *(int *)(iVar2 + 0x1c0))" ( (binary_expression "-1 < *(int *)(iVar2 + 0x1c0)" number_literal < (pointer_expression "*(int *)(iVar2 + 0x1c0)" * (cast_expression "(int *)(iVar2 + 0x1c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c0)" ( (binary_expression "iVar2 + 0x1c0" identifier + number_literal) ))))) )) (compound_statement "{\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" { (expression_statement "uVar15 = *(uint *)(iVar2 + 0x1bc);" (assignment_expression "uVar15 = *(uint *)(iVar2 + 0x1bc)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x1bc)" * (cast_expression "(uint *)(iVar2 + 0x1bc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1bc)" ( (binary_expression "iVar2 + 0x1bc" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" if (parenthesized_expression "((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0))" ( (binary_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)" (parenthesized_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0)" ( (binary_expression "uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0" (binary_expression "uVar4 != 0" identifier != number_literal) || (binary_expression "*(int *)(iVar3 + 0x4c0) != 0" (pointer_expression "*(int *)(iVar3 + 0x4c0)" * (cast_expression "(int *)(iVar3 + 0x4c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4c0)" ( (binary_expression "iVar3 + 0x4c0" identifier + number_literal) )))) != number_literal)) )) && (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" if (parenthesized_expression "(*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508))" ( (binary_expression "*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (binary_expression "*(int *)(iVar3 + 0x508) == 0" (pointer_expression "*(int *)(iVar3 + 0x508)" * (cast_expression "(int *)(iVar3 + 0x508)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x508)" ( (binary_expression "iVar3 + 0x508" identifier + number_literal) )))) == number_literal) && (binary_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (call_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < *(uint *)(iVar3 + 0x504))" ( (binary_expression "uVar15 < *(uint *)(iVar3 + 0x504)" identifier < (pointer_expression "*(uint *)(iVar3 + 0x504)" * (cast_expression "(uint *)(iVar3 + 0x504)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x504)" ( (binary_expression "iVar3 + 0x504" identifier + number_literal) ))))) ))) <= (binary_expression "(uint)-*(int *)(iVar3 + 0x508)" (parenthesized_expression "(uint)" ( identifier )) - (pointer_expression "*(int *)(iVar3 + 0x508)" * (cast_expression "(int *)(iVar3 + 0x508)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x508)" ( (binary_expression "iVar3 + 0x508" identifier + number_literal) ))))))) )) (compound_statement "{\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" { (expression_statement "uVar9 = (uVar15 - 1) / uVar4;" (assignment_expression "uVar9 = (uVar15 - 1) / uVar4" identifier = (binary_expression "(uVar15 - 1) / uVar4" (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )) / identifier)) ;) (expression_statement "local_38 = uVar9 + 1;" (assignment_expression "local_38 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar6 + 4) = local_38;" (assignment_expression "*(int *)(puVar6 + 4) = local_38" (pointer_expression "*(int *)(puVar6 + 4)" * (cast_expression "(int *)(puVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_38 = local_38 * 0x10;" (assignment_expression "local_38 = local_38 * 0x10" identifier = (binary_expression "local_38 * 0x10" identifier * number_literal)) ;) (expression_statement "iVar10 = FUN_001aa840(local_38);" (assignment_expression "iVar10 = FUN_001aa840(local_38)" identifier = (call_expression "FUN_001aa840(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);" do (compound_statement "{\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        }" { (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) (if_statement "if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }" if (parenthesized_expression "(uVar4 <= uVar15)" ( (binary_expression "uVar4 <= uVar15" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar4;\n          }" { (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) })) (expression_statement "uVar15 = uVar15 - uVar4;" (assignment_expression "uVar15 = uVar15 - uVar4" identifier = (binary_expression "uVar15 - uVar4" identifier - identifier)) ;) (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x38);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x38)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = puVar7 + 4;" (assignment_expression "puVar7[2] = puVar7 + 4" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (binary_expression "puVar7 + 4" identifier + number_literal)) ;) (expression_statement "puVar7[0xb] = uVar11;" (assignment_expression "puVar7[0xb] = uVar11" (subscript_expression "puVar7[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar7 = &PTR_FUN_00333a00;" (assignment_expression "*puVar7 = &PTR_FUN_00333a00" (pointer_expression "*puVar7" * identifier) = (pointer_expression "&PTR_FUN_00333a00" & identifier)) ;) (expression_statement "puVar7[3] = 0;" (assignment_expression "puVar7[3] = 0" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[9] = uVar1;" (assignment_expression "puVar7[9] = uVar1" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[0xc] = uVar12 * 0x10 + iVar10;" (assignment_expression "puVar7[0xc] = uVar12 * 0x10 + iVar10" (subscript_expression "puVar7[0xc]" identifier [ number_literal ]) = (binary_expression "uVar12 * 0x10 + iVar10" (binary_expression "uVar12 * 0x10" identifier * number_literal) + identifier)) ;) (expression_statement "*(undefined1 *)(puVar7 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 4)" * (cast_expression "(undefined1 *)(puVar7 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 4)" ( (binary_expression "puVar7 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar7 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 8)" * (cast_expression "(undefined1 *)(puVar7 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 8)" ( (binary_expression "puVar7 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar7[10] = local_34;" (assignment_expression "puVar7[10] = local_34" (subscript_expression "puVar7[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[0xd] = puVar6;" (assignment_expression "puVar7[0xd] = puVar6" (subscript_expression "puVar7[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00160dc0(param_2,puVar7);" (call_expression "FUN_00160dc0(param_2,puVar7)" identifier (argument_list "(param_2,puVar7)" ( identifier , identifier ))) ;) (expression_statement "local_34 = local_34 + uVar4;" (assignment_expression "local_34 = local_34 + uVar4" identifier = (binary_expression "local_34 + uVar4" identifier + identifier)) ;) (expression_statement "bVar18 = uVar9 != uVar12;" (assignment_expression "bVar18 = uVar9 != uVar12" identifier = (binary_expression "uVar9 != uVar12" identifier != identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) })) (goto_statement "goto LAB_000a7c83;" goto statement_identifier ;) })) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" statement_identifier : (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x18)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;)) (expression_statement "*puVar7 = &PTR_FUN_00333ac8;" (assignment_expression "*puVar7 = &PTR_FUN_00333ac8" (pointer_expression "*puVar7" * identifier) = (pointer_expression "&PTR_FUN_00333ac8" & identifier)) ;) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar7[4] = iVar10;" (assignment_expression "puVar7[4] = iVar10" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[1] = uVar5;" (assignment_expression "puVar7[1] = uVar5" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[2] = iVar2;" (assignment_expression "puVar7[2] = iVar2" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7[5] = local_38;" (assignment_expression "puVar7[5] = local_38" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0x30);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0x30)" identifier = (cast_expression "(undefined4 *)FUN_001aa8c0(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001aa8c0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "puVar8[9] = puVar7;" (assignment_expression "puVar8[9] = puVar7" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[2] = puVar8 + 4;" (assignment_expression "puVar8[2] = puVar8 + 4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "*puVar8 = &PTR_FUN_0033367c;" (assignment_expression "*puVar8 = &PTR_FUN_0033367c" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_0033367c" & identifier)) ;) (expression_statement "puVar8[10] = puVar6;" (assignment_expression "puVar8[10] = puVar6" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" * (cast_expression "(undefined1 *)(puVar8 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 8)" * (cast_expression "(undefined1 *)(puVar8 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 8)" ( (binary_expression "puVar8 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[0xb] = "Task_function Close_task_runner";" (assignment_expression "puVar8[0xb] = "Task_function Close_task_runner"" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = (string_literal ""Task_function Close_task_runner"" " string_content ")) ;) (expression_statement "FUN_00160dc0(param_2,puVar8);" (call_expression "FUN_00160dc0(param_2,puVar8)" identifier (argument_list "(param_2,puVar8)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (unary_expression ! (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) == (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (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 (binary_expression IDENT != LIT) || (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (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) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (string_literal " string_content ")) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_000a7bd0(int param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000a7bd0(int param_1,undefined4 param_2)" (identifier "FUN_000a7bd0") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  undefined4 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  uint uVar15;\n  undefined1 uVar16;\n  undefined1 uVar17;\n  bool bVar18;\n  byte bVar19;\n  int local_38;\n  int local_34;\n  \n  bVar19 = 0;\n  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;\n  uVar17 = &stack0x00000000 == (undefined1 *)0x58;\n  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);\n  iVar10 = 5;\n  *(undefined4 *)(puVar6 + 8) = 0;\n  *puVar6 = 1;\n  uVar1 = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(puVar6 + 4) = 0;\n  *(undefined4 *)(puVar6 + 0xc) = 0;\n  *(undefined4 *)(puVar6 + 0x10) = 0;\n  iVar2 = *(int *)(param_1 + 8);\n  iVar3 = *(int *)(param_1 + 4);\n  pbVar13 = *(byte **)(iVar3 + 0x478);\n  pbVar14 = &DAT_00253013;\n  do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);\n  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }\n  local_38 = 0;\n  iVar10 = 0;\nLAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);\n  *puVar7 = &PTR_FUN_00333ac8;\n  uVar5 = *(undefined4 *)(param_1 + 4);\n  puVar7[4] = iVar10;\n  puVar7[1] = uVar5;\n  puVar7[2] = iVar2;\n  puVar7[3] = uVar1;\n  puVar7[5] = local_38;\n  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);\n  puVar8[9] = puVar7;\n  puVar8[2] = puVar8 + 4;\n  *puVar8 = &PTR_FUN_0033367c;\n  puVar8[10] = puVar6;\n  puVar8[1] = 0;\n  puVar8[3] = 0;\n  *(undefined1 *)(puVar8 + 4) = 0;\n  *(undefined1 *)(puVar8 + 8) = 0;\n  puVar8[0xb] = "Task_function Close_task_runner";\n  FUN_00160dc0(param_2,puVar8);\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (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 "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "undefined1 uVar16;" (type_identifier "undefined1") (identifier "uVar16") (; ";")) (declaration "undefined1 uVar17;" (type_identifier "undefined1") (identifier "uVar17") (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;" (assignment_expression "uVar16 = &stack0xfffffff0 < (undefined1 *)0x48" (identifier "uVar16") (= "=") (binary_expression "&stack0xfffffff0 < (undefined1 *)0x48" (pointer_expression "&stack0xfffffff0" (& "&") (identifier "stack0xfffffff0")) (< "<") (cast_expression "(undefined1 *)0x48" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x48")))) (; ";")) (expression_statement "uVar17 = &stack0x00000000 == (undefined1 *)0x58;" (assignment_expression "uVar17 = &stack0x00000000 == (undefined1 *)0x58" (identifier "uVar17") (= "=") (binary_expression "&stack0x00000000 == (undefined1 *)0x58" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (== "==") (cast_expression "(undefined1 *)0x58" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x58")))) (; ";")) (expression_statement "puVar6 = (undefined1 *)FUN_001aa8c0(0x14);" (assignment_expression "puVar6 = (undefined1 *)FUN_001aa8c0(0x14)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)FUN_001aa8c0(0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(0x14)" (identifier "FUN_001aa8c0") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "iVar10 = 5;" (assignment_expression "iVar10 = 5" (identifier "iVar10") (= "=") (number_literal "5")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 8) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 8) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 8)" (( "(") (binary_expression "puVar6 + 8" (identifier "puVar6") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1 + 0xc)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 4) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0xc)" (( "(") (binary_expression "puVar6 + 0xc" (identifier "puVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + 0x10) = 0" (pointer_expression "*(undefined4 *)(puVar6 + 0x10)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x10)" (( "(") (binary_expression "puVar6 + 0x10" (identifier "puVar6") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 4);" (assignment_expression "iVar3 = *(int *)(param_1 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar13 = *(byte **)(iVar3 + 0x478);" (assignment_expression "pbVar13 = *(byte **)(iVar3 + 0x478)" (identifier "pbVar13") (= "=") (pointer_expression "*(byte **)(iVar3 + 0x478)" (* "*") (cast_expression "(byte **)(iVar3 + 0x478)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x478)" (( "(") (binary_expression "iVar3 + 0x478" (identifier "iVar3") (+ "+") (number_literal "0x478")) () ")"))))) (; ";")) (expression_statement "pbVar14 = &DAT_00253013;" (assignment_expression "pbVar14 = &DAT_00253013" (identifier "pbVar14") (= "=") (pointer_expression "&DAT_00253013" (& "&") (identifier "DAT_00253013"))) (; ";")) (do_statement "do {\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  } while ((bool)uVar17);" (do "do") (compound_statement "{\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 + -1;\n    uVar16 = *pbVar13 < *pbVar14;\n    uVar17 = *pbVar13 == *pbVar14;\n    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;\n    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;\n  }" ({ "{") (if_statement "if (iVar10 == 0) break;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar16 = *pbVar13 < *pbVar14;" (assignment_expression "uVar16 = *pbVar13 < *pbVar14" (identifier "uVar16") (= "=") (binary_expression "*pbVar13 < *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "uVar17 = *pbVar13 == *pbVar14;" (assignment_expression "uVar17 = *pbVar13 == *pbVar14" (identifier "uVar17") (= "=") (binary_expression "*pbVar13 == *pbVar14" (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar13 + (uint)bVar19 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (uint)bVar19 * -2 + 1" (binary_expression "pbVar14 + (uint)bVar19 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((bool)uVar17)" (( "(") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17")) () ")")) (; ";")) (if_statement "if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" (if "if") (parenthesized_expression "((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16)" (( "(") (binary_expression "(!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16" (parenthesized_expression "(!(bool)uVar16 && !(bool)uVar17)" (( "(") (binary_expression "!(bool)uVar16 && !(bool)uVar17" (unary_expression "!(bool)uVar16" (! "!") (cast_expression "(bool)uVar16" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar16"))) (&& "&&") (unary_expression "!(bool)uVar17" (! "!") (cast_expression "(bool)uVar17" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar17")))) () ")")) (== "==") (cast_expression "(bool)uVar16" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "uVar16"))) () ")")) (compound_statement "{\n    uVar4 = *(uint *)(iVar3 + 0x4bc);\n    uVar15 = 0;\n    if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }\n    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }\n  }" ({ "{") (expression_statement "uVar4 = *(uint *)(iVar3 + 0x4bc);" (assignment_expression "uVar4 = *(uint *)(iVar3 + 0x4bc)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar3 + 0x4bc)" (* "*") (cast_expression "(uint *)(iVar3 + 0x4bc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x4bc)" (( "(") (binary_expression "iVar3 + 0x4bc" (identifier "iVar3") (+ "+") (number_literal "0x4bc")) () ")"))))) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < *(int *)(iVar2 + 0x1c0)) {\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" (if "if") (parenthesized_expression "(-1 < *(int *)(iVar2 + 0x1c0))" (( "(") (binary_expression "-1 < *(int *)(iVar2 + 0x1c0)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(iVar2 + 0x1c0)" (* "*") (cast_expression "(int *)(iVar2 + 0x1c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c0)" (( "(") (binary_expression "iVar2 + 0x1c0" (identifier "iVar2") (+ "+") (number_literal "0x1c0")) () ")"))))) () ")")) (compound_statement "{\n      uVar15 = *(uint *)(iVar2 + 0x1bc);\n    }" ({ "{") (expression_statement "uVar15 = *(uint *)(iVar2 + 0x1bc);" (assignment_expression "uVar15 = *(uint *)(iVar2 + 0x1bc)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(iVar2 + 0x1bc)" (* "*") (cast_expression "(uint *)(iVar2 + 0x1bc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1bc)" (( "(") (binary_expression "iVar2 + 0x1bc" (identifier "iVar2") (+ "+") (number_literal "0x1bc")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" (if "if") (parenthesized_expression "((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0))" (( "(") (binary_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)" (parenthesized_expression "(uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0)" (( "(") (binary_expression "uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0" (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "*(int *)(iVar3 + 0x4c0) != 0" (pointer_expression "*(int *)(iVar3 + 0x4c0)" (* "*") (cast_expression "(int *)(iVar3 + 0x4c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x4c0)" (( "(") (binary_expression "iVar3 + 0x4c0" (identifier "iVar3") (+ "+") (number_literal "0x4c0")) () ")")))) (!= "!=") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar10 = 0;\n      local_38 = 0;\n      if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }\n      goto LAB_000a7c83;\n    }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508))" (( "(") (binary_expression "*(int *)(iVar3 + 0x508) == 0 &&\n          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (binary_expression "*(int *)(iVar3 + 0x508) == 0" (pointer_expression "*(int *)(iVar3 + 0x508)" (* "*") (cast_expression "(int *)(iVar3 + 0x508)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x508)" (( "(") (binary_expression "iVar3 + 0x508" (identifier "iVar3") (+ "+") (number_literal "0x508")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)" (call_expression "(uint)(uVar15 < *(uint *)(iVar3 + 0x504))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar15 < *(uint *)(iVar3 + 0x504))" (( "(") (binary_expression "uVar15 < *(uint *)(iVar3 + 0x504)" (identifier "uVar15") (< "<") (pointer_expression "*(uint *)(iVar3 + 0x504)" (* "*") (cast_expression "(uint *)(iVar3 + 0x504)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x504)" (( "(") (binary_expression "iVar3 + 0x504" (identifier "iVar3") (+ "+") (number_literal "0x504")) () ")"))))) () ")"))) (<= "<=") (binary_expression "(uint)-*(int *)(iVar3 + 0x508)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (pointer_expression "*(int *)(iVar3 + 0x508)" (* "*") (cast_expression "(int *)(iVar3 + 0x508)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x508)" (( "(") (binary_expression "iVar3 + 0x508" (identifier "iVar3") (+ "+") (number_literal "0x508")) () ")"))))))) () ")")) (compound_statement "{\n        uVar9 = (uVar15 - 1) / uVar4;\n        local_38 = uVar9 + 1;\n        *(int *)(puVar6 + 4) = local_38;\n        local_38 = local_38 * 0x10;\n        iVar10 = FUN_001aa840(local_38);\n        local_34 = 0;\n        uVar12 = 0;\n        do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);\n      }" ({ "{") (expression_statement "uVar9 = (uVar15 - 1) / uVar4;" (assignment_expression "uVar9 = (uVar15 - 1) / uVar4" (identifier "uVar9") (= "=") (binary_expression "(uVar15 - 1) / uVar4" (parenthesized_expression "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "local_38 = uVar9 + 1;" (assignment_expression "local_38 = uVar9 + 1" (identifier "local_38") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(puVar6 + 4) = local_38;" (assignment_expression "*(int *)(puVar6 + 4) = local_38" (pointer_expression "*(int *)(puVar6 + 4)" (* "*") (cast_expression "(int *)(puVar6 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (expression_statement "local_38 = local_38 * 0x10;" (assignment_expression "local_38 = local_38 * 0x10" (identifier "local_38") (= "=") (binary_expression "local_38 * 0x10" (identifier "local_38") (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "iVar10 = FUN_001aa840(local_38);" (assignment_expression "iVar10 = FUN_001aa840(local_38)" (identifier "iVar10") (= "=") (call_expression "FUN_001aa840(local_38)" (identifier "FUN_001aa840") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        } while (bVar18);" (do "do") (compound_statement "{\n          uVar11 = uVar15;\n          if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }\n          uVar15 = uVar15 - uVar4;\n          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);\n          puVar7[1] = 0;\n          puVar7[2] = puVar7 + 4;\n          puVar7[0xb] = uVar11;\n          *puVar7 = &PTR_FUN_00333a00;\n          puVar7[3] = 0;\n          puVar7[9] = uVar1;\n          puVar7[0xc] = uVar12 * 0x10 + iVar10;\n          *(undefined1 *)(puVar7 + 4) = 0;\n          *(undefined1 *)(puVar7 + 8) = 0;\n          puVar7[10] = local_34;\n          puVar7[0xd] = puVar6;\n          FUN_00160dc0(param_2,puVar7);\n          local_34 = local_34 + uVar4;\n          bVar18 = uVar9 != uVar12;\n          uVar12 = uVar12 + 1;\n        }" ({ "{") (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" (identifier "uVar11") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (uVar4 <= uVar15) {\n            uVar11 = uVar4;\n          }" (if "if") (parenthesized_expression "(uVar4 <= uVar15)" (( "(") (binary_expression "uVar4 <= uVar15" (identifier "uVar4") (<= "<=") (identifier "uVar15")) () ")")) (compound_statement "{\n            uVar11 = uVar4;\n          }" ({ "{") (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" (identifier "uVar11") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (expression_statement "uVar15 = uVar15 - uVar4;" (assignment_expression "uVar15 = uVar15 - uVar4" (identifier "uVar15") (= "=") (binary_expression "uVar15 - uVar4" (identifier "uVar15") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x38);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x38)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)FUN_001aa8c0(0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(0x38)" (identifier "FUN_001aa8c0") (argument_list "(0x38)" (( "(") (number_literal "0x38") () ")"))))) (; ";")) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[2] = puVar7 + 4;" (assignment_expression "puVar7[2] = puVar7 + 4" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar7 + 4" (identifier "puVar7") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar7[0xb] = uVar11;" (assignment_expression "puVar7[0xb] = uVar11" (subscript_expression "puVar7[0xb]" (identifier "puVar7") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*puVar7 = &PTR_FUN_00333a00;" (assignment_expression "*puVar7 = &PTR_FUN_00333a00" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "&PTR_FUN_00333a00" (& "&") (identifier "PTR_FUN_00333a00"))) (; ";")) (expression_statement "puVar7[3] = 0;" (assignment_expression "puVar7[3] = 0" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[9] = uVar1;" (assignment_expression "puVar7[9] = uVar1" (subscript_expression "puVar7[9]" (identifier "puVar7") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar7[0xc] = uVar12 * 0x10 + iVar10;" (assignment_expression "puVar7[0xc] = uVar12 * 0x10 + iVar10" (subscript_expression "puVar7[0xc]" (identifier "puVar7") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "uVar12 * 0x10 + iVar10" (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10")) (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "*(undefined1 *)(puVar7 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar7 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 4)" (( "(") (binary_expression "puVar7 + 4" (identifier "puVar7") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar7 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar7 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar7 + 8)" (* "*") (cast_expression "(undefined1 *)(puVar7 + 8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 8)" (( "(") (binary_expression "puVar7 + 8" (identifier "puVar7") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7[10] = local_34;" (assignment_expression "puVar7[10] = local_34" (subscript_expression "puVar7[10]" (identifier "puVar7") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "puVar7[0xd] = puVar6;" (assignment_expression "puVar7[0xd] = puVar6" (subscript_expression "puVar7[0xd]" (identifier "puVar7") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "FUN_00160dc0(param_2,puVar7);" (call_expression "FUN_00160dc0(param_2,puVar7)" (identifier "FUN_00160dc0") (argument_list "(param_2,puVar7)" (( "(") (identifier "param_2") (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "local_34 = local_34 + uVar4;" (assignment_expression "local_34 = local_34 + uVar4" (identifier "local_34") (= "=") (binary_expression "local_34 + uVar4" (identifier "local_34") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "bVar18 = uVar9 != uVar12;" (assignment_expression "bVar18 = uVar9 != uVar12" (identifier "bVar18") (= "=") (binary_expression "uVar9 != uVar12" (identifier "uVar9") (!= "!=") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_000a7c83;" (goto "goto") (statement_identifier "LAB_000a7c83") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a7c83:\n  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" (statement_identifier "LAB_000a7c83") (: ":") (expression_statement "puVar7 = (undefined4 *)FUN_001aa8c0(0x18);" (assignment_expression "puVar7 = (undefined4 *)FUN_001aa8c0(0x18)" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)FUN_001aa8c0(0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(0x18)" (identifier "FUN_001aa8c0") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";"))) (expression_statement "*puVar7 = &PTR_FUN_00333ac8;" (assignment_expression "*puVar7 = &PTR_FUN_00333ac8" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "&PTR_FUN_00333ac8" (& "&") (identifier "PTR_FUN_00333ac8"))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar5 = *(undefined4 *)(param_1 + 4)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar7[4] = iVar10;" (assignment_expression "puVar7[4] = iVar10" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "puVar7[1] = uVar5;" (assignment_expression "puVar7[1] = uVar5" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar7[2] = iVar2;" (assignment_expression "puVar7[2] = iVar2" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar7[5] = local_38;" (assignment_expression "puVar7[5] = local_38" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "puVar8 = (undefined4 *)FUN_001aa8c0(0x30);" (assignment_expression "puVar8 = (undefined4 *)FUN_001aa8c0(0x30)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_001aa8c0(0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001aa8c0(0x30)" (identifier "FUN_001aa8c0") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (expression_statement "puVar8[9] = puVar7;" (assignment_expression "puVar8[9] = puVar7" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar8[2] = puVar8 + 4;" (assignment_expression "puVar8[2] = puVar8 + 4" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_0033367c;" (assignment_expression "*puVar8 = &PTR_FUN_0033367c" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_0033367c" (& "&") (identifier "PTR_FUN_0033367c"))) (; ";")) (expression_statement "puVar8[10] = puVar6;" (assignment_expression "puVar8[10] = puVar6" (subscript_expression "puVar8[10]" (identifier "puVar8") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 4)" (( "(") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 8) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 8) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 8)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 8)" (( "(") (binary_expression "puVar8 + 8" (identifier "puVar8") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xb] = "Task_function Close_task_runner";" (assignment_expression "puVar8[0xb] = "Task_function Close_task_runner"" (subscript_expression "puVar8[0xb]" (identifier "puVar8") ([ "[") (number_literal "0xb") (] "]")) (= "=") (string_literal ""Task_function Close_task_runner"" (" """) (string_content "Task_function Close_task_runner") (" """))) (; ";")) (expression_statement "FUN_00160dc0(param_2,puVar8);" (call_expression "FUN_00160dc0(param_2,puVar8)" (identifier "FUN_00160dc0") (argument_list "(param_2,puVar8)" (( "(") (identifier "param_2") (, ",") (identifier "puVar8") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Build_id_task_runner * this, Workqueue * workqueue, Task *
   param_2) */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *workqueue,type_3 *param_3)

{
  type_4 pcVar1;
  int *piVar2;
  type_5 *pOVar3;
  type_6 *pLVar4;
  type_7 *pGVar5;
  type_4 var_5;
  type_3 *pTVar7;
  type_8 **pp_Var8;
  type_3 *pTVar9;
  int var_2;
  type_4 pcVar11;
  type_9 var_9;
  type_10 *var_3;
  type_10 *var_4;
  type_8 *var_8;
  type_4 var_6;
  type_11 uVar17;
  type_11 uVar18;
  bool bVar19;
  type_10 bVar20;
  type_8 *local_38;
  type_3 *local_34;
  
  bVar20 = 0;
  uVar17 = &stack0xfffffff0 < (type_11 *)0x48;
  uVar18 = &stack0x00000000 == (type_11 *)0x58;
  pTVar7 = (type_3 *)var_1(0x14);
  var_2 = 5;
  (pTVar7->name_)._M_dataplus._M_p = (type_4)0x0;
  *(type_11 *)&pTVar7->_vptr_Task = 1;
  pOVar3 = this->of_;
  pTVar7->list_next_ = (type_3 *)0x0;
  (pTVar7->name_)._M_string_length = 0;
  (pTVar7->name_).field_2._M_allocated_capacity = 0;
  pLVar4 = this->layout_;
  pGVar5 = this->options_;
  var_3 = (type_10 *)(pGVar5->build_id_).value;
  var_4 = &DAT_00253013;
  do {
    if (var_2 == 0) break;
    var_2 = var_2 + -1;
    uVar17 = *var_3 < *var_4;
    uVar18 = *var_3 == *var_4;
    var_3 = var_3 + (type_9)bVar20 * -2 + 1;
    var_4 = var_4 + (type_9)bVar20 * -2 + 1;
  } while ((bool)uVar18);
  if ((!(bool)uVar17 && !(bool)uVar18) == (bool)uVar17) {
    var_5 = *(type_4 *)&(pGVar5->build_id_chunk_size_for_treehash_).value;
    var_6 = (type_4)0x0;
    if (-1 < *(int *)((int)&pLVar4->output_file_size_ + 4)) {
      var_6 = *(type_4 *)&pLVar4->output_file_size_;
    }
    if ((var_5 != (type_4)0x0 ||
         *(int *)((int)&(pGVar5->build_id_chunk_size_for_treehash_).value + 4) != 0) &&
       (var_6 != (type_4)0x0)) {
      piVar2 = (int *)((int)&(pGVar5->build_id_min_file_size_for_treehash_).value + 4);
      var_8 = (type_8 *)0x0;
      local_38 = (type_8 *)0x0;
      if (*piVar2 == 0 &&
          (type_9)(var_6 < *(type_4 *)&(pGVar5->build_id_min_file_size_for_treehash_).value) <=
          (type_9)-*piVar2) {
        pcVar1 = var_6 + -1;
        pTVar9 = (type_3 *)((type_9)pcVar1 / (type_9)var_5 + 1);
        pTVar7->list_next_ = pTVar9;
        local_38 = (type_8 *)((int)pTVar9 * 0x10);
        var_8 = (type_8 *)var_7((type_9)local_38);
        local_34 = (type_3 *)0x0;
        var_9 = 0;
        do {
          pcVar11 = var_6;
          if (var_5 <= var_6) {
            pcVar11 = var_5;
          }
          var_6 = var_6 + -(int)var_5;
          pTVar9 = (type_3 *)var_1(0x38);
          pTVar9->list_next_ = (type_3 *)0x0;
          (pTVar9->name_)._M_dataplus._M_p = (type_4)&(pTVar9->name_).field_2;
          pTVar9[1].name_._M_dataplus._M_p = pcVar11;
          pTVar9->_vptr_Task = (type_8 **)&PTR__Hash_task_00333a00;
          (pTVar9->name_)._M_string_length = 0;
          pTVar9[1]._vptr_Task = (type_8 **)pOVar3;
          pTVar9[1].name_._M_string_length = (type_12)(var_8 + var_9 * 0x10);
          (pTVar9->name_).field_2._M_local_buf[0] = '\0';
          pTVar9->should_run_soon_ = false;
          pTVar9[1].list_next_ = local_34;
          pTVar9[1].name_.field_2._M_allocated_capacity = (type_12)pTVar7;
          Workqueue::var_10(workqueue,pTVar9);
          local_34 = (type_3 *)((int)&local_34->_vptr_Task + (int)var_5);
          bVar19 = (type_9)pcVar1 / (type_9)var_5 != var_9;
          var_9 = var_9 + 1;
        } while (bVar19);
      }
      goto LAB_000a7c83;
    }
  }
  local_38 = (type_8 *)0x0;
  var_8 = (type_8 *)0x0;
LAB_000a7c83:
  pp_Var8 = (type_8 **)var_1(0x18);
  *pp_Var8 = (type_8 *)&PTR__Close_task_runner_00333ac8;
  pGVar5 = this->options_;
  pp_Var8[4] = var_8;
  pp_Var8[1] = (type_8 *)pGVar5;
  pp_Var8[2] = (type_8 *)pLVar4;
  pp_Var8[3] = (type_8 *)pOVar3;
  pp_Var8[5] = local_38;
  pTVar9 = (type_3 *)var_1(0x30);
  pTVar9[1]._vptr_Task = pp_Var8;
  (pTVar9->name_)._M_dataplus._M_p = (type_4)&(pTVar9->name_).field_2;
  pTVar9->_vptr_Task = (type_8 **)&PTR__Task_function_0033367c;
  pTVar9[1].list_next_ = pTVar7;
  pTVar9->list_next_ = (type_3 *)0x0;
  (pTVar9->name_)._M_string_length = 0;
  (pTVar9->name_).field_2._M_local_buf[0] = '\0';
  pTVar9->should_run_soon_ = false;
  pTVar9[1].name_._M_dataplus._M_p = "Task_function Close_task_runner";
  Workqueue::var_10(workqueue,pTVar9);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined1 *puVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  byte *pbVar13;
  byte *pbVar14;
  uint uVar15;
  undefined1 uVar16;
  undefined1 uVar17;
  bool bVar18;
  byte bVar19;
  int local_38;
  int local_34;
  
  bVar19 = 0;
  uVar16 = &stack0xfffffff0 < (undefined1 *)0x48;
  uVar17 = &stack0x00000000 == (undefined1 *)0x58;
  puVar6 = (undefined1 *)FUN_001aa8c0(0x14);
  iVar10 = 5;
  *(undefined4 *)(puVar6 + 8) = 0;
  *puVar6 = 1;
  uVar1 = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(puVar6 + 4) = 0;
  *(undefined4 *)(puVar6 + 0xc) = 0;
  *(undefined4 *)(puVar6 + 0x10) = 0;
  iVar2 = *(int *)(param_1 + 8);
  iVar3 = *(int *)(param_1 + 4);
  pbVar13 = *(byte **)(iVar3 + 0x478);
  pbVar14 = &DAT_00253013;
  do {
    if (iVar10 == 0) break;
    iVar10 = iVar10 + -1;
    uVar16 = *pbVar13 < *pbVar14;
    uVar17 = *pbVar13 == *pbVar14;
    pbVar13 = pbVar13 + (uint)bVar19 * -2 + 1;
    pbVar14 = pbVar14 + (uint)bVar19 * -2 + 1;
  } while ((bool)uVar17);
  if ((!(bool)uVar16 && !(bool)uVar17) == (bool)uVar16) {
    uVar4 = *(uint *)(iVar3 + 0x4bc);
    uVar15 = 0;
    if (-1 < *(int *)(iVar2 + 0x1c0)) {
      uVar15 = *(uint *)(iVar2 + 0x1bc);
    }
    if ((uVar4 != 0 || *(int *)(iVar3 + 0x4c0) != 0) && (uVar15 != 0)) {
      iVar10 = 0;
      local_38 = 0;
      if (*(int *)(iVar3 + 0x508) == 0 &&
          (uint)(uVar15 < *(uint *)(iVar3 + 0x504)) <= (uint)-*(int *)(iVar3 + 0x508)) {
        uVar9 = (uVar15 - 1) / uVar4;
        local_38 = uVar9 + 1;
        *(int *)(puVar6 + 4) = local_38;
        local_38 = local_38 * 0x10;
        iVar10 = FUN_001aa840(local_38);
        local_34 = 0;
        uVar12 = 0;
        do {
          uVar11 = uVar15;
          if (uVar4 <= uVar15) {
            uVar11 = uVar4;
          }
          uVar15 = uVar15 - uVar4;
          puVar7 = (undefined4 *)FUN_001aa8c0(0x38);
          puVar7[1] = 0;
          puVar7[2] = puVar7 + 4;
          puVar7[0xb] = uVar11;
          *puVar7 = &PTR_FUN_00333a00;
          puVar7[3] = 0;
          puVar7[9] = uVar1;
          puVar7[0xc] = uVar12 * 0x10 + iVar10;
          *(undefined1 *)(puVar7 + 4) = 0;
          *(undefined1 *)(puVar7 + 8) = 0;
          puVar7[10] = local_34;
          puVar7[0xd] = puVar6;
          FUN_00160dc0(param_2,puVar7);
          local_34 = local_34 + uVar4;
          bVar18 = uVar9 != uVar12;
          uVar12 = uVar12 + 1;
        } while (bVar18);
      }
      goto LAB_000a7c83;
    }
  }
  local_38 = 0;
  iVar10 = 0;
LAB_000a7c83:
  puVar7 = (undefined4 *)FUN_001aa8c0(0x18);
  *puVar7 = &PTR_FUN_00333ac8;
  uVar5 = *(undefined4 *)(param_1 + 4);
  puVar7[4] = iVar10;
  puVar7[1] = uVar5;
  puVar7[2] = iVar2;
  puVar7[3] = uVar1;
  puVar7[5] = local_38;
  puVar8 = (undefined4 *)FUN_001aa8c0(0x30);
  puVar8[9] = puVar7;
  puVar8[2] = puVar8 + 4;
  *puVar8 = &PTR_FUN_0033367c;
  puVar8[10] = puVar6;
  puVar8[1] = 0;
  puVar8[3] = 0;
  *(undefined1 *)(puVar8 + 4) = 0;
  *(undefined1 *)(puVar8 + 8) = 0;
  puVar8[0xb] = "Task_function Close_task_runner";
  FUN_00160dc0(param_2,puVar8);
  return;
}

