/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 xtables_insmod(undefined4 param_1,char *param_2,uint param_3)

{
  __pid_t _Var1;
  uint local_28;
  char *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  
  local_10 = param_3 & 0xff;
  if (param_2 != (char *)0x0) {
    fflush(_stdout);
    _Var1 = vfork()   //possible issue identified - semgrep
    if (_Var1 != -1) {
      if (_Var1 == 0) {
        if (local_10 == 0) {
          local_1c = 0;
        }
        else {
          local_1c = 0x5884;
        }
        local_18 = 0;
        local_24 = param_2;
        local_20 = param_1;
        execv(param_2,&local_24)   //possible issue identified - semgrep
                    /* WARNING: Subroutine does not return */
        exit(1);
      }
      wait(&local_28);
      free((void *)0x0);
      if (((local_28 & 0x7f) == 0) && ((local_28 & 0xff00) == 0)) {
        return 0   //possible issue identified - semgrep
      }
    }
  }
  return 0xffffffff;
}