void FUN_00400bd8(undefined1 *param_1,undefined2 *param_2,byte *param_3,undefined4 param_4)

{
  byte bVar1;
  bool bVar2;
  undefined2 uVar3;
  size_t sVar4;
  undefined1 *puVar5;
  byte *pbVar6;
  int iVar7;
  
  memset(param_1,0,0x3e)   //possible issue identified - semgrep
  sVar4 = strlen((char *)param_3);
  pbVar6 = param_3 + sVar4;
  while (bVar2 = (int)sVar4 < 0x10, sVar4 = sVar4 + 1, bVar2) {   //possible issue identified - semgrep
    *pbVar6 = 0x20;
    pbVar6 = pbVar6 + 1;
  }
  param_3[0xf] = 0;
  uVar3 = *param_2;
  param_1[1] = (char)((ushort)uVar3 >> 8);
  param_1[2] = 0x84;
  param_1[7] = 1;
  *param_1 = (char)uVar3;
  param_1[0xc] = 0x20;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  iVar7 = 0;
  puVar5 = param_1;
  do {
    iVar7 = iVar7 + 1;
    puVar5[0xd] = *param_3 >> 4;
    bVar1 = *param_3;
    param_3 = param_3 + 1;
    puVar5[0xe] = bVar1 & 0xf;
    puVar5 = puVar5 + 2;
  } while (iVar7 != 0x10);
  iVar7 = 1;
  puVar5 = param_1;
  do {
    iVar7 = iVar7 + 1;
    puVar5[0xd] = puVar5[0xd] + 'A';
    puVar5 = puVar5 + 1;
  } while (iVar7 != 0x21);
  param_1[0x2f] = 0x20;
  param_1[0x31] = 1;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  param_1[0x30] = 0;
  *(undefined4 *)(param_1 + 0x32) = 0x100e0000;
  param_1[0x37] = 6;
  param_1[0x3a] = (char)param_4;
  param_1[0x38] = 0x40;
  param_1[0x3d] = (char)((uint)param_4 >> 0x18);
  param_1[0x3c] = (char)((uint)param_4 >> 0x10);
  param_1[0x3b] = (char)((uint)param_4 >> 8);
  param_1[0x36] = 0;
  param_1[0x39] = 0;
  return;
}