/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14005a7c0 FUN_14005a7c0 * Pseudocode, not original source. */ void FUN_14005a7c0(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4) { void *_Src; longlong lVar1; void *pvVar2; int iVar3; void *local_40; void *local_38; void *local_30; iVar3 = 0; local_40 = (void *)0x0; local_38 = (void *)0x0; local_30 = (void *)0x0; FUN_140048180(&local_40,(longlong)*(short *)(param_2 + 0xe),param_3,param_4,0xfffffffffffffffe); if (0 < *(short *)(param_2 + 0xe)) { pvVar2 = (void *)(param_2 + 0x10); do { if ((pvVar2 < local_38) && (local_40 <= pvVar2)) { lVar1 = (longlong)pvVar2 - (longlong)local_40; if (local_38 == local_30) { FUN_14004a490(&local_40); } _Src = (void *)((lVar1 / 0x159) * 0x159 + (longlong)local_40); } else { _Src = pvVar2; if (local_38 == local_30) { FUN_14004a490(&local_40); } } if (local_38 != (void *)0x0) { memcpy(local_38,_Src,0x159); } local_38 = (void *)((longlong)local_38 + 0x159); pvVar2 = (void *)((longlong)pvVar2 + 0x159); iVar3 = iVar3 + 1; } while (iVar3 < *(short *)(param_2 + 0xe)); } *(int *)(param_1 + 0x630) = *(int *)(param_1 + 0x630) + 1; (**(code **)(*(longlong *)(param_1 + 0xa8) + 0x250)) ((longlong *)(param_1 + 0xa8),*(undefined4 *)(param_2 + 8),&DAT_1403440f0,&local_40); if (local_40 != (void *)0x0) { operator_delete(local_40); } return; }