/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400b74e0 FUN_1400b74e0 * Pseudocode, not original source. */ undefined8 * FUN_1400b74e0(undefined8 *param_1,longlong param_2,longlong param_3,undefined8 param_4) { undefined8 *puVar1; longlong lVar2; longlong *plVar3; longlong *plVar4; longlong *plVar5; longlong lVar6; undefined8 uVar7; *param_1 = Proud::ICompletionContext::vftable; lVar6 = param_3; FUN_140034f30(param_1 + 8); *param_1 = Proud::CUdpSocket_C::vftable; param_1[8] = Proud::CUdpSocket_C::vftable; plVar5 = (longlong *)0x0; param_1[0x20] = 0; param_1[0x21] = 0; param_1[0x22] = 0; param_1[0x25] = Proud::AddrPort::vftable; *(undefined4 *)(param_1 + 0x26) = 0; *(undefined2 *)((longlong)param_1 + 0x134) = 0; param_1[0x27] = Proud::AddrPort::vftable; *(undefined4 *)(param_1 + 0x28) = 0; *(undefined2 *)((longlong)param_1 + 0x144) = 0; param_1[0x31] = 0; *(undefined4 *)(param_1 + 0x28) = DAT_1401553d0; *(undefined2 *)((longlong)param_1 + 0x144) = DAT_1401553d4; *(undefined4 *)(param_1 + 0x26) = *(undefined4 *)(param_1 + 0x28); *(undefined2 *)((longlong)param_1 + 0x134) = *(undefined2 *)((longlong)param_1 + 0x144); *(undefined1 *)(param_1 + 0x10) = 0; *(undefined1 *)(param_1 + 0x18) = 0; param_1[0x29] = 0; uVar7 = (**(code **)(*(longlong *)(param_2 + 0x70) + 0x1c0))(); param_1[0x30] = uVar7; param_1[0x23] = param_2; param_1[0x24] = param_3; puVar1 = operator_new(0x90); plVar3 = plVar5; if (puVar1 != (undefined8 *)0x0) { if (param_3 == 0) { lVar6 = param_2 + 0x90; } else { lVar6 = param_3 + 0x10; } lVar2 = (**(code **)(*(longlong *)(param_2 + 0x88) + 0x18))(); plVar3 = FUN_14009bbe0(puVar1,lVar2,lVar6); } param_1[0x21] = plVar3; plVar4 = operator_new(0x6b8); plVar3 = plVar5; if (plVar4 != (longlong *)0x0) { *plVar4 = 0; plVar4[3] = 0; plVar4[1] = 0; plVar4[2] = 100; plVar4[0xcf] = (longlong)Proud::CFastArray::vftable; plVar4[0xd0] = 0; plVar4[0xd1] = 0; plVar4[0xd2] = 0; plVar4[0xd3] = 0; plVar4[0xd4] = (longlong)Proud::AddrPort::vftable; *(undefined4 *)(plVar4 + 0xd5) = 0; *(undefined2 *)((longlong)plVar4 + 0x6ac) = 0; plVar3 = plVar4; } param_1[0x22] = plVar3; FUN_140097890(param_1[0x21]); puVar1 = operator_new(0x60); if (puVar1 != (undefined8 *)0x0) { if (param_1[0x23] != 0) { plVar5 = (longlong *)(param_1[0x23] + 0x88); } plVar5 = FUN_14009bd40(puVar1,plVar5,lVar6,param_4); } param_1[0x31] = plVar5; return param_1; }