/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140091c60 FUN_140091c60 * Pseudocode, not original source. */ undefined8 FUN_140091c60(longlong param_1,uint param_2) { int *piVar1; longlong *plVar2; int *piVar3; int *piVar4; int *piVar5; undefined8 uVar6; uint *puVar7; longlong lVar8; longlong *plVar9; longlong *plVar10; longlong **pplVar11; undefined *puVar12; uint **ppuVar13; char *pcVar14; char local_res10 [8]; int *local_80; int *local_40; undefined1 local_38; piVar1 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); FUN_14006b350(piVar1); if (DAT_1401b42cf != '\0') { (**(code **)(**(longlong **)(param_1 + 0x20) + 200))(); } plVar9 = *(longlong **)(param_1 + 0x20); ppuVar13 = (uint **)(ulonglong)*(uint *)(plVar9 + 0x194); pplVar11 = (longlong **)((ulonglong)param_2 % (ulonglong)ppuVar13); if ((plVar9[400] != 0) && (puVar7 = *(uint **)(plVar9[400] + (longlong)pplVar11 * 8), puVar7 != (uint *)0x0)) { while ((uint)pplVar11 == puVar7[8] % *(uint *)(plVar9 + 0x194)) { if (*puVar7 == param_2) { plVar10 = *(longlong **)(puVar7 + 2); if ((plVar10 != (longlong *)0x0) && (plVar10[0x45] == 0)) { plVar2 = plVar10; uVar6 = FUN_140090660(plVar9,plVar10,pplVar11,ppuVar13); local_res10[0] = (char)uVar6; FUN_14006cb70(plVar9,plVar2,pplVar11,ppuVar13); local_80 = (int *)PTR_DAT_1401ac008; if (local_res10[0] != '\0') { if ((longlong *)plVar10[0xe8] == (longlong *)0x0) { lVar8 = 0; } else { lVar8 = *(longlong *)plVar10[0xe8]; } plVar9 = plVar10; plVar2 = FUN_1400d9010(lVar8,(longlong *)&local_40,(ulonglong)plVar10,ppuVar13); if (local_80 == (int *)0x0) { local_80 = (int *)PTR_DAT_1401ac008; } piVar3 = local_80; if ((int *)*plVar2 != local_80) { piVar3 = (int *)FUN_14006cb70(local_80,PTR_DAT_1401ac008,plVar9,ppuVar13); piVar5 = piVar3; FUN_14006b350(piVar3); if (((local_80 != (int *)0x0) && (local_80 != (int *)PTR_DAT_1401ac008)) && (local_80 + -2 != (int *)0x0)) { piVar4 = (int *)FUN_14006cb70(piVar5,PTR_DAT_1401ac008,plVar9,ppuVar13); FUN_14006b350(piVar4); piVar5 = local_80 + -1; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_14006cc60(local_80 + -2); } FUN_14006b3e0((longlong)piVar4); } local_80 = (int *)*plVar2; if (((local_80 != (int *)PTR_DAT_1401ac008) && (local_80 != (int *)0x0)) && (local_80 != (int *)0x8)) { local_80[-1] = local_80[-1] + 1; } FUN_14006b3e0((longlong)piVar3); } piVar5 = local_40; if (((local_40 != (int *)0x0) && (local_40 != (int *)PTR_DAT_1401ac008)) && (piVar4 = local_40 + -2, piVar4 != (int *)0x0)) { piVar3 = (int *)FUN_14006cb70(piVar3,PTR_DAT_1401ac008,plVar9,ppuVar13); FUN_14006b350(piVar3); piVar5 = piVar5 + -1; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_14006cc60(piVar4); } FUN_14006b3e0((longlong)piVar3); } } plVar9 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8); pcVar14 = local_res10; puVar12 = &DAT_1401b6110; plVar2 = (longlong *)(ulonglong)param_2; (**(code **)(*plVar9 + 0x150))(); if (local_res10[0] != '\0') { plVar9 = *(longlong **)(param_1 + 0x20); FUN_140089920(plVar9,(longlong)plVar10,(SIZE_T)puVar12,pcVar14); plVar2 = plVar10; } if (((local_80 != (int *)0x0) && (local_80 != (int *)PTR_DAT_1401ac008)) && (local_80 + -2 != (int *)0x0)) { piVar5 = (int *)FUN_14006cb70(plVar9,plVar2,puVar12,pcVar14); local_40 = piVar5; FUN_14006b350(piVar5); local_38 = 1; piVar3 = local_80 + -1; *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_14006cc60(local_80 + -2); } FUN_14006b3e0((longlong)piVar5); } } break; } puVar7 = *(uint **)(puVar7 + 4); if (puVar7 == (uint *)0x0) break; } } uVar6 = FUN_14006b3e0((longlong)piVar1); return CONCAT71((int7)((ulonglong)uVar6 >> 8),1); }