int FUN_004823c0(undefined4 *param_1)
{
bool bVar1;
short *psVar2;
short *psVar3;
char cVar4;
char cVar5;
undefined4 uVar6;
uint uVar7;
char *pcVar8;
short *psVar9;
uint uVar10;
uint uVar11;
uint uVar12;
int iVar13;
int iVar14;
char *pcVar15;
char *pcVar16;
uint uVar17;
uint local_48 [10];
local_48[4] = 8;
local_48[3] = 8;
local_48[0] = 0;
local_48[1] = 0;
uVar17 = param_1[6];
uVar12 = 0;
iVar14 = 0;
pcVar16 = (char *)*param_1;
uVar7 = 0;
LAB_00482458:
pcVar8 = pcVar16;
pcVar15 = pcVar8;
if (*pcVar8 == '*') {
pcVar15 = pcVar8 + 1;
local_48[3 - iVar14] = 0;
}
uVar10 = 0;
while( true ) {
iVar13 = (int)*pcVar15;
if ((*(ushort *)(PTR_DAT_004b7614 + iVar13 * 2) & 8) == 0) break;
if ((int)uVar10 < 0xfff) {
uVar10 = uVar10 * 10 + -0x30 + iVar13;
}
pcVar15 = pcVar15 + 1;
}
if (pcVar8[-1] == '%') {
if ((iVar13 == 0x24) && (0 < (int)uVar10)) {
if (uVar17 == 0) {
return -1;
}
if ((int)uVar17 < (int)uVar10) {
uVar17 = uVar10;
}
local_48[2] = uVar10;
pcVar16 = pcVar15 + 1;
LAB_0048251c:
do {
uVar10 = 1;
pcVar8 = " +0-#\'I";
while (cVar4 = *pcVar8, pcVar8 = pcVar8 + 1, *pcVar16 != cVar4) {
uVar10 = uVar10 << 1;
if (*pcVar8 == '\0') {
uVar12 = uVar12 & ~((int)(uVar12 & 10) >> 1);
uVar10 = 0;
if (pcVar16[-1] != '%') goto LAB_00482458;
cVar4 = *pcVar8;
goto LAB_00482574;
}
}
uVar12 = uVar12 | uVar10;
pcVar16 = pcVar16 + 1;
} while( true );
}
if ((int)uVar17 < 1) {
uVar17 = 0;
pcVar16 = pcVar8;
if ((pcVar15 <= pcVar8) || (*pcVar8 == '0')) goto LAB_0048251c;
}
else if (iVar13 != 0x6d) {
return -1;
}
}
cVar4 = *pcVar8;
pcVar16 = pcVar15;
LAB_00482574:
if (cVar4 == '*') {
if (uVar17 == 0) {
if (pcVar8 + 1 != pcVar16) {
return -1;
}
}
else {
if (*pcVar16 != '$') {
return -1;
}
if ((int)uVar10 < 1) {
return -1;
}
pcVar16 = pcVar16 + 1;
local_48[-iVar14] = uVar10;
}
uVar10 = 0x80000000;
}
if (iVar14 != 0) goto LAB_004825e0;
uVar7 = uVar10;
if (*pcVar16 == '.') {
iVar14 = -1;
pcVar16 = pcVar16 + 1;
goto LAB_00482458;
}
uVar10 = 0xffffffff;
LAB_004825e0:
pcVar8 = "hlLjztqZ";
cVar4 = 'h';
while (*pcVar16 != cVar4) {
pcVar8 = pcVar8 + 1;
if (*pcVar8 == '\0') goto LAB_0048260c;
cVar4 = *pcVar8;
}
pcVar16 = pcVar16 + 1;
LAB_0048260c:
if ((int)(pcVar8 + -0x4988c0) < 2) {
cVar4 = *pcVar16;
if (cVar4 != *pcVar8) {
cVar5 = pcVar8[9] //possible issue identified - semgrep
goto LAB_00482644;
}
pcVar16 = pcVar16 + 1;
cVar5 = pcVar8[0x12] //possible issue identified - semgrep
}
else {
cVar5 = pcVar8[9] //possible issue identified - semgrep
}
cVar4 = *pcVar16;
LAB_00482644:
uVar11 = (int)cVar5 << 8;
if (cVar4 == '\0') {
return -1;
}
pcVar8 = "npxXoudifFeEgGaACScs";
cVar5 = 'n';
while (cVar5 != cVar4) {
pcVar8 = pcVar8 + 1;
cVar5 = *pcVar8;
if (cVar5 == '\0') goto LAB_004826f8;
}
pcVar15 = pcVar8 + -0x498900;
if ((0x11 < (int)pcVar15) && ((uVar11 & 0x400) != 0)) {
pcVar15 = pcVar8 + -0x498902;
}
param_1[8] = pcVar15;
for (pcVar8 = ""; (int)*pcVar8 < (int)pcVar15; pcVar8 = pcVar8 + 1) {
}
local_48[5] = ((int)(short)(&DAT_004988e4)[(int)(pcVar8 + -0x4988f4)] | uVar11) &
(int)(short)(&DAT_004988d4)[(int)(pcVar8 + -0x4988f4)];
pcVar8 = "npxXoudifFeEgGaACScs";
LAB_004826f8:
uVar6 = 0x30;
if ((uVar12 & 4) == 0) {
uVar6 = 0x20;
}
param_1[3] = (int)*pcVar16;
param_1[1] = uVar10;
param_1[2] = uVar7;
param_1[5] = uVar6;
param_1[4] = uVar11 & 0xf00 | uVar12 & 0xfffffffb;
param_1[7] = 1;
if (*pcVar8 == '\0') {
if (*pcVar16 == 'm') {
param_1[8] = 0x14;
param_1[7] = 0;
}
else {
param_1[8] = 0x15;
cVar4 = *PTR_DAT_004b77b0;
pcVar8 = PTR_DAT_004b77b0;
while (cVar4 != *pcVar16) {
pcVar8 = pcVar8 + 1;
if (PTR_DAT_004b77b0 + 10 <= pcVar8) {
return -1;
}
cVar4 = *pcVar8;
}
iVar14 = (*(code *)(&DAT_004c22fc)[(int)pcVar8 - (int)PTR_DAT_004b77b0])
(param_1 + 1,5,local_48 + 5);
param_1[7] = iVar14;
if (5 < iVar14) {
return -1;
}
}
}
iVar14 = 0;
if ((int)uVar17 < 1) {
*(undefined1 *)((int)param_1 + 0x26) = 1;
FUN_00483c90(param_1 + 10,local_48 + 5,param_1[7] << 2);
iVar14 = param_1[7];
goto LAB_00482934;
}
bVar1 = true;
do {
if (bVar1) {
uVar7 = (uint)(byte)local_48[iVar14];
*(byte *)((int)param_1 + iVar14 + 0x24) = (byte)local_48[iVar14];
}
else {
uVar7 = (local_48[2] - 2) + iVar14;
}
if (((int)uVar17 < (int)uVar7) && (uVar17 = uVar7, 9 < (int)uVar7)) {
return -1;
}
uVar10 = local_48[iVar14 + 3];
uVar12 = param_1[uVar7 + 9];
if (uVar10 == 8) {
LAB_004828ec:
iVar13 = param_1[7];
}
else {
if ((uVar12 == 8) || (psVar9 = (short *)&UNK_00498938, uVar12 == uVar10)) {
LAB_004828e0:
param_1[uVar7 + 9] = uVar10;
goto LAB_004828ec;
}
do {
psVar2 = psVar9;
psVar9 = psVar2 + -1;
if ((int)*psVar9 == uVar12) break;
} while (&UNK_00498921 <= psVar9);
psVar9 = (short *)&UNK_00498938;
do {
psVar3 = psVar9;
psVar9 = psVar3 + -1;
if ((int)*psVar9 == uVar10) break;
} while (&UNK_00498921 <= psVar9);
if ((byte)(&UNK_00498938)[(int)(psVar2 + -0x24c491) >> 1] <=
(byte)(&UNK_00498938)[(int)(psVar3 + -0x24c491) >> 1]) goto LAB_004828e0;
iVar13 = param_1[7];
}
iVar14 = iVar14 + 1;
if (iVar13 + 1 < iVar14) {
iVar14 = param_1[7];
LAB_00482934:
*param_1 = pcVar16 + 1;
param_1[6] = uVar17;
return iVar14 + 2;
}
bVar1 = iVar14 < 3;
} while( true );
}