/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14018cac0 FUN_14018cac0 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x00014018ce93) */ /* WARNING: Removing unreachable block (ram,0x00014018ceaf) */ void FUN_14018cac0(longlong param_1,longlong param_2) { ulonglong *puVar1; longlong *plVar2; void *pvVar3; ulonglong uVar4; ulonglong uVar5; longlong lVar6; ulonglong uVar7; longlong lVar8; ulonglong *local_res8; longlong *local_res18; undefined8 uVar9; uVar9 = 0xfffffffffffffffe; if (*(longlong *)(param_1 + 0x20) == 0) { lVar8 = 0; } else { lVar8 = *(longlong *)(param_1 + 0x10); } while (lVar8 != 0) { if (lVar8 == 0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } local_res8 = (ulonglong *)0x0; if (*(longlong *)(lVar8 + 8) != 0) { *(longlong *)(*(longlong *)(lVar8 + 8) + 8) = *(longlong *)(*(longlong *)(lVar8 + 8) + 8) + 1; local_res8 = *(ulonglong **)(lVar8 + 8); } if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } if (*(longlong *)(uVar4 + 0x100) == param_2) { LAB_14018cb81: if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } lVar6 = *(longlong *)(uVar4 + 0x100); if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } uVar4 = (uVar4 & 0xffffffff) % (ulonglong)*(uint *)(lVar6 + 0x6c8); if (*(longlong *)(lVar6 + 0x6a8) != 0) { plVar2 = *(longlong **)(*(longlong *)(lVar6 + 0x6a8) + uVar4 * 8); while( true ) { if ((plVar2 == (longlong *)0x0) || ((uint)uVar4 != *(uint *)(plVar2 + 4) % *(uint *)(lVar6 + 0x6c8))) goto LAB_14018cc1a; if ((ulonglong *)*plVar2 == (ulonglong *)0x0) { uVar7 = 0; } else { uVar7 = *(ulonglong *)*plVar2; } if (local_res8 == (ulonglong *)0x0) { uVar5 = 0; } else { uVar5 = *local_res8; } if (uVar7 == uVar5) break; plVar2 = (longlong *)plVar2[2]; } FUN_1401877c0(lVar6 + 0x6a0,plVar2,0,lVar6,uVar9); } LAB_14018cc1a: if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } lVar6 = *(longlong *)(uVar4 + 0x108); if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } uVar4 = (uVar4 & 0xffffffff) % (ulonglong)*(uint *)(lVar6 + 0x6c8); if (*(longlong *)(lVar6 + 0x6a8) != 0) { plVar2 = *(longlong **)(*(longlong *)(lVar6 + 0x6a8) + uVar4 * 8); while( true ) { if ((plVar2 == (longlong *)0x0) || ((uint)uVar4 != *(uint *)(plVar2 + 4) % *(uint *)(lVar6 + 0x6c8))) goto LAB_14018ccaa; if ((ulonglong *)*plVar2 == (ulonglong *)0x0) { uVar7 = 0; } else { uVar7 = *(ulonglong *)*plVar2; } if (local_res8 == (ulonglong *)0x0) { uVar5 = 0; } else { uVar5 = *local_res8; } if (uVar7 == uVar5) break; plVar2 = (longlong *)plVar2[2]; } FUN_1401877c0(lVar6 + 0x6a0,plVar2,0,lVar6,uVar9); } LAB_14018ccaa: if (lVar8 == 0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } lVar6 = *(longlong *)(lVar8 + 0x10); FUN_140184ef0(param_1,lVar8,0); lVar8 = lVar6; } else { if (local_res8 == (ulonglong *)0x0) { uVar4 = 0; } else { uVar4 = *local_res8; } if (*(longlong *)(uVar4 + 0x108) == param_2) goto LAB_14018cb81; if (lVar8 != 0) { lVar8 = *(longlong *)(lVar8 + 0x10); } } if (local_res8 != (ulonglong *)0x0) { puVar1 = local_res8 + 1; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { pvVar3 = (void *)*local_res8; if (pvVar3 != (void *)0x0) { FUN_14019a9e0((longlong)pvVar3 + 0x148); FUN_14019a9e0((longlong)pvVar3 + 0x120); operator_delete(pvVar3); } FUN_14016d970(local_res8); } } } if (*(longlong *)(param_1 + 0x78) == 0) { lVar8 = 0; } else { lVar8 = *(longlong *)(param_1 + 0x68); } do { if (lVar8 == 0) { return; } if (lVar8 == 0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } local_res18 = (longlong *)0x0; if (*(longlong *)(lVar8 + 8) != 0) { *(longlong *)(*(longlong *)(lVar8 + 8) + 8) = *(longlong *)(*(longlong *)(lVar8 + 8) + 8) + 1; local_res18 = *(longlong **)(lVar8 + 8); } if (local_res18 == (longlong *)0x0) { lVar6 = 0; } else { lVar6 = *local_res18; } if (*(longlong *)(lVar6 + 0x100) == param_2) { code_r0x00014018cdf6: if (lVar8 == 0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } lVar6 = *(longlong *)(lVar8 + 0x10); FUN_140184ef0(param_1 + 0x58,lVar8,0); lVar8 = lVar6; } else { if (local_res18 == (longlong *)0x0) { lVar6 = 0; } else { lVar6 = *local_res18; } if (*(longlong *)(lVar6 + 0x108) == param_2) goto code_r0x00014018cdf6; if (lVar8 != 0) { lVar8 = *(longlong *)(lVar8 + 0x10); } } if (local_res18 != (longlong *)0x0) { plVar2 = local_res18 + 1; *plVar2 = *plVar2 + -1; if (*plVar2 == 0) { pvVar3 = (void *)*local_res18; if (pvVar3 != (void *)0x0) { FUN_14019a9e0((longlong)pvVar3 + 0x148); FUN_14019a9e0((longlong)pvVar3 + 0x120); operator_delete(pvVar3); } FUN_14016d970(local_res18); } } } while( true ); }