uint FUN_00400d88(char *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uVar4;
  int iVar5;
  
  puVar3 = &o_namemap;
  iVar5 = -1;
  uVar4 = 0;
  do {
    if (((char *)*puVar3 != (char *)0x0) &&
       (iVar1 = strcasecmp((char *)*puVar3,param_1), iVar1 == 0)) {
      iVar1 = 0;
      uVar2 = 0;
      do {
        if (((puVar3[1] ^ param_2) >> (uVar2 & 0x1f) & 0xff) != 0) break;
        iVar1 = iVar1 + 1;
        uVar2 = iVar1 * 8;
      } while (iVar1 != 4);
      if (iVar5 < iVar1) {
        uVar4 = puVar3[1];
        iVar5 = iVar1;
      }
    }
    puVar3 = puVar3 + 2;
    if (puVar3 == (undefined4 *)&_end) {
      return uVar4;
    }
  } while( true );
}