server-re/decomp/MessageServer_Release_x64/full/functions/0x140103b60.c

56 lines
1.3 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140103b60 FUN_140103b60
* Pseudocode, not original source. */
ulonglong FUN_140103b60(int *param_1,char *param_2,uint param_3)
{
char *pcVar1;
char cVar2;
int iVar3;
longlong lVar4;
ulonglong uVar5;
uint uVar6;
char cVar7;
FUN_140109a60(param_1);
if (0x3e < param_3 - 2) {
return 0xfffffffd;
}
cVar2 = *param_2;
if (cVar2 == '-') {
param_2 = param_2 + 1;
}
FUN_140109a60(param_1);
cVar7 = *param_2;
while (cVar7 != '\0') {
if ((int)param_3 < 0x24) {
iVar3 = toupper((int)cVar7);
cVar7 = (char)iVar3;
}
uVar6 = 0;
lVar4 = 0;
do {
if (cVar7 == PTR_s_0123456789ABCDEFGHIJKLMNOPQRSTUV_1401ae330[lVar4]) break;
lVar4 = lVar4 + 1;
uVar6 = uVar6 + 1;
} while (lVar4 < 0x40);
if ((int)param_3 <= (int)uVar6) break;
uVar5 = FUN_140104300(param_1,param_3,param_1);
if ((int)uVar5 != 0) {
return uVar5;
}
uVar5 = FUN_140103f50(param_1,uVar6,param_1);
if ((int)uVar5 != 0) {
return uVar5;
}
pcVar1 = param_2 + 1;
param_2 = param_2 + 1;
cVar7 = *pcVar1;
}
if (*param_1 != 0) {
param_1[2] = (uint)(cVar2 == '-');
}
return 0;
}