undefined4 * FUN_0040c86c(int param_1,undefined4 *param_2,char *param_3)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
if (*param_3 == '$') {
param_3 = (char *)FUN_0040c950(param_1,param_2,param_3 + 1);
}
puVar2 = (undefined4 *)(param_1 + 0x18);
if (param_2 != (undefined4 *)0x0) {
puVar2 = param_2;
}
puVar3 = (undefined4 *)*puVar2;
while( true ) {
if (puVar3 == puVar2) {
puVar2 = (undefined4 *)FUN_0040c744(param_1,param_2,param_3,"");
return puVar2;
}
iVar1 = strcmp((char *)puVar3[2],param_3);
if (iVar1 == 0) break;
puVar3 = (undefined4 *)*puVar3;
}
return puVar3;
}