166 lines
3.9 KiB
C
166 lines
3.9 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x14020d0f0 FUN_14020d0f0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined4 FUN_14020d0f0(longlong param_1,uint *param_2,uint *param_3)
|
|
|
|
{
|
|
byte bVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined1 *puVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
undefined1 auStack_88 [32];
|
|
undefined1 local_68 [4];
|
|
undefined1 local_64;
|
|
undefined1 local_63;
|
|
undefined1 local_62;
|
|
undefined1 local_61;
|
|
undefined1 local_60;
|
|
undefined1 local_5f;
|
|
char local_5e;
|
|
undefined1 local_5d;
|
|
char local_5c;
|
|
undefined1 local_5b;
|
|
undefined1 local_5a;
|
|
undefined1 local_59;
|
|
undefined1 local_58;
|
|
ulonglong local_48;
|
|
|
|
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_88;
|
|
if (((param_1 == 0) || (param_2 == (uint *)0x0)) || (param_3 == (uint *)0x0)) {
|
|
return 0x10;
|
|
}
|
|
if (*param_2 < 2) {
|
|
return 7;
|
|
}
|
|
bVar1 = *(byte *)(param_1 + 1);
|
|
if (0x1f < bVar1) {
|
|
return 7;
|
|
}
|
|
if (*param_2 < bVar1 + 2) {
|
|
return 7;
|
|
}
|
|
uVar5 = 0;
|
|
uVar6 = uVar5;
|
|
if (bVar1 != 0) {
|
|
puVar4 = local_68;
|
|
uVar6 = 0;
|
|
do {
|
|
iVar2 = FUN_14020d900(puVar4[(param_1 - (longlong)local_68) + 2]);
|
|
if (iVar2 == -1) {
|
|
return 7;
|
|
}
|
|
*puVar4 = (char)iVar2;
|
|
uVar6 = uVar6 + 1;
|
|
puVar4 = puVar4 + 1;
|
|
} while (uVar6 < *(byte *)(param_1 + 1));
|
|
}
|
|
*param_2 = uVar6 + 2;
|
|
iVar2 = FUN_14020d060(local_68[0]);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_68[1]);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
*param_3 = uVar6;
|
|
if (uVar6 < 100) {
|
|
iVar2 = FUN_14020d060(local_68[2]);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_68[3]);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[1] = uVar6;
|
|
if (0xc < uVar6) {
|
|
return 7;
|
|
}
|
|
iVar2 = FUN_14020d060(local_64);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_63);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[2] = uVar6;
|
|
if (0x1f < uVar6) {
|
|
return 7;
|
|
}
|
|
iVar2 = FUN_14020d060(local_62);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_61);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[3] = uVar6;
|
|
if (0x17 < uVar6) {
|
|
return 7;
|
|
}
|
|
iVar2 = FUN_14020d060(local_60);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_5f);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[4] = uVar6;
|
|
if (0x3b < uVar6) {
|
|
return 7;
|
|
}
|
|
param_3[7] = 0;
|
|
param_3[8] = 0;
|
|
param_3[5] = 0;
|
|
param_3[6] = 0;
|
|
if (local_5e == 'Z') {
|
|
return 0;
|
|
}
|
|
if (local_5e == '+') {
|
|
uVar6 = 0;
|
|
}
|
|
else {
|
|
if (local_5e != '-') {
|
|
iVar2 = FUN_14020d060();
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_5d);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[5] = uVar6;
|
|
if (0x3b < uVar6) {
|
|
return 7;
|
|
}
|
|
if (local_5c == 'Z') {
|
|
return 0;
|
|
}
|
|
if (local_5c != '+') {
|
|
if (local_5c != '-') {
|
|
return 7;
|
|
}
|
|
uVar5 = 1;
|
|
}
|
|
param_3[6] = uVar5;
|
|
iVar2 = FUN_14020d060(local_5b);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_5a);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[7] = uVar6;
|
|
if (0x17 < uVar6) {
|
|
return 7;
|
|
}
|
|
iVar2 = FUN_14020d060(local_59);
|
|
goto LAB_14020d318;
|
|
}
|
|
uVar6 = 1;
|
|
}
|
|
param_3[6] = uVar6;
|
|
iVar2 = FUN_14020d060(local_5d);
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_5c);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[7] = uVar6;
|
|
if (uVar6 < 0x18) {
|
|
iVar2 = FUN_14020d060(local_5b);
|
|
local_58 = local_5a;
|
|
LAB_14020d318:
|
|
iVar2 = iVar2 * 5;
|
|
iVar3 = FUN_14020d060(local_58);
|
|
uVar6 = iVar3 + iVar2 * 2;
|
|
param_3[8] = uVar6;
|
|
if (0x3b < uVar6) {
|
|
return 7;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
return 7;
|
|
}
|
|
|