/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14008c430 FUN_14008c430 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14008c430(longlong *param_1,undefined8 param_2,longlong ****param_3,longlong param_4) { int *piVar1; undefined8 *puVar2; longlong ******pppppplVar3; char cVar4; int *piVar5; longlong *plVar6; undefined8 uVar7; int *piVar8; longlong lVar9; bool bVar10; undefined1 auStack_1d8 [32]; char local_1b8; int local_1b7; longlong ******local_1b0; longlong ******local_1a8; longlong *local_1a0; undefined1 local_198; int *local_190; undefined1 local_188; undefined8 local_180; longlong local_178 [39]; int *local_40; ulonglong local_28; local_180 = 0xfffffffffffffffe; local_28 = DAT_1401555a0 ^ (ulonglong)auStack_1d8; FUN_1400bbb40(&local_1b8); if (*(longlong *)(param_1[0x29] + 0x758) != 0) { (**(code **)(**(longlong **)(param_1[0x29] + 0x758) + 0x58))(); } piVar5 = (int *)(**(code **)(*(longlong *)param_1[0x29] + 0x58))(); plVar6 = local_178; FUN_1400a1e40((undefined4 *)plVar6,piVar5); cVar4 = (char)param_1[0x28]; while (cVar4 == '\0') { local_1b0 = (longlong ******)0x0; plVar6 = (longlong *)(**(code **)(*(longlong *)param_1[0x29] + 0x58))(); local_1a0 = plVar6; FUN_14002e6e0((int *)plVar6); local_198 = 1; if (DAT_14015bfcf != '\0') { (**(code **)(*(longlong *)param_1[0x29] + 200)) ((longlong *)param_1[0x29],L"Proud::CNetThreads_S::UserWorkerThread_Main"); } param_3 = (longlong ****)&local_1b0; piVar5 = local_40; uVar7 = FUN_1400a2650(param_1 + 0x2c,(longlong)local_40,(longlong *)param_3,param_4); cVar4 = (char)uVar7; FUN_14002e770((longlong)plVar6); local_198 = 0; if (cVar4 == '\x01') { if (*(longlong *)(param_1[0x29] + 0x758) != 0) { puVar2 = *(undefined8 **)(param_1[0x29] + 0x758); param_3 = (longlong ****)*puVar2; (*(code *)param_3[0xf])(puVar2,&local_1b7); } piVar1 = local_40; plVar6 = param_1; piVar5 = local_40; if (*local_40 == 1) { param_3 = (longlong ****)local_1b0; FUN_140086480((longlong)param_1,(longlong)local_40,(char *)local_1b0,param_4); } else if (*local_40 == 2) { param_3 = (longlong ****)local_1b0; FUN_14008bb70((longlong)param_1,(longlong)local_40,(char *)local_1b0,param_4); } else { FUN_1400593d0((longlong *)param_1[0x29],local_40 + 0x14,param_3,param_4); param_3 = (longlong ****)0x0; piVar5 = (int *)(ulonglong)(uint)piVar1[0xc]; plVar6 = param_1 + 0x2c; FUN_1400a2740(plVar6,piVar1[0xc],'\0',param_4); } if (*(longlong *)(param_1[0x29] + 0x758) != 0) { plVar6 = *(longlong **)(param_1[0x29] + 0x758); piVar5 = &local_1b7; (**(code **)(*plVar6 + 0x80))(); } } if (*(longlong *)(param_1[0x29] + 0x758) != 0) { LOCK(); bVar10 = (int)param_1[0x48] == 0; if (bVar10) { *(int *)(param_1 + 0x48) = 1; } UNLOCK(); if (bVar10) { LOCK(); bVar10 = (int)param_1[0x40] == 1; if (bVar10) { *(int *)(param_1 + 0x40) = 0; } UNLOCK(); if (bVar10) { cVar4 = '\x01'; plVar6 = *(longlong **)(param_1[0x29] + 0x758); piVar5 = *(int **)(param_1[0x29] + 0x260); (**(code **)(*plVar6 + 0x88))(); } LOCK(); *(undefined4 *)(param_1 + 0x48) = 0; UNLOCK(); } } if (cVar4 == '\0') { plVar6 = param_1 + 0x2c; FUN_1400a25c0((longlong)plVar6); } cVar4 = (char)param_1[0x28]; } if (*(longlong *)(param_1[0x29] + 0x758) != 0) { plVar6 = *(longlong **)(param_1[0x29] + 0x758); (**(code **)(*plVar6 + 0x60))(); } if (*(longlong *)(param_1[0x29] + 0x17f0) != 0) { FUN_140030200(plVar6,piVar5,param_3,param_4); local_1a8 = (longlong ******)PTR_DAT_140155010; FUN_14001b7a0((longlong *)&local_1a8,L"%s thread 종료.", L"Proud::CNetThreads_S::UserWorkerThread_Main",param_4); pppppplVar3 = local_1a8; param_3 = (longlong ****)local_1a8; if ((longlong *******)local_1a8 == (longlong *******)0x0) { param_3 = (longlong ****)PTR_DAT_140155010; } piVar5 = (int *)0x0; lVar9 = *(longlong *)(param_1[0x29] + 0x17f0); FUN_14008f2e0(lVar9,0,(short *)param_3,param_4); if ((((longlong *******)pppppplVar3 != (longlong *******)0x0) && (pppppplVar3 != (longlong ******)PTR_DAT_140155010)) && ((longlong *******)(pppppplVar3 + -1) != (longlong *******)0x0)) { piVar8 = (int *)FUN_140030200(lVar9,piVar5,param_3,param_4); local_190 = piVar8; FUN_14002e6e0(piVar8); local_188 = 1; piVar1 = (int *)((longlong)pppppplVar3 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_1400302f0(pppppplVar3 + -1); } FUN_14002e770((longlong)piVar8); } } FUN_1400a1e80((longlong)local_178,piVar5,param_3,param_4); FUN_1400bbb70(&local_1b8); return; }