if_start(void)
{
	struct mbuf *ifm, *ifqt;
	DEBUG_CALL("if_start");
	if (if_queued == 0)
	   return; /* Nothing to do */
 again:
        /* check if we can really output */
        if (!slirp_can_output())
            return;
	/*
	 * See which queue to get next packet from
	 * If there's something in the fastq, select it immediately
	 */
	if (if_fastq.ifq_next != &if_fastq) {
		ifm = if_fastq.ifq_next;
	} else {
		/* Nothing on fastq, see if next_m is valid */
		if (next_m != &if_batchq)
		   ifm = next_m;
		else
		   ifm = if_batchq.ifq_next;
		/* Set which packet to send on next iteration */
		next_m = ifm->ifq_next;
	}
	/* Remove it from the queue */
	ifqt = ifm->ifq_prev;
	remque(ifm);
	--if_queued;
	/* If there are more packets for this session, re-queue them */
	if (ifm->ifs_next != /* ifm->ifs_prev != */ ifm) {
		insque(ifm->ifs_next, ifqt);
		ifs_remque(ifm);
	}
	/* Update so_queued */
	if (ifm->ifq_so) {
		if (--ifm->ifq_so->so_queued == 0)
		   /* If there's no more queued, reset nqueued */
		   ifm->ifq_so->so_nqueued = 0;
	}
	/* Encapsulate the packet for sending */
        if_encap(ifm->m_data, ifm->m_len);
	if (if_queued)
	   goto again;
}
if_start(void)
{
	struct mbuf *ifm, *ifqt;
	DEBUG_CALL("if_start");
	if (if_queued == 0)
	   return; 
 again:
        
        if (!slirp_can_output())
            return;
	



	if (if_fastq.ifq_next != &if_fastq) {
		ifm = if_fastq.ifq_next;
	} else {
		
		if (next_m != &if_batchq)
		   ifm = next_m;
		else
		   ifm = if_batchq.ifq_next;
		
		next_m = ifm->ifq_next;
	}
	
	ifqt = ifm->ifq_prev;
	remque(ifm);
	--if_queued;
	
	if (ifm->ifs_next !=  ifm) {
		insque(ifm->ifs_next, ifqt);
		ifs_remque(ifm);
	}
	
	if (ifm->ifq_so) {
		if (--ifm->ifq_so->so_queued == 0)
		   
		   ifm->ifq_so->so_nqueued = 0;
	}
	
        if_encap(ifm->m_data, ifm->m_len);
	if (if_queued)
	   goto again;
}
FUNC_0(void)
{
	struct mbuf *VAR_0, *VAR_1;
	DEBUG_CALL("FUNC_0");
	if (if_queued == 0)
	   return; 
 again:
        
        if (!slirp_can_output())
            return;
	



	if (if_fastq.ifq_next != &if_fastq) {
		VAR_0 = if_fastq.ifq_next;
	} else {
		
		if (next_m != &if_batchq)
		   VAR_0 = next_m;
		else
		   VAR_0 = if_batchq.ifq_next;
		
		next_m = VAR_0->ifq_next;
	}
	
	VAR_1 = VAR_0->ifq_prev;
	remque(VAR_0);
	--if_queued;
	
	if (VAR_0->ifs_next !=  VAR_0) {
		insque(VAR_0->ifs_next, VAR_1);
		ifs_remque(VAR_0);
	}
	
	if (VAR_0->ifq_so) {
		if (--VAR_0->ifq_so->so_queued == 0)
		   
		   VAR_0->ifq_so->so_nqueued = 0;
	}
	
        if_encap(VAR_0->m_data, VAR_0->m_len);
	if (if_queued)
	   goto again;
}
FUNC_0(void)
{ struct mbuf *VAR_0, *VAR_1; DEBUG_CALL("FUNC_0"); if (if_queued == 0)
return; again:
if (!slirp_can_output())
return; if (if_fastq.ifq_next != &if_fastq) { VAR_0 = if_fastq.ifq_next; } else { if (next_m != &if_batchq)
VAR_0 = next_m; else
VAR_0 = if_batchq.ifq_next; next_m = VAR_0->ifq_next; } VAR_1 = VAR_0->ifq_prev; remque(VAR_0); --if_queued; if (VAR_0->ifs_next !=  VAR_0) { insque(VAR_0->ifs_next, VAR_1); ifs_remque(VAR_0); } if (VAR_0->ifq_so) { if (--VAR_0->ifq_so->so_queued == 0)
VAR_0->ifq_so->so_nqueued = 0; } if_encap(VAR_0->m_data, VAR_0->m_len); if (if_queued)
goto again; }