/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400b0650 FUN_1400b0650 * Pseudocode, not original source. */ longlong * FUN_1400b0650(char *param_1,longlong *param_2) { ushort uVar1; int iVar2; ushort *puVar3; longlong *plVar4; ushort *puVar5; uint uVar6; uint uVar7; puVar5 = (ushort *)*param_2; puVar3 = puVar5; if (puVar5 == (ushort *)0x0) { puVar3 = (ushort *)PTR_DAT_140155010; } if (puVar3 == (ushort *)0x0) { /* WARNING: Subroutine does not return */ FUN_14000b450(0x80004005); } uVar7 = 0; if (puVar5 == (ushort *)0x0) { puVar5 = (ushort *)PTR_DAT_140155010; } uVar1 = *puVar5; while (uVar1 != 0) { puVar5 = puVar5 + 1; uVar7 = uVar7 * 0x21 + (uint)uVar1; uVar1 = *puVar5; } uVar6 = (uint)((ulonglong)uVar7 % (ulonglong)*(uint *)(param_1 + 0x28)); if (*(longlong *)(param_1 + 8) != 0) { for (plVar4 = *(longlong **) (*(longlong *)(param_1 + 8) + ((ulonglong)uVar7 % (ulonglong)*(uint *)(param_1 + 0x28)) * 8); (plVar4 != (longlong *)0x0 && (uVar6 == *(uint *)(plVar4 + 4) % *(uint *)(param_1 + 0x28))); plVar4 = (longlong *)plVar4[2]) { puVar5 = (ushort *)*param_2; if ((ushort *)*param_2 == (ushort *)0x0) { puVar5 = (ushort *)PTR_DAT_140155010; } puVar3 = (ushort *)*plVar4; if ((ushort *)*plVar4 == (ushort *)0x0) { puVar3 = (ushort *)PTR_DAT_140155010; } iVar2 = FUN_1400300c0(puVar3,(longlong)puVar5); if (iVar2 == 0) goto LAB_1400b0730; } } plVar4 = FUN_1400b0000(param_1,param_2,uVar6,uVar7); LAB_1400b0730: return plVar4 + 1; }