/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401b0d80 FUN_1401b0d80 * Pseudocode, not original source. */ undefined8 FUN_1401b0d80(longlong param_1,longlong param_2,longlong param_3) { byte bVar1; int iVar2; int iVar3; byte *pbVar4; byte *_Dst; byte *pbVar5; undefined **local_138; undefined8 local_130; byte *local_128; undefined8 local_120; undefined8 local_118; undefined8 local_110; longlong local_108; ulonglong local_100; undefined8 local_f8; undefined1 local_e8 [72]; undefined1 local_a0 [72]; undefined1 local_58 [80]; local_f8 = 0xfffffffffffffffe; if (*(int *)(param_3 + 0x3c0) < 1) { FUN_14016d2a0(local_e8,&DAT_140287690); /* WARNING: Subroutine does not return */ _CxxThrowException(local_e8,(ThrowInfo *)&DAT_1403417f8); } if (*(int *)(param_1 + 0x18) != 0) { _Dst = (byte *)0x0; local_130 = 0; local_128 = (byte *)0x0; local_120 = 0; local_118 = 0; local_138 = Proud::ByteArray::vftable; FUN_14004f0e0(&local_138); pbVar4 = local_128; if ((int)local_120 == 0) { pbVar4 = _Dst; } pbVar5 = _Dst; if (*(int *)(param_1 + 0x18) != 0) { pbVar5 = *(byte **)(param_1 + 0x10); } FUN_1401b0b00(param_3,pbVar5,pbVar4,(longlong)*(int *)(param_1 + 0x18),0); if ((int)local_120 < 1) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } bVar1 = *local_128; if ((int)local_120 < (int)(bVar1 + 5)) { FUN_14016d2a0(local_a0,&DAT_140287660); /* WARNING: Subroutine does not return */ _CxxThrowException(local_a0,(ThrowInfo *)&DAT_1403417f8); } pbVar4 = local_128; if ((int)local_120 == 0) { pbVar4 = _Dst; } iVar2 = *(int *)(pbVar4 + 1); local_100 = 0; local_108 = 0; local_110 = 0; pbVar4 = local_128; if ((int)local_120 == 0) { pbVar4 = _Dst; } iVar3 = FUN_1401c5de0(pbVar4 + 5,((int)local_120 - (uint)bVar1) + -5); if (iVar2 != iVar3) { FUN_14016d2a0(local_58,&DAT_140287628); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8); } FUN_14004f0e0(param_2,((int)local_120 - (uint)bVar1) + -5); pbVar4 = local_128; if ((int)local_120 == 0) { pbVar4 = _Dst; } if (*(int *)(param_2 + 0x18) != 0) { _Dst = *(byte **)(param_2 + 0x10); } memcpy(_Dst,pbVar4 + 5,(longlong)(int)(((int)local_120 - (uint)bVar1) + -5)); FUN_14016d0e0(&local_110); if (local_108 != 0) { if ((longlong)local_100 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } local_100 = local_100 & 0xffffffff00000000; } FUN_14019a9e0(&local_138); } return 1; }