/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14016c760 FUN_14016c760 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined1 FUN_14016c760(uint *param_1,int *param_2) { char cVar1; undefined1 uVar2; uint uVar3; int iVar4; int *piVar5; undefined8 uVar6; uint uVar7; uint uVar8; int *piVar9; int *piVar10; int iVar11; int iVar12; undefined1 auStack_1e8 [32]; char local_1c8 [8]; int *local_1c0; undefined2 *local_1b8; int **local_1b0; int *local_1a8; undefined8 local_1a0; undefined1 local_198 [80]; undefined1 *local_148; undefined1 local_140 [264]; ulonglong local_38; local_1a0 = 0xfffffffffffffffe; local_38 = DAT_1403463c0 ^ (ulonglong)auStack_1e8; uVar8 = (int)*param_1 >> 0x1f & 7; uVar3 = *param_1 + uVar8; uVar7 = uVar3 & 0xfffffff8; *param_1 = uVar7; if (0 < (int)((uVar3 & 7) - uVar8)) { *param_1 = uVar7 + 8; } cVar1 = FUN_14016b100(param_1,local_1c8,1); if (cVar1 == '\0') { return 0; } FUN_14016b2e0(param_1); cVar1 = FUN_14016ba10(param_1,&local_1c0); piVar10 = local_1c0; if (cVar1 == '\0') { return 0; } iVar11 = (int)local_1c0; if ((iVar11 < 0) || (0x100000 < iVar11)) { FUN_14016d300(local_198,L"CMessage.ReadString failed! length=%d", (ulonglong)local_1c0 & 0xffffffff); /* WARNING: Subroutine does not return */ _CxxThrowException(local_198,(ThrowInfo *)&DAT_1403417f8); } if (local_1c8[0] == '\x02') { local_1c0 = param_2; local_1b8 = (undefined2 *)FUN_14004e940(param_2,iVar11 + 1); *local_1b8 = 0; local_1b8[iVar11] = 0; uVar2 = FUN_14016b370(param_1,local_1b8,iVar11 * 2); FUN_14004e560(param_2); return uVar2; } FUN_14016d8c0(); local_1c0 = (int *)PTR_DAT_140344098; iVar4 = iVar11 + 1; local_1b0 = &local_1c0; if (iVar4 < 1) { iVar4 = 0; } iVar12 = 1; if (1 < iVar4) { iVar12 = iVar4; } if (iVar12 < 1) goto LAB_14016c926; local_1c0 = (int *)PTR_DAT_140344098; if (iVar12 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (iVar12 == 0) { FUN_14004f5a0(&local_1c0); goto LAB_14016c926; } piVar5 = (int *)FUN_14016d940((longlong)iVar12 + 9); if (piVar5 != (int *)0x0) { *piVar5 = 0; piVar5[1] = 1; } *piVar5 = iVar12; iVar4 = 0; if ((local_1c0 != (int *)0x0) && (iVar4 = 0, local_1c0 != (int *)PTR_DAT_140344098)) { iVar4 = local_1c0[-2]; } piVar9 = (int *)PTR_DAT_140344098; if (iVar12 < iVar4) { LAB_14016c900: if (local_1c0 != (int *)0x0) { piVar9 = local_1c0; } } else { iVar12 = 0; if (local_1c0 != (int *)0x0) { if (local_1c0 != (int *)PTR_DAT_140344098) { iVar12 = local_1c0[-2]; } goto LAB_14016c900; } } FUN_14016d810(piVar5 + 2,piVar9,iVar12); FUN_14004f5a0(&local_1c0); local_1c0 = piVar5 + 2; LAB_14016c926: FUN_14013c600(&local_1c0); local_1a8 = local_1c0; if (local_1c0 == (int *)0x0) { local_1a8 = (int *)PTR_DAT_140344098; } *(undefined1 *)local_1a8 = 0; *(undefined1 *)((longlong)iVar11 + (longlong)local_1a8) = 0; cVar1 = FUN_14016b370(param_1,local_1a8,(ulonglong)piVar10 & 0xffffffff); if (cVar1 == '\0') { FUN_14013c7e0(&local_1c0); piVar10 = local_1c0; if (((local_1c0 != (int *)0x0) && (local_1c0 != (int *)PTR_DAT_140344098)) && (piVar5 = local_1c0 + -2, piVar5 != (int *)0x0)) { uVar6 = FUN_14016d8c0(); local_1b0 = (int **)uVar6; FUN_14016db50(uVar6); local_1a8 = (int *)CONCAT71(local_1a8._1_7_,1); piVar10 = piVar10 + -1; *piVar10 = *piVar10 + -1; if (*piVar10 == 0) { FUN_14016d970(piVar5); } FUN_14016dbe0(uVar6); } return 0; } FUN_14013c7e0(&local_1c0); piVar10 = local_1c0; if (local_1c0 == (int *)0x0) { piVar10 = (int *)PTR_DAT_140344098; } local_148 = local_140; FUN_14015b060(&local_148,piVar10,3); FUN_14004c050(param_2,local_148); if (local_148 != local_140) { free(local_148); } piVar10 = local_1c0; if (((local_1c0 != (int *)0x0) && (local_1c0 != (int *)PTR_DAT_140344098)) && (piVar5 = local_1c0 + -2, piVar5 != (int *)0x0)) { uVar6 = FUN_14016d8c0(); local_1b0 = (int **)uVar6; FUN_14016db50(uVar6); local_1a8 = (int *)CONCAT71(local_1a8._1_7_,1); piVar10 = piVar10 + -1; *piVar10 = *piVar10 + -1; if (*piVar10 == 0) { FUN_14016d970(piVar5); } FUN_14016dbe0(uVar6); } return 1; }