uint * FUN_004763b0(int param_1,int param_2)
{
uint *puVar1;
char cVar2;
uint *puVar3;
uint *puVar4;
uint *puVar5;
int *piVar6;
char *pcVar7;
int iVar8;
bool bVar9;
uint uVar10;
uint uVar11;
int iVar12;
if ((**(char **)(param_1 + 0xc) != 'G') && (**(char **)(param_1 + 0xc) != 'T')) {
puVar5 = (uint *)FUN_0047733c();
if ((puVar5 != (uint *)0x0) && ((param_2 != 0 && ((*(uint *)(param_1 + 8) & 1) == 0)))) {
for (; *puVar5 - 0x19 < 3; puVar5 = (uint *)puVar5[1]) {
}
if (*puVar5 == 2) {
for (piVar6 = (int *)puVar5[2]; *piVar6 - 0x19U < 3; piVar6 = (int *)piVar6[1]) {
}
puVar5[2] = (uint)piVar6;
return puVar5;
}
return puVar5;
}
if (puVar5 == (uint *)0x0) {
return (uint *)0x0;
}
if (**(char **)(param_1 + 0xc) == '\0') {
return puVar5;
}
puVar4 = puVar5;
if (**(char **)(param_1 + 0xc) == 'E') {
return puVar5;
}
do {
uVar10 = *puVar4;
if (uVar10 == 4) {
puVar4 = (uint *)puVar4[1];
goto LAB_00476b30;
}
} while (((3 < uVar10) && (uVar10 - 0x19 < 3)) &&
(puVar1 = puVar4 + 1, puVar4 = (uint *)*puVar1, (uint *)*puVar1 != (uint *)0x0));
bVar9 = false;
goto LAB_00476ba8;
}
iVar12 = *(int *)(param_1 + 0x30);
pcVar7 = *(char **)(param_1 + 0xc);
*(int *)(param_1 + 0x30) = iVar12 + 0x14;
if (*pcVar7 == 'T') {
*(char **)(param_1 + 0xc) = pcVar7 + 1;
cVar2 = pcVar7[1] //possible issue identified - semgrep
if (cVar2 == '\0') {
return (uint *)0x0;
}
*(char **)(param_1 + 0xc) = pcVar7 + 2;
if (cVar2 == 'S') {
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 0xc;
goto LAB_00476548;
}
if ('S' < cVar2) {
if (cVar2 == 'c') {
iVar12 = FUN_0047313c(param_1,0);
if (iVar12 == 0) {
return (uint *)0x0;
}
iVar12 = FUN_0047313c(param_1,0);
if (iVar12 == 0) {
return (uint *)0x0;
}
puVar5 = (uint *)FUN_004763b0(param_1,0);
uVar10 = 0x10;
}
else if (cVar2 < 'd') {
if (cVar2 == 'T') {
*(int *)(param_1 + 0x30) = iVar12 + 10;
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 9;
}
else {
if (cVar2 != 'V') {
return (uint *)0x0;
}
*(int *)(param_1 + 0x30) = iVar12 + 0xf;
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 8;
}
}
else if (cVar2 == 'h') {
iVar12 = FUN_0047313c(param_1,0x68);
if (iVar12 == 0) {
return (uint *)0x0;
}
puVar5 = (uint *)FUN_004763b0(param_1,0);
uVar10 = 0xe;
}
else {
if (cVar2 != 'v') {
return (uint *)0x0;
}
iVar12 = FUN_0047313c(param_1,0x76);
if (iVar12 == 0) {
return (uint *)0x0;
}
puVar5 = (uint *)FUN_004763b0(param_1,0);
uVar10 = 0xf;
}
goto LAB_00476548;
}
if (cVar2 == 'F') {
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 0xd;
goto LAB_00476548;
}
if ('F' < cVar2) {
if (cVar2 == 'I') {
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 0xb;
}
else {
if (cVar2 != 'J') {
return (uint *)0x0;
}
puVar5 = (uint *)FUN_004754f4(param_1);
uVar10 = 0x11;
}
goto LAB_00476548;
}
if (cVar2 != 'C') {
return (uint *)0x0;
}
puVar4 = (uint *)FUN_004754f4(param_1);
iVar12 = FUN_004730c0(param_1);
if (iVar12 < 0) {
return (uint *)0x0;
}
if (**(char **)(param_1 + 0xc) != '_') {
return (uint *)0x0;
}
*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
puVar5 = (uint *)FUN_004754f4(param_1);
*(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + 5;
uVar10 = 10;
}
else {
if (*pcVar7 != 'G') {
return (uint *)0x0;
}
*(char **)(param_1 + 0xc) = pcVar7 + 1;
cVar2 = pcVar7[1] //possible issue identified - semgrep
if (cVar2 == '\0') {
return (uint *)0x0;
}
*(char **)(param_1 + 0xc) = pcVar7 + 2;
if (cVar2 == 'R') {
puVar5 = (uint *)FUN_0047733c(param_1);
uVar10 = 0x13;
}
else if (cVar2 < 'S') {
if (cVar2 != 'A') {
return (uint *)0x0;
}
puVar5 = (uint *)FUN_004763b0(param_1,0);
uVar10 = 0x14;
}
else if (cVar2 == 'V') {
puVar5 = (uint *)FUN_0047733c(param_1);
uVar10 = 0x12;
}
else {
if (cVar2 != 'r') {
return (uint *)0x0;
}
iVar12 = FUN_004730c0(param_1);
if (iVar12 < 2) {
return (uint *)0x0;
}
cVar2 = **(char **)(param_1 + 0xc) //possible issue identified - semgrep
if (cVar2 == '\0') {
return (uint *)0x0;
}
pcVar7 = *(char **)(param_1 + 0xc) + 1;
*(char **)(param_1 + 0xc) = pcVar7;
if (cVar2 != '_') {
return (uint *)0x0;
}
iVar12 = iVar12 + -1;
puVar4 = (uint *)0x0;
do {
if (*pcVar7 == '\0') {
return (uint *)0x0;
}
uVar10 = 0;
if (*pcVar7 == '$') {
cVar2 = pcVar7[1] //possible issue identified - semgrep
if (cVar2 == 'S') {
uVar10 = 0x2f;
}
else if (cVar2 == '_') {
uVar10 = 0x2e;
}
else {
if (cVar2 != '$') {
return (uint *)0x0;
}
uVar10 = 0x24;
}
iVar8 = *(int *)(param_1 + 0x14);
puVar5 = (uint *)0x0;
if (iVar8 < *(int *)(param_1 + 0x18)) {
puVar5 = (uint *)(*(int *)(param_1 + 0x10) + iVar8 * 0xc);
*(int *)(param_1 + 0x14) = iVar8 + 1;
if (puVar5 != (uint *)0x0) {
puVar5[1] = uVar10;
*puVar5 = 0x36;
}
}
pcVar7 = (char *)(*(int *)(param_1 + 0xc) + 2);
*(char **)(param_1 + 0xc) = pcVar7;
if (puVar5 == (uint *)0x0) {
return (uint *)0x0;
}
iVar12 = iVar12 + -2;
}
else {
do {
if ((pcVar7[uVar10] == '\0') || (uVar11 = uVar10 + 1, pcVar7[uVar10] == '$')) break;
uVar10 = uVar11;
} while ((int)uVar11 < iVar12);
iVar8 = *(int *)(param_1 + 0x14);
puVar5 = (uint *)0x0;
if (iVar8 < *(int *)(param_1 + 0x18)) {
puVar5 = (uint *)(*(int *)(param_1 + 0x10) + iVar8 * 0xc);
*(int *)(param_1 + 0x14) = iVar8 + 1;
if ((puVar5 == (uint *)0x0) || (uVar10 == 0)) {
puVar5 = (uint *)0x0;
}
else {
puVar5[1] = (uint)pcVar7;
*puVar5 = 0;
puVar5[2] = uVar10;
}
}
pcVar7 = (char *)(*(int *)(param_1 + 0xc) + uVar10);
*(char **)(param_1 + 0xc) = pcVar7;
if (puVar5 == (uint *)0x0) {
return (uint *)0x0;
}
iVar12 = iVar12 - uVar10;
}
if ((puVar4 != (uint *)0x0) &&
(puVar5 = (uint *)FUN_00473000(param_1,0x35,puVar4,puVar5), puVar5 == (uint *)0x0)) {
return (uint *)0x0;
}
puVar4 = puVar5;
} while (0 < iVar12);
uVar10 = 0x34;
}
LAB_00476548:
puVar4 = (uint *)0x0;
}
LAB_00476bd0:
switch(uVar10) {
case 1:
case 2:
case 3:
case 4:
case 10:
case 0x1c:
case 0x26:
case 0x2c:
case 0x2d:
case 0x2e:
case 0x2f:
case 0x30:
case 0x31:
case 0x32:
case 0x33:
case 0x35:
if (puVar5 == (uint *)0x0) {
return (uint *)0x0;
}
case 0x25:
puVar1 = puVar4;
break;
default:
return (uint *)0x0;
case 8:
case 9:
case 0xb:
case 0xc:
case 0xd:
case 0xe:
case 0xf:
case 0x10:
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x1d:
case 0x1e:
case 0x1f:
case 0x20:
case 0x21:
case 0x23:
case 0x27:
case 0x28:
case 0x2b:
case 0x34:
puVar1 = puVar5;
break;
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x24:
goto switchD_0047303c_caseD_16;
}
puVar3 = (uint *)0x0;
if (puVar1 != (uint *)0x0) {
switchD_0047303c_caseD_16:
iVar12 = *(int *)(param_1 + 0x14);
puVar3 = (uint *)0x0;
if (iVar12 < *(int *)(param_1 + 0x18)) {
puVar3 = (uint *)(*(int *)(param_1 + 0x10) + iVar12 * 0xc);
*(int *)(param_1 + 0x14) = iVar12 + 1;
if (puVar3 != (uint *)0x0) {
*puVar3 = uVar10;
puVar3[1] = (uint)puVar5;
puVar3[2] = (uint)puVar4;
return puVar3;
}
}
}
return puVar3;
LAB_00476b30:
bVar9 = false;
if (puVar4 == (uint *)0x0) goto LAB_00476b8c;
uVar10 = *puVar4;
if (7 < uVar10) {
if (uVar10 == 0x2b) {
LAB_00476b74:
bVar9 = true;
}
else {
bVar9 = false;
}
goto LAB_00476b8c;
}
if (5 < uVar10) goto LAB_00476b74;
bVar9 = false;
if (1 < uVar10 - 1) goto LAB_00476b8c;
puVar4 = (uint *)puVar4[2];
goto LAB_00476b30;
LAB_00476b8c:
bVar9 = !bVar9;
LAB_00476ba8:
puVar4 = (uint *)FUN_00476208(param_1,bVar9);
uVar10 = 3;
goto LAB_00476bd0;
}