server-re/decomp/AgentManager_Release_x64/full/functions/0x14001a9f0.c
2026-10-15 09:58:24 -04:00

155 lines
4.2 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14001a9f0 FUN_14001a9f0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_14001a9f0(longlong param_1,int param_2,int param_3,char param_4,LPCWSTR param_5)
{
int *piVar1;
longlong *plVar2;
char *****pppppcVar3;
longlong lVar4;
char *pcVar5;
ulonglong uVar6;
undefined1 auStack_328 [32];
LPCWSTR local_308;
undefined8 local_2f8;
int *local_2f0;
undefined1 local_2e8;
char ****local_2e0 [2];
char ***local_2d0;
char ***local_2c8;
undefined1 local_2b8;
undefined7 uStack_2b7;
undefined8 local_2a8;
ulonglong local_2a0;
void *local_290 [3];
ulonglong local_278;
undefined4 local_268;
int local_264;
char local_260 [520];
ulonglong local_58;
local_2f8 = 0xfffffffffffffffe;
local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_328;
if (*(char *)(DAT_14017cf28 + 0x165) != '\0') {
local_308 = param_5;
wprintf(
L"sendPWE_RESP_RESULT_CODE : CLIENT [ %d ] RESULTCODE [ %d ] SUCCEED [ %d ] NAME [ %s ] \n"
);
}
memset(local_260,0,0x200);
local_268 = 0x208;
local_2c8 = (char ***)0xf;
local_2d0 = (char ***)0x0;
local_2e0[0] = (char ****)((ulonglong)local_2e0[0] & 0xffffffffffffff00);
local_264 = param_3;
plVar2 = FUN_140010200((longlong *)local_290,&DAT_140175048);
pppppcVar3 = (char *****)FUN_1400102b0((undefined8 *)&local_2b8,plVar2);
if (local_2e0 != pppppcVar3) {
if ((char ****)0xf < local_2c8) {
operator_delete(local_2e0[0]);
}
local_2c8 = (char ***)0xf;
local_2d0 = (char ***)0x0;
local_2e0[0] = (char ****)((ulonglong)local_2e0[0] & 0xffffffffffffff00);
if (pppppcVar3[3] < (char ****)0x10) {
memmove(local_2e0,pppppcVar3,(longlong)pppppcVar3[2] + 1);
}
else {
local_2e0[0] = *pppppcVar3;
*pppppcVar3 = (char ****)0x0;
}
local_2d0 = (char ***)pppppcVar3[2];
local_2c8 = (char ***)pppppcVar3[3];
pppppcVar3[3] = (char ****)0xf;
pppppcVar3[2] = (char ****)0x0;
*(undefined1 *)pppppcVar3 = 0;
}
if (0xf < local_2a0) {
operator_delete((void *)CONCAT71(uStack_2b7,local_2b8));
}
local_2a0 = 0xf;
local_2a8 = 0;
local_2b8 = 0;
if (0xf < local_278) {
operator_delete(local_290[0]);
}
if (param_3 == 0) {
uVar6 = 0x13;
pcVar5 = "<user-kick-request>";
LAB_14001abaa:
FUN_14000c480((ulonglong *)local_2e0,pcVar5,uVar6);
}
else {
if (param_3 == 1) {
uVar6 = 0x12;
pcVar5 = "<user-ban-request>";
goto LAB_14001abaa;
}
if (param_3 == 2) {
uVar6 = 0x17;
pcVar5 = "<currency-send-request>";
goto LAB_14001abaa;
}
if (param_3 == 3) {
uVar6 = 0x14;
pcVar5 = "<item-send-response>";
goto LAB_14001abaa;
}
}
pcVar5 = "succeed";
if (param_4 == '\0') {
pcVar5 = "failed";
}
FUN_14000f7e0((longlong *)local_2e0,pcVar5,"succeed");
FUN_14000fa00((longlong *)local_2e0,param_5,"charid");
if (param_3 == 0) {
uVar6 = 0x14;
pcVar5 = "</user-kick-request>";
}
else if (param_3 == 1) {
uVar6 = 0x13;
pcVar5 = "</user-ban-request>";
}
else if (param_3 == 2) {
uVar6 = 0x18;
pcVar5 = "</currency-send-request>";
}
else {
if (param_3 != 3) goto LAB_14001ac3e;
uVar6 = 0x15;
pcVar5 = "</item-send-response>";
}
FUN_14000c480((ulonglong *)local_2e0,pcVar5,uVar6);
LAB_14001ac3e:
if (local_2d0 < (char ****)0x400) {
pppppcVar3 = local_2e0;
if ((char ****)0xf < local_2c8) {
pppppcVar3 = (char *****)local_2e0[0];
}
strncpy(local_260,(char *)pppppcVar3,(size_t)local_2d0);
}
else {
printf("PWE_RESP_RESULT_CODE - Msg Size Full!\n");
}
lVar4 = *(longlong *)(param_1 + 0x58);
if (lVar4 != 0) {
piVar1 = (int *)(lVar4 + 0x70);
local_2f0 = piVar1;
FUN_14003d040(piVar1);
local_2e8 = 1;
lVar4 = FUN_14003c450(lVar4,param_2);
if (lVar4 != 0) {
Ordinal_19(*(undefined8 *)(lVar4 + 8),&local_268,0x208,0);
}
FUN_14003d0d0((longlong)piVar1);
}
if ((char ****)0xf < local_2c8) {
operator_delete(local_2e0[0]);
}
return;
}