void FUN_00404520(int param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0x18) == 0) {
    if (((param_2 == 0) && (DAT_0041bca0 == '\0')) && ((*(ushort *)(param_1 + 10) & 0x80) == 0)) {
      iVar2 = *(int *)(param_1 + 0xc);
      if (iVar2 == 0) {
        iVar2 = *(int *)(param_1 + 0x10);
        puVar1 = (undefined4 *)(param_1 + 0x1c);
      }
      else {
        puVar1 = (undefined4 *)(param_1 + 0x1c);
      }
    }
    else {
      puVar1 = &DAT_00409e30;
      iVar2 = -1;
    }
    raw_packet(param_1,server_config,0x43,iVar2,0x44,puVar1,DAT_0041bc54);
    return;
  }
  kernel_packet(param_1,server_config,0x43,*(int *)(param_1 + 0x18),0x43);
  return;
}