/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14015b540 FUN_14015b540 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14015b540(longlong param_1) { undefined8 *puVar1; undefined8 *puVar2; undefined1 auVar3 [16]; undefined4 uVar4; undefined8 uVar5; undefined2 *puVar6; undefined1 auStack_c8 [32]; undefined *local_a8; undefined8 local_a0; undefined **local_98; undefined8 local_88; undefined2 local_80; undefined6 uStack_7e; undefined8 local_70; ulonglong local_68; undefined2 local_58; undefined6 uStack_56; undefined8 local_48; ulonglong local_40; ulonglong local_28; local_a0 = 0xfffffffffffffffe; local_28 = DAT_1403463c0 ^ (ulonglong)auStack_c8; local_68 = 7; local_70 = 0; local_80 = 0; local_40 = 7; local_48 = 0; local_58 = 0; if (*(longlong *)(DAT_140353190 + 0x1c8) != 0) { auVar3._8_8_ = 0; auVar3._0_8_ = *(ulonglong *)(DAT_140353190 + 0x1b0); for (puVar1 = *(undefined8 **) (*(longlong *)(DAT_140353190 + 0x1a8) + SUB168((ZEXT816(0) << 0x40 | ZEXT816(0xd)) % auVar3,0) * 8); puVar1 != (undefined8 *)0x0; puVar1 = (undefined8 *)*puVar1) { if (*(char *)(puVar1 + 1) == '\r') { if (puVar1 == (undefined8 *)0x0) { return; } puVar2 = (undefined8 *)puVar1[2]; if (puVar2 == (undefined8 *)puVar1[3]) { return; } local_88 = *puVar2; FUN_140055d80(&local_80,puVar2 + 1,0,0xffffffffffffffff); FUN_140055d80(&local_58,puVar2 + 6,0,0xffffffffffffffff); puVar6 = &local_58; if (7 < local_40) { puVar6 = (undefined2 *)CONCAT62(uStack_56,local_58); } FUN_14016d8c0(); local_a8 = PTR_DAT_1403440a0; uVar4 = FUN_14016d740(puVar6); uVar5 = FUN_14004e940(&local_a8,uVar4); FUN_14016d770(uVar5,puVar6,uVar4); FUN_14004e560(&local_a8); local_98 = &local_a8; FUN_14004e6d0(param_1 + 0x30,&local_a8); FUN_14004eb70(&local_a8); *(undefined2 *)(param_1 + 0x38) = local_88._4_2_; *(undefined4 *)(param_1 + 0x3c) = (undefined4)local_88; FUN_14015be70(param_1); if (7 < local_40) { operator_delete((void *)CONCAT62(uStack_56,local_58)); } local_40 = 7; local_48 = 0; local_58 = 0; if (local_68 < 8) { return; } operator_delete((void *)CONCAT62(uStack_7e,local_80)); return; } } } return; }