undefined4 FUN_00403e20(undefined4 param_1,undefined4 param_2,char *param_3)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  double dVar4;
  undefined1 auStack_38 [16];
  char *local_28;
  uint local_24;
  
  memset(param_3,0,0x90)   //possible issue identified - semgrep
  iVar2 = FUN_00403d38(param_1,param_2,0x8b01,auStack_38);
  uVar3 = 0xffffffff;
  if (-1 < iVar2) {
    strncpy(param_3,(char *)&local_28,0x10)   //possible issue identified - semgrep
    param_3[0x10] = '\0';
    iVar2 = FUN_00403d38(param_1,param_2,0x8b03,auStack_38);
    if (-1 < iVar2) {
      param_3[0x14] = '\x01';
      param_3[0x15] = '\0';
      param_3[0x16] = '\0';
      param_3[0x17] = '\0';
      *(char **)(param_3 + 0x18) = local_28;
      *(uint *)(param_3 + 0x1c) = local_24;
    }
    iVar2 = FUN_00403d38(param_1,param_2,0x8b05,auStack_38);
    if (-1 < iVar2) {
      param_3[0x20] = '\x01';
      param_3[0x21] = '\0';
      param_3[0x22] = '\0';
      param_3[0x23] = '\0';
      dVar4 = (double)(int)local_28;
      iVar2 = 0;
      while (bVar1 = iVar2 < (short)local_24, iVar2 = iVar2 + 1, bVar1) {
        dVar4 = dVar4 * 10.0;
      }
      *(int *)(param_3 + 0x28) = SUB84(dVar4,0);
      *(int *)(param_3 + 0x2c) = (int)((ulonglong)dVar4 >> 0x20);
    }
    local_28 = param_3 + 0x34;
    local_24 = 0x20;
    iVar2 = FUN_00403d38(param_1,param_2,0x8b2b,auStack_38);
    if (-1 < iVar2) {
      param_3[0x30] = '\x01';
      param_3[0x31] = '\0';
      param_3[0x32] = '\0';
      param_3[0x33] = '\0';
      *(uint *)(param_3 + 0x54) = local_24 & 0xffff;
      *(uint *)(param_3 + 0x58) = local_24 >> 0x10;
    }
    local_28 = param_3 + 100;
    local_24 = 0x21;
    iVar2 = FUN_00403d38(param_1,param_2,0x8b1b,auStack_38);
    if (-1 < iVar2) {
      param_3[0x5c] = '\x01';
      param_3[0x5d] = '\0';
      param_3[0x5e] = '\0';
      param_3[0x5f] = '\0';
      *(uint *)(param_3 + 0x60) = local_24 >> 0x10;
    }
    iVar2 = FUN_00403d38(param_1,param_2,0x8b07,auStack_38);
    uVar3 = 0;
    if (-1 < iVar2) {
      *(char **)(param_3 + 0x8c) = local_28;
      if (local_28 < (char *)0x6) {
        param_3[0x88] = '\x01';
        param_3[0x89] = '\0';
        param_3[0x8a] = '\0';
        param_3[0x8b] = '\0';
      }
      uVar3 = 0;
    }
  }
  return uVar3;
}