/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14004b7c0 FUN_14004b7c0 * Pseudocode, not original source. */ longlong * FUN_14004b7c0(longlong *param_1,uint param_2,longlong *param_3) { bool bVar1; int *piVar2; longlong *plVar3; uint *puVar4; longlong *plVar5; ulonglong uVar6; ulonglong uVar7; wchar_t *pwVar8; piVar2 = (int *)(**(code **)(*param_1 + 0x58))(); FUN_14002e6e0(piVar2); if (DAT_14015bfcf != '\0') { (**(code **)(*param_1 + 200))(param_1); } uVar7 = (ulonglong)*(uint *)(param_1 + 0x194); uVar6 = (ulonglong)param_2 % uVar7; plVar5 = (longlong *)0x0; if ((param_1[400] != 0) && (puVar4 = *(uint **)(param_1[400] + uVar6 * 8), puVar4 != (uint *)0x0)) { while ((uint)uVar6 == puVar4[8] % *(uint *)(param_1 + 0x194)) { if (*puVar4 == param_2) { plVar3 = *(longlong **)(puVar4 + 2); if ((plVar3 != (longlong *)0x0) && (plVar3[0x45] == 0)) goto LAB_14004b881; break; } puVar4 = *(uint **)(puVar4 + 4); if (puVar4 == (uint *)0x0) break; } } plVar3 = plVar5; LAB_14004b881: if (plVar3 == (longlong *)0x0) { if (param_2 == 1) { plVar5 = param_1 + 0x108; goto LAB_14004b89b; } } else { plVar5 = plVar3 + 0x51; LAB_14004b89b: if (plVar5 != (longlong *)0x0) { bVar1 = FUN_140090f90((longlong)plVar5); if ((!bVar1) || (((char)plVar5[0x7f] == '\0' && ((int)plVar5[0x7d] == 0)))) { FUN_14001b7a0(param_3,L"key not exists",uVar6,uVar7); FUN_14002e770((longlong)piVar2); return (longlong *)0x0; } goto LAB_14004b902; } } pwVar8 = L"not NULL"; if (plVar3 == (longlong *)0x0) { pwVar8 = L"NULL"; } FUN_14001b7a0(param_3,L"%d remote rc is %s in netserver!",(ulonglong)param_2,pwVar8); LAB_14004b902: FUN_14002e770((longlong)piVar2); return plVar5; }