/* WARNING: Removing unreachable block (ram,0x00013b54) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 sw_net_rx_action(int param_1)

{
  undefined1 uVar1;
  ushort uVar2;
  short sVar3;
  short sVar4;
  undefined2 uVar5;
  bool bVar6;
  byte bVar7;
  char cVar8;
  int iVar9;
  uint uVar10;
  code *pcVar11;
  undefined4 uVar12;
  char cVar13;
  undefined4 *puVar14;
  int *piVar15;
  uint uVar16;
  uint *puVar17;
  int iVar18;
  uint *puVar19;
  int iVar20;
  int iVar21;
  undefined4 uVar22;
  undefined4 *puVar23;
  uint uVar24;
  undefined4 local_48;
  uint local_44;
  uint local_40;
  uint local_3c;
  uint local_38;
  undefined4 *local_34;
  uint local_30;
  
  if ((*(uint *)(param_1 + 0x60) & 0xffff0700) != 0x80000) {
    return 0;
  }
  if (*(int *)(param_1 + 0xa4) != 1) {
    return 0;
  }
  if ((*(uint *)(param_1 + 0x60) & 2) == 0) {
    iVar9 = *(int *)(param_1 + 0x50);
  }
  else {
    if ((**(uint **)(param_1 + 0x94) & 0xffff) != 1) {
      return 0;
    }
    iVar9 = *(int *)(param_1 + 0x50);
  }
  if (iVar9 != 0) {
    return 0;
  }
  uVar16 = *(uint *)(param_1 + 0x4c);
  if (uVar16 < 0x14) {
    return 0;
  }
  uVar2 = *(ushort *)((int)*(uint **)(param_1 + 0x88) + 2);
  uVar10 = (uVar2 & 0xff) << 8 | (uint)(uVar2 >> 8);
  if (uVar16 < uVar10) {
    return 0;
  }
  if (uVar10 < (**(uint **)(param_1 + 0x88) & 0xf) << 2) {
    return 0;
  }
  if (uVar10 < uVar16) {
    *(uint *)(param_1 + 0x90) = *(int *)(param_1 + 0x9c) + uVar10;
    *(uint *)(param_1 + 0x4c) = uVar10;
    if ((*(uint *)(param_1 + 0x60) & 0xc) == 0xc) {
      *(uint *)(param_1 + 0x60) = *(uint *)(param_1 + 0x60) & 0xfffffff3;
    }
    puVar17 = *(uint **)(param_1 + 0x88);
  }
  else {
    puVar17 = *(uint **)(param_1 + 0x88);
  }
  if ((byte)puVar17[2] < 2) {
    return 0;
  }
  if ((*puVar17 & 0xf) != 5) {
    return 0;
  }
  if ((*puVar17 & 0xf0) != 0x40) {
    return 0;
  }
  if ((*(ushort *)((int)puVar17 + 6) & 0xff3f) != 0) {
    return 0;
  }
  uVar16 = (uint)*(byte *)((int)puVar17 + 9);
  uVar24 = puVar17[4];
  uVar10 = puVar17[3];
  if (uVar16 == 6) {
    if (*(uint *)(param_1 + 0x4c) < 0x28) {
      return 0;
    }
    iVar9 = *(int *)(param_1 + 0x9c);
    if ((*(uint *)(iVar9 + 0x20) & 0x700) != 0) {
      return 0;
    }
    sVar4 = *(short *)(iVar9 + 0x16)   //possible issue identified - semgrep
    sVar3 = *(short *)(iVar9 + 0x14)   //possible issue identified - semgrep
  }
  else {
    if (uVar16 != 0x11) {
      return 0;
    }
    if (*(uint *)(param_1 + 0x4c) < 0x1c) {
      return 0;
    }
    sVar3 = *(short *)(*(int *)(param_1 + 0x9c) + 0x14)   //possible issue identified - semgrep
    sVar4 = *(short *)(*(int *)(param_1 + 0x9c) + 0x16)   //possible issue identified - semgrep
  }
  iVar9 = sw_turbo_hash_fn(uVar10,sVar3,uVar24,sVar4,uVar16);
  puVar23 = (undefined4 *)(&sw_turbo_hash)[iVar9];
  while( true ) {
    while( true ) {
      while( true ) {
        while( true ) {
          while( true ) {
            if (puVar23 == (undefined4 *)0x0) {
              return 0;
            }
            if (puVar23[4] == uVar10) break;
            puVar23 = (undefined4 *)*puVar23;
          }
          if (*(short *)(puVar23 + 0xf) == sVar3) break;
          puVar23 = (undefined4 *)*puVar23;
        }
        if (puVar23[5] == uVar24) break;
        puVar23 = (undefined4 *)*puVar23;
      }
      if (*(short *)((int)puVar23 + 0x3e) == sVar4) break;
      puVar23 = (undefined4 *)*puVar23;
    }
    local_30 = (uint)*(byte *)(puVar23 + 0x12);
    if (local_30 == uVar16) break;
    puVar23 = (undefined4 *)*puVar23;
  }
  if (alphaautoqos == (int *)0x0) {
    iVar9 = puVar23[0x16];
  }
  else {
    iVar9 = *alphaautoqos;
    if (iVar9 == 0) {
      iVar9 = puVar23[0x16];
    }
    else {
      if (iVar9 == 1) {
        if (puVar23[0x14] == 0) {
          if ((x_37712 == (int *)0x0) || (*x_37712 == 0)) {
            blacklistx = (int *)blacklist_init(0x1e);
            x_37712 = blacklistx;
          }
          if ((y_37713 == (int *)0x0) || (*y_37713 == 0)) {
            blacklisty = (int *)blacklist_init(0x1e);
            y_37713 = blacklisty;
          }
          if (x_37712 == (int *)0x0) {
            iVar9 = puVar23[0x14];
          }
          else {
            if (*x_37712 != 0) {
              if (y_37713 == (int *)0x0) {
                iVar9 = puVar23[0x14];
                goto LAB_00012b40;
              }
              if (*y_37713 != 0) {
                if (*(char *)((int)puVar23 + 0x49) == '\x01') {
                  uVar22 = puVar23[5];
                  uVar5 = *(undefined2 *)((int)puVar23 + 0x3e);
                }
                else {
                  uVar22 = puVar23[4];
                  uVar5 = *(undefined2 *)(puVar23 + 0xf);
                }
                iVar9 = blacklist_search(x_37712,uVar22,uVar5);
                if (iVar9 != -1) {
                  iVar9 = puVar23[2];
                  puVar23[0x14] = 4;
                  puVar23[0x15] = 4;
                  *(undefined4 *)(iVar9 + 0x50) = 4;
                  *(undefined4 *)(iVar9 + 0x54) = 4;
                }
              }
            }
            iVar9 = puVar23[0x14];
          }
LAB_00012b40:
          if (iVar9 == 0) {
            iVar9 = findsrdsentry_from123
                              (*(undefined2 *)(puVar23 + 0xf),*(undefined2 *)((int)puVar23 + 0x3e));
            if (iVar9 < 0) {
              iVar9 = 3;
            }
            puVar23[0x14] = iVar9;
            if (puVar23[0x14] - 1 < 4) {
              uVar22 = puVar23[0x14];
            }
            else {
              puVar23[0x14] = 4;
              uVar22 = puVar23[0x14];
            }
            iVar9 = puVar23[2];
            puVar23[0x15] = uVar22;
            *(undefined4 *)(iVar9 + 0x50) = uVar22;
            *(undefined4 *)(iVar9 + 0x54) = uVar22;
            if (qosdebug != 0) {
              printk(&_LC47)   //possible issue identified - semgrep
            }
          }
        }
        iVar9 = *(int *)(param_1 + 0xc);
        if (lastsec_37717 == 0) {
          net_enable_timestamp();
        }
        if (iVar9 - lastsec_37717 < 0xb) {
          uVar16 = *(uint *)(param_1 + 0x4c);
        }
        else {
          uVar10 = alphaautoqos[2] * 500;
          uVar16 = alphaautoqos[1] * 500;
          lastsec_37717 = iVar9;
          if (qosdebug != 0) {
            printk(&_LC48)   //possible issue identified - semgrep
          }
          if ((((x_37712 != (int *)0x0) && (*x_37712 != 0)) && (y_37713 != (int *)0x0)) &&
             (*y_37713 != 0)) {
            enter_37725 = enter_37725 + 1;
            if (enter_37725 % 0x13 == 0) {
              addsrdsentry_frommqos();
            }
            if (enter_37725 % 0x13 == 0) {
              printsrdsentry_from123();
            }
            if (enter_37725 % 0xd == 0) {
              blacklist_print(y_37713);
            }
            if (enter_37725 % 5 == 0) {
              blacklist_print(x_37712);
            }
            if (enter_37725 % 0x25 == 0) {
              blacklist_testandclear(y_37713);
            }
            if (enter_37725 % 0x151 == 0) {
              blacklist_testandclear(x_37712);
            }
          }
          if (uVar16 == 0) {
            local_40 = 500000;
          }
          else {
            local_40 = 500000;
            if ((int)uVar16 < 0x7a121) {
              local_40 = uVar16;
            }
          }
          if (uVar10 == 0) {
            uVar16 = 500000;
          }
          else {
            uVar16 = 500000;
            if ((int)uVar10 < 0x7a121) {
              uVar16 = uVar10;
            }
          }
          local_34 = &sw_turbo_hash;
          iVar9 = 0;
          do {
            for (puVar14 = (undefined4 *)*local_34; puVar14 != (undefined4 *)0x0;
                puVar14 = (undefined4 *)*puVar14) {
              local_3c = local_40;
              local_38 = uVar16;
              if (*(char *)((int)puVar14 + 0x49) == '\x01') {
                local_3c = uVar16;
                local_38 = local_40;
              }
              if ((x_37712 == (int *)0x0) || (*x_37712 == 0)) {
LAB_00013000:
                uVar10 = puVar14[0x13];
              }
              else if (y_37713 == (int *)0x0) {
                uVar10 = puVar14[0x13];
              }
              else {
                if (*y_37713 == 0) goto LAB_00013000;
                if (*(char *)((int)puVar14 + 0x49) == '\x01') {
                  uVar22 = puVar14[5];
                  uVar5 = *(undefined2 *)((int)puVar14 + 0x3e);
                }
                else {
                  uVar22 = puVar14[4];
                  uVar5 = *(undefined2 *)(puVar14 + 0xf);
                }
                iVar20 = blacklist_search(x_37712,uVar22,uVar5);
                if (iVar20 == -1) {
                  iVar20 = blacklist_search(y_37713,uVar22,uVar5);
                  if (iVar20 == -1) {
                    iVar20 = blacklist_insert(y_37713,uVar22,uVar5);
                    if (iVar20 == -1) {
                      blacklist_freeall(y_37713);
                      goto LAB_00013000;
                    }
                    uVar10 = puVar14[0x13];
                  }
                  else {
                    if (local_38 < (uint)puVar14[0x13]) {
                      if ((-1 < iVar20) || (iVar20 <= y_37713[1])) {
                        iVar21 = iVar20 * 0x14 + *y_37713;
                        uVar10 = *(uint *)(iVar21 + 4);
                        if (uVar10 < 999) {
                          *(uint *)(iVar21 + 4) = uVar10 + 2;
                        }
                      }
                    }
                    else if ((-1 < iVar20) || (iVar20 <= y_37713[1])) {
                      iVar18 = iVar20 * 0x14 + *y_37713;
                      iVar21 = *(int *)(iVar18 + 4);
                      if (iVar21 != 0) {
                        *(int *)(iVar18 + 4) = iVar21 + -1;
                      }
                    }
                    if ((iVar20 < 0) && (y_37713[1] < iVar20)) {
                      uVar10 = puVar14[0x13];
                    }
                    else if (*(uint *)(iVar20 * 0x14 + *y_37713 + 4) < 0xb) {
                      uVar10 = puVar14[0x13];
                    }
                    else {
                      if (qosdebug != 0) {
                        printk("<=========FOUND BLACKLIST %x %d\n",uVar22,uVar5);
                      }
                      iVar20 = blacklist_insert(x_37712,uVar22,uVar5);
                      if (iVar20 == -1) {
                        blacklist_freeone(x_37712);
                        uVar10 = puVar14[0x13];
                      }
                      else {
                        uVar10 = puVar14[0x13];
                      }
                    }
                  }
                }
                else {
                  uVar10 = puVar14[0x13];
                }
              }
              if ((local_38 < uVar10) || (local_3c < *(uint *)(puVar14[2] + 0x4c))) {
                if (qosdebug == 0) {
                  iVar20 = puVar14[2];
                }
                else {
                  printk("<---bad guy %d-[%d]%d-%d\n",iVar9,uVar10,*(undefined2 *)(puVar14 + 0xf),
                         *(undefined2 *)((int)puVar14 + 0x3e));
                  iVar20 = puVar14[2];
                }
                puVar14[0x14] = 4;
                *(undefined4 *)(iVar20 + 0x50) = 4;
                uVar10 = puVar14[0x13];
              }
              else {
                uVar10 = puVar14[0x13];
              }
              if (uVar10 < 9999) {
                if (*(uint *)(puVar14[2] + 0x4c) < 9999) {
                  puVar14[0x14] = puVar14[0x15];
                  *(undefined4 *)(puVar14[2] + 0x50) = puVar14[0x15];
                  puVar14[0x13] = 0;
                }
                else {
                  puVar14[0x13] = 0;
                }
              }
              else {
                puVar14[0x13] = 0;
              }
            }
            iVar9 = iVar9 + 1;
            local_34 = local_34 + 1;
          } while (iVar9 != 0x2000);
          uVar16 = *(uint *)(param_1 + 0x4c);
        }
        if ((uVar16 & 0xfffff000) == 0) {
          iVar9 = puVar23[0x13];
        }
        else {
          if (qosdebug != 0) {
            printk(&_LC51)   //possible issue identified - semgrep
          }
          uVar16 = 0;
          iVar9 = puVar23[0x13];
        }
        puVar23[0x13] = iVar9 + uVar16;
        if ((puVar23[0x14] & 0xfffffff8) != 0) {
          puVar23[0x14] = 0;
          if (qosdebug == 0) {
            uVar22 = puVar23[0x14];
            goto LAB_00013160;
          }
          printk(&_LC52)   //possible issue identified - semgrep
        }
        uVar22 = puVar23[0x14];
      }
      else {
        uVar22 = 0;
        if (iVar9 == 2) {
          uVar22 = search_mqos_prio(puVar23);
        }
      }
LAB_00013160:
      uVar16 = process_prec(uVar22);
      iVar9 = *(int *)(param_1 + 0x88);
      if ((*(byte *)(iVar9 + 1) & 0xe0) == uVar16) {
        iVar9 = puVar23[0x16];
      }
      else {
        if ((*(uint *)(param_1 + 0x60) & 2) == 0) {
          uVar10 = (uint)*(byte *)(iVar9 + 1);
        }
        else if ((**(uint **)(param_1 + 0x94) & 0xffff) == 1) {
          uVar10 = (uint)*(byte *)(iVar9 + 1);
        }
        else if (*(int *)(param_1 + 0x10) == 0) {
          iVar9 = skb_copy(param_1,0x20);
          if (iVar9 == 0) {
            printk("may be need nf_drop ?\n");
          }
          kfree_skb(param_1);
          iVar9 = *(int *)(iVar9 + 0x88);
          uVar10 = (uint)*(byte *)(iVar9 + 1);
        }
        else {
          uVar10 = (uint)*(byte *)(iVar9 + 1);
        }
        uVar16 = uVar16 & 0xff | *(byte *)(iVar9 + 1) & 0x1e;
        *(char *)(iVar9 + 1) = (char)uVar16;
        local_48 = CONCAT22((short)(uVar16 << 8),~(ushort)(uVar10 << 8));
        iVar20 = csum_partial(&local_48,4,~*(ushort *)(iVar9 + 10));
        *(ushort *)(iVar9 + 10) =
             (short)((uint)(iVar20 * 0x10001) >> 0x10) +
             (ushort)((uint)(iVar20 * 0x10001) < (uint)(iVar20 * 0x10000)) ^ 0xffff;
        iVar9 = puVar23[0x16];
      }
    }
  }
  if (iVar9 == -1) {
    uVar22 = need_tobe_skip(puVar23);
    puVar23[0x16] = uVar22;
    iVar9 = puVar23[0x16];
  }
  else {
    iVar9 = puVar23[0x16];
  }
  if (iVar9 == 1) {
    return 0;
  }
  if ((int)(uint)*(byte *)((int)puVar23 + 0x4a) < MIN_GONE) {
    *(byte *)((int)puVar23 + 0x4a) = *(byte *)((int)puVar23 + 0x4a) + 1;
    return 0;
  }
  if (*(char *)((int)puVar23 + 0x4b) != '\0') {
    *(undefined1 *)((int)puVar23 + 0x4a) = 0;
    *(undefined1 *)((int)puVar23 + 0x4b) = 0;
    return 0;
  }
  if (local_30 == 6) {
    if ((*(uint *)(puVar23[3] + 100) & 4) == 0) {
      return 0;
    }
    puVar17 = *(uint **)(param_1 + 0x88);
  }
  else {
    puVar17 = *(uint **)(param_1 + 0x88);
  }
  uVar16 = puVar17[1] + *puVar17;
  uVar16 = uVar16 + puVar17[2] + (uint)(uVar16 < puVar17[1]);
  uVar16 = uVar16 + puVar17[3] + (uint)(uVar16 < puVar17[2]);
  iVar9 = (uVar16 < puVar17[3]) + uVar16;
  puVar19 = puVar17 + 4;
  do {
    uVar16 = *puVar19;
    puVar19 = puVar19 + 1;
    uVar10 = iVar9 + uVar16;
    iVar9 = (uVar10 < uVar16) + uVar10;
  } while (puVar19 != puVar17 + (*puVar17 & 0xf));
  if (((((uint)(iVar9 * 0x10001) >> 0x10) +
        (uint)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff) & 0xffff) != 0) {
    *(int *)(_DAT_0001d0ac + 4) = *(int *)(_DAT_0001d0ac + 4) + 1;
    *(int *)(_DAT_0001d0ac + 8) = *(int *)(_DAT_0001d0ac + 8) + 1;
    goto LAB_000139b4;
  }
  uVar22 = *(undefined4 *)(param_1 + 0x14);
  if ((need_sync < (uint)puVar23[10]) && (puVar23[10] - need_sync < 0xfffffff)) {
    uVar2 = *(ushort *)(puVar23 + 0x11);
  }
  else {
    uVar1 = *(undefined1 *)((int)puVar17 + 1);
    uVar16 = puVar17[3];
    if (((*(byte *)((int)puVar23 + 0x49) & 2) != 0) &&
       (iVar9 = ip_route_input_6(param_1,puVar23[7],uVar16,uVar1,uVar22,0), iVar9 != 0)) {
      return 0;
    }
    if ((*(byte *)((int)puVar23 + 0x49) & 1) == 0) {
      iVar9 = *(int *)(param_1 + 0x48);
    }
    else {
      iVar9 = ip_route_input_6(param_1,*(undefined4 *)(*(int *)(param_1 + 0x88) + 0x10),uVar16,uVar1
                               ,uVar22,puVar23[6]);
      if (iVar9 != 0) {
        return 0;
      }
      iVar9 = *(int *)(param_1 + 0x48);
    }
    iVar21 = *(int *)(iVar9 + 0x30);
    iVar20 = *(int *)(iVar9 + 0x2c);
    uVar22 = *(undefined4 *)(iVar9 + 0xc);
    local_bh_disable();
    if (iVar21 == 0) {
      if ((iVar20 == 0) || ((*(byte *)(iVar20 + 0x1d) & 0xde) == 0)) {
        dst_release(*(undefined4 *)(param_1 + 0x48));
        *(undefined4 *)(param_1 + 0x48) = 0;
        local_bh_enable();
        return 0;
      }
      memcpy(puVar23 + 0xb,(void *)(iVar20 + 0x24),(uint)*(byte *)(*(int *)(iVar20 + 0xc) + 0xfc))   //possible issue identified - semgrep
      *(undefined2 *)((int)puVar23 + 0x46) = 0;
    }
    else {
      local_bh_disable();
      memcpy(puVar23 + 0xb,(void *)(iVar21 + 0x14),0x10)   //possible issue identified - semgrep
      local_bh_enable();
      *(undefined2 *)((int)puVar23 + 0x46) = *(undefined2 *)(iVar21 + 10);
    }
    puVar23[8] = uVar22;
    *(short *)(puVar23 + 0x11) = (short)*(undefined4 *)(*(int *)(param_1 + 0x48) + 0x48);
    uVar16 = _jiffies;
    puVar23[10] = _jiffies;
    if (uVar16 < need_sync) {
      need_sync = uVar16 - 1;
    }
    local_bh_enable();
    dst_release(*(undefined4 *)(param_1 + 0x48));
    *(undefined4 *)(param_1 + 0x48) = 0;
    uVar2 = *(ushort *)(puVar23 + 0x11);
  }
  puVar17 = *(uint **)(param_1 + 0x88);
  if ((uint)uVar2 < *(uint *)(param_1 + 0x4c)) {
    return 0;
  }
  if (*(char *)((int)puVar17 + 9) == '\x06') {
    puVar19 = puVar17 + (*puVar17 & 0xf);
    if ((*(byte *)((int)puVar23 + 0x49) & 1) != 0) {
      if (*(ushort *)((int)puVar19 + 2) == 0x5000) {
        if (_sw_disable_80 != 0) {
          return 0;
        }
        uVar2 = (ushort)*puVar19;
      }
      else {
        uVar2 = (ushort)*puVar19;
      }
      local_44 = (uint)*(ushort *)(puVar23 + 0x10);
      local_48 = ~(uint)uVar2;
      uVar16 = puVar17[3];
      iVar9 = csum_partial(&local_48,8,~(uint)(ushort)puVar19[4]);
      *(ushort *)(puVar19 + 4) =
           (short)((uint)(iVar9 * 0x10001) >> 0x10) +
           (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
      local_44 = puVar23[6];
      local_48 = ~uVar16;
      iVar9 = csum_partial(&local_48,8,~(uint)(ushort)puVar19[4]);
      *(ushort *)(puVar19 + 4) =
           (short)((uint)(iVar9 * 0x10001) >> 0x10) +
           (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
      *(ushort *)puVar19 = *(ushort *)(puVar23 + 0x10);
    }
    if ((*(byte *)((int)puVar23 + 0x49) & 2) != 0) {
      if ((ushort)*puVar19 == 0x5000) {
        if (_sw_disable_80 != 0) {
          return 0;
        }
        uVar2 = *(ushort *)((int)puVar19 + 2);
      }
      else {
        uVar2 = *(ushort *)((int)puVar19 + 2);
      }
      local_44 = (uint)*(ushort *)((int)puVar23 + 0x42);
      local_48 = ~(uint)uVar2;
      uVar16 = puVar17[4];
      iVar9 = csum_partial(&local_48,8,~(uint)(ushort)puVar19[4]);
      *(ushort *)(puVar19 + 4) =
           (short)((uint)(iVar9 * 0x10001) >> 0x10) +
           (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
      local_44 = puVar23[7];
      local_48 = ~uVar16;
      iVar9 = csum_partial(&local_48,8,~(uint)(ushort)puVar19[4]);
      *(ushort *)(puVar19 + 4) =
           (short)((uint)(iVar9 * 0x10001) >> 0x10) +
           (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
      *(ushort *)((int)puVar19 + 2) = *(ushort *)((int)puVar23 + 0x42);
      goto LAB_00013788;
    }
    bVar7 = *(byte *)((int)puVar23 + 0x49);
  }
  else if (*(char *)((int)puVar17 + 9) == '\x11') {
    puVar19 = puVar17 + (*puVar17 & 0xf);
    if ((*(byte *)((int)puVar23 + 0x49) & 1) != 0) {
      *(undefined2 *)puVar19 = *(undefined2 *)(puVar23 + 0x10);
    }
    if ((*(byte *)((int)puVar23 + 0x49) & 2) == 0) {
      *(undefined2 *)((int)puVar19 + 6) = 0;
    }
    else {
      *(undefined2 *)((int)puVar19 + 2) = *(undefined2 *)((int)puVar23 + 0x42);
      *(undefined2 *)((int)puVar19 + 6) = 0;
    }
LAB_00013788:
    bVar7 = *(byte *)((int)puVar23 + 0x49);
  }
  else {
    bVar7 = *(byte *)((int)puVar23 + 0x49);
  }
  if ((bVar7 & 1) == 0) {
    bVar7 = *(byte *)((int)puVar23 + 0x49);
  }
  else {
    local_44 = puVar23[6];
    local_48 = ~puVar17[3];
    iVar9 = csum_partial(&local_48,8,~(uint)*(ushort *)((int)puVar17 + 10));
    *(ushort *)((int)puVar17 + 10) =
         (short)((uint)(iVar9 * 0x10001) >> 0x10) +
         (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
    puVar17[3] = puVar23[6];
    bVar7 = *(byte *)((int)puVar23 + 0x49);
  }
  if ((bVar7 & 2) != 0) {
    local_44 = puVar23[7];
    local_48 = ~puVar17[4];
    iVar9 = csum_partial(&local_48,8,~(uint)*(ushort *)((int)puVar17 + 10));
    *(ushort *)((int)puVar17 + 10) =
         (short)((uint)(iVar9 * 0x10001) >> 0x10) +
         (ushort)((uint)(iVar9 * 0x10001) < (uint)(iVar9 * 0x10000)) ^ 0xffff;
    puVar17[4] = puVar23[7];
  }
  uVar22 = puVar23[3];
  if (*(char *)((int)puVar17 + 9) == '\x11') {
    pcVar11 = get_udp_timeout_stream;
  }
  else {
    pcVar11 = get_tcp_timeout_established;
  }
  uVar12 = (*pcVar11)();
  nf_ct_refresh_acct_stub(uVar22,0,param_1,uVar12);
  if (puVar23[8] == 0) {
    return 0;
  }
  uVar16 = (uint)*(ushort *)(puVar23[8] + 0xd2);
  bVar6 = false;
  if ((*(uint *)(param_1 + 0x60) & 2) != 0) {
    bVar6 = (**(uint **)(param_1 + 0x94) & 0xffff) != 1;
  }
  if (uVar16 < 0x20) {
    uVar16 = 0x20;
  }
  uVar10 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98);
  iVar9 = uVar16 - uVar10;
  if (uVar16 <= uVar10) {
    iVar9 = 0;
  }
  if (iVar9 != 0 || bVar6) {
    iVar9 = pskb_expand_head(param_1,iVar9 + 0x1fU & 0xffffffe0,0,0x20);
    if (iVar9 != 0) goto LAB_000139b4;
    sVar4 = *(short *)((int)puVar23 + 0x46)   //possible issue identified - semgrep
  }
  else {
    sVar4 = *(short *)((int)puVar23 + 0x46)   //possible issue identified - semgrep
  }
  if (sVar4 == 0) {
    puVar14 = *(undefined4 **)(puVar23[8] + 0xbc);
    if (puVar14 == (undefined4 *)0x0) {
      uVar22 = puVar23[8];
    }
    else {
      pcVar11 = (code *)*puVar14;
      if (pcVar11 == (code *)0x0) {
        uVar22 = puVar23[8];
      }
      else {
        iVar9 = (*pcVar11)(param_1,puVar23[8],
                           (*(ushort *)(param_1 + 0x62) & 0xff) << 8 |
                           (uint)(*(ushort *)(param_1 + 0x62) >> 8),puVar23 + 0xb,0,
                           *(undefined4 *)(param_1 + 0x4c));
        if (iVar9 < 0) {
LAB_000139b4:
          kfree_skb(param_1);
          return 1;
        }
        uVar22 = puVar23[8];
      }
    }
  }
  else {
    memcpy((void *)(*(int *)(param_1 + 0x9c) + -0x10),puVar23 + 0xb,0x10)   //possible issue identified - semgrep
    skb_push(param_1,*(undefined2 *)((int)puVar23 + 0x46));
    uVar22 = puVar23[8];
  }
  *(undefined4 *)(param_1 + 0x14) = uVar22;
  if (*(int *)(param_1 + 0x68) == 0) {
    if (puVar23[9] == 4) {
      cVar13 = *(char *)((int)puVar23 + 0x49)   //possible issue identified - semgrep
      cVar8 = '\x01';
    }
    else {
      cVar8 = '\x01';
      cVar13 = *(char *)((int)puVar23 + 0x49)   //possible issue identified - semgrep
      if (puVar23[9] != 1) {
        cVar8 = '\x02';
      }
    }
    iVar9 = 0;
    if (cVar13 != cVar8) {
      iVar9 = 3;
    }
    piVar15 = (int *)puVar23[3];
    if (_kmem_cache_free << 0xf < 0) {
      *piVar15 = *piVar15 + 1;
      uVar16 = *(uint *)(param_1 + 0x60);
    }
    else {
      uVar16 = Status & 1;
      *piVar15 = *piVar15 + 1;
      Status = Status & 0xfffffffe;
      if (uVar16 != 0) {
        Status = Status | 1;
      }
      uVar16 = *(uint *)(param_1 + 0x60);
    }
    *(undefined4 *)(param_1 + 0x68) = puVar23[3];
    *(uint *)(param_1 + 0x60) = uVar16 & 0xffffff1f | iVar9 << 5;
  }
  *(int *)(_DAT_0001d0ac + 4) = *(int *)(_DAT_0001d0ac + 4) + 1;
  *(int *)(_DAT_0001d0ac + 0x28) = *(int *)(_DAT_0001d0ac + 0x28) + 1;
  dev_queue_xmit(param_1);
  return 1;
}