server-re/decomp/Agent_Release_x64/full/functions/0x1400a1330.c
2026-10-14 16:45:19 -04:00

204 lines
6.3 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400a1330 FUN_1400a1330
* Pseudocode, not original source. */
ulonglong * FUN_1400a1330(ulonglong *param_1,longlong param_2,SIZE_T param_3,longlong *param_4)
{
undefined *puVar1;
int *piVar2;
uint uVar3;
undefined *puVar4;
ulonglong uVar5;
int *piVar6;
longlong lVar7;
void *pvVar8;
ulonglong *puVar9;
ulonglong *puVar10;
ulonglong **ppuVar11;
ulonglong uVar12;
ulonglong **ppuVar13;
SIZE_T SVar14;
void *pvVar15;
undefined8 uVar16;
longlong *plVar17;
uint *puVar18;
undefined **ppuVar19;
int local_res10 [2];
uint local_res18 [4];
ulonglong *local_88;
undefined *local_80;
undefined8 local_78;
ulonglong *local_70;
undefined1 local_68;
undefined **local_60;
undefined8 local_58;
undefined8 local_50;
undefined8 local_48;
undefined8 local_40;
local_78 = 0xfffffffffffffffe;
pvVar8 = (void *)0x0;
local_res10[0] = 0;
local_res18[0] = *(uint *)(param_3 + 0x18);
uVar5 = (ulonglong)local_res18[0];
lVar7 = param_2;
SVar14 = param_3;
plVar17 = param_4;
FUN_14001bc70(param_2,local_res18[0],param_3);
pvVar15 = pvVar8;
if (*(int *)(param_2 + 0x18) != 0) {
pvVar15 = *(void **)(param_2 + 0x10);
}
uVar3 = *(uint *)(param_3 + 0x18);
if (uVar3 != 0) {
pvVar8 = *(void **)(param_3 + 0x10);
}
puVar4 = FUN_1400a0eb0(lVar7,uVar5,SVar14,plVar17);
puVar18 = local_res18;
uVar12 = (ulonglong)uVar3;
uVar5 = FUN_1400bfb00(pvVar8,uVar3,pvVar15,puVar18,(byte *)0x0,0,*(uint *)(puVar4 + 0x105c),2,
local_res10,*param_4);
if ((int)uVar5 == 0) {
if (local_res10[0] == 1) {
if (*(uint *)(param_3 + 0x18) < local_res18[0]) {
FUN_140030200(pvVar8,(ulonglong)local_res18[0],pvVar15,puVar18);
local_80 = PTR_DAT_140155010;
FUN_14001b7a0((longlong *)&local_80,
L"Decryption result is larger! Memory corruption may occur!",pvVar15,puVar18);
local_58 = 0;
local_50 = 0;
local_48 = 0;
local_40 = 0;
local_60 = Proud::ByteArray::vftable;
ppuVar19 = &local_80;
uVar16 = 0;
FUN_14003c120((longlong *)&local_88,6,0,(longlong *)ppuVar19,(longlong)&local_60);
FUN_14003b870(&local_60);
*param_1 = 0;
ppuVar13 = &local_88;
FUN_14003bff0(param_1,(ulonglong *)ppuVar13,uVar16,ppuVar19);
ppuVar11 = &local_88;
FUN_14002b570((longlong *)ppuVar11,ppuVar13,uVar16,ppuVar19);
puVar4 = local_80;
if (((local_80 != (undefined *)0x0) && (local_80 != PTR_DAT_140155010)) &&
(puVar1 = local_80 + -8, puVar1 != (undefined *)0x0)) {
piVar6 = (int *)FUN_140030200(ppuVar11,ppuVar13,uVar16,ppuVar19);
local_70 = (ulonglong *)piVar6;
FUN_14002e6e0(piVar6);
local_68 = 1;
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(puVar1);
}
FUN_14002e770((longlong)piVar6);
}
}
else {
FUN_14001bc70(param_2,local_res18[0],(SIZE_T)pvVar15);
*param_1 = 0;
}
}
else {
FUN_140030200(pvVar8,uVar12,pvVar15,puVar18);
local_80 = PTR_DAT_140155010;
FUN_14001b7a0((longlong *)&local_80,L"Incorrect Packet",pvVar15,puVar18);
local_58 = 0;
local_50 = 0;
local_48 = 0;
local_40 = 0;
local_60 = Proud::ByteArray::vftable;
ppuVar19 = &local_80;
uVar16 = 0;
FUN_14003c120((longlong *)&local_88,6,0,(longlong *)ppuVar19,(longlong)&local_60);
FUN_14003b870(&local_60);
*param_1 = 0;
ppuVar13 = &local_88;
puVar9 = param_1;
FUN_14003bff0(param_1,(ulonglong *)ppuVar13,uVar16,ppuVar19);
puVar10 = local_88;
if (local_88 != (ulonglong *)0x0) {
local_70 = local_88;
FUN_14002e6e0((int *)local_88);
local_68 = 1;
local_88[8] = local_88[8] - 1;
if (local_88[8] == 0) {
FUN_14002e770((longlong)puVar10);
local_68 = 0;
FUN_14002b500((undefined4 *)local_88,ppuVar13,uVar16,ppuVar19);
puVar9 = local_88;
}
else {
FUN_14002e770((longlong)puVar10);
puVar9 = puVar10;
}
}
puVar4 = local_80;
if (((local_80 != (undefined *)0x0) && (local_80 != PTR_DAT_140155010)) &&
(puVar1 = local_80 + -8, puVar1 != (undefined *)0x0)) {
piVar6 = (int *)FUN_140030200(puVar9,ppuVar13,uVar16,ppuVar19);
local_70 = (ulonglong *)piVar6;
FUN_14002e6e0(piVar6);
local_68 = 1;
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(puVar1);
}
FUN_14002e770((longlong)piVar6);
}
}
}
else {
FUN_140030200(pvVar8,uVar12,pvVar15,puVar18);
local_80 = PTR_DAT_140155010;
FUN_14001b7a0((longlong *)&local_80,L"Error",pvVar15,puVar18);
local_58 = 0;
local_50 = 0;
local_48 = 0;
local_40 = 0;
local_60 = Proud::ByteArray::vftable;
ppuVar19 = &local_80;
uVar16 = 0;
FUN_14003c120((longlong *)&local_88,6,0,(longlong *)ppuVar19,(longlong)&local_60);
FUN_14003b870(&local_60);
*param_1 = 0;
ppuVar13 = &local_88;
puVar9 = param_1;
FUN_14003bff0(param_1,(ulonglong *)ppuVar13,uVar16,ppuVar19);
puVar10 = local_88;
if (local_88 != (ulonglong *)0x0) {
local_70 = local_88;
FUN_14002e6e0((int *)local_88);
local_68 = 1;
local_88[8] = local_88[8] - 1;
if (local_88[8] == 0) {
FUN_14002e770((longlong)puVar10);
local_68 = 0;
FUN_14002b500((undefined4 *)local_88,ppuVar13,uVar16,ppuVar19);
puVar9 = local_88;
}
else {
FUN_14002e770((longlong)puVar10);
puVar9 = puVar10;
}
}
puVar4 = local_80;
if (((local_80 != (undefined *)0x0) && (local_80 != PTR_DAT_140155010)) &&
(puVar1 = local_80 + -8, puVar1 != (undefined *)0x0)) {
piVar6 = (int *)FUN_140030200(puVar9,ppuVar13,uVar16,ppuVar19);
local_70 = (ulonglong *)piVar6;
FUN_14002e6e0(piVar6);
local_68 = 1;
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(puVar1);
}
FUN_14002e770((longlong)piVar6);
}
}
return param_1;
}