ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/Android.mk b/package/kernel/realtek-wl/src/Users/wireless_tools.25/Android.mk
new file mode 100644
index 0000000..39a29bc
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/Android.mk
@@ -0,0 +1,35 @@
+LOCAL_PATH := $(call my-dir)
+
+#########################
+
+LIBS= -lm
+CFLAGS := -W -Wall -Wstrict-prototypes $(CFLAGS)
+CFLAGS += $(EXTRA_CFLAGS)
+
+ifeq ($(SLINK),1)
+CFLAGS  += -ffunction-sections -fdata-sections
+LDFLAGS += --static -s -Wl,--gc-sections
+endif
+
+########################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_PRELINK_MODULE := false
+LOCAL_SRC_FILES := iwlib.c
+LOCAL_MODULE := libiw
+LOCAL_CFLAGS := -Os -Wall $(CFLAGS) -D__ANDROID__
+LOCAL_SHARED_LIBRARIES := libc
+include $(BUILD_SHARED_LIBRARY)
+
+#########################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := iwpriv.c
+LOCAL_MODULE := iwpriv
+LOCAL_SHARED_LIBRARIES := libc libiw
+LOCAL_CFLAGS := -Os -Wall $(CFLAGS) -D__ANDROID__
+#LOCAL_C_INCLUDES:= $(KERNEL_HEADERS) $(INCS) $(LOCAL_PATH)/../../include 
+include $(BUILD_EXECUTABLE)
+
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/CHANGELOG.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/CHANGELOG.h
new file mode 100644
index 0000000..b1944a0
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/CHANGELOG.h
@@ -0,0 +1,342 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB 97->99 - HPL 99->02
+ *
+ * The changelog...
+ *
+ * This files is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+/* --------------------------- HISTORY --------------------------- */
+/*
+ * wireless 16 :		(Jean Tourrilhes)
+ * -----------
+ *	o iwconfig, iwpriv & iwspy
+ *
+ * wireless 17 :		(Justin Seger)
+ * -----------
+ *	o Compile under glibc fix
+ *	o merge iwpriv in iwconfig
+ *	o Add Wavelan roaming support
+ *	o Update man page of iwconfig
+ *
+ * wireless 18 :
+ * -----------
+ *		(From Andreas Neuhaus <andy@fasta.fh-dortmund.de>)
+ *	o Many fix to remove "core dumps" in iwconfig
+ *	o Remove useless headers in iwconfig
+ *	o CHAR wide private ioctl
+ *		(From Jean Tourrilhes)
+ *	o Create iwcommon.h and iwcommon.c
+ *	o Separate iwpriv again for user interface issues
+ *	  The folllowing didn't make sense and crashed :
+ *		iwconfig eth0 priv sethisto 12 15 nwid 100
+ *	o iwspy no longer depend on net-tools-1.2.0
+ *	o Reorganisation of the code, cleanup
+ *	o Add ESSID stuff in iwconfig
+ *	o Add display of level & noise in dBm (stats in iwconfig)
+ *	o Update man page of iwconfig and iwpriv
+ *	o Add xwireless (didn't check if it compiles)
+ *		(From Dean W. Gehnert <deang@tpi.com>)
+ *	o Minor fixes
+ *		(Jan Rafaj <rafaj@cedric.vabo.cz>)
+ *	o Cosmetic changes (sensitivity relative, freq list)
+ *	o Frequency computation on double
+ *	o Compile clean on libc5
+ *		(From Jean Tourrilhes)
+ *	o Move listing of frequencies to iwspy
+ *	o Add AP address stuff in iwconfig
+ *	o Add AP list stuff in iwspy
+ *
+ * wireless 19 :
+ * -----------
+ *		(From Jean Tourrilhes)
+ *	o Allow for sensitivity in dBm (if < 0) [iwconfig]
+ *	o Formatting changes in displaying ap address in [iwconfig]
+ *	o Slightly improved man pages and usage display
+ *	o Add channel number for each frequency in list [iwspy]
+ *	o Add nickname... [iwconfig]
+ *	o Add "port" private ioctl shortcut [iwpriv]
+ *	o If signal level = 0, no range or dBms [iwconfig]
+ *	o I think I now got set/get char strings right in [iwpriv]
+ *		(From Thomas Ekstrom <tomeck@thelogic.com>)
+ *	o Fix a very obscure bug in [iwspy]
+ *
+ * wireless 20 :
+ * -----------
+ *		(From Jean Tourrilhes)
+ *	o Remove all #ifdef WIRELESS ugliness, but add a #error :
+ *		we require Wireless Extensions 9 or nothing !  [all]
+ *	o Switch to new 'nwid' definition (specific -> iw_param) [iwconfig]
+ *	o Rewriten totally the encryption support [iwconfig]
+ *		- Multiple keys, through key index
+ *		- Flexible/multiple key size, and remove 64bits upper limit
+ *		- Open/Restricted modes
+ *		- Enter keys as ASCII strings
+ *	o List key sizes supported and all keys in [iwspy]
+ *	o Mode of operation support (ad-hoc, managed...) [iwconfig]
+ *	o Use '=' to indicate fixed instead of ugly '(f)' [iwconfig]
+ *	o Ability to disable RTS & frag (off), now the right way [iwconfig]
+ *	o Auto as an input modifier for bitrate [iwconfig]
+ *	o Power Management support [iwconfig]
+ *		- set timeout or period and its value
+ *		- Reception mode (unicast/multicast/all)
+ *	o Updated man pages with all that ;-)
+ *
+ * wireless 21 :
+ * -----------
+ *		(from Alan McReynolds <alan_mcreynolds@hpl.hp.com>)
+ *	o Use proper macros for compilation directives [Makefile]
+ *		(From Jean Tourrilhes)
+ *	o Put licensing info everywhere (almost). Yes, it's GPL !
+ *	o Document the use of /etc/pcmcia/wireless.opts [PCMCIA]
+ *	o Add min/max modifiers to power management parameters [iwconfig]
+ *		-> requested by Lee Keyser-Allen for the Spectrum24 driver
+ *	o Optionally output a second power management parameter [iwconfig]
+ *	---
+ *	o Common subroutines to display stats & power saving info [iwcommon]
+ *	o Display all power management info, capability and values [iwspy]
+ *	---
+ *	o Optional index for ESSID (for Aironet driver) [iwcommon]
+ *	o IW_ENCODE_NOKEY for write only keys [iwconfig/iwspy]
+ *	o Common subrouting to print encoding keys [iwspy]
+ *	---
+ *	o Transmit Power stuff (dBm + mW) [iwconfig/iwspy]
+ *	o Cleaner formatting algorithm when displaying params [iwconfig]
+ *	---
+ *	o Fix get_range_info() and use it everywhere - Should fix core dumps.
+ *	o Catch WE version differences between tools and driver and
+ *	  warn user. Thanks to Tobias Ringstrom for the tip... [iwcommon]
+ *	o Add Retry limit and lifetime support. [iwconfig/iwlist]
+ *	o Display "Cell:" instead of "Access Point:" in ad-hoc mode [iwconfig]
+ *	o Header fix for glibc2.2 by Ross G. Miller <Ross_Miller@baylor.edu>
+ *	o Move header selection flags in Makefile [iwcommon/Makefile]
+ *	o Spin-off iwlist.c from iwspy.c. iwspy is now much smaller
+ *	  After moving this bit of code all over the place, from iwpriv
+ *	  to iwconfig to iwspy, it now has a home of its own... [iwspy/iwlist]
+ *	o Wrote quick'n'dirty iwgetid.
+ *	o Remove output of second power management parameter [iwconfig]
+ *	  Please use iwlist, I don't want to bloat iwconfig
+ *	---
+ *	o Fix bug in display ints - "Allen Miu" <aklmiu@mit.edu> [iwpriv]
+ *
+ * wireless 22 :
+ * -----------
+ *		(From Jim Kaba <jkaba@sarnoff.com>)
+ *	o Fix socket_open to not open all types of sockets [iwcommon]
+ *		(From Michael Tokarev <mjt@tls.msk.ru>)
+ *	o Rewrite main (top level) + command line parsing of [iwlist]
+ *		(From Jean Tourrilhes)
+ *	o Set commands should return proper success flag [iwspy/iwpriv]
+ *	  requested by Michael Tokarev
+ *	---
+ *		(From Torgeir Hansen <torgeir@trenger.ro>)
+ *	o Replace "strcpy(wrq.ifr_name," with strncpy to avoid buffer
+ *	  overflows. This is OK because the kernel use strncmp...
+ *	---
+ *	o Move operation_mode in iwcommon and add NUM_OPER_MODE [iwconfig]
+ *	o print_stats, print_key, ... use char * instead if FILE * [iwcommon]
+ *	o Add `iw_' prefix to avoid namespace pollution [iwcommon]
+ *	o Add iw_get_basic_config() and iw_set_basic_config() [iwcommon]
+ *	o Move iw_getstats from iwconfig to iwcommon [iwcommon]
+ *	o Move changelog to CHANGELOG.h [iwcommon]
+ *	o Rename iwcommon.* into iwlib.* [iwcommon->iwlib]
+ *	o Compile iwlib. as a dynamic or static library [Makefile]
+ *	o Allow the tools to be compiled with the dynamic library [Makefile]
+ *	--- Update to Wireless Extension 12 ---
+ *	o Show typical/average quality in iwspy [iwspy]
+ *	o Get Wireless Stats through ioctl instead of /proc [iwlib]
+ *
+ * wireless 23 :
+ * -----------
+ *	o Split iw_check_addr_type() into two functions mac/if [iwlib]
+ *	o iw_in_addr() does appropriate iw_check_xxx itself  [iwlib]
+ *	o Allow iwspy on MAC address even if IP doesn't check [iwspy]
+ *	o Allow iwconfig ap on MAC address even if IP doesn't check [iwconfig]
+ *	---
+ *	o Fix iwlist man page about extra commands [iwlist]
+ *	---
+ *	o Fix Makefile rules for library compile (more generic) [Makefile]
+ *	---
+ *	o Set max length for all GET request with a iw_point [various]
+ *	o Fix set IW_PRIV_TYPE_BYTE to be endian/align clean [iwpriv]
+ *	---
+ *		(From Kernel Jake <kerneljake@hotmail.com>)
+ *	o Add '/' at the end of directories to create them [Makefile]
+ *		(From Pavel Roskin <proski@gnu.org>)
+ *	o Replace "cp" with "install" to get permissions proper [Makefile]
+ *	o Install Man-Pages at the proper location [Makefile]
+ *	o Add automatic header selection based on libc/kernel [iwlib.h]
+ *	---
+ *	o Add "commit" to force parameters on the card [iwconfig]
+ *	o Wrap ioctl() in iw_set/get_ext() wrappers [all]
+ *	o Beautify set request error messages [iwconfig]
+ *
+ * wireless 24 :
+ * -----------
+ *	o Added common function to display frequency [iwlib]
+ *	o Added handler to parse Wireless Events [iwlib]
+ *	o Added tool to display Wireless Events [iwevent]
+ *	o Pass command line to subroutines [iwlist]
+ *	o Scanning support through SIOCSIWSCAN [iwlist]
+ *	---
+ *	o Added common function to display bitrate [iwlib]
+ *	o Add bitrate/encoding scanning support [iwlist]
+ *	o Allow to read scan results for non-root users [iwlist]
+ *	o Set 5s timeout on waiting for scan results [iwlist]
+ *	o Cleanup iwgetid & support ap+scheme display [iwgetid]
+ *	o iwevent man page [iwevent]
+ *		(From Guus Sliepen <guus@warande3094.warande.uu.nl>)
+ *	o iwgetid man page [iwgetid]
+ *	---
+ *	o Add "#define WIRELESS_EXT > 13" around event code [iwlib]
+ *	o Move iw_enum_devices() from iwlist.c to iwlib.c [iwlib]
+ *	o Use iw_enum_devices() everywhere [iwconfig/iwspy/iwpriv]
+ *		(From Pavel Roskin <proski@gnu.org>, rewrite by me)
+ *	o Return proper error message on non existent interfaces [iwconfig]
+ *	o Read interface list in /proc/net/wireless and not SIOCGIFCONF [iwlib]
+ *	---
+ *		(From Pavel Roskin <proski@gnu.org> - again !!!)
+ *	o Don't loose flags when setting encryption key [iwconfig]
+ *	o Add <time.h> [iwevent]
+ *	---
+ *		(From Casey Carter <Casey@Carter.net>)
+ *	o Improved compilations directives, stricter warnings [Makefile]
+ *	o Fix strict warnings (static func, unused args...) [various]
+ *	o New routines to display/input Ethernet MAC addresses [iwlib]
+ *	o Correct my english & spelling [various]
+ *	o Get macaddr to compile [macaddr]
+ *	o Fix range checking in max number of args [iwlist]
+ *	---
+ *	o Display time when we receive event [iwevent]
+ *	---
+ *	o Display time before event, easier to read [iwevent]
+ *		(From "Dr. Michael Rietz" <rietz@mail.amps.de>)
+ *	o Use a generic set of header, may end header mess [iwlib]
+ *		(From Casey Carter <Casey@Carter.net>)
+ *	o Zillions cleanups, small fixes and code reorg [all over]
+ *	o Proper usage/help printout [iwevent, iwgetid, ...]
+ *	---
+ *	o Send broadcast address for iwconfig ethX ap auto/any [iwconfig]
+ *	---
+ *	o Send NULL address for iwconfig ethX ap off [iwconfig]
+ *	o Add iw_in_key() helper (and use it) [iwlib]
+ *	o Create symbolink link libiw.so to libiw.so.XX [Makefile]
+ *		(From Javier Achirica <achirica@ttd.net>)
+ *	o Always send TxPower flags to the driver [iwconfig]
+ *		(From John M. Choi <johnchoi@its.caltech.edu>)
+ *	o Header definition for Slackware (kernel 2.2/glibc 2.2) [iwlib]
+ *
+ * wireless 25 :
+ * -----------
+ *	o Remove library symbolic link before creating it [Makefile]
+ *	o Display error and exit if WE < 14 [iwevent]
+ *		(From Sander Jonkers <sander@grachtzicht.cjb.net>)
+ *	o Fix iwconfig usage display to show "enc off" [iwconfig]
+ *		(From Pavel Roskin <proski@gnu.org>)
+ *	o Formating : add spaces after cell/ap addr [iwconfig]
+ *	---
+ *	o Do driver WE source version verification [iwlib]
+ *		(From Pavel Roskin <proski@gnu.org>)
+ *	o Cleanup user configurable options [Makefile]
+ *	o add FORCE_WEXT_VERSION [Makefile]
+ *	o Add uninstall directived [Makefile]
+ *	o Cleanup version warnings [iwlib]
+ *	o Fix iwconfig usage display to show "mode MODE" [iwconfig]
+ *	o Replace "rm -f + ln -s" with "ln -sfn" in install [Makefile]
+ *	---
+ *	o Add various documentation in source code of [iwpriv]
+ *	o Allow to get more than 16 private ioctl description [iwlib]
+ *	o Ignore ioctl descriptions with null name [iwpriv]
+ *	o Implement sub-ioctls (simple/iw_point) [iwpriv]
+ *	---
+ *	o Add DISTRIBUTIONS file with call for help [README]
+ *	o Change iw_byte_size in iw_get_priv_size [iwlib]
+ *	o Document various bugs of new driver API with priv ioctls [iwpriv]
+ *	o Implement float/addr priv data types [iwpriv]
+ *	o Fix off-by-one bug (priv_size <= IFNAMSIZ) [iwpriv]
+ *	o Reformat/beautify ioctl list display [iwpriv]
+ *	o Add "-a" command line to dump all read-only priv ioctls [iwpriv]
+ *	o Add a sample showing new priv features [sample_priv_addr.c]
+ *	o Update other samples with new driver API [sample_enc.c/sample_pm.c]
+ *	---
+ *	o Fix "iwpriv -a" to not call ioctls not returning anything [iwpriv]
+ *	o Use IW_MAX_GET_SPY in increase number of addresses read [iwspy]
+ *	o Finish fixing the mess of off-by-one on IW_ESSID_MAX_SIZE [iwconfig]
+ *	o Do interface enumeration using /proc/net/dev [iwlib]
+ *	---
+ *	o Display various --version information [iwlib, iwconfig, iwlist]
+ *	o Filled in Debian 2.3 & Red-Hat 7.3 sections in [DISTRIBUTIONS]
+ *	o Filled in Red-Hat 7.2, Mandrake 8.2 and SuSE 8.0 in [DISTRIBUTIONS]
+ *	o Display current freq/channel after the iwrange list [iwlist]
+ *	o Display current rate after the iwrange list [iwlist]
+ *	o Display current txpower after the iwrange list [iwlist]
+ *	o Add BUILD_NOLIBM to build without libm [Makefile]
+ *	o Fix infinite loop on unknown events/scan elements [iwlib]
+ *	o Add IWEVCUSTOM support [iwevent, iwlist]
+ *	o Add IWEVREGISTERED & IWEVEXPIRED support [iwevent]
+ *		(From Pavel Roskin <proski@gnu.org>)
+ *	o Make $(DYNAMIC_LINK) relative (and not absolute) [Makefile]
+ *	---
+ *	o Replace all float occurence with double [iwlib, iwlist]
+ *	o Implement iwgetid --mode [iwgetid]
+ *	o Convert frequency to channel [iwlist, iwlib]
+ *		(Suggested by Pavel Roskin <proski@gnu.org> - always him !)
+ *	o Implement --version across the board [iwspy, iwevent, iwpriv]
+ *	o Implement iwgetid --freq [iwgetid]
+ *	o Display "Access Point/Cell" [iwgetid]
+ *	---
+ *	o New manpage about configuration (placeholder) [wireless.7]
+ *	o Catch properly invalid arg to "iwconfig ethX key" [iwconfig]
+ *	o Put placeholder for Passphrase to key conversion [iwlib]
+ *	o Allow args of "iwconfig ethX key" in any order [iwconfig]
+ *	o Implement token index for private commands [iwpriv]
+ *	o Add IW_MODE_MONITOR for passive monitoring [iwlib]
+ *		I wonder why nobody bothered to ask for it before ;-)
+ *	o Mention distribution specific document in [PCMCIA]
+ *	o Create directories before installing stuff in it [Makefile]
+ *	---
+ *	o Add Debian 3.0 and PCMCIA in [wireless.7]
+ *	o Add iw_protocol_compare() in [iwlib]
+ *	---
+ *	o Complain about version mistmatch at runtime only once [iwlib]
+ *	o Fix IWNAME null termination [iwconfig, iwlib]
+ *	o "iwgetid -p" to display protocol name and check WE support [iwgetid]
+ */
+
+/* ----------------------------- TODO ----------------------------- */
+/*
+ * One day, maybe...
+ *
+ * iwconfig :
+ * --------
+ *	Make disable a per encryption key modifier if some hardware
+ *	requires it.
+ *
+ * iwpriv :
+ * ------
+ *	Remove 'port' and 'roam' cruft now that we have mode in iwconfig
+ *
+ * iwspy :
+ * -----
+ *	Add an "auto" flag to have the driver cache the last n results
+ *
+ * iwlist :
+ * ------
+ *	Add scanning command line modifiers
+ *	More scan types support
+ *
+ * iwevent :
+ * -------
+ *	Make it non root-only
+ *
+ * Doc & man pages :
+ * ---------------
+ *	Update main doc.
+ *
+ * Other :
+ * -----
+ *	What about some graphical tools ?
+ */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/COPYING b/package/kernel/realtek-wl/src/Users/wireless_tools.25/COPYING
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/INSTALL b/package/kernel/realtek-wl/src/Users/wireless_tools.25/INSTALL
new file mode 100644
index 0000000..fa39d77
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/INSTALL
@@ -0,0 +1,65 @@
+Very important note :
+-------------------
+	This release of the Wireless Tools is not compatible with Wireless
+	Extensions earlier than 9.
+	Kernels that support this version of the Wireless Tools are listed
+	below. For all kernels before that, please use the version v19 of
+	the Wireless Tools.
+	You might have headers troubles and it doesn't compile, see below...
+
+You need :
+--------
+	o Compiler and development environment
+	o A kernel supporting wireless extensions version 9 or higher
+		-> from 2.2.14 onward
+		-> from 2.3.24 onward
+		Note : CONFIG_NET_RADIO must be enabled
+	o (Optional) A Pcmcia package supporting Wireless Extension
+	o A driver supporting wireless extensions
+		-> Check my web pages for latest list of drivers,
+			otherwise patch your favourite driver...
+	Note : more recent kernels and drivers are likely to support
+		more wireless extension features...
+
+Compile wireless tools :
+----------------------
+	In theory, a "make" should suffice to create the tools.
+	In practice, there is big troubles with the kernel
+headers. See below for how to fix that.
+	Note : as some internal data structures change from kernel to
+kernel, you are advised to not use the precompiled version of the
+tools but to recompile your own.
+
+Installation :
+------------
+	If I were you, I would not trust a "make install". If you feel
+courageous, just do "make install". It may even do the right
+thing. Actually, with the various bugfixes that happened over the
+time, it nowadays tend to do the right thing.
+	I advise to copy the executable (iwconfig, iwspy and iwpriv)
+in /usr/local/sbin or /usr/sbin. The man pages (iwconfig.8, iwspy.8
+and iwpriv.8) should be copied in /usr/local/man/man8 or
+/usr/man/man8.
+	In fact, if you want to use Pcmcia wireless.opts, this step is
+mandatory...
+
+Kernel headers (why it doesn't compile) :
+---------------------------------------
+	Some changes in the kernel headers and glibc headers are
+making my life difficult. We now have a mechanism to automatically
+select the proper header based on various bits of information (libc
+version & kernel version), but it may fail to do the right thing.
+	You may also see the message :
+		"Your kernel/libc combination is not supported"
+	If this happens to you, you will need to hack the rules at the
+top of iwlib.h and send me the patch.
+
+	The second issue is that some distributions install some
+independant kernel headers in /usr/include. If you upgrade your
+kernel, those headers become out of sync and you don't benefit from
+the latest Wireless Extensions. Even worse, it can sometimes prevent
+the tools from compiling.
+	The trick is to copy the file .../include/linux/wireless.h
+from the kernel to the /usr/include headers.
+
+	Jean <jt@hpl.hp.com>
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/Makefile b/package/kernel/realtek-wl/src/Users/wireless_tools.25/Makefile
new file mode 100644
index 0000000..cbc0d65
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/Makefile
@@ -0,0 +1,182 @@
+##
+## Please check the configurion parameters below
+##
+
+## Installation directory. By default, go in /usr/local
+## Distributions should probably use /usr, but they probably know better...
+PREFIX = /usr/local
+
+## Compiler to use
+#CC = gcc
+#CONFIG_PC :=n
+#CROSS_COMPILE ?=
+#CROSS_COMPILE=mips-wrs-linux-gnu-mips_74k_softfp-glibc_small-
+
+#CROSS_COMPILE=mips-wrs-linux-gnu-mips_74k_softfp-glibc_small-
+CC = $(CROSS_COMPILE)gcc
+
+## Uncomment this to build against this kernel
+# KERNEL_SRC = /usr/src/linux
+
+## Uncomment this to force a particular version of wireless extensions.
+## This would use private copy of Wireless Extension definition instead
+## of the system wide one in /usr/include/linux. Use with care.
+## Can be used to create multiple versions of the tools on the same system
+## for multiple kernels or get around broken distributions.
+# FORCE_WEXT_VERSION = 14
+
+## Uncomment this to build tools using dynamic version of the library
+# BUILD_SHARED = y
+
+## Uncomment this to build without using libm (less efficient)
+## This is mostly useful for embedded platforms
+BUILD_NOLIBM = y
+
+# ***************************************************************************
+# ***** Most users should not need to change anything beyond this point *****
+# ***************************************************************************
+
+# Targets to build
+STATIC=libiw.a
+DYNAMIC=libiw.so.25
+PROGS= iwconfig iwlist iwpriv iwspy iwgetid iwevent
+MANPAGES8=iwconfig.8 iwlist.8 iwpriv.8 iwspy.8 iwgetid.8 iwevent.8
+MANPAGES7=wireless.7
+
+# Composition of the library :
+OBJS = iwlib.o
+
+# Select library to link tool with
+ifdef BUILD_SHARED
+  IWLIB=$(DYNAMIC)
+else
+  IWLIB=$(STATIC)
+endif
+
+# Standard name for dynamic library so that the dynamic linker can pick it.
+# We will just create a symbolic link to the real thing.
+DYNAMIC_LINK= libiw.so
+
+# Install directories
+INSTALL_DIR= $(PREFIX)/sbin/
+INSTALL_LIB= $(PREFIX)/lib/
+INSTALL_INC= $(PREFIX)/include/
+INSTALL_MAN= $(PREFIX)/man/
+
+# Use local header if the version of wireless extensions is specified
+ifdef FORCE_WEXT_VERSION
+  WEXT_FLAG = -DWEXT_HEADER=\"wireless.$(FORCE_WEXT_VERSION).h\"
+endif
+
+RM = rm -f
+
+RM_CMD = $(RM) *.BAK *.bak *.o *.so ,* *~ *.a *.orig *.rej
+
+ifdef KERNEL_SRC
+  KERNEL_INCLUDES = -I $(KERNEL_SRC)/include
+endif
+
+RTK_INCLUDE = -I$(TOP_USERS_DIR)/include
+
+# Do we want to build with or without libm ?
+ifdef BUILD_NOLIBM
+  LIBS=
+  WELIB_FLAG = -DWE_NOLIBM=y
+else
+  LIBS= -lm
+endif
+
+#CFLAGS=-O2 -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
+CFLAGS := -Os -W -Wall -Wstrict-prototypes $(CFLAGS)
+CFLAGS += $(EXTRA_CFLAGS)
+ifeq ($(SLINK),1)
+CFLAGS  += -ffunction-sections -fdata-sections
+LDFLAGS += --static -s -Wl,--gc-sections
+endif
+
+XCFLAGS=$(CFLAGS) $(WARN) $(HEADERS) $(WEXT_FLAG) $(WELIB_FLAG) $(KERNEL_INCLUDES) $(RTK_INCLUDE)
+
+ifeq ($(CONFIG_PC),y)
+XCFLAGS+=-D__PC__
+endif
+
+PICFLAG=-fPIC
+
+all:: $(STATIC) $(DYNAMIC) $(PROGS)
+
+%: %.o
+	$(CC) $(XCFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
+	$(CROSS_COMPILE)strip $@
+%.o: %.c
+	$(CC) $(XCFLAGS) -c $<
+%.so: %.c
+	$(CC) $(XCFLAGS) $(PICFLAG) -c -o $@ $<
+
+iwconfig: iwconfig.o $(IWLIB)
+
+iwlist: iwlist.o $(IWLIB)
+
+iwpriv: iwpriv.o $(IWLIB)
+
+iwspy: iwspy.o $(IWLIB)
+
+iwgetid: iwgetid.o
+
+iwevent: iwevent.o $(IWLIB)
+
+macaddr: macaddr.o $(IWLIB)
+
+# Compilation of the dynamic library
+$(DYNAMIC): $(OBJS:.o=.so)
+	$(CC) -shared -o $@ -Wl,-soname,$@ -lc $^
+
+# Compilation of the static library
+$(STATIC): $(OBJS)
+	$(RM) $@
+	ar cru $@ $^
+	ranlib $@
+
+# So crude but so effective ;-)
+# Less crude thanks to many contributions ;-)
+install::
+	install -m 755 -d $(INSTALL_DIR)
+	install -m 755 $(PROGS) $(INSTALL_DIR)
+	install -m 755 -d $(INSTALL_LIB)
+	install -m 644 $(STATIC) $(INSTALL_LIB)
+	install -m 755 $(DYNAMIC) $(INSTALL_LIB)
+	ln -sfn $(DYNAMIC) $(INSTALL_LIB)/$(DYNAMIC_LINK)
+	echo "Don't forget to add $(INSTALL_LIB) to /etc/ld.so.conf, and run ldconfig."
+	install -m 755 -d $(INSTALL_INC)
+	install -m 644 iwlib.h $(INSTALL_INC)
+	install -m 755 -d $(INSTALL_MAN)/man8/
+	install -m 644 $(MANPAGES8) $(INSTALL_MAN)/man8/
+	install -m 755 -d $(INSTALL_MAN)/man7/
+	install -m 644 $(MANPAGES7) $(INSTALL_MAN)/man7/
+
+clean::
+	$(RM_CMD) $(STATIC) $(DYNAMIC) $(PROGS)
+
+realclean::
+	$(RM_CMD)
+	$(RM) $(STATIC) $(DYNAMIC) $(PROGS) macaddr
+
+uninstall::
+	for f in $(PROGS); do \
+	  $(RM) $(INSTALL_DIR)/$$f; \
+	done
+	$(RM) $(INSTALL_LIB)/$(STATIC)
+	$(RM) $(INSTALL_LIB)/$(DYNAMIC)
+	$(RM) $(INSTALL_LIB)/$(DYNAMIC_LINK)
+	$(RM) $(INSTALL_INC)/iwlib.h
+	for f in $(MANPAGES8); do \
+	  $(RM) $(INSTALL_MAN)/man8/$$f; \
+	for f in $(MANPAGES7); do \
+	  $(RM) $(INSTALL_MAN)/man7/$$f; \
+	done
+
+romfs:
+	$(ROMFSINST) iwpriv /bin/iwpriv
+
+depend::
+	makedepend -s "# DO NOT DELETE" -- $(INCLUDES) -- $(SRCS)
+# DO NOT DELETE
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/README b/package/kernel/realtek-wl/src/Users/wireless_tools.25/README
new file mode 100644
index 0000000..e1ab782
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/README
@@ -0,0 +1,121 @@
+	Wireless Tools
+	--------------
+
+	This package contain the Wireless tools, used to manipulate
+the Wireless Extensions. The Wireless Extension is an interface
+allowing you to set Wireless LAN specific parameters and get the
+specific stats.
+
+web page
+--------
+	You'll find a lot of useful info on :
+		http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
+		http://web.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
+
+INSTALL
+-------
+	This file contains installation instruction and requirements.
+	A *must* read.
+
+PCMCIA.txt
+----------
+	This file describes how to use Pcmcia init script to configure
+Wireless Extensions and how to use Pcmcia schemes.
+
+DISTRIBUTION
+------------
+	This file will document the specifics of Wireless Extensions
+with a few different distributions. I need your help to complete this
+file.
+
+man pages (iwconfig.8, iwlist.8, iwpriv.8, iwspy.8)
+---------
+	VERY IMPORTANT : I try to keep the man page up to date, so
+you'd better read them before asking questions.
+	ALSO IMPORTANT : Those man pages describe the capacity of the
+tools, no device implement the full range (and drivers usually
+implement even less).
+
+	As far as I know, the man pages are the most complete, up to
+date and accurate documentation of the wireless tools. An update of
+the web page related to Wireless Extension is long overdue. Send
+feedback to me.
+	The man pages can either be copied in a location where the
+command "man" will find them, such as /usr/local/man/man8, or can be
+read locally with the command :
+		nroff -man xxx.8 | less
+
+iwconfig.c
+----------
+	The main wireless tool. Used for device configuration and to see
+the most common wireless parameters.
+
+iwlist.c
+--------
+	Display some large chunk of information not displayed by iwconfig.
+	For example, all bit rates, all frequencies, all keys...
+
+iwspy.c
+-------
+	Mobile IP support test and allow get get stats per MAC address
+(instead of globally). Also, for some driver/device, this is the only
+way to get stats in Ad-Hoc mode.
+
+iwpriv.c
+--------
+	Manipulate driver private ioctls : all parameters that are
+specific to a driver or a device and therefore not part of iwconfig.
+
+iwgetid.c
+---------
+	Output the ESSID or NWID of the specified device.
+	Can also output it in a form that can be used as a Pcmcia Scheme.
+
+iwevent.c
+---------
+	Display Wireless Events. This is new, so there is not much support
+in drivers for it yet...
+
+iwlib.c
+-------
+	The Wireless Tools helper library. May be usefull if you want
+to create your own applications using Wireless Extensions.
+
+Changelog, contributions
+------------------------
+	See CHANGELOG.h
+
+wireless.h
+----------
+	Definition of the Wireless Extensions. Remember that the
+definition used by the drivers and the tools must match, otherwise
+funny things may happen. The tools try to check for that.
+	Since Wireless Extensions v12, you can no longer drop this
+file in your kernel headers to update the Wireless Extensions, you
+need to use the full patches available on my web page. So, the use is
+more if you plan to do some cross compile or something similar.
+	Just for your enjoyement, there is various release of it. If
+your kernel/drivers are old, you may want to try the older releases...
+
+sample_xxx.c :
+------------
+	Various samples of code showing how to implement some of the
+more tricky feature of Wireless Extensions in your driver.
+	Note that there is no guarantee that this code compile, let
+alone work, but it should point you in the proper direction.
+	Also, have a look at existing drivers in the Linux kernel.
+
+Other tools :
+-----------
+	My web page list many other tools using Wireless
+Extensions that you may find useful...
+	http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html#links
+
+Other questions :
+---------------
+	You have the source, and it is documented. In 99% of the case,
+you will find your answer there.
+
+	Good luck...
+
+	Jean <jt@hpl.hp.com>
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.8
new file mode 100644
index 0000000..377a3f2
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.8
@@ -0,0 +1,457 @@
+.\" Jean II - HPLB - 96
+.\" iwconfig.8
+.\"
+.TH IWCONFIG 8 "31 October 1996" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwconfig \- configure a wireless network interface
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwconfig [" interface ]
+.br
+.BI "iwconfig " interface " [essid " X "] [nwid " N "] [freq " F "] [channel " C ]
+.br
+.BI "                   [sens " S "] [mode " M "] [ap " A "] [nick " NN ]
+.br
+.BI "                   [rate " R "] [rts " RT "] [frag " FT "] [txpower " T ]
+.br
+.BI "                   [enc " E "] [key " K "] [power " P "] [retry " R ]
+.br
+.BI "                   [commit]
+.br
+.BI "iwconfig --help"
+.br
+.BI "iwconfig --version"
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B Iwconfig
+is similar to
+.IR ifconfig (8),
+but is dedicated to the wireless interfaces. It is used to set the
+parameters of the network interface which are specific to the wireless
+operation (for example : the frequency).
+.B Iwconfig
+may also be used to display those parameters, and the wireless
+statistics (extracted from
+.IR /proc/net/wireless ).
+.PP
+All these parameters and statistics are device dependant. Each driver
+will provide only some of them depending on the hardware support, and
+the range of value may change. Please refer to the man page of each
+device for details.
+.\"
+.\" PARAMETER part
+.\"
+.SH PARAMETERS
+.TP
+.B essid
+Set the ESSID (or Network Name - in some products it may also called
+Domain ID). The ESSID is used to identify cells which are part of the
+same virtual network.
+.br
+As opposed to the NWID which defines a single cell, the ESSID defines
+a group of cell connected via repeaters or infrastructure, where the
+user may roam.  With some card, you may disable the ESSID checking
+(ESSID promiscuous) with
+.IR off " or " any " (and " on
+to reenable it).
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 essid any"
+.br
+.I "	iwconfig eth0 essid ""My Network""
+.TP
+.BR nwid / domain
+Set the Network ID (in some products it is also called Domain ID). As
+all adjacent wireless networks share the same medium, this parameter
+is used to differenciate them (create logical colocated networks) and
+identify nodes belonguing to the same cell. With some card, you may
+disable the Network ID checking (NWID promiscuous) with
+.IR off " (and " on
+to reenable it).
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 nwid AB34
+.br
+.I "	iwconfig eth0 nwid off"
+.TP
+.BR freq / channel
+Set the operating frequency or channel in the device. Value below 1000
+are the channel number, value over this is the frequency in Hz. You
+must append the suffix k, M or G to the value (for example, "2.46G"
+for 2.46 GHz frequency), or add enough '0'.
+.br
+Channels are usually numbered starting at 1,
+and you may use
+.IR iwpriv (8)
+to get the total number of channels and list the available
+frequencies. Depending on regulations, some frequencies/channels may
+not be available.
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 freq 2.422G"
+.br
+.I "	iwconfig eth0 channel 3"
+.TP
+.B sens
+Set the sensitivity threshold. This is the lowest signal level for
+which we attempt a packet reception, signal lower than this are not
+received. This is used to avoid receiving background noise, so you
+should set it according to the average noise level. Positive values
+are assumed to be the raw value used by the hardware or a percentage,
+negative values are assumed to be dBm.
+.br
+With some hardware, this parameter also control the defer threshold
+(lowest signal level for which we consider the channel busy) and the
+handover threshold (lowest signal level where we stay associated with
+the current access point).
+.br
+.B Example :
+.br
+.I "	iwconfig eth0 sens -80"
+.TP
+.B mode
+Set the operating mode of the device, which depends on the network
+topology. The mode can be
+.I Ad-hoc
+(network composed of only one cell and without Access Point),
+.I Managed
+(node connects to a network composed of many Access Points, with roaming),
+.I Master
+(the node is the synchronisation master or act as an Access Point),
+.I Repeater
+(the node forward packets between other wireless nodes),
+.I Secondary
+(the node act as a backup master/repeater),
+.I Monitor
+(the node act as a passive monitor and only receives packets) or
+.IR Auto .
+.br
+.B Example :
+.br
+.I "	iwconfig eth0 mode Managed"
+.br
+.I "	iwconfig eth0 mode Ad-Hoc"
+.TP
+.B ap
+Force the card to register to the Access Point given by the address,
+if it is possible. When the quality of the connection goes too low,
+the driver may revert back to automatic mode (the card finds the best
+Access Point in range).
+.br
+You may also use
+.I off
+to re-enable automatic mode without changing the current Access Point,
+or you may use
+.I any
+or
+.I auto
+to force the card to reassociate with the current best Access Point.
+.br
+.B Example :
+.br
+.I "	iwconfig eth0 ap 00:60:1D:01:23:45"
+.br
+.I "	iwconfig eth0 ap any"
+.br
+.I "	iwconfig eth0 ap off"
+.TP
+.BR nick [name]
+Set the nickname, or the station name. Most 802.11 products do define
+it, but this is not used as far as the protocols (MAC, IP, TCP) are
+concerned and completely accessory as far as configuration goes. In
+fact only some diagnostic tools may use it.
+.br
+.B Example :
+.br
+.I "	iwconfig eth0 nickname ""My Linux Node""
+.TP
+.BR rate / bit [rate]
+For cards supporting multiple bit rates, set the bit-rate in b/s. The
+bit-rate is the speed at which bits are transmitted over the medium,
+the user speed of the link is lower due to medium sharing and
+overhead.
+.br
+You must append the suffix k, M or G to the value (decimal multiplier
+: 10^3, 10^6 and 10^9 b/s), or add enough '0'. Values below 1000 are
+card specific, usually an index in the bit-rate list. Use
+.I auto
+to select the automatic bit-rate mode (fallback to lower rate on noisy
+channels), which is the default for most cards, and
+.I fixed
+to revert back to fixed setting. If you specify a bit-rate value and append
+.IR auto ,
+the driver will use all bit lower and equal than this value.
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 rate 11M"
+.br
+.I "	iwconfig eth0 rate auto"
+.br
+.I "	iwconfig eth0 rate 5.5M auto"
+.TP
+.BR rts [_threshold]
+RTS/CTS adds a handshake before each packet transmission to make sure
+that the channel is clear. This adds overhead, but increase
+performance in case of hidden nodes or large number of active
+nodes. This parameters set the size of the smallest packet for which
+the node sends RTS, a value equal to the maximum packet size disable
+the scheme. You may also set this parameter to
+.IR auto ", " fixed " or " off .
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 rts 250"
+.br
+.I "	iwconfig eth0 rts off"
+.TP
+.BR frag [mentation_threshold]
+Fragmentation allow to split a IP packet in a burst of smaller
+fragments transmitted on the medium. In most cases this adds overhead,
+but in very noisy environment this reduce the error penalty. This
+parameter set the maximum fragment size, a value equal to the maximum
+packet size disable the scheme. You may also set this parameter to
+.IR auto ", " fixed " or " off .
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 frag 512"
+.br
+.I "	iwconfig eth0 frag off"
+.TP
+.BR key / enc [ryption]
+Used to manipulate encryption or scrambling keys and encryption mode.
+.br
+To set the current encryption key, just enter the key in hex digits as
+.IR XXXX-XXXX-XXXX-XXXX " or " XXXXXXXX .
+To set a key other than the current key, prepend or append
+.I [index]
+to the key itself (this won't change which is the active key). You can
+also enter the key as an ASCII string by using the
+.I s:
+prefix. Passphrase is currently not supported.
+.br
+To change which key is the current active key, just enter
+.I [index]
+(without entering any key value).
+.br
+.IR off " and " on
+disable and reenable encryption,
+.I open
+set the system in open mode (accept non-encrypted packets) and
+.I restricted
+discard non-encrypted packets.
+.br
+If you need to set multiple keys, or set a key and change the active
+key, you need to use multiple
+.B key
+directives. Arguments can be put in any order, the last one will take
+precendence.
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 key 0123-4567-89"
+.br
+.I "	iwconfig eth0 key s:password [2]"
+.br
+.I "	iwconfig eth0 key [2] open"
+.br
+.I "	iwconfig eth0 key off"
+.br
+.I "	iwconfig eth0 key restricted [3] 0123456789"
+.br
+.I "	iwconfig eth0 key 01-23 key 45-67 [4] key [4]"
+.TP
+.BR power
+Used to manipulate power management scheme parameters and mode.
+.br
+To set the period between wake up, enter
+.IR "period `value'" .
+To set the timeout before going back to sleep, enter
+.IR "timeout `value'" .
+You can also add the
+.IR min " and " max
+modifiers. By defaults, those values are in seconds, append the
+suffix m or u to specify values un milliseconds or
+microseconds. Sometimes, those values are without units (number of
+dwell or the like).
+.br
+.IR off " and " on
+disable and reenable power management. Finally, you may set the power
+management mode to
+.I all
+(receive all packets),
+.I unicast
+(receive unicast packets only, discard multicast and broadcast) and
+.I multicast
+(receive multicast and broadcast only, discard unicast packets).
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 power period 2"
+.br
+.I "	iwconfig eth0 power 500m unicast"
+.br
+.I "	iwconfig eth0 power timeout 300u all"
+.br
+.I "	iwconfig eth0 power off"
+.br
+.I "	iwconfig eth0 power min period 2 power max period 4"
+.TP
+.BR txpower
+For cards supporting multiple transmit powers, set the transmit power in dBm. If 
+.I W
+is the power in Watt, the power in dBm is
+.IR "P = 30 + 10.log(W)" .
+If the value is postfixed by
+.IR mW ,
+it will be automatically converted to dBm.
+.br
+In addition, 
+.IR on " and " off
+enable and disable the radio, and
+.IR auto " and " fixed
+enable and disable power control (if those features are available).
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 txpower 15"
+.br
+.I "	iwconfig eth0 txpower 30mW"
+.br
+.I "	iwconfig eth0 txpower auto"
+.br
+.I "	iwconfig eth0 txpower off"
+.TP
+.BR retry
+Most cards have MAC retransmissions, and some allow to set the
+behaviour of the retry mechanism.
+.br
+To set the maximum number of retries, enter
+.IR "limit `value'" .
+This is an absolute value (without unit).
+The set the maximum length of time the MAC should retry, enter
+.IR "lifetime `value'" .
+By defaults, this value in in seconds, append the suffix m or u to
+specify values un milliseconds or microseconds.
+.br
+You can also add the
+.IR min " and " max
+modifiers. If the card support automatic mode, they define the bounds
+of the limit or lifetime. Some other cards define different values
+depending on packet size, for example in 802.11
+.I min limit
+is the short retry limit (non RTS/CTS packets).
+.br
+.B Examples :
+.br
+.I "	iwconfig eth0 retry 16"
+.br
+.I "	iwconfig eth0 retry lifetime 300m"
+.br
+.I "	iwconfig eth0 retry min limit 8"
+.TP
+.BR commit
+Some cards may not apply changes done through Wireless Extensions
+immediately (they may wait to agregate the changes or apply it only
+when the card is brought up via ifconfig). This command (when
+available) force the card to apply all pending changes.
+.br
+This is normally not needed, because the card will eventually apply
+the changes, but can be usefull for debugging.
+.\"
+.\" DISPLAY part
+.\"
+.SH DISPLAY
+For each device which support wireless extensions,
+.I iwconfig
+will display the name of the
+.B MAC protocol
+used (name of device for proprietary protocols), the
+.B ESSID
+(Network Name), the
+.BR NWID ,
+the
+.B frequency
+(or channel), the
+.BR sensitivity ,
+the
+.B mode
+of operation, the
+.B Access Point
+address, the
+.B bit-rate
+the
+.BR "RTS threshold" ", the " "fragmentation threshold" ,
+the
+.B encryption key
+and the
+.B power management
+settings (depending on availability).
+.br
+See above for explanations of what these parameters mean.
+.br
+If the label for bitrate is followed by
+.RB ` = ',
+it means that the parameter is fixed and forced to that value, if it
+is followed by
+.RB ` : '
+it is only the current value (device in normal auto mode).
+.PP
+If
+.I /proc/net/wireless
+exists,
+.I iwconfig
+will also display its content :
+.TP
+.B Link quality
+Quality of the link or the modulation (what is the level of contention
+or interference, or how good the received signal is).
+.TP
+.B Signal level
+Received signal strength (how strong the received signal is).
+.TP
+.B Noise level
+Background noise level (when no packet is transmited).
+.TP
+.B invalid nwid
+Number of packets received with a different NWID. Used to detect
+configuration problems or adjacent network existence.
+.TP
+.B invalid crypt
+Number of packets that the hardware was unable to decrypt.
+.TP
+.B invalid misc
+Other packets lost in relation with specific wireless operations.
+.\"
+.\" AUTHOR part
+.\"
+.SH AUTHOR
+Jean Tourrilhes \- jt@hpl.hp.com
+.\"
+.\" FILES part
+.\"
+.SH FILES
+.I /proc/net/wireless
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR ifconfig (8),
+.BR iwspy (8),
+.BR iwlist (8),
+.BR iwpriv (8),
+.BR wavelan (4),
+.BR wavelan_cs (4),
+.BR wvlan_cs (4),
+.BR netwave_cs (4).
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.c
new file mode 100644
index 0000000..a81ee9f
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwconfig.c
@@ -0,0 +1,1379 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB 97->99 - HPL 99->01
+ *
+ * Main code for "iwconfig". This is the generic tool for most
+ * manipulations...
+ * You need to link this code against "iwlib.c" and "-lm".
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#include "iwlib.h"		/* Header */
+
+/************************* MISC SUBROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print usage string
+ */
+static void
+iw_usage(void)
+{
+  fprintf(stderr, "Usage: iwconfig interface [essid {NN|on|off}]\n");
+  fprintf(stderr, "                          [nwid {NN|on|off}]\n");
+  fprintf(stderr, "                          [mode {managed|ad-hoc|...}\n");
+  fprintf(stderr, "                          [freq N.NNNN[k|M|G]]\n");
+  fprintf(stderr, "                          [channel N]\n");
+  fprintf(stderr, "                          [sens N]\n");
+  fprintf(stderr, "                          [nick N]\n");
+  fprintf(stderr, "                          [rate {N|auto|fixed}]\n");
+  fprintf(stderr, "                          [rts {N|auto|fixed|off}]\n");
+  fprintf(stderr, "                          [frag {N|auto|fixed|off}]\n");
+  fprintf(stderr, "                          [enc {NNNN-NNNN|off}]\n");
+  fprintf(stderr, "                          [power {period N|timeout N}]\n");
+  fprintf(stderr, "                          [txpower N {mW|dBm}]\n");
+  fprintf(stderr, "                          [commit]\n");
+  fprintf(stderr, "       Check man pages for more details.\n\n");
+}
+
+
+/************************* DISPLAY ROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Get wireless informations & config from the device driver
+ * We will call all the classical wireless ioctl on the driver through
+ * the socket to know what is supported and to get the settings...
+ */
+static int
+get_info(int			skfd,
+	 char *			ifname,
+	 struct wireless_info *	info)
+{
+  struct iwreq		wrq;
+
+  memset((char *) info, 0, sizeof(struct wireless_info));
+
+  /* Get wireless name */
+  if(iw_get_ext(skfd, ifname, SIOCGIWNAME, &wrq) < 0)
+    {
+      /* If no wireless name : no wireless extensions */
+      /* But let's check if the interface exists at all */
+      struct ifreq ifr;
+
+      strcpy(ifr.ifr_name, ifname);
+      if(ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0)
+	return(-ENODEV);
+      else
+	return(-ENOTSUP);
+    }
+  else
+    {
+      strncpy(info->name, wrq.u.name, IFNAMSIZ);
+      info->name[IFNAMSIZ] = '\0';
+    }
+
+  /* Get ranges */
+  if(iw_get_range_info(skfd, ifname, &(info->range)) >= 0)
+    info->has_range = 1;
+
+  /* Get network ID */
+  if(iw_get_ext(skfd, ifname, SIOCGIWNWID, &wrq) >= 0)
+    {
+      info->has_nwid = 1;
+      memcpy(&(info->nwid), &(wrq.u.nwid), sizeof(iwparam));
+    }
+
+  /* Get frequency / channel */
+  if(iw_get_ext(skfd, ifname, SIOCGIWFREQ, &wrq) >= 0)
+    {
+      info->has_freq = 1;
+      info->freq = iw_freq2float(&(wrq.u.freq));
+    }
+
+  /* Get sensitivity */
+  if(iw_get_ext(skfd, ifname, SIOCGIWSENS, &wrq) >= 0)
+    {
+      info->has_sens = 1;
+      memcpy(&(info->sens), &(wrq.u.sens), sizeof(iwparam));
+    }
+
+  /* Get encryption information */
+  wrq.u.data.pointer = (caddr_t) info->key;
+  wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWENCODE, &wrq) >= 0)
+    {
+      info->has_key = 1;
+      info->key_size = wrq.u.data.length;
+      info->key_flags = wrq.u.data.flags;
+    }
+
+  /* Get ESSID */
+  wrq.u.essid.pointer = (caddr_t) info->essid;
+  wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
+  wrq.u.essid.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWESSID, &wrq) >= 0)
+    {
+      info->has_essid = 1;
+      info->essid_on = wrq.u.data.flags;
+    }
+
+  /* Get AP address */
+  if(iw_get_ext(skfd, ifname, SIOCGIWAP, &wrq) >= 0)
+    {
+      info->has_ap_addr = 1;
+      memcpy(&(info->ap_addr), &(wrq.u.ap_addr), sizeof (sockaddr));
+    }
+
+  /* Get NickName */
+  wrq.u.essid.pointer = (caddr_t) info->nickname;
+  wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
+  wrq.u.essid.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWNICKN, &wrq) >= 0)
+    if(wrq.u.data.length > 1)
+      info->has_nickname = 1;
+
+  /* Get bit rate */
+  if(iw_get_ext(skfd, ifname, SIOCGIWRATE, &wrq) >= 0)
+    {
+      info->has_bitrate = 1;
+      memcpy(&(info->bitrate), &(wrq.u.bitrate), sizeof(iwparam));
+    }
+
+  /* Get RTS threshold */
+  if(iw_get_ext(skfd, ifname, SIOCGIWRTS, &wrq) >= 0)
+    {
+      info->has_rts = 1;
+      memcpy(&(info->rts), &(wrq.u.rts), sizeof(iwparam));
+    }
+
+  /* Get fragmentation threshold */
+  if(iw_get_ext(skfd, ifname, SIOCGIWFRAG, &wrq) >= 0)
+    {
+      info->has_frag = 1;
+      memcpy(&(info->frag), &(wrq.u.frag), sizeof(iwparam));
+    }
+
+  /* Get operation mode */
+  if(iw_get_ext(skfd, ifname, SIOCGIWMODE, &wrq) >= 0)
+    {
+      info->mode = wrq.u.mode;
+      if((info->mode < IW_NUM_OPER_MODE) && (info->mode >= 0))
+	info->has_mode = 1;
+    }
+
+  /* Get Power Management settings */
+  wrq.u.power.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWPOWER, &wrq) >= 0)
+    {
+      info->has_power = 1;
+      memcpy(&(info->power), &(wrq.u.power), sizeof(iwparam));
+    }
+
+#if WIRELESS_EXT > 9
+  /* Get Transmit Power */
+  if(iw_get_ext(skfd, ifname, SIOCGIWTXPOW, &wrq) >= 0)
+    {
+      info->has_txpower = 1;
+      memcpy(&(info->txpower), &(wrq.u.txpower), sizeof(iwparam));
+    }
+#endif
+
+#if WIRELESS_EXT > 10
+  /* Get retry limit/lifetime */
+  if(iw_get_ext(skfd, ifname, SIOCGIWRETRY, &wrq) >= 0)
+    {
+      info->has_retry = 1;
+      memcpy(&(info->retry), &(wrq.u.retry), sizeof(iwparam));
+    }
+#endif	/* WIRELESS_EXT > 10 */
+
+  /* Get stats */
+  if(iw_get_stats(skfd, ifname, &(info->stats)) >= 0)
+    {
+      info->has_stats = 1;
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print on the screen in a neat fashion all the info we have collected
+ * on a device.
+ */
+static void
+display_info(struct wireless_info *	info,
+	     char *			ifname)
+{
+  char		buffer[128];	/* Temporary buffer */
+
+  /* One token is more of less 5 characters, 14 tokens per line */
+  int	tokens = 3;	/* For name */
+
+  /* Display device name and wireless name (name of the protocol used) */
+  printf("%-8.8s  %s  ", ifname, info->name);
+
+  /* Display ESSID (extended network), if any */
+  if(info->has_essid)
+    {
+      if(info->essid_on)
+	{
+	  /* Does it have an ESSID index ? */
+	  if((info->essid_on & IW_ENCODE_INDEX) > 1)
+	    printf("ESSID:\"%s\" [%d]  ", info->essid,
+		   (info->essid_on & IW_ENCODE_INDEX));
+	  else
+	    printf("ESSID:\"%s\"  ", info->essid);
+	}
+      else
+	printf("ESSID:off/any  ");
+    }
+
+  /* Display NickName (station name), if any */
+  if(info->has_nickname)
+    printf("Nickname:\"%s\"", info->nickname);
+
+  /* Formatting */
+  if(info->has_essid || info->has_nickname)
+    {
+      printf("\n          ");
+      tokens = 0;
+    }
+
+  /* Display Network ID */
+  if(info->has_nwid)
+    {
+      /* Note : should display proper number of digit according to info
+       * in range structure */
+      if(info->nwid.disabled)
+	printf("NWID:off/any  ");
+      else
+	printf("NWID:%X  ", info->nwid.value);
+      tokens +=2;
+    }
+
+  /* Display the current mode of operation */
+  if(info->has_mode)
+    {
+      printf("Mode:%s  ", iw_operation_mode[info->mode]);
+      tokens +=3;
+    }
+
+  /* Display frequency / channel */
+  if(info->has_freq)
+    {
+      iw_print_freq(buffer, info->freq);
+      printf("%s  ", buffer);
+      tokens +=4;
+    }
+
+  /* Display the address of the current Access Point */
+  if(info->has_ap_addr)
+    {
+      /* A bit of clever formatting */
+      if(tokens > 8)
+	{
+	  printf("\n          ");
+	  tokens = 0;
+	}
+      tokens +=6;
+
+      /* Oups ! No Access Point in Ad-Hoc mode */
+      if((info->has_mode) && (info->mode == IW_MODE_ADHOC))
+	printf("Cell:");
+      else
+	printf("Access Point:");
+      printf(" %s  ", iw_pr_ether(buffer, (unsigned char *)info->ap_addr.sa_data));
+    }
+
+  /* Display the currently used/set bit-rate */
+  if(info->has_bitrate)
+    {
+      /* A bit of clever formatting */
+      if(tokens > 11)
+	{
+	  printf("\n          ");
+	  tokens = 0;
+	}
+      tokens +=3;
+
+      /* Display it */
+      iw_print_bitrate(buffer, info->bitrate.value);
+      printf("Bit Rate%c%s   ", (info->bitrate.fixed ? '=' : ':'), buffer);
+    }
+
+#if WIRELESS_EXT > 9
+  /* Display the Transmit Power */
+  if(info->has_txpower)
+    {
+      /* A bit of clever formatting */
+      if(tokens > 11)
+	{
+	  printf("\n          ");
+	  tokens = 0;
+	}
+      tokens +=3;
+
+      /* Disabled ? */
+      if(info->txpower.disabled)
+	printf("Tx-Power:off   ");
+      else
+	{
+	  int		dbm;
+
+	  /* Fixed ? */
+	  if(info->txpower.fixed)
+	    printf("Tx-Power=");
+	  else
+	    printf("Tx-Power:");
+
+	  /* Convert everything to dBm */
+	  if(info->txpower.flags & IW_TXPOW_MWATT)
+	    dbm = iw_mwatt2dbm(info->txpower.value);
+	  else
+	    dbm = info->txpower.value;
+
+	  /* Display */
+	  printf("%d dBm   ", dbm);
+	}
+    }
+#endif
+
+  /* Display sensitivity */
+  if(info->has_sens)
+    {
+      /* A bit of clever formatting */
+      if(tokens > 10)
+	{
+	  printf("\n          ");
+	  tokens = 0;
+	}
+      tokens +=4;
+
+      /* Fixed ? */
+      if(info->sens.fixed)
+	printf("Sensitivity=");
+      else
+	printf("Sensitivity:");
+
+      if(info->has_range)
+	/* Display in dBm ? */
+	if(info->sens.value < 0)
+	  printf("%d dBm  ", info->sens.value);
+	else
+	  printf("%d/%d  ", info->sens.value, info->range.sensitivity);
+      else
+	printf("%d  ", info->sens.value);
+    }
+
+  printf("\n          ");
+  tokens = 0;
+
+#if WIRELESS_EXT > 10
+  /* Display retry limit/lifetime information */
+  if(info->has_retry)
+    { 
+      printf("Retry");
+      /* Disabled ? */
+      if(info->retry.disabled)
+	printf(":off");
+      else
+	{
+	  /* Let's check the value and its type */
+	  if(info->retry.flags & IW_RETRY_TYPE)
+	    {
+	      iw_print_retry_value(buffer,
+				   info->retry.value, info->retry.flags);
+	      printf("%s", buffer);
+	    }
+
+	  /* Let's check if nothing (simply on) */
+	  if(info->retry.flags == IW_RETRY_ON)
+	    printf(":on");
+ 	}
+      printf("   ");
+      tokens += 5;	/* Between 3 and 5, depend on flags */
+    }
+#endif	/* WIRELESS_EXT > 10 */
+
+  /* Display the RTS threshold */
+  if(info->has_rts)
+    {
+      /* Disabled ? */
+      if(info->rts.disabled)
+	printf("RTS thr:off   ");
+      else
+	{
+	  /* Fixed ? */
+	  if(info->rts.fixed)
+	    printf("RTS thr=");
+	  else
+	    printf("RTS thr:");
+
+	  printf("%d B   ", info->rts.value);
+	}
+      tokens += 3;
+    }
+
+  /* Display the fragmentation threshold */
+  if(info->has_frag)
+    {
+      /* A bit of clever formatting */
+      if(tokens > 10)
+	{
+	  printf("\n          ");
+	  tokens = 0;
+	}
+      tokens +=4;
+
+      /* Disabled ? */
+      if(info->frag.disabled)
+	printf("Fragment thr:off");
+      else
+	{
+	  /* Fixed ? */
+	  if(info->frag.fixed)
+	    printf("Fragment thr=");
+	  else
+	    printf("Fragment thr:");
+
+	  printf("%d B   ", info->frag.value);
+	}
+    }
+
+  /* Formating */
+  if(tokens > 0)
+    printf("\n          ");
+
+  /* Display encryption information */
+  /* Note : we display only the "current" key, use iwlist to list all keys */
+  if(info->has_key)
+    {
+      printf("Encryption key:");
+      if((info->key_flags & IW_ENCODE_DISABLED) || (info->key_size == 0))
+	printf("off\n          ");
+      else
+	{
+	  /* Display the key */
+	  iw_print_key(buffer, info->key, info->key_size, info->key_flags);
+	  printf("%s", buffer);
+
+	  /* Other info... */
+	  if((info->key_flags & IW_ENCODE_INDEX) > 1)
+	    printf(" [%d]", info->key_flags & IW_ENCODE_INDEX);
+	  if(info->key_flags & IW_ENCODE_RESTRICTED)
+	    printf("   Encryption mode:restricted");
+	  if(info->key_flags & IW_ENCODE_OPEN)
+	    printf("   Encryption mode:open");
+	  printf("\n          ");
+ 	}
+    }
+
+  /* Display Power Management information */
+  /* Note : we display only one parameter, period or timeout. If a device
+   * (such as HiperLan) has both, the user need to use iwlist... */
+  if(info->has_power)	/* I hope the device has power ;-) */
+    { 
+      printf("Power Management");
+      /* Disabled ? */
+      if(info->power.disabled)
+	printf(":off\n          ");
+      else
+	{
+	  /* Let's check the value and its type */
+	  if(info->power.flags & IW_POWER_TYPE)
+	    {
+	      iw_print_pm_value(buffer, info->power.value, info->power.flags);
+	      printf("%s  ", buffer);
+	    }
+
+	  /* Let's check the mode */
+	  iw_print_pm_mode(buffer, info->power.flags);
+	  printf("%s", buffer);
+
+	  /* Let's check if nothing (simply on) */
+	  if(info->power.flags == IW_POWER_ON)
+	    printf(":on");
+	  printf("\n          ");
+ 	}
+    }
+
+  /* Display statistics */
+  if(info->has_stats)
+    {
+      info->stats.qual.updated = 0x0;	/* Not that reliable, disable */
+      iw_print_stats(buffer, &info->stats.qual, &info->range, info->has_range);
+      printf("Link %s\n", buffer);
+
+#if WIRELESS_EXT > 11
+      printf("          Rx invalid nwid:%d  Rx invalid crypt:%d  Rx invalid frag:%d\n          Tx excessive retries:%d  Invalid misc:%d   Missed beacon:%d\n",
+	     info->stats.discard.nwid,
+	     info->stats.discard.code,
+	     info->stats.discard.fragment,
+	     info->stats.discard.retries,
+	     info->stats.discard.misc,
+	     info->stats.miss.beacon);
+#else /* WIRELESS_EXT > 11 */
+      printf("          Rx invalid nwid:%d  invalid crypt:%d  invalid misc:%d\n",
+	     info->stats.discard.nwid,
+	     info->stats.discard.code,
+	     info->stats.discard.misc);
+#endif /* WIRELESS_EXT > 11 */
+    }
+
+  printf("\n");
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print on the screen in a neat fashion all the info we have collected
+ * on a device.
+ */
+static int
+print_info(int		skfd,
+	   char *	ifname,
+	   char *	args[],
+	   int		count)
+{
+  struct wireless_info	info;
+  int			rc;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  rc = get_info(skfd, ifname, &info);
+  switch(rc)
+    {
+    case 0:	/* Success */
+      /* Display it ! */
+      display_info(&info, ifname);
+      break;
+
+    case -ENOTSUP:
+      fprintf(stderr, "%-8.8s  no wireless extensions.\n\n",
+	      ifname);
+      break;
+
+    default:
+      fprintf(stderr, "%-8.8s  %s\n\n", ifname, strerror(-rc));
+    }
+  return(rc);
+}
+
+/************************* SETTING ROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Macro to handle errors when setting WE
+ * Print a nice error message and exit...
+ * We define them as macro so that "return" do the right thing.
+ * The "do {...} while(0)" is a standard trick
+ */
+#define ERR_SET_EXT(rname, request) \
+	fprintf(stderr, "Error for wireless request \"%s\" (%X) :\n", \
+		rname, request)
+
+#define ABORT_ARG_NUM(rname, request) \
+	do { \
+		ERR_SET_EXT(rname, request); \
+		fprintf(stderr, "    too few arguments.\n"); \
+		return(-1); \
+	} while(0)
+
+#define ABORT_ARG_TYPE(rname, request, arg) \
+	do { \
+		ERR_SET_EXT(rname, request); \
+		fprintf(stderr, "    invalid argument \"%s\".\n", arg); \
+		return(-2); \
+	} while(0)
+
+#define ABORT_ARG_SIZE(rname, request, max) \
+	do { \
+		ERR_SET_EXT(rname, request); \
+		fprintf(stderr, "    argument too big (max %d)\n", max); \
+		return(-3); \
+	} while(0)
+
+/*------------------------------------------------------------------*/
+/*
+ * Wrapper to push some Wireless Parameter in the driver
+ * Use standard wrapper and add pretty error message if fail...
+ */
+#define IW_SET_EXT_ERR(skfd, ifname, request, wrq, rname) \
+	do { \
+	if(iw_set_ext(skfd, ifname, request, wrq) < 0) { \
+		ERR_SET_EXT(rname, request); \
+		fprintf(stderr, "    SET failed on device %-1.8s ; %s.\n", \
+			ifname, strerror(errno)); \
+		return(-5); \
+	} } while(0)
+
+/*------------------------------------------------------------------*/
+/*
+ * Wrapper to extract some Wireless Parameter out of the driver
+ * Use standard wrapper and add pretty error message if fail...
+ */
+#define IW_GET_EXT_ERR(skfd, ifname, request, wrq, rname) \
+	do { \
+	if(iw_get_ext(skfd, ifname, request, wrq) < 0) { \
+		ERR_SET_EXT(rname, request); \
+		fprintf(stderr, "    GET failed on device %-1.8s ; %s.\n", \
+			ifname, strerror(errno)); \
+		return(-6); \
+	} } while(0)
+
+/*------------------------------------------------------------------*/
+/*
+ * Set the wireless options requested on command line
+ * This function is too long and probably should be split,
+ * because it look like the perfect definition of spaghetti code,
+ * but I'm way to lazy
+ */
+static int
+set_info(int		skfd,		/* The socket */
+	 char *		args[],		/* Command line args */
+	 int		count,		/* Args count */
+	 char *		ifname)		/* Dev name */
+{
+  struct iwreq		wrq;
+  int			i;
+
+  /* if nothing after the device name - will never happen */
+  if(count < 1)
+    {
+      fprintf(stderr, "Error : too few arguments.\n");
+      return(-1);
+    }
+
+  /* The other args on the line specify options to be set... */
+  for(i = 0; i < count; i++)
+    {
+      /* ---------- Commit changes to driver ---------- */
+      if(!strncmp(args[i], "commit", 6))
+	{
+	  /* No args */
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWCOMMIT, &wrq,
+			 "Commit changes");
+	  continue;
+	}
+
+      /* ---------- Set network ID ---------- */
+      if((!strcasecmp(args[i], "nwid")) ||
+	 (!strcasecmp(args[i], "domain")))
+	{
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set NWID", SIOCSIWNWID);
+	  if((!strcasecmp(args[i], "off")) ||
+	     (!strcasecmp(args[i], "any")))
+	    wrq.u.nwid.disabled = 1;
+	  else
+	    if(!strcasecmp(args[i], "on"))
+	      {
+		/* Get old nwid */
+		IW_GET_EXT_ERR(skfd, ifname, SIOCGIWNWID, &wrq,
+			       "Set NWID");
+		wrq.u.nwid.disabled = 0;
+	      }
+	    else
+	      if(sscanf(args[i], "%lX", (unsigned long *) &(wrq.u.nwid.value))
+		 != 1)
+		ABORT_ARG_TYPE("Set NWID", SIOCSIWNWID, args[i]);
+	      else
+		wrq.u.nwid.disabled = 0;
+	  wrq.u.nwid.fixed = 1;
+
+	  /* Set new nwid */
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWNWID, &wrq,
+			 "Set NWID");
+	  continue;
+	}
+
+      /* ---------- Set frequency / channel ---------- */
+      if((!strncmp(args[i], "freq", 4)) ||
+	 (!strcmp(args[i], "channel")))
+	{
+	  double		freq;
+
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Frequency", SIOCSIWFREQ);
+	  if(sscanf(args[i], "%lg", &(freq)) != 1)
+	    ABORT_ARG_TYPE("Set Frequency", SIOCSIWFREQ, args[i]);
+	  if(index(args[i], 'G')) freq *= GIGA;
+	  if(index(args[i], 'M')) freq *= MEGA;
+	  if(index(args[i], 'k')) freq *= KILO;
+
+	  iw_float2freq(freq, &(wrq.u.freq));
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWFREQ, &wrq,
+			 "Set Frequency");
+	  continue;
+	}
+
+      /* ---------- Set sensitivity ---------- */
+      if(!strncmp(args[i], "sens", 4))
+	{
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Sensitivity", SIOCSIWSENS);
+	  if(sscanf(args[i], "%d", &(wrq.u.sens.value)) != 1)
+	    ABORT_ARG_TYPE("Set Sensitivity", SIOCSIWSENS, args[i]);
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWSENS, &wrq,
+			 "Set Sensitivity");
+	  continue;
+	}
+
+      /* ---------- Set encryption stuff ---------- */
+      if((!strncmp(args[i], "enc", 3)) ||
+	 (!strcmp(args[i], "key")))
+	{
+	  unsigned char	key[IW_ENCODING_TOKEN_MAX];
+
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Encode", SIOCSIWENCODE);
+
+	  if(!strcasecmp(args[i], "on"))
+	    {
+	      /* Get old encryption information */
+	      wrq.u.data.pointer = (caddr_t) key;
+	      wrq.u.data.length = 0;
+	      wrq.u.data.flags = 0;
+	      IW_GET_EXT_ERR(skfd, ifname, SIOCGIWENCODE, &wrq,
+			     "Set Encode");
+	      wrq.u.data.flags &= ~IW_ENCODE_DISABLED;	/* Enable */
+	    }
+	  else
+	    {
+	      int	gotone = 0;
+	      int	oldone;
+	      int	keylen;
+	      int	temp;
+
+	      wrq.u.data.pointer = (caddr_t) NULL;
+	      wrq.u.data.flags = 0;
+	      wrq.u.data.length = 0;
+
+	      /* Allow arguments in any order (it's safe) */
+	      do
+		{
+		  oldone = gotone;
+
+		  /* -- Check for the key -- */
+		  if(i < count)
+		    {
+		      keylen = iw_in_key(args[i], key);
+		      if(keylen > 0)
+			{
+			  wrq.u.data.length = keylen;
+			  wrq.u.data.pointer = (caddr_t) key;
+			  ++i;
+			  gotone++;
+			}
+		    }
+
+		  /* -- Check for token index -- */
+		  if((i < count) &&
+		     (sscanf(args[i], "[%d]", &temp) == 1) &&
+		     (temp > 0) && (temp < IW_ENCODE_INDEX))
+		    {
+		      wrq.u.encoding.flags |= temp;
+		      ++i;
+		      gotone++;
+		    }
+
+		  /* -- Check the various flags -- */
+		  if((i < count) && (!strcasecmp(args[i], "off")))
+		    {
+		      wrq.u.data.flags |= IW_ENCODE_DISABLED;
+		      ++i;
+		      gotone++;
+		    }
+		  if((i < count) && (!strcasecmp(args[i], "open")))
+		    {
+		      wrq.u.data.flags |= IW_ENCODE_OPEN;
+		      ++i;
+		      gotone++;
+		    }
+		  if((i < count) && (!strncasecmp(args[i], "restricted", 5)))
+		    {
+		      wrq.u.data.flags |= IW_ENCODE_RESTRICTED;
+		      ++i;
+		      gotone++;
+		    }
+		}
+	      while(gotone != oldone);
+
+	      /* Pointer is absent in new API */
+	      if(wrq.u.data.pointer == NULL)
+		wrq.u.data.flags |= IW_ENCODE_NOKEY;
+
+	      /* Check if we have any invalid argument */
+	      if(!gotone)
+		ABORT_ARG_TYPE("Set Encode", SIOCSIWENCODE, args[i]);
+	      /* Get back to last processed argument */
+	      --i;
+	    }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWENCODE, &wrq,
+			 "Set Encode");
+	  continue;
+  	}
+
+      /* ---------- Set ESSID ---------- */
+      if(!strcasecmp(args[i], "essid"))
+	{
+	  char		essid[IW_ESSID_MAX_SIZE + 1];
+
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set ESSID", SIOCSIWESSID);
+	  if((!strcasecmp(args[i], "off")) ||
+	     (!strcasecmp(args[i], "any")))
+	    {
+	      wrq.u.essid.flags = 0;
+	      essid[0] = '\0';
+	    }
+	  else
+	    if(!strcasecmp(args[i], "on"))
+	      {
+		/* Get old essid */
+		wrq.u.essid.pointer = (caddr_t) essid;
+		wrq.u.essid.length = 0;
+		wrq.u.essid.flags = 0;
+		IW_GET_EXT_ERR(skfd, ifname, SIOCGIWESSID, &wrq,
+			       "Set ESSID");
+		wrq.u.essid.flags = 1;
+	      }
+	    else
+	      /* Check the size of what the user passed us to avoid
+	       * buffer overflows */
+	      if(strlen(args[i]) > IW_ESSID_MAX_SIZE)
+		ABORT_ARG_SIZE("Set ESSID", SIOCSIWESSID, IW_ESSID_MAX_SIZE);
+	      else
+		{
+		  int		temp;
+
+		  wrq.u.essid.flags = 1;
+		  strcpy(essid, args[i]);	/* Size checked, all clear */
+
+		  /* Check for ESSID index */
+		  if(((i+1) < count) &&
+		     (sscanf(args[i+1], "[%d]", &temp) == 1) &&
+		     (temp > 0) && (temp < IW_ENCODE_INDEX))
+		    {
+		      wrq.u.essid.flags = temp;
+		      ++i;
+		    }
+		}
+
+	  wrq.u.essid.pointer = (caddr_t) essid;
+	  wrq.u.essid.length = strlen(essid) + 1;
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWESSID, &wrq,
+			 "Set ESSID");
+	  continue;
+	}
+
+      /* ---------- Set AP address ---------- */
+      if(!strcasecmp(args[i], "ap"))
+	{
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set AP Address", SIOCSIWAP);
+
+	  if((!strcasecmp(args[i], "auto")) ||
+	     (!strcasecmp(args[i], "any")))
+	    {
+	      /* Send a broadcast address */
+	      iw_broad_ether(&(wrq.u.ap_addr));
+	    }
+	  else
+	    {
+	      if(!strcasecmp(args[i], "off"))
+		{
+		  /* Send a NULL address */
+		  iw_null_ether(&(wrq.u.ap_addr));
+		}
+	      else
+		{
+		  /* Get the address and check if the interface supports it */
+		  if(iw_in_addr(skfd, ifname, args[i++], &(wrq.u.ap_addr)) < 0)
+		    ABORT_ARG_TYPE("Set AP Address", SIOCSIWAP, args[i-1]);
+		}
+	    }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWAP, &wrq,
+			 "Set AP Address");
+	  continue;
+	}
+
+      /* ---------- Set NickName ---------- */
+      if(!strncmp(args[i], "nick", 4))
+	{
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set Nickname", SIOCSIWNICKN);
+	  if(strlen(args[i]) > IW_ESSID_MAX_SIZE)
+	    ABORT_ARG_SIZE("Set Nickname", SIOCSIWNICKN, IW_ESSID_MAX_SIZE);
+
+	  wrq.u.essid.pointer = (caddr_t) args[i];
+	  wrq.u.essid.length = strlen(args[i]) + 1;
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWNICKN, &wrq,
+			 "Set Nickname");
+	  continue;
+	}
+
+      /* ---------- Set Bit-Rate ---------- */
+      if((!strncmp(args[i], "bit", 3)) ||
+	 (!strcmp(args[i], "rate")))
+	{
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Bit Rate", SIOCSIWRATE);
+	  if(!strcasecmp(args[i], "auto"))
+	    {
+	      wrq.u.bitrate.value = -1;
+	      wrq.u.bitrate.fixed = 0;
+	    }
+	  else
+	    {
+	      if(!strcasecmp(args[i], "fixed"))
+		{
+		  /* Get old bitrate */
+		  IW_GET_EXT_ERR(skfd, ifname, SIOCGIWRATE, &wrq,
+				 "Set Bit Rate");
+		  wrq.u.bitrate.fixed = 1;
+		}
+	      else			/* Should be a numeric value */
+		{
+		  double		brate;
+
+		  if(sscanf(args[i], "%lg", &(brate)) != 1)
+		    ABORT_ARG_TYPE("Set Bit Rate", SIOCSIWRATE, args[i]);
+		  if(index(args[i], 'G')) brate *= GIGA;
+		  if(index(args[i], 'M')) brate *= MEGA;
+		  if(index(args[i], 'k')) brate *= KILO;
+		  wrq.u.bitrate.value = (long) brate;
+		  wrq.u.bitrate.fixed = 1;
+
+		  /* Check for an additional argument */
+		  if(((i+1) < count) &&
+		     (!strcasecmp(args[i+1], "auto")))
+		    {
+		      wrq.u.bitrate.fixed = 0;
+		      ++i;
+		    }
+		  if(((i+1) < count) &&
+		     (!strcasecmp(args[i+1], "fixed")))
+		    {
+		      wrq.u.bitrate.fixed = 1;
+		      ++i;
+		    }
+		}
+	    }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWRATE, &wrq,
+			 "Set Bit Rate");
+	  continue;
+	}
+
+      /* ---------- Set RTS threshold ---------- */
+      if(!strncasecmp(args[i], "rts", 3))
+	{
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set RTS Threshold", SIOCSIWRTS);
+	  wrq.u.rts.value = -1;
+	  wrq.u.rts.fixed = 1;
+	  wrq.u.rts.disabled = 0;
+	  if(!strcasecmp(args[i], "off"))
+	    wrq.u.rts.disabled = 1;	/* i.e. max size */
+	  else
+	    if(!strcasecmp(args[i], "auto"))
+	      wrq.u.rts.fixed = 0;
+	    else
+	      {
+		if(!strcasecmp(args[i], "fixed"))
+		  {
+		    /* Get old RTS threshold */
+		    IW_GET_EXT_ERR(skfd, ifname, SIOCGIWRTS, &wrq,
+				   "Set RTS Threshold");
+		    wrq.u.rts.fixed = 1;
+		  }
+		else			/* Should be a numeric value */
+		  if(sscanf(args[i], "%ld", (unsigned long *) &(wrq.u.rts.value))
+		     != 1)
+		    ABORT_ARG_TYPE("Set RTS Threshold", SIOCSIWRTS, args[i]);
+	    }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWRTS, &wrq,
+			 "Set RTS Threshold");
+	  continue;
+	}
+
+      /* ---------- Set fragmentation threshold ---------- */
+      if(!strncmp(args[i], "frag", 4))
+	{
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set Fragmentation Threshold", SIOCSIWFRAG);
+	  wrq.u.frag.value = -1;
+	  wrq.u.frag.fixed = 1;
+	  wrq.u.frag.disabled = 0;
+	  if(!strcasecmp(args[i], "off"))
+	    wrq.u.frag.disabled = 1;	/* i.e. max size */
+	  else
+	    if(!strcasecmp(args[i], "auto"))
+	      wrq.u.frag.fixed = 0;
+	    else
+	      {
+		if(!strcasecmp(args[i], "fixed"))
+		  {
+		    /* Get old fragmentation threshold */
+		    IW_GET_EXT_ERR(skfd, ifname, SIOCGIWFRAG, &wrq,
+				   "Set Fragmentation Threshold");
+		    wrq.u.frag.fixed = 1;
+		  }
+		else			/* Should be a numeric value */
+		  if(sscanf(args[i], "%ld",
+			    (unsigned long *) &(wrq.u.frag.value))
+		     != 1)
+		    ABORT_ARG_TYPE("Set Fragmentation Threshold", SIOCSIWFRAG,
+				   args[i]);
+	    }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWFRAG, &wrq,
+			 "Set Fragmentation Threshold");
+	  continue;
+	}
+
+      /* ---------- Set operation mode ---------- */
+      if(!strcmp(args[i], "mode"))
+	{
+	  int	k;
+
+	  i++;
+	  if(i >= count)
+	    ABORT_ARG_NUM("Set Mode", SIOCSIWMODE);
+
+	  if(sscanf(args[i], "%d", &k) != 1)
+	    {
+	      k = 0;
+	      while((k < IW_NUM_OPER_MODE) &&
+		    strncasecmp(args[i], iw_operation_mode[k], 3))
+		k++;
+	    }
+	  if((k >= IW_NUM_OPER_MODE) || (k < 0))
+	    ABORT_ARG_TYPE("Set Mode", SIOCSIWMODE, args[i]);
+
+	  wrq.u.mode = k;
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWMODE, &wrq,
+			 "Set Mode");
+	  continue;
+	}
+
+      /* ---------- Set Power Management ---------- */
+      if(!strncmp(args[i], "power", 3))
+	{
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Power Management", SIOCSIWPOWER);
+
+	  if(!strcasecmp(args[i], "off"))
+	    wrq.u.power.disabled = 1;	/* i.e. max size */
+	  else
+	    if(!strcasecmp(args[i], "on"))
+	      {
+		/* Get old Power info */
+		IW_GET_EXT_ERR(skfd, ifname, SIOCGIWPOWER, &wrq,
+			       "Set Power Management");
+		wrq.u.power.disabled = 0;
+	      }
+	    else
+	      {
+		double		temp;
+		int		gotone = 0;
+		/* Default - nope */
+		wrq.u.power.flags = IW_POWER_ON;
+		wrq.u.power.disabled = 0;
+
+		/* Check value modifier */
+		if(!strcasecmp(args[i], "min"))
+		  {
+		    wrq.u.power.flags |= IW_POWER_MIN;
+		    if(++i >= count)
+		      ABORT_ARG_NUM("Set Power Management", SIOCSIWPOWER);
+		  }
+		else
+		  if(!strcasecmp(args[i], "max"))
+		    {
+		      wrq.u.power.flags |= IW_POWER_MAX;
+		      if(++i >= count)
+			ABORT_ARG_NUM("Set Power Management", SIOCSIWPOWER);
+		    }
+
+		/* Check value type */
+		if(!strcasecmp(args[i], "period"))
+		  {
+		    wrq.u.power.flags |= IW_POWER_PERIOD;
+		    if(++i >= count)
+		      ABORT_ARG_NUM("Set Power Management", SIOCSIWPOWER);
+		  }
+		else
+		  if(!strcasecmp(args[i], "timeout"))
+		    {
+		      wrq.u.power.flags |= IW_POWER_TIMEOUT;
+		      if(++i >= count)
+			ABORT_ARG_NUM("Set Power Management", SIOCSIWPOWER);
+		    }
+
+		/* Is there any value to grab ? */
+		if(sscanf(args[i], "%lg", &(temp)) == 1)
+		  {
+		    temp *= MEGA;	/* default = s */
+		    if(index(args[i], 'u')) temp /= MEGA;
+		    if(index(args[i], 'm')) temp /= KILO;
+		    wrq.u.power.value = (long) temp;
+		    if((wrq.u.power.flags & IW_POWER_TYPE) == 0)
+		      wrq.u.power.flags |= IW_POWER_PERIOD;
+		    ++i;
+		    gotone = 1;
+		  }
+
+		/* Now, check the mode */
+		if(i < count)
+		  {
+		    if(!strcasecmp(args[i], "all"))
+		      wrq.u.power.flags |= IW_POWER_ALL_R;
+		    if(!strncasecmp(args[i], "unicast", 4))
+		      wrq.u.power.flags |= IW_POWER_UNICAST_R;
+		    if(!strncasecmp(args[i], "multicast", 5))
+		      wrq.u.power.flags |= IW_POWER_MULTICAST_R;
+		    if(!strncasecmp(args[i], "force", 5))
+		      wrq.u.power.flags |= IW_POWER_FORCE_S;
+		    if(!strcasecmp(args[i], "repeat"))
+		      wrq.u.power.flags |= IW_POWER_REPEATER;
+		    if(wrq.u.power.flags & IW_POWER_MODE)
+		      {
+			++i;
+			gotone = 1;
+		      }
+		  }
+		if(!gotone)
+		  ABORT_ARG_TYPE("Set Power Management", SIOCSIWPOWER,
+				 args[i]);
+		--i;
+	      }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWPOWER, &wrq,
+		       "Set Power Management");
+	  continue;
+  	}
+
+#if WIRELESS_EXT > 9
+      /* ---------- Set Transmit-Power ---------- */
+      if(!strncmp(args[i], "txpower", 3))
+	{
+	  struct iw_range	range;
+
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Tx Power", SIOCSIWTXPOW);
+
+	  /* Extract range info */
+	  if(iw_get_range_info(skfd, ifname, &range) < 0)
+	    memset(&range, 0, sizeof(range));
+
+	  /* Prepare the request */
+	  wrq.u.txpower.value = -1;
+	  wrq.u.txpower.fixed = 1;
+	  wrq.u.txpower.disabled = 0;
+	  wrq.u.data.flags = IW_TXPOW_DBM;
+	  if(!strcasecmp(args[i], "off"))
+	    wrq.u.txpower.disabled = 1;	/* i.e. turn radio off */
+	  else
+	    if(!strcasecmp(args[i], "auto"))
+	      wrq.u.txpower.fixed = 0;	/* i.e. use power control */
+	    else
+	      {
+		if(!strcasecmp(args[i], "fixed"))
+		  {
+		    /* Get old tx-power */
+		    IW_GET_EXT_ERR(skfd, ifname, SIOCGIWTXPOW, &wrq,
+				   "Set Tx Power");
+		    wrq.u.txpower.fixed = 1;
+		  }
+		else			/* Should be a numeric value */
+		  {
+		    int		power;
+		    int		ismwatt = 0;
+
+		    /* Get the value */
+		    if(sscanf(args[i], "%ld",
+			      (unsigned long *) &(power)) != 1)
+		      ABORT_ARG_TYPE("Set Tx Power", SIOCSIWTXPOW, args[i]);
+
+		    /* Check if milliwatt */
+		    ismwatt = (index(args[i], 'm') != NULL);
+
+		    /* Convert */
+		    if(range.txpower_capa & IW_TXPOW_MWATT)
+		      {
+			if(!ismwatt)
+			  power = iw_dbm2mwatt(power);
+			wrq.u.data.flags = IW_TXPOW_MWATT;
+		      }
+		    else
+		      {
+			if(ismwatt)
+			  power = iw_mwatt2dbm(power);
+			wrq.u.data.flags = IW_TXPOW_DBM;
+		      }
+		    wrq.u.bitrate.value = power;
+
+		    /* Check for an additional argument */
+		    if(((i+1) < count) &&
+		       (!strcasecmp(args[i+1], "auto")))
+		      {
+			wrq.u.txpower.fixed = 0;
+			++i;
+		      }
+		    if(((i+1) < count) &&
+		       (!strcasecmp(args[i+1], "fixed")))
+		      {
+			wrq.u.txpower.fixed = 1;
+			++i;
+		      }
+		  }
+	      }
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWTXPOW, &wrq,
+			 "Set Tx Power");
+	  continue;
+	}
+#endif
+
+#if WIRELESS_EXT > 10
+      /* ---------- Set Retry limit ---------- */
+      if(!strncmp(args[i], "retry", 3))
+	{
+	  double		temp;
+	  int		gotone = 0;
+
+	  if(++i >= count)
+	    ABORT_ARG_NUM("Set Retry Limit", SIOCSIWRETRY);
+
+	  /* Default - nope */
+	  wrq.u.retry.flags = IW_RETRY_LIMIT;
+	  wrq.u.retry.disabled = 0;
+
+	  /* Check value modifier */
+	  if(!strcasecmp(args[i], "min"))
+	    {
+	      wrq.u.retry.flags |= IW_RETRY_MIN;
+	      if(++i >= count)
+		ABORT_ARG_NUM("Set Retry Limit", SIOCSIWRETRY);
+	    }
+	  else
+	    if(!strcasecmp(args[i], "max"))
+	      {
+		wrq.u.retry.flags |= IW_RETRY_MAX;
+		if(++i >= count)
+		  ABORT_ARG_NUM("Set Retry Limit", SIOCSIWRETRY);
+	      }
+
+	  /* Check value type */
+	  if(!strcasecmp(args[i], "limit"))
+	    {
+	      wrq.u.retry.flags |= IW_RETRY_LIMIT;
+	      if(++i >= count)
+		ABORT_ARG_NUM("Set Retry Limit", SIOCSIWRETRY);
+	    }
+	  else
+	    if(!strncasecmp(args[i], "lifetime", 4))
+	      {
+		wrq.u.retry.flags |= IW_RETRY_LIFETIME;
+		if(++i >= count)
+		  ABORT_ARG_NUM("Set Retry Limit", SIOCSIWRETRY);
+	      }
+
+	  /* Is there any value to grab ? */
+	  if(sscanf(args[i], "%lg", &(temp)) == 1)
+	    {
+	      /* Limit is absolute, on the other hand lifetime is seconds */
+	      if(!(wrq.u.retry.flags & IW_RETRY_LIMIT))
+		{
+		  /* Normalise lifetime */
+		  temp *= MEGA;	/* default = s */
+		  if(index(args[i], 'u')) temp /= MEGA;
+		  if(index(args[i], 'm')) temp /= KILO;
+		}
+	      wrq.u.retry.value = (long) temp;
+	      ++i;
+	      gotone = 1;
+	    }
+
+	  if(!gotone)
+	    ABORT_ARG_TYPE("Set Retry Limit", SIOCSIWRETRY, args[i]);
+	  --i;
+
+	  IW_SET_EXT_ERR(skfd, ifname, SIOCSIWRETRY, &wrq,
+			 "Set Retry Limit");
+	  continue;
+	}
+
+#endif	/* WIRELESS_EXT > 10 */
+
+      /* ---------- Other ---------- */
+      /* Here we have an unrecognised arg... */
+      fprintf(stderr, "Error : unrecognised wireless request \"%s\"\n",
+	      args[i]);
+      return(-1);
+    }		/* for(index ... */
+  return(0);
+}
+
+/******************************* MAIN ********************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * The main !
+ */
+int
+main(int	argc,
+     char **	argv)
+{
+  int skfd;		/* generic raw socket desc.	*/
+  int goterr = 0;
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      exit(-1);
+    }
+
+  /* No argument : show the list of all device + info */
+  if(argc == 1)
+    iw_enum_devices(skfd, &print_info, NULL, 0);
+  else
+    /* Special case for help... */
+    if((!strcmp(argv[1], "-h")) || (!strcmp(argv[1], "--help")))
+      iw_usage();
+    else
+      /* Special case for version... */
+      if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version"))
+	goterr = iw_print_version_info("iwconfig");
+      else
+	/* The device name must be the first argument */
+	if(argc == 2)
+	  print_info(skfd, argv[1], NULL, 0);
+	else
+	  /* The other args on the line specify options to be set... */
+	  goterr = set_info(skfd, argv + 2, argc - 2, argv[1]);
+
+  /* Close the socket. */
+  close(skfd);
+
+  return(goterr);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.8
new file mode 100644
index 0000000..719e131
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.8
@@ -0,0 +1,103 @@
+.\" Jean Tourrilhes - HPL - 2002
+.\" iwevent.8
+.\"
+.TH IWEVENT 8 "25 January 2002" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwevent \- Display Wireless Events generated by drivers and setting changes
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwevent "
+.br
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B iwevent
+display Wireless Events received through the RTNetlink socket. Each
+line display the specific Wireless Event which describe what has
+happened on the specified wireless interface.
+.br
+This command doesn't take any arguments.
+.\"
+.\" DISPLAY part
+.\"
+.SH DISPLAY
+There is two classes of Wireless Events.
+.PP
+The first class is events related to a change of wireless settings on
+the interface (typically done through
+.B iwconfig
+or a script calling
+.BR iwconfig ).
+Only settings that could result in a disruption of connectivity are
+reported. The events currently reported are changing one of the
+following setting :
+.br
+.I "	Network ID"
+.br
+.I "	ESSID"
+.br
+.I "	Frequency"
+.br
+.I "	Mode"
+.br
+.I "	Encryption"
+.br
+All those events will be generated on all wireless interfaces by the
+kernel wireless subsystem (but only if the driver has been converted
+to the new driver API).
+.PP
+The second class of events are events generated by the hardware, when
+something happens or a task has been finished. Those events include :
+.TP
+.B New Access Point/Cell address
+The interface has joined a new Access Point or Ad-Hoc Cell, or lost
+its association with it. This is the same MAC address that is reported
+by
+.BR iwconfig .
+.TP
+.B Scan request completed
+A scanning request has been completed, results of the scan are
+available (see
+.BR iwlist ).
+.TP
+.B Tx packet dropped
+A packet directed at this address has been dropped because the
+interface believes this node doesn't answer anymore. An early
+indication that the node may have left the cell or gone out of range.
+.TP
+.B Custom driver event
+Event specific to the driver. Please check the driver documentation.
+.TP
+.B Registered node
+The interface has successfully registered a new wireless
+client/peer. Will be generated mostly when the interface act as an
+Access Point (mode master).
+.TP
+.B Expired node
+The registration of the client/peer on this interface has
+expired. Will be generated mostly when the interface act as an Access
+Point (mode master).
+.PP
+Only some of those events will be generated on some wireless
+interfaces by the wireless driver, and their support depend on the
+specific hardware/driver combination. Please refer to driver
+documentation for details.
+.\"
+.\" AUTHOR part
+.\"
+.SH AUTHOR
+Jean Tourrilhes \- jt@hpl.hp.com
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR iwconfig (8),
+.BR ifconfig (8),
+.BR iwspy (8),
+.BR iwpriv (8).
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.c
new file mode 100644
index 0000000..efe96f5
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwevent.c
@@ -0,0 +1,571 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPL 99->01
+ *
+ * Main code for "iwevent". This listent for wireless events on rtnetlink.
+ * You need to link this code against "iwcommon.c" and "-lm".
+ *
+ * Part of this code is from Alexey Kuznetsov, part is from Casey Carter,
+ * I've just put the pieces together...
+ * By the way, if you know a way to remove the root restrictions, tell me
+ * about it...
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include "iwlib.h"		/* Header */
+
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+
+#include <getopt.h>
+#include <time.h>
+#include <sys/time.h>
+//#define MSG_DONTWAIT	0x40
+/************************ RTNETLINK HELPERS ************************/
+/*
+ * The following code is extracted from :
+ * ----------------------------------------------
+ * libnetlink.c	RTnetlink service routines.
+ *
+ *		This program is free software; you can redistribute it and/or
+ *		modify it under the terms of the GNU General Public License
+ *		as published by the Free Software Foundation; either version
+ *		2 of the License, or (at your option) any later version.
+ *
+ * Authors:	Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
+ * -----------------------------------------------
+ */
+
+struct rtnl_handle
+{
+	int			fd;
+	struct sockaddr_nl	local;
+	struct sockaddr_nl	peer;
+	__u32			seq;
+	__u32			dump;
+};
+
+static inline void rtnl_close(struct rtnl_handle *rth)
+{
+	close(rth->fd);
+}
+
+static inline int rtnl_open(struct rtnl_handle *rth, unsigned subscriptions)
+{
+	socklen_t addr_len;
+
+	memset(rth, 0, sizeof(rth));
+
+	rth->fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
+	if (rth->fd < 0) {
+		perror("Cannot open netlink socket");
+		return -1;
+	}
+
+	memset(&rth->local, 0, sizeof(rth->local));
+	rth->local.nl_family = AF_NETLINK;
+	rth->local.nl_groups = subscriptions;
+
+	if (bind(rth->fd, (struct sockaddr*)&rth->local, sizeof(rth->local)) < 0) {
+		perror("Cannot bind netlink socket");
+		return -1;
+	}
+	addr_len = sizeof(rth->local);
+	if (getsockname(rth->fd, (struct sockaddr*)&rth->local, &addr_len) < 0) {
+		perror("Cannot getsockname");
+		return -1;
+	}
+	if (addr_len != sizeof(rth->local)) {
+		fprintf(stderr, "Wrong address length %d\n", addr_len);
+		return -1;
+	}
+	if (rth->local.nl_family != AF_NETLINK) {
+		fprintf(stderr, "Wrong address family %d\n", rth->local.nl_family);
+		return -1;
+	}
+	rth->seq = time(NULL);
+	return 0;
+}
+
+/********************* WIRELESS EVENT DECODING *********************/
+/*
+ * This is the bit I wrote...
+ */
+
+#if WIRELESS_EXT > 13
+/*------------------------------------------------------------------*/
+/*
+ * Print one element from the scanning results
+ */
+static inline int
+print_event_token(struct iw_event *	event,	/* Extracted token */
+		  struct iw_range *	iwrange,	/* Range info */
+		  int			has_range)
+{
+  char		buffer[128];	/* Temporary buffer */
+
+  /* Now, let's decode the event */
+  switch(event->cmd)
+    {
+      /* ----- set events ----- */
+      /* Events that result from a "SET XXX" operation by the user */
+    case SIOCSIWNWID:
+      if(event->u.nwid.disabled)
+	printf("NWID:off/any\n");
+      else
+	printf("NWID:%X\n", event->u.nwid.value);
+      break;
+    case SIOCSIWFREQ:
+      {
+	float		freq;			/* Frequency/channel */
+	freq = iw_freq2float(&(event->u.freq));
+	iw_print_freq(buffer, freq);
+	printf("%s\n", buffer);
+      }
+      break;
+    case SIOCSIWMODE:
+      printf("Mode:%s\n",
+	     iw_operation_mode[event->u.mode]);
+      break;
+    case SIOCSIWESSID:
+      {
+	char essid[IW_ESSID_MAX_SIZE+1];
+	if((event->u.essid.pointer) && (event->u.essid.length))
+	  memcpy(essid, event->u.essid.pointer, event->u.essid.length);
+	essid[event->u.essid.length] = '\0';
+	if(event->u.essid.flags)
+	  {
+	    /* Does it have an ESSID index ? */
+	    if((event->u.essid.flags & IW_ENCODE_INDEX) > 1)
+	      printf("ESSID:\"%s\" [%d]\n", essid,
+		     (event->u.essid.flags & IW_ENCODE_INDEX));
+	    else
+	      printf("ESSID:\"%s\"\n", essid);
+	  }
+	else
+	  printf("ESSID:off/any\n");
+      }
+      break;
+    case SIOCSIWENCODE:
+      {
+	unsigned char	key[IW_ENCODING_TOKEN_MAX];
+	if(event->u.data.pointer)
+	  memcpy(key, event->u.essid.pointer, event->u.data.length);
+	else
+	  event->u.data.flags |= IW_ENCODE_NOKEY;
+	printf("Encryption key:");
+	if(event->u.data.flags & IW_ENCODE_DISABLED)
+	  printf("off\n");
+	else
+	  {
+	    /* Display the key */
+	    iw_print_key(buffer, key, event->u.data.length,
+			 event->u.data.flags);
+	    printf("%s", buffer);
+
+	    /* Other info... */
+	    if((event->u.data.flags & IW_ENCODE_INDEX) > 1)
+	      printf(" [%d]", event->u.data.flags & IW_ENCODE_INDEX);
+	    if(event->u.data.flags & IW_ENCODE_RESTRICTED)
+	      printf("   Encryption mode:restricted");
+	    if(event->u.data.flags & IW_ENCODE_OPEN)
+	      printf("   Encryption mode:open");
+	    printf("\n");
+	  }
+      }
+      break;
+      /* ----- driver events ----- */
+      /* Events generated by the driver when something important happens */
+    case SIOCGIWAP:
+      printf("New Access Point/Cell address:%s\n",
+	     iw_pr_ether(buffer, (unsigned char *)event->u.ap_addr.sa_data));
+      break;
+    case SIOCGIWSCAN:
+      printf("Scan request completed\n");
+      break;
+    case IWEVTXDROP:
+      printf("Tx packet dropped:%s\n",
+	     iw_pr_ether(buffer, (unsigned char *)event->u.addr.sa_data));
+      break;
+#if WIRELESS_EXT > 14
+    case IWEVCUSTOM:
+      {
+	char custom[IW_CUSTOM_MAX+1];
+	if((event->u.data.pointer) && (event->u.data.length))
+	  memcpy(custom, event->u.data.pointer, event->u.data.length);
+	custom[event->u.data.length] = '\0';
+	printf("Custom driver event:%s\n", custom);
+      }
+      break;
+    case IWEVREGISTERED:
+      printf("Registered node:%s\n",
+	     iw_pr_ether(buffer, (unsigned char *)event->u.addr.sa_data));
+      break;
+    case IWEVEXPIRED:
+      printf("Expired node:%s\n",
+	     iw_pr_ether(buffer, (unsigned char *)event->u.addr.sa_data));
+      break;
+#endif /* WIRELESS_EXT > 14 */
+      /* ----- junk ----- */
+      /* other junk not currently in use */
+    case SIOCGIWRATE:
+      iw_print_bitrate(buffer, event->u.bitrate.value);
+      printf("Bit Rate:%s\n", buffer);
+      break;
+    case IWEVQUAL:
+      {
+	event->u.qual.updated = 0x0;	/* Not that reliable, disable */
+	iw_print_stats(buffer, &event->u.qual, iwrange, has_range);
+	printf("Link %s\n", buffer);
+	break;
+      }
+    default:
+      printf("(Unknown Wireless event 0x%04X)\n", event->cmd);
+    }	/* switch(event->cmd) */
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print out all Wireless Events part of the RTNetlink message
+ * Most often, there will be only one event per message, but
+ * just make sure we read everything...
+ */
+static inline int
+print_event_stream(char *	ifname,
+		   char *	data,
+		   int		len)
+{
+  struct iw_event	iwe;
+  struct stream_descr	stream;
+  int			i = 0;
+  int			ret;
+  char			buffer[64];
+  struct timeval	recv_time;
+#if 0
+  struct iw_range	range;
+  int			has_range;
+#endif
+
+#if 0
+  has_range = (iw_get_range_info(skfd, ifname, &range) < 0);
+#endif
+
+  /* In readable form */
+  gettimeofday(&recv_time, NULL);
+  iw_print_timeval(buffer, &recv_time);
+
+  iw_init_event_stream(&stream, data, len);
+  do
+    {
+      /* Extract an event and print it */
+      ret = iw_extract_event_stream(&stream, &iwe);
+      if(ret != 0)
+	{
+	  if(i++ == 0)
+	    printf("%s   %-8.8s ", buffer, ifname);
+	  else
+	    printf("                           ");
+	  if(ret > 0)
+	    print_event_token(&iwe, NULL, 0);
+	  else
+	    printf("(Invalid event)\n");
+	}
+    }
+  while(ret > 0);
+
+  return(0);
+}
+#endif	/* WIRELESS_EXT > 13 */
+
+/*********************** RTNETLINK EVENT DUMP***********************/
+/*
+ * Dump the events we receive from rtnetlink
+ * This code is mostly from Casey
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Respond to a single RTM_NEWLINK event from the rtnetlink socket.
+ */
+static inline int
+index2name(int	index, char *name)
+{
+  int		skfd = -1;	/* generic raw socket desc.	*/
+  struct ifreq	irq;
+  int		ret = 0;
+
+  memset(name, 0, IFNAMSIZ + 1);
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      exit(-1);
+    }
+
+  /* Get interface name */
+  irq.ifr_ifindex = index;
+  if(ioctl(skfd, SIOCGIFNAME, &irq) < 0)
+    ret = -1;
+  else
+    strncpy(name, irq.ifr_name, IFNAMSIZ);
+
+  close(skfd);
+  return(ret);
+}
+
+
+/*------------------------------------------------------------------*/
+/*
+ * Respond to a single RTM_NEWLINK event from the rtnetlink socket.
+ */
+static int
+LinkCatcher(struct nlmsghdr *nlh)
+{
+  struct ifinfomsg* ifi;
+  char ifname[IFNAMSIZ + 1];
+
+#if 0
+  fprintf(stderr, "nlmsg_type = %d.\n", nlh->nlmsg_type);
+#endif
+
+  if(nlh->nlmsg_type != RTM_NEWLINK)
+    return 0;
+
+  ifi = NLMSG_DATA(nlh);
+
+  /* Get a name... */
+  index2name(ifi->ifi_index, ifname);
+
+#if WIRELESS_EXT > 13
+  /* Code is ugly, but sort of works - Jean II */
+
+  /* Check for attributes */
+  if (nlh->nlmsg_len > NLMSG_ALIGN(sizeof(struct ifinfomsg))) {
+      int attrlen = nlh->nlmsg_len - NLMSG_ALIGN(sizeof(struct ifinfomsg));
+      struct rtattr *attr = (void*)ifi + NLMSG_ALIGN(sizeof(struct ifinfomsg));
+
+      while (RTA_OK(attr, attrlen)) {
+	/* Check if the Wireless kind */
+	if(attr->rta_type == IFLA_WIRELESS) {
+	  /* Go to display it */
+	  print_event_stream(ifname,
+			     (void *)attr + RTA_ALIGN(sizeof(struct rtattr)),
+			     attr->rta_len - RTA_ALIGN(sizeof(struct rtattr)));
+	}
+	attr = RTA_NEXT(attr, attrlen);
+      }
+  }
+#endif	/* WIRELESS_EXT > 13 */
+
+  return 0;
+}
+
+/* ---------------------------------------------------------------- */
+/*
+ * We must watch the rtnelink socket for events.
+ * This routine handles those events (i.e., call this when rth.fd
+ * is ready to read).
+ */
+static inline void
+handle_netlink_events(struct rtnl_handle *	rth)
+{
+  while(1)
+    {
+      struct sockaddr_nl sanl;
+      socklen_t sanllen;
+
+      struct nlmsghdr *h;
+      int amt;
+      char buf[8192];
+
+      amt = recvfrom(rth->fd, buf, sizeof(buf), MSG_DONTWAIT, (struct sockaddr*)&sanl, &sanllen);
+      if(amt < 0)
+	{
+	  if(errno != EINTR && errno != EAGAIN)
+	    {
+	      fprintf(stderr, "%s: error reading netlink: %s.\n",
+		      __PRETTY_FUNCTION__, strerror(errno));
+	    }
+	  return;
+	}
+
+      if(amt == 0)
+	{
+	  fprintf(stderr, "%s: EOF on netlink??\n", __PRETTY_FUNCTION__);
+	  return;
+	}
+
+      h = (struct nlmsghdr*)buf;
+      while(amt >= (int)sizeof(*h))
+	{
+	  int len = h->nlmsg_len;
+	  int l = len - sizeof(*h);
+
+	  if(l < 0 || len > amt)
+	    {
+	      fprintf(stderr, "%s: malformed netlink message: len=%d\n", __PRETTY_FUNCTION__, len);
+	      break;
+	    }
+
+	  switch(h->nlmsg_type)
+	    {
+	    case RTM_NEWLINK:
+	      LinkCatcher(h);
+	      break;
+	    default:
+#if 0
+	      fprintf(stderr, "%s: got nlmsg of type %#x.\n", __PRETTY_FUNCTION__, h->nlmsg_type);
+#endif
+	      break;
+	    }
+
+	  len = NLMSG_ALIGN(len);
+	  amt -= len;
+	  h = (struct nlmsghdr*)((char*)h + len);
+	}
+
+      if(amt > 0)
+	fprintf(stderr, "%s: remnant of size %d on netlink\n", __PRETTY_FUNCTION__, amt);
+    }
+}
+
+/**************************** MAIN LOOP ****************************/
+
+/* ---------------------------------------------------------------- */
+/*
+ * Wait until we get an event
+ */
+static inline int
+wait_for_event(struct rtnl_handle *	rth)
+{
+#if 0
+  struct timeval	tv;	/* Select timeout */
+#endif
+
+  /* Forever */
+  while(1)
+    {
+      fd_set		rfds;		/* File descriptors for select */
+      int		last_fd;	/* Last fd */
+      int		ret;
+
+      /* Guess what ? We must re-generate rfds each time */
+      FD_ZERO(&rfds);
+      FD_SET(rth->fd, &rfds);
+      last_fd = rth->fd;
+
+      /* Wait until something happens */
+      ret = select(last_fd + 1, &rfds, NULL, NULL, NULL);
+
+      /* Check if there was an error */
+      if(ret < 0)
+	{
+	  if(errno == EAGAIN || errno == EINTR)
+	    continue;
+	  fprintf(stderr, "Unhandled signal - exiting...\n");
+	  break;
+	}
+
+      /* Check if there was a timeout */
+      if(ret == 0)
+	{
+	  continue;
+	}
+
+      /* Check for interface discovery events. */
+      if(FD_ISSET(rth->fd, &rfds))
+	handle_netlink_events(rth);
+    }
+
+  return(0);
+}
+
+/******************************* MAIN *******************************/
+
+/* ---------------------------------------------------------------- */
+/*
+ * helper ;-)
+ */
+static void
+iw_usage(int status)
+{
+  fputs("Usage: iwevent [OPTIONS]\n"
+	"   Monitors and displays Wireless Events.\n"
+	"   Options are:\n"
+	"     -h,--help     Print this message.\n"
+	"     -v,--version  Show version of this program.\n",
+	status ? stderr : stdout);
+  exit(status);
+}
+/* Command line options */
+static const struct option long_opts[] = {
+  { "help", no_argument, NULL, 'h' },
+  { "version", no_argument, NULL, 'v' },
+  { NULL, 0, NULL, 0 }
+};
+
+/* ---------------------------------------------------------------- */
+/*
+ * main body of the program
+ */
+int
+main(int	argc,
+     char *	argv[])
+{
+  struct rtnl_handle	rth;
+  int opt;
+
+  /* Check command line options */
+  while((opt = getopt_long(argc, argv, "hv", long_opts, NULL)) > 0)
+    {
+      switch(opt)
+	{
+	case 'h':
+	  iw_usage(0);
+	  break;
+
+	case 'v':
+	  return(iw_print_version_info("iwevent"));
+	  break;
+
+	default:
+	  iw_usage(1);
+	  break;
+	}
+    }
+  if(optind < argc)
+    {
+      fputs("Too many arguments.\n", stderr);
+      iw_usage(1);
+    }
+
+  /* Open netlink channel */
+  if(rtnl_open(&rth, RTMGRP_LINK) < 0)
+    {
+      perror("Can't initialize rtnetlink socket");
+      return(1);
+    }
+
+#if WIRELESS_EXT > 13
+  fprintf(stderr, "Waiting for Wireless Events...\n");
+#else	/* WIRELESS_EXT > 13 */
+  fprintf(stderr, "Unsupported in Wireless Extensions <= 14 :-(\n");
+  return(-1);
+#endif	/* WIRELESS_EXT > 13 */
+
+  /* Do what we have to do */
+  wait_for_event(&rth);
+
+  /* Cleanup - only if you are pedantic */
+  rtnl_close(&rth);
+
+  return(0);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.8
new file mode 100644
index 0000000..30c8890
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.8
@@ -0,0 +1,94 @@
+.\" Guus Sliepen - 2001
+.\" Completed and fixed up by Jean Tourrilhes - 2002
+.\" iwgetid.8
+.\"
+.TH IWGETID 8 "7 August 2001" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwgetid \- Report ESSID, NWID or AP/Cell Address of wireless network
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwgetid " [interface] " [--scheme] [--ap] [--freq] [--mode]"
+.br
+.BI "                   [--protocol]
+.br
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B iwgetid
+is used to find out the NWID, ESSID or AP/Cell Address of the wireless
+network that is currently used. The information reported is the same
+as the one shown by
+.BR iwconfig ", but " iwgetid
+is easier to integrate in various scripts.
+.br
+By default,
+.B iwgetid
+will print the
+.I ESSID
+of the device, and if the device doesn't have any ESSID it will print
+its
+.IR NWID .
+.\"
+.\" OPTIONS part
+.\"
+.SH OPTIONS
+.TP
+.B --scheme
+This option disables pretty-printing of the information, only the raw
+ESSID (or NWID, or AP Address) is printed. Also, characters that are
+not alphanumerics (like space, punctuation and control characters) are
+skipped.
+.br
+The resulting output is a valid Pcmcia scheme identifier (that may be
+used as an argument of the command
+.BR "cardctl scheme" ).
+This format is also ideal when using the result of iwgetid as a
+variable in
+.I Shell
+or
+.I Perl
+scripts.
+.TP
+.B --ap
+Display the MAC address of the Wireless
+.I Access Point
+or the
+.IR Cell .
+.TP
+.B --freq
+Display the current
+.I frequency
+or
+.I channel
+used by the interface.
+.TP
+.B --mode
+Display the current
+.I mode
+of the interface.
+.TP
+.B --protocol
+Display the
+.I protocol name
+of the interface. This allow to identify all the cards that are
+compatible with each other and accept the same type of
+configuration.
+.br
+This can also be used to
+.I check Wireless Extension support
+on the interface, as this is the only attribute that all drivers
+supporting Wireless Extension are mandated to support.
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR iwconfig (8),
+.BR ifconfig (8),
+.BR iwspy (8),
+.BR iwpriv (8).
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.c
new file mode 100644
index 0000000..1d74910
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwgetid.c
@@ -0,0 +1,600 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPL '01
+ *
+ * Just print the ESSID or NWID...
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#include "iwlib.h"		/* Header */
+
+#include <getopt.h>
+
+#define FORMAT_DEFAULT	0	/* Nice looking display for the user */
+#define FORMAT_SCHEME	1	/* To be used as a Pcmcia Scheme */
+#define WTYPE_ESSID	0	/* Display ESSID or NWID */
+#define WTYPE_AP	1	/* Display AP/Cell Address */
+#define WTYPE_FREQ	2	/* Display frequency/channel */
+#define WTYPE_MODE	3	/* Display mode */
+#define WTYPE_PROTO	4	/* Display protocol name */
+
+/*
+ * Note on Pcmcia Schemes :
+ * ----------------------
+ *	The purpose of this tool is to use the ESSID discovery mechanism
+ * to select the appropriate Pcmcia Scheme. The card tell us which
+ * ESSID it has found, and we can then select the appropriate Pcmcia
+ * Scheme for this ESSID (Wireless config (encrypt keys) and IP config).
+ *	The way to do it is as follows :
+ *			cardctl scheme "essidany"
+ *			delay 100
+ *			$scheme = iwgetid --scheme
+ *			cardctl scheme $scheme
+ *	Of course, you need to add a scheme called "essidany" with the
+ * following setting :
+ *			essidany,*,*,*)
+ *				ESSID="any"
+ *				IPADDR="10.0.0.1"
+ *
+ *	This can also be integrated int he Pcmcia scripts.
+ *	Some drivers don't activate the card up to "ifconfig up".
+ * Therefore, they wont scan ESSID up to this point, so we can't
+ * read it reliably in Pcmcia scripts.
+ *	I guess the proper way to write the network script is as follows :
+ *			if($scheme == "iwgetid") {
+ *				iwconfig $name essid any
+ *				iwconfig $name nwid any
+ *				ifconfig $name up
+ *				delay 100
+ *				$scheme = iwgetid $name --scheme
+ *				ifconfig $name down
+ *			}
+ *
+ *	This is pseudo code, but you get an idea...
+ *	The "ifconfig up" activate the card.
+ *	The "delay" is necessary to let time for the card scan the
+ * frequencies and associate with the AP.
+ *	The "ifconfig down" is necessary to allow the driver to optimise
+ * the wireless parameters setting (minimise number of card resets).
+ *
+ *	Another cute idea is to have a list of Pcmcia Schemes to try
+ * and to keep the first one that associate (AP address != 0). This
+ * would be necessary for closed networks and cards that can't
+ * discover essid...
+ *
+ * Jean II - 29/3/01
+ */
+
+/*************************** SUBROUTINES ***************************/
+/*
+ * Just for the heck of it, let's try to not link with iwlib.
+ * This will keep the binary small and tiny...
+ *
+ * Note : maybe it's time to admit that we have lost the battle
+ * and we start using iwlib ? Maybe we should default to dynamic
+ * lib first...
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Open a socket.
+ * Depending on the protocol present, open the right socket. The socket
+ * will allow us to talk to the driver.
+ */
+int
+iw_sockets_open(void)
+{
+        int ipx_sock = -1;              /* IPX socket                   */
+        int ax25_sock = -1;             /* AX.25 socket                 */
+        int inet_sock = -1;             /* INET socket                  */
+        int ddp_sock = -1;              /* Appletalk DDP socket         */
+
+        /*
+         * Now pick any (exisiting) useful socket family for generic queries
+	 * Note : don't open all the socket, only returns when one matches,
+	 * all protocols might not be valid.
+	 * Workaround by Jim Kaba <jkaba@sarnoff.com>
+	 * Note : in 99% of the case, we will just open the inet_sock.
+	 * The remaining 1% case are not fully correct...
+         */
+        inet_sock=socket(AF_INET, SOCK_DGRAM, 0);
+        if(inet_sock!=-1)
+                return inet_sock;
+        ipx_sock=socket(AF_IPX, SOCK_DGRAM, 0);
+        if(ipx_sock!=-1)
+                return ipx_sock;
+        ax25_sock=socket(AF_AX25, SOCK_DGRAM, 0);
+        if(ax25_sock!=-1)
+                return ax25_sock;
+        ddp_sock=socket(AF_APPLETALK, SOCK_DGRAM, 0);
+        /*
+         * If this is -1 we have no known network layers and its time to jump.
+         */
+        return ddp_sock;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display an Ethernet address in readable format.
+ */
+void
+iw_ether_ntop(const struct ether_addr* eth, char* buf)
+{
+  sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X",
+	  eth->ether_addr_octet[0], eth->ether_addr_octet[1],
+	  eth->ether_addr_octet[2], eth->ether_addr_octet[3],
+	  eth->ether_addr_octet[4], eth->ether_addr_octet[5]);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert our internal representation of frequencies to a floating point.
+ */
+double
+iw_freq2float(iwfreq *	in)
+{
+#ifdef WE_NOLIBM
+  /* Version without libm : slower */
+  int		i;
+  double	res = (double) in->m;
+  for(i = 0; i < in->e; i++)
+    res *= 10;
+  return(res);
+#else	/* WE_NOLIBM */
+  /* Version with libm : faster */
+  return ((double) in->m) * pow(10,in->e);
+#endif	/* WE_NOLIBM */
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Output a frequency with proper scaling
+ */
+void
+iw_print_freq(char *	buffer,
+	      double	freq)
+{
+  if(freq < KILO)
+    sprintf(buffer, "Channel:%g", freq);
+  else
+    {
+      if(freq >= GIGA)
+	sprintf(buffer, "Frequency:%gGHz", freq / GIGA);
+      else
+	{
+	  if(freq >= MEGA)
+	    sprintf(buffer, "Frequency:%gMHz", freq / MEGA);
+	  else
+	    sprintf(buffer, "Frequency:%gkHz", freq / KILO);
+	}
+    }
+}
+
+/*------------------------------------------------------------------*/
+const char * const iw_operation_mode[] = { "Auto",
+					"Ad-Hoc",
+					"Managed",
+					"Master",
+					"Repeater",
+					"Secondary",
+					"Monitor" };
+
+/************************ DISPLAY ESSID/NWID ************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the ESSID if possible
+ */
+static int
+print_essid(int			skfd,
+	    const char *	ifname,
+	    int			format)
+{
+  struct iwreq		wrq;
+  char			essid[IW_ESSID_MAX_SIZE + 1];	/* ESSID */
+  char			pessid[IW_ESSID_MAX_SIZE + 1];	/* Pcmcia format */
+  unsigned int		i;
+  unsigned int		j;
+
+  /* Get ESSID */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  wrq.u.essid.pointer = (caddr_t) essid;
+  wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
+  wrq.u.essid.flags = 0;
+  if(ioctl(skfd, SIOCGIWESSID, &wrq) < 0)
+    return(-1);
+
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      /* Strip all white space and stuff */
+      j = 0;
+      for(i = 0; i < strlen(essid); i++)
+	if(isalnum(essid[i]))
+	  pessid[j++] = essid[i];
+      pessid[j] = '\0';
+      if((j == 0) || (j > 32))
+	return(-2);
+      printf("%s\n", pessid);
+      break;
+    default:
+      printf("%-8.8s  ESSID:\"%s\"\n", ifname, essid);
+      break;
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the NWID if possible
+ */
+static int
+print_nwid(int		skfd,
+	   const char *	ifname,
+	   int		format)
+{
+  struct iwreq		wrq;
+
+  /* Get network ID */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  if(ioctl(skfd, SIOCGIWNWID, &wrq) < 0)
+    return(-1);
+
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      /* Prefix with nwid to avoid name space collisions */
+      printf("nwid%X\n", wrq.u.nwid.value);
+      break;
+    default:
+      printf("%-8.8s  NWID:%X\n", ifname, wrq.u.nwid.value);
+      break;
+    }
+
+  return(0);
+}
+
+/**************************** AP ADDRESS ****************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the AP Address if possible
+ */
+static int
+print_ap(int		skfd,
+	 const char *	ifname,
+	 int		format)
+{
+  struct iwreq		wrq;
+  char			buffer[64];
+
+  /* Get AP Address */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  if(ioctl(skfd, SIOCGIWAP, &wrq) < 0)
+    return(-1);
+
+  /* Print */
+  iw_ether_ntop((const struct ether_addr *) wrq.u.ap_addr.sa_data, buffer);
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      /* I think ':' are not problematic, because Pcmcia scripts
+       * seem to handle them properly... */
+      printf("%s\n", buffer);
+      break;
+    default:
+      printf("%-8.8s  Access Point/Cell: %s\n", ifname, buffer);
+      break;
+    }
+
+  return(0);
+}
+
+/****************************** OTHER ******************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the frequency (or channel) if possible
+ */
+static int
+print_freq(int		skfd,
+	   const char *	ifname,
+	   int		format)
+{
+  struct iwreq		wrq;
+  double		freq;
+  char			buffer[64];
+
+  /* Get frequency / channel */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  if(ioctl(skfd, SIOCGIWFREQ, &wrq) < 0)
+    return(-1);
+
+  /* Print */
+  freq = iw_freq2float(&(wrq.u.freq));
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      printf("%g\n", freq);
+      break;
+    default:
+      iw_print_freq(buffer, freq);
+      printf("%-8.8s  %s\n", ifname, buffer);
+      break;
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the mode if possible
+ */
+static int
+print_mode(int		skfd,
+	   const char *	ifname,
+	   int		format)
+{
+  struct iwreq		wrq;
+
+  /* Get frequency / channel */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  if(ioctl(skfd, SIOCGIWMODE, &wrq) < 0)
+    return(-1);
+  if(wrq.u.mode >= IW_NUM_OPER_MODE)
+    return(-2);
+
+  /* Print */
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      printf("%d\n", wrq.u.mode);
+      break;
+    default:
+      printf("%-8.8s  Mode:%s\n", ifname, iw_operation_mode[wrq.u.mode]);
+      break;
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the ESSID if possible
+ */
+static int
+print_protocol(int		skfd,
+	       const char *	ifname,
+	       int		format)
+{
+  struct iwreq		wrq;
+  char			proto[IFNAMSIZ + 1];	/* Protocol */
+  char			pproto[IFNAMSIZ + 1];	/* Pcmcia format */
+  unsigned int		i;
+  unsigned int		j;
+
+  /* Get Protocol name */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  if(ioctl(skfd, SIOCGIWNAME, &wrq) < 0)
+    return(-1);
+  strncpy(proto, wrq.u.name, IFNAMSIZ);
+  proto[IFNAMSIZ] = '\0';
+
+  switch(format)
+    {
+    case FORMAT_SCHEME:
+      /* Strip all white space and stuff */
+      j = 0;
+      for(i = 0; i < strlen(proto); i++)
+	if(isalnum(proto[i]))
+	  pproto[j++] = proto[i];
+      pproto[j] = '\0';
+      if((j == 0) || (j > 32))
+	return(-2);
+      printf("%s\n", pproto);
+      break;
+    default:
+      printf("%-8.8s  Protocol Name:\"%s\"\n", ifname, proto);
+      break;
+    }
+
+  return(0);
+}
+
+/******************************* MAIN ********************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Check options and call the proper handler
+ */
+static int
+print_one_device(int		skfd,
+		 int		format,
+		 int		wtype,
+		 const char*	ifname)
+{
+  int ret;
+
+  /* Check wtype */
+  switch(wtype)
+    {
+    case WTYPE_AP:
+      /* Try to print an AP */
+      ret = print_ap(skfd, ifname, format);
+      break;
+
+    case WTYPE_FREQ:
+      /* Try to print frequency */
+      ret = print_freq(skfd, ifname, format);
+      break;
+
+    case WTYPE_MODE:
+      /* Try to print the mode */
+      ret = print_mode(skfd, ifname, format);
+      break;
+
+    case WTYPE_PROTO:
+      /* Try to print the protocol */
+      ret = print_protocol(skfd, ifname, format);
+      break;
+
+    default:
+      /* Try to print an ESSID */
+      ret = print_essid(skfd, ifname, format);
+      if(ret < 0)
+	{
+	  /* Try to print a nwid */
+	  ret = print_nwid(skfd, ifname, format);
+	}
+    }
+
+  return(ret);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Try the various devices until one return something we can use
+ */
+static int
+scan_devices(int		skfd,
+	     int		format,
+	     int		wtype)
+{
+  char		buff[1024];
+  struct ifconf ifc;
+  struct ifreq *ifr;
+  int		i;
+
+  /* Get list of active devices */
+  ifc.ifc_len = sizeof(buff);
+  ifc.ifc_buf = buff;
+  if(ioctl(skfd, SIOCGIFCONF, &ifc) < 0)
+    {
+      perror("SIOCGIFCONF");
+      return(-1);
+    }
+  ifr = ifc.ifc_req;
+
+  /* Print the first match */
+  for(i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++)
+    {
+      if(print_one_device(skfd, format, wtype, ifr->ifr_name) >= 0)
+	return 0;
+    }
+  return(-1);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * helper
+ */
+static void
+iw_usage(int status)
+{
+  fputs("Usage iwgetid [OPTIONS] [ifname]\n"
+	"  Options are:\n"
+	"    -a,--ap       Print the access point address\n"
+	"    -f,--freq     Print the current frequency\n"
+	"    -m,--mode     Print the current mode\n"
+	"    -p,--protocol Print the protocol name\n"
+	"    -s,--scheme   Format the output as a PCMCIA scheme identifier\n"
+	"    -h,--help     Print this message\n",
+	status ? stderr : stdout);
+  exit(status);
+}
+
+static const struct option long_opts[] = {
+  { "ap", no_argument, NULL, 'a' },
+  { "freq", no_argument, NULL, 'f' },
+  { "mode", no_argument, NULL, 'm' },
+  { "protocol", no_argument, NULL, 'p' },
+  { "help", no_argument, NULL, 'h' },
+  { "scheme", no_argument, NULL, 's' },
+  { NULL, 0, NULL, 0 }
+};
+
+/*------------------------------------------------------------------*/
+/*
+ * The main !
+ */
+int
+main(int	argc,
+     char **	argv)
+{
+  int	skfd;			/* generic raw socket desc.	*/
+  int	format = FORMAT_DEFAULT;
+  int	wtype = WTYPE_ESSID;
+  int	opt;
+  int	ret = -1;
+
+  /* Check command line arguments */
+  while((opt = getopt_long(argc, argv, "afhmps", long_opts, NULL)) > 0)
+    {
+      switch(opt)
+	{
+	case 'a':
+	  /* User wants AP/Cell Address */
+	  wtype = WTYPE_AP;
+	  break;
+
+	case 'f':
+	  /* User wants frequency/channel */
+	  wtype = WTYPE_FREQ;
+	  break;
+
+	case 'm':
+	  /* User wants the mode */
+	  wtype = WTYPE_MODE;
+	  break;
+
+	case 'p':
+	  /* User wants the protocol */
+	  wtype = WTYPE_PROTO;
+	  break;
+
+	case 'h':
+	  iw_usage(0);
+	  break;
+
+	case 's':
+	  /* User wants a Scheme format */
+	  format = FORMAT_SCHEME;
+	  break;
+
+	default:
+	  iw_usage(1);
+	  break;
+	}
+    }
+  if(optind + 1 < argc) {
+    fputs("Too many arguments.\n", stderr);
+    iw_usage(1);
+  }
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      return(-1);
+    }
+
+  /* Check if first argument is a device name */
+  if(optind < argc)
+    {
+      /* Yes : query only this device */
+      ret = print_one_device(skfd, format, wtype, argv[optind]);
+    }
+  else
+    {
+      /* No : query all devices and print first found */
+      ret = scan_devices(skfd, format, wtype);
+    }
+
+  fflush(stdout);
+  close(skfd);
+  return(ret);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.c
new file mode 100644
index 0000000..b1bf7d3
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.c
@@ -0,0 +1,1720 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB 97->99 - HPL 99->01
+ *
+ * Common subroutines to all the wireless tools...
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include "iwlib.h"		/* Header */
+
+#ifdef __ANDROID__
+#include <sys/endian.h>
+#endif
+
+/************************ CONSTANTS & MACROS ************************/
+
+/* Various versions information */
+/* Recommended Wireless Extension version */
+#define WE_VERSION	15
+/* Version of Wireless Tools */
+#define WT_VERSION	25
+
+/*
+ * Verify a few things about Wireless Extensions.
+ * I try to maximise backward and forward compatibility, but things are
+ * tricky because I'm fixing bugs and adding new features.
+ * Wireless Tools *must* be compiled with the same version of WE
+ * as the driver. Sometime, the size or layout of some structure changes,
+ * and might produce interesting results.
+ * Wireless Tools will usually compile properly against different
+ * versions of WE, thanks to the zillions of #ifdefs in my code.
+ * Jean II
+ */
+#if WIRELESS_EXT < 9
+#error "Wireless Extension v9 or newer required :-("
+#error "Use Wireless Tools v19 or update your kernel headers !"
+#endif
+#if WIRELESS_EXT < WE_VERSION && !defined(WEXT_HEADER)
+#warning "Wireless Extension earlier than v15 detected,"
+#warning "Not all tools features will be compiled in !"
+#warning "No worry, I'll try to make the best of it ;-)"
+#endif
+#if WIRELESS_EXT > WE_VERSION && !defined(WEXT_HEADER)
+#warning "Wireless Extension later than v15 detected,"
+#warning "Maybe you should get a more recent version"
+#warning "of the Wireless Tools package !"
+#endif
+
+/**************************** VARIABLES ****************************/
+
+const char * const iw_operation_mode[] = { "Auto",
+					"Ad-Hoc",
+					"Managed",
+					"Master",
+					"Repeater",
+					"Secondary",
+					"Monitor" };
+
+/* Disable runtime version warning in iw_get_range_info() */
+int	iw_ignore_version = 0;
+
+/************************ SOCKET SUBROUTINES *************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Open a socket.
+ * Depending on the protocol present, open the right socket. The socket
+ * will allow us to talk to the driver.
+ */
+int
+iw_sockets_open(void)
+{
+  static const int families[] = {
+    AF_INET, AF_IPX, AF_AX25, AF_APPLETALK
+  };
+  unsigned int	i;
+  int		sock;
+
+  /*
+   * Now pick any (exisiting) useful socket family for generic queries
+   * Note : don't open all the socket, only returns when one matches,
+   * all protocols might not be valid.
+   * Workaround by Jim Kaba <jkaba@sarnoff.com>
+   * Note : in 99% of the case, we will just open the inet_sock.
+   * The remaining 1% case are not fully correct...
+   */
+
+  /* Try all families we support */
+  for(i = 0; i < sizeof(families)/sizeof(int); ++i)
+    {
+      /* Try to open the socket, if success returns it */
+      sock = socket(families[i], SOCK_DGRAM, 0);
+      if(sock >= 0)
+	return sock;
+  }
+
+  return -1;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Extract the interface name out of /proc/net/wireless or /proc/net/dev.
+ */
+static inline char *
+iw_get_ifname(char *	name,	/* Where to store the name */
+	      int	nsize,	/* Size of name buffer */
+	      char *	buf)	/* Current position in buffer */
+{
+  char *	end;
+
+  /* Skip leading spaces */
+  while(isspace(*buf))
+    buf++;
+
+#ifndef IW_RESTRIC_ENUM
+  /* Get name up to the last ':'. Aliases may contain ':' in them,
+   * but the last one should be the separator */
+  end = strrchr(buf, ':');
+#else
+  /* Get name up to ": "
+   * Note : we compare to ": " to make sure to process aliased interfaces
+   * properly. Doesn't work on /proc/net/dev, because it doesn't guarantee
+   * a ' ' after the ':'*/
+  end = strstr(buf, ": ");
+#endif
+
+  /* Not found ??? To big ??? */
+  if((end == NULL) || (((end - buf) + 1) > nsize))
+    return(NULL);
+
+  /* Copy */
+  memcpy(name, buf, (end - buf));
+  name[end - buf] = '\0';
+
+  return(end + 2);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Enumerate devices and call specified routine
+ * The new way just use /proc/net/wireless, so get all wireless interfaces,
+ * whether configured or not. This is the default if available.
+ * The old way use SIOCGIFCONF, so get only configured interfaces (wireless
+ * or not).
+ */
+void
+iw_enum_devices(int		skfd,
+		iw_enum_handler fn,
+		char *		args[],
+		int		count)
+{
+  char		buff[1024];
+  FILE *	fh;
+  struct ifconf ifc;
+  struct ifreq *ifr;
+  int		i;
+
+#ifndef IW_RESTRIC_ENUM
+  /* Check if /proc/net/wireless is available */
+  fh = fopen(PROC_NET_DEV, "r");
+#else
+  /* Check if /proc/net/wireless is available */
+  fh = fopen(PROC_NET_WIRELESS, "r");
+#endif
+
+  if(fh != NULL)
+  {
+      /* Success : use data from /proc/net/wireless */
+
+      /* Eat 2 lines of header */
+      fgets(buff, sizeof(buff), fh);
+      fgets(buff, sizeof(buff), fh);
+
+      /* Read each device line */
+      while(fgets(buff, sizeof(buff), fh))
+			{
+			  char	name[IFNAMSIZ + 1];
+			  char *s;
+		
+			  /* Extract interface name */
+			  s = iw_get_ifname(name, sizeof(name), buff);
+		
+			  if(!s)
+			    /* Failed to parse, complain and continue */
+			    fprintf(stderr, "Cannot parse " PROC_NET_WIRELESS "\n");
+			  else
+			    /* Got it, print info about this interface */
+			    (*fn)(skfd, name, args, count);
+			}
+
+      fclose(fh);
+  }
+  else
+  {
+      /* Get list of configured devices using "traditional" way */
+      ifc.ifc_len = sizeof(buff);
+      ifc.ifc_buf = buff;
+      if(ioctl(skfd, SIOCGIFCONF, &ifc) < 0)
+			{
+			  fprintf(stderr, "SIOCGIFCONF: %s\n", strerror(errno));
+			  return;
+			}
+      ifr = ifc.ifc_req;
+
+      /* Print them */
+      for(i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++)
+				(*fn)(skfd, ifr->ifr_name, args, count);
+  }
+}
+
+/*********************** WIRELESS SUBROUTINES ************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Get the range information out of the driver
+ */
+int
+iw_get_range_info(int		skfd,
+		  char *	ifname,
+		  iwrange *	range)
+{
+  struct iwreq		wrq;
+  char			buffer[sizeof(iwrange) * 2];	/* Large enough */
+
+  /* Cleanup */
+  memset(buffer, 0, sizeof(buffer));
+
+  wrq.u.data.pointer = (caddr_t) buffer;
+  wrq.u.data.length = sizeof(buffer);
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWRANGE, &wrq) < 0)
+    return(-1);
+
+  /* Copy stuff at the right place, ignore extra */
+  memcpy((char *) range, buffer, sizeof(iwrange));
+
+  /* Lots of people have driver and tools out of sync as far as Wireless
+   * Extensions are concerned. It's because /usr/include/linux/wireless.h
+   * and /usr/src/linux/include/linux/wireless.h are different.
+   * We try to catch this stuff here... */
+  if(!iw_ignore_version)
+    {
+      /* For new versions, we can check the version directly, for old versions
+       * we use magic. 300 bytes is a also magic number, don't touch... */
+      if((WIRELESS_EXT > 10) && (wrq.u.data.length >= 300))
+	{
+#if WIRELESS_EXT > 10
+	  /* Version verification - for new versions */
+	  if(range->we_version_compiled != WIRELESS_EXT)
+	    {
+	      fprintf(stderr, "Warning: Driver for device %s has been compiled with version %d\n", ifname, range->we_version_compiled);
+	      fprintf(stderr, "of Wireless Extension, while this program is using version %d.\n", WIRELESS_EXT);
+	      fprintf(stderr, "Some things may be broken...\n\n");
+	    }
+	  /* Driver version verification */
+	  if(range->we_version_compiled < range->we_version_source)
+	    {
+	      fprintf(stderr, "Warning: Driver for device %s recommend version %d of Wireless Extension,\n", ifname, range->we_version_source);
+	      fprintf(stderr, "but has been compiled with version %d, therefore some driver features\n", range->we_version_compiled);
+	      fprintf(stderr, "may not be available...\n\n");
+	    }
+#endif /* WIRELESS_EXT > 10 */
+	}
+      else
+	{
+	  /* Version verification - for old versions */
+	  if(wrq.u.data.length != sizeof(iwrange))
+	    {
+	      fprintf(stderr, "Warning: Driver for device %s has been compiled with an ancient version\n", ifname);
+	      fprintf(stderr, "of Wireless Extension, while this program is using version %d.\n", WIRELESS_EXT);
+	      fprintf(stderr, "Some things may be broken...\n\n");
+	    }
+	}
+    }
+  /* Don't complain twice.
+   * In theory, the test apply to each individual driver, but usually
+   * all drivers are compiled from the same kernel, and most often
+   * problem is the system/glibc headers. */
+  iw_ignore_version = 1;
+
+  /* Note : we are only trying to catch compile difference, not source.
+   * If the driver source has not been updated to the latest, it doesn't
+   * matter because the new fields are set to zero */
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the WE versions of the interface.
+ */
+static int
+print_iface_version_info(int	skfd,
+			 char *	ifname,
+			 char *	args[],		/* Command line args */
+			 int	count)		/* Args count */
+{
+  struct iwreq		wrq;
+  char			buffer[sizeof(iwrange) * 2];	/* Large enough */
+  struct iw_range *	range;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Cleanup */
+  memset(buffer, 0, sizeof(buffer));
+
+  wrq.u.data.pointer = (caddr_t) buffer;
+  wrq.u.data.length = sizeof(buffer);
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWRANGE, &wrq) < 0)
+    return(-1);
+
+  /* Copy stuff at the right place, ignore extra */
+  range = (struct iw_range *) buffer;
+
+  /* For new versions, we can check the version directly, for old versions
+   * we use magic. 300 bytes is a also magic number, don't touch... */
+  if((WIRELESS_EXT > 10) && (wrq.u.data.length >= 300))
+    {
+#if WIRELESS_EXT > 10
+      printf("%-8.8s  Recommend Wireless Extension v%d or later,\n",
+	     ifname, range->we_version_source);
+      printf("          Currently compiled with Wireless Extension v%d.\n\n",
+	     range->we_version_compiled);
+#endif /* WIRELESS_EXT > 10 */
+    }
+  else
+    {
+#if 0
+      fprintf(stderr, "%-8.8s  no Wireless Extension version information.\n\n",
+		      ifname);
+#endif
+    }
+
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the WE versions of the tools.
+ */
+int
+iw_print_version_info(char *	toolname)
+{
+  int skfd;			/* generic raw socket desc.	*/
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      return -1;
+    }
+
+  /* Information about the tools themselves */
+  if(toolname != NULL)
+    printf("%-8.8s  Version %d\n", toolname, WT_VERSION);
+  printf("          Compatible with Wireless Extension v%d or earlier,\n",
+	 WE_VERSION);
+  printf("          Currently compiled with Wireless Extension v%d.\n\n",
+	 WIRELESS_EXT);
+
+  /* Version for each device */
+  iw_enum_devices(skfd, &print_iface_version_info, NULL, 0);
+
+  close(skfd);
+
+  return 0;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Get information about what private ioctls are supported by the driver
+ */
+int
+iw_get_priv_info(int		skfd,
+		 char *		ifname,
+		 iwprivargs *	priv,
+		 int		maxpriv)
+{
+  struct iwreq		wrq;
+
+  /* Ask the driver */
+  wrq.u.data.pointer = (caddr_t) priv;
+  wrq.u.data.length = maxpriv;
+  wrq.u.data.flags = 0;
+  
+  //printf("iw_get_priv_info pointer=%08x length=%d\n",wrq.u.data.pointer,wrq.u.data.length);
+ 
+  if(iw_get_ext(skfd, ifname, SIOCGIWPRIV, &wrq) < 0)
+    return(-1);
+
+	//printf("iw_get_priv_info wrq.u.data.length=%d\n",wrq.u.data.length);
+
+  /* Return the number of ioctls */
+  return(wrq.u.data.length);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Get essential wireless config from the device driver
+ * We will call all the classical wireless ioctl on the driver through
+ * the socket to know what is supported and to get the settings...
+ * Note : compare to the version in iwconfig, we extract only
+ * what's *really* needed to configure a device...
+ */
+int
+iw_get_basic_config(int			skfd,
+		    char *		ifname,
+		    wireless_config *	info)
+{
+  struct iwreq		wrq;
+
+  memset((char *) info, 0, sizeof(struct wireless_config));
+
+  /* Get wireless name */
+  if(iw_get_ext(skfd, ifname, SIOCGIWNAME, &wrq) < 0)
+    /* If no wireless name : no wireless extensions */
+    return(-1);
+  else
+    {
+      strncpy(info->name, wrq.u.name, IFNAMSIZ);
+      info->name[IFNAMSIZ] = '\0';
+    }
+
+  /* Get network ID */
+  if(iw_get_ext(skfd, ifname, SIOCGIWNWID, &wrq) >= 0)
+    {
+      info->has_nwid = 1;
+      memcpy(&(info->nwid), &(wrq.u.nwid), sizeof(iwparam));
+    }
+
+  /* Get frequency / channel */
+  if(iw_get_ext(skfd, ifname, SIOCGIWFREQ, &wrq) >= 0)
+    {
+      info->has_freq = 1;
+      info->freq = iw_freq2float(&(wrq.u.freq));
+    }
+
+  /* Get encryption information */
+  wrq.u.data.pointer = (caddr_t) info->key;
+  wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWENCODE, &wrq) >= 0)
+    {
+      info->has_key = 1;
+      info->key_size = wrq.u.data.length;
+      info->key_flags = wrq.u.data.flags;
+    }
+
+  /* Get ESSID */
+  wrq.u.essid.pointer = (caddr_t) info->essid;
+  wrq.u.essid.length = IW_ESSID_MAX_SIZE + 1;
+  wrq.u.essid.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWESSID, &wrq) >= 0)
+    {
+      info->has_essid = 1;
+      info->essid_on = wrq.u.data.flags;
+    }
+
+  /* Get operation mode */
+  if(iw_get_ext(skfd, ifname, SIOCGIWMODE, &wrq) >= 0)
+    {
+      info->mode = wrq.u.mode;
+      if((info->mode < 6) && (info->mode >= 0))
+	info->has_mode = 1;
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Set essential wireless config in the device driver
+ * We will call all the classical wireless ioctl on the driver through
+ * the socket to know what is supported and to set the settings...
+ * We support only the restricted set as above...
+ */
+int
+iw_set_basic_config(int			skfd,
+		    char *		ifname,
+		    wireless_config *	info)
+{
+  struct iwreq		wrq;
+  int			ret = 0;
+
+  /* Get wireless name (check if interface is valid) */
+  if(iw_get_ext(skfd, ifname, SIOCGIWNAME, &wrq) < 0)
+    /* If no wireless name : no wireless extensions */
+    return(-2);
+
+  /* Set Network ID, if available (this is for non-802.11 cards) */
+  if(info->has_nwid)
+    {
+      memcpy(&(wrq.u.nwid), &(info->nwid), sizeof(iwparam));
+      wrq.u.nwid.fixed = 1;	/* Hum... When in Rome... */
+
+      if(iw_set_ext(skfd, ifname, SIOCSIWNWID, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCSIWNWID: %s\n", strerror(errno));
+	  ret = -1;
+	}
+    }
+
+  /* Set frequency / channel */
+  if(info->has_freq)
+    {
+      iw_float2freq(info->freq, &(wrq.u.freq));
+
+      if(iw_set_ext(skfd, ifname, SIOCSIWFREQ, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCSIWFREQ: %s\n", strerror(errno));
+	  ret = -1;
+	}
+    }
+
+  /* Set encryption information */
+  if(info->has_key)
+    {
+      int		flags = info->key_flags;
+
+      /* Check if there is a key index */
+      if((flags & IW_ENCODE_INDEX) > 0)
+	{
+	  /* Set the index */
+	  wrq.u.data.pointer = (caddr_t) NULL;
+	  wrq.u.data.flags = (flags & (IW_ENCODE_INDEX)) | IW_ENCODE_NOKEY;
+	  wrq.u.data.length = 0;
+
+	  if(iw_set_ext(skfd, ifname, SIOCSIWENCODE, &wrq) < 0)
+	    {
+	      fprintf(stderr, "SIOCSIWENCODE(%d): %s\n",
+		      errno, strerror(errno));
+	      ret = -1;
+	    }
+	}
+
+      /* Mask out index to minimise probability of reject when setting key */
+      flags = flags & (~IW_ENCODE_INDEX);
+
+      /* Set the key itself (set current key in this case) */
+      wrq.u.data.pointer = (caddr_t) info->key;
+      wrq.u.data.length = info->key_size;
+      wrq.u.data.flags = flags;
+
+      if(iw_set_ext(skfd, ifname, SIOCSIWENCODE, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCSIWENCODE(%d): %s\n",
+		  errno, strerror(errno));
+	  ret = -1;
+	}
+    }
+
+  /* Set ESSID (extended network), if available */
+  if(info->has_essid)
+    {
+      wrq.u.essid.pointer = (caddr_t) info->essid;
+      wrq.u.essid.length = strlen(info->essid) + 1;
+      wrq.u.data.flags = info->essid_on;
+
+      if(iw_set_ext(skfd, ifname, SIOCSIWESSID, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCSIWESSID: %s\n", strerror(errno));
+	  ret = -1;
+	}
+    }
+
+  /* Set the current mode of operation */
+  if(info->has_mode)
+    {
+      strncpy(wrq.ifr_name, ifname, IFNAMSIZ-1);
+      wrq.ifr_name[IFNAMSIZ-1] = '\0';
+      wrq.u.mode = info->mode;
+
+      if(iw_get_ext(skfd, ifname, SIOCSIWMODE, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCSIWMODE: %s\n", strerror(errno));
+	  ret = -1;
+	}
+    }
+
+  return(ret);
+}
+
+/*********************** PROTOCOL SUBROUTINES ***********************/
+/*
+ * Fun stuff with protocol identifiers (SIOCGIWNAME).
+ * We assume that drivers are returning sensible values in there,
+ * which is not always the case :-(
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Compare protocol identifiers.
+ * We don't want to know if the two protocols are the exactly same,
+ * but if they interoperate at some level, and also if they accept the
+ * same type of config (ESSID vs NWID, freq...).
+ * This is supposed to work around the alphabet soup.
+ * Return 1 if protocols are compatible
+ */
+int
+iw_protocol_compare(char *	protocol1,
+		    char *	protocol2)
+{
+  char *	dot11 = "IEEE 802.11";
+  char *	dot11_ds = "Dbg";
+
+  /* If the strings are the same -> easy */
+  if(!strncmp(protocol1, protocol2, IFNAMSIZ))
+    return(1);
+
+  /* Are we dealing with one of the 802.11 variant ? */
+  if( (!strncmp(protocol1, dot11, strlen(dot11))) &&
+      (!strncmp(protocol2, dot11, strlen(dot11))) )
+    {
+      char *	sub1 = protocol1 + strlen(dot11);
+      char *	sub2 = protocol2 + strlen(dot11);
+
+      /* Skip optional separator */
+      if(*sub1 == '-')
+	sub1++;
+      if(*sub2 == '-')
+	sub2++;
+
+      /* Check if they are both 2.4 GHz Direct Sequence compatible */
+      if( (strchr(dot11_ds, *sub1) != NULL) &&
+	  (strchr(dot11_ds, *sub2) != NULL) )
+	return(1);
+    }
+  /* Not compatible */
+  return(0);
+}
+
+/********************** FREQUENCY SUBROUTINES ***********************/
+/*
+ * Note : the two functions below are the cause of troubles on
+ * various embeeded platforms, as they are the reason we require
+ * libm (math library).
+ * In this case, please use enable BUILD_NOLIBM in the makefile
+ *
+ * FIXME : check negative mantissa and exponent
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert a floating point the our internal representation of
+ * frequencies.
+ * The kernel doesn't want to hear about floating point, so we use
+ * this custom format instead.
+ */
+void
+iw_float2freq(double	in,
+	      iwfreq *	out)
+{
+  /* Version without libm : slower */
+  out->e = 0;
+  while(in > 1e9)
+    {
+      in /= 10;
+      out->e++;
+    }
+  out->m = (long) in;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert our internal representation of frequencies to a floating point.
+ */
+double
+iw_freq2float(iwfreq *	in)
+{
+  /* Version without libm : slower */
+  int		i;
+  double	res = (double) in->m;
+  for(i = 0; i < in->e; i++)
+    res *= 10;
+  return(res);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Output a frequency with proper scaling
+ */
+void
+iw_print_freq(char *	buffer,
+	      double	freq)
+{
+  if(freq < KILO)
+    sprintf(buffer, "Channel:%g", freq);
+  else
+    {
+      if(freq >= GIGA)
+	sprintf(buffer, "Frequency:%gGHz", freq / GIGA);
+      else
+	{
+	  if(freq >= MEGA)
+	    sprintf(buffer, "Frequency:%gMHz", freq / MEGA);
+	  else
+	    sprintf(buffer, "Frequency:%gkHz", freq / KILO);
+	}
+    }
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert a frequency to a channel (negative -> error)
+ */
+int
+iw_freq_to_channel(double		freq,
+		   struct iw_range *	range)
+{
+  double	ref_freq;
+  int		k;
+
+  /* Check if it's a frequency or not already a channel */
+  if(freq < KILO)
+    return(-1);
+
+  /* We compare the frequencies as double to ignore differences
+   * in encoding. Slower, but safer... */
+  for(k = 0; k < range->num_frequency; k++)
+    {
+      ref_freq = iw_freq2float(&(range->freq[k]));
+      if(freq == ref_freq)
+	return(range->freq[k].i);
+    }
+  /* Not found */
+  return(-2);
+}
+
+/*********************** BITRATE SUBROUTINES ***********************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Output a bitrate with proper scaling
+ */
+void
+iw_print_bitrate(char *	buffer,
+		 int	bitrate)
+{
+  double	rate = bitrate;
+
+  if(rate >= GIGA)
+    sprintf(buffer, "%gGb/s", rate / GIGA);
+  else
+    if(rate >= MEGA)
+      sprintf(buffer, "%gMb/s", rate / MEGA);
+    else
+      sprintf(buffer, "%gkb/s", rate / KILO);
+}
+
+/************************ POWER SUBROUTINES *************************/
+
+/*------------------------------------------------------------------*/
+#ifndef __ANDROID__
+/*
+ * Convert a value in dBm to a value in milliWatt.
+ */
+int
+iw_dbm2mwatt(int	in)
+{
+  //return((int) (floor(pow(10.0, (((double) in) / 10.0)))));
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert a value in milliWatt to a value in dBm.
+ */
+int
+iw_mwatt2dbm(int	in)
+{
+//  return((int) (ceil(10.0 * log10((double) in))));
+}
+#endif
+/********************** STATISTICS SUBROUTINES **********************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Read /proc/net/wireless to get the latest statistics
+ */
+int
+iw_get_stats(int	skfd,
+	     char *	ifname,
+	     iwstats *	stats)
+{
+#if WIRELESS_EXT > 11
+  struct iwreq		wrq;
+  wrq.u.data.pointer = (caddr_t) stats;
+  wrq.u.data.length = 0;
+  wrq.u.data.flags = 1;		/* Clear updated flag */
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ-1);
+  wrq.ifr_name[IFNAMSIZ-1] = '\0';
+  if(iw_get_ext(skfd, ifname, SIOCGIWSTATS, &wrq) < 0)
+    return(-1);
+
+  return(0);
+#else /* WIRELESS_EXT > 11 */
+  FILE *	f = fopen(PROC_NET_WIRELESS, "r");
+  char		buf[256];
+  char *	bp;
+  int		t;
+  if(f==NULL)
+    return -1;
+  /* Loop on all devices */
+  while(fgets(buf,255,f))
+    {
+      bp=buf;
+      while(*bp&&isspace(*bp))
+	bp++;
+      /* Is it the good device ? */
+      if(strncmp(bp,ifname,strlen(ifname))==0 && bp[strlen(ifname)]==':')
+  	{
+	  /* Skip ethX: */
+	  bp=strchr(bp,':');
+	  bp++;
+	  /* -- status -- */
+	  bp = strtok(bp, " ");
+	  sscanf(bp, "%X", &t);
+	  stats->status = (unsigned short) t;
+	  /* -- link quality -- */
+	  bp = strtok(NULL, " ");
+	  if(strchr(bp,'.') != NULL)
+	    stats->qual.updated |= 1;
+	  sscanf(bp, "%d", &t);
+	  stats->qual.qual = (unsigned char) t;
+	  /* -- signal level -- */
+	  bp = strtok(NULL, " ");
+	  if(strchr(bp,'.') != NULL)
+	    stats->qual.updated |= 2;
+	  sscanf(bp, "%d", &t);
+	  stats->qual.level = (unsigned char) t;
+	  /* -- noise level -- */
+	  bp = strtok(NULL, " ");
+	  if(strchr(bp,'.') != NULL)
+	    stats->qual.updated += 4;
+	  sscanf(bp, "%d", &t);
+	  stats->qual.noise = (unsigned char) t;
+	  /* -- discarded packets -- */
+	  bp = strtok(NULL, " ");
+	  sscanf(bp, "%d", &stats->discard.nwid);
+	  bp = strtok(NULL, " ");
+	  sscanf(bp, "%d", &stats->discard.code);
+	  bp = strtok(NULL, " ");
+	  sscanf(bp, "%d", &stats->discard.misc);
+	  fclose(f);
+	  return 0;
+  	}
+    }
+  fclose(f);
+  return -1;
+#endif /* WIRELESS_EXT > 11 */
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Output the link statistics, taking care of formating
+ */
+void
+iw_print_stats(char *		buffer,
+	       iwqual *		qual,
+	       iwrange *	range,
+	       int		has_range)
+{
+  /* Just do it */
+  if(has_range && (qual->level != 0))
+    {
+      /* If the statistics are in dBm */
+      if(qual->level > range->max_qual.level)
+	{
+	  /* Statistics are in dBm (absolute power measurement) */
+	  sprintf(buffer,
+		  "Quality:%d/%d  Signal level:%d dBm  Noise level:%d dBm%s",
+		  qual->qual, range->max_qual.qual,
+		  qual->level - 0x100, qual->noise - 0x100,
+		  (qual->updated & 0x7) ? " (updated)" : "");
+	}
+      else
+	{
+	  /* Statistics are relative values (0 -> max) */
+	  sprintf(buffer,
+		  "Quality:%d/%d  Signal level:%d/%d  Noise level:%d/%d%s",
+		  qual->qual, range->max_qual.qual,
+		  qual->level, range->max_qual.level,
+		  qual->noise, range->max_qual.noise,
+		  (qual->updated & 0x7) ? " (updated)" : "");
+	}
+    }
+  else
+    {
+      /* We can't read the range, so we don't know... */
+      sprintf(buffer, "Quality:%d  Signal level:%d  Noise level:%d%s",
+	      qual->qual, qual->level, qual->noise,
+	      (qual->updated & 0x7) ? " (updated)" : "");
+    }
+}
+
+/*********************** ENCODING SUBROUTINES ***********************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Output the encoding key, with a nice formating
+ */
+void
+iw_print_key(char *		buffer,
+	     unsigned char *	key,
+	     int		key_size,
+	     int		key_flags)
+{
+  int	i;
+
+  /* Is the key present ??? */
+  if(key_flags & IW_ENCODE_NOKEY)
+    {
+      /* Nope : print on or dummy */
+      if(key_size <= 0)
+	strcpy(buffer, "on");
+      else
+	{
+	  strcpy(buffer, "**");
+	  buffer +=2;
+	  for(i = 1; i < key_size; i++)
+	    {
+	      if((i & 0x1) == 0)
+		strcpy(buffer++, "-");
+	      strcpy(buffer, "**");
+	      buffer +=2;
+	    }
+	}
+    }
+  else
+    {
+      /* Yes : print the key */
+      sprintf(buffer, "%.2X", key[0]);
+      buffer +=2;
+      for(i = 1; i < key_size; i++)
+	{
+	  if((i & 0x1) == 0)
+	    strcpy(buffer++, "-");
+	  sprintf(buffer, "%.2X", key[i]);
+	  buffer +=2;
+	}
+    }
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Convert a passphrase into a key
+ * ### NOT IMPLEMENTED ###
+ * Return size of the key, or 0 (no key) or -1 (error)
+ */
+int
+iw_pass_key(char *		input,
+	    unsigned char *	key)
+{
+  input = input; key = key;
+  fprintf(stderr, "Error: Passphrase not implemented\n");
+  return(-1);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Parse a key from the command line.
+ * Return size of the key, or 0 (no key) or -1 (error)
+ */
+int
+iw_in_key(char *		input,
+	  unsigned char *	key)
+{
+  int		keylen = 0;
+  char *	buff;
+  char *	p;
+  int		temp;
+
+  /* Check the type of key */
+  if(!strncmp(input, "s:", 2))
+    {
+      /* First case : as an ASCII string (Lucent/Agere cards) */
+      keylen = strlen(input + 2);		/* skip "s:" */
+      if(keylen > IW_ENCODING_TOKEN_MAX)
+	keylen = IW_ENCODING_TOKEN_MAX;
+      strncpy((char *)key, input + 2, keylen);
+    }
+  else
+    if(!strncmp(input, "p:", 2))
+      {
+	/* Second case : as a passphrase (PrismII cards) */
+	return(iw_pass_key(input + 2, key));		/* skip "p:" */
+      }
+    else
+      {
+	/* Third case : as hexadecimal digits */
+	buff = malloc(strlen(input) + 1);
+	if(buff == NULL)
+	  {
+	    fprintf(stderr, "Malloc failed (string too long ?)\n");
+	    return(-1);
+	  }
+	/* Preserve original buffer */
+	strcpy(buff, input);
+
+	/* Parse */
+	p = strtok(buff, "-:;.,");
+	while((p != (char *) NULL) && (keylen < IW_ENCODING_TOKEN_MAX))
+	  {
+	    if(sscanf(p, "%2X", &temp) != 1)
+	      return(-1);		/* Error */
+	    key[keylen++] = (unsigned char) (temp & 0xFF);
+	    if(strlen(p) > 2)	/* Token not finished yet */
+	      p += 2;
+	    else
+	      p = strtok((char *) NULL, "-:;.,");
+	  }
+	free(buff);
+      }
+
+  return(keylen);
+}
+
+/******************* POWER MANAGEMENT SUBROUTINES *******************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Output a power management value with all attributes...
+ */
+void
+iw_print_pm_value(char *	buffer,
+		  int		value,
+		  int		flags)
+{
+  /* Modifiers */
+  if(flags & IW_POWER_MIN)
+    {
+      strcpy(buffer, " min");
+      buffer += 4;
+    }
+  if(flags & IW_POWER_MAX)
+    {
+      strcpy(buffer, " max");
+      buffer += 4;
+    }
+
+  /* Type */
+  if(flags & IW_POWER_TIMEOUT)
+    {
+      strcpy(buffer, " timeout:");
+      buffer += 9;
+    }
+  else
+    {
+      strcpy(buffer, " period:");
+      buffer += 8;
+    }
+
+  /* Display value without units */
+  if(flags & IW_POWER_RELATIVE)
+    sprintf(buffer, "%g", ((double) value) / MEGA);
+  else
+    {
+      /* Display value with units */
+      if(value >= (int) MEGA)
+	sprintf(buffer, "%gs", ((double) value) / MEGA);
+      else
+	if(value >= (int) KILO)
+	  sprintf(buffer, "%gms", ((double) value) / KILO);
+	else
+	  sprintf(buffer, "%dus", value);
+    }
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Output a power management mode
+ */
+void
+iw_print_pm_mode(char *	buffer,
+		 int	flags)
+{
+  /* Print the proper mode... */
+  switch(flags & IW_POWER_MODE)
+    {
+    case IW_POWER_UNICAST_R:
+      strcpy(buffer, "mode:Unicast only received");
+      break;
+    case IW_POWER_MULTICAST_R:
+      strcpy(buffer, "mode:Multicast only received");
+      break;
+    case IW_POWER_ALL_R:
+      strcpy(buffer, "mode:All packets received");
+      break;
+    case IW_POWER_FORCE_S:
+      strcpy(buffer, "mode:Force sending");
+      break;
+    case IW_POWER_REPEATER:
+      strcpy(buffer, "mode:Repeat multicasts");
+      break;
+    default:
+      break;
+    }
+}
+
+/***************** RETRY LIMIT/LIFETIME SUBROUTINES *****************/
+
+#if WIRELESS_EXT > 10
+/*------------------------------------------------------------------*/
+/*
+ * Output a retry value with all attributes...
+ */
+void
+iw_print_retry_value(char *	buffer,
+		     int	value,
+		     int	flags)
+{
+  /* Modifiers */
+  if(flags & IW_RETRY_MIN)
+    {
+      strcpy(buffer, " min");
+      buffer += 4;
+    }
+  if(flags & IW_RETRY_MAX)
+    {
+      strcpy(buffer, " max");
+      buffer += 4;
+    }
+
+  /* Type lifetime of limit */
+  if(flags & IW_RETRY_LIFETIME)
+    {
+      strcpy(buffer, " lifetime:");
+      buffer += 10;
+
+      /* Display value without units */
+      if(flags & IW_POWER_RELATIVE)
+	sprintf(buffer, "%g", ((double) value) / MEGA);
+      else
+	{
+	  /* Display value with units */
+	  if(value >= (int) MEGA)
+	    sprintf(buffer, "%gs", ((double) value) / MEGA);
+	  else
+	    if(value >= (int) KILO)
+	      sprintf(buffer, "%gms", ((double) value) / KILO);
+	    else
+	      sprintf(buffer, "%dus", value);
+	}
+    }
+  else
+    sprintf(buffer, " limit:%d", value);
+}
+#endif	/* WIRELESS_EXT > 10 */
+
+/************************* TIME SUBROUTINES *************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print timestamps
+ * Inspired from irdadump...
+ */
+void
+iw_print_timeval(char *			buffer,
+		 const struct timeval *	time)
+{
+        int s;
+
+	s = (time->tv_sec) % 86400;
+	sprintf(buffer, "%02d:%02d:%02d.%06u ", 
+		s / 3600, (s % 3600) / 60, 
+		s % 60, (u_int32_t) time->tv_usec);
+}
+
+/*********************** ADDRESS SUBROUTINES ************************/
+/*
+ * This section is mostly a cut & past from net-tools-1.2.0
+ * manage address display and input...
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Check if interface support the right MAC address type...
+ */
+int
+iw_check_mac_addr_type(int		skfd,
+		       char *		ifname)
+{
+  struct ifreq		ifr;
+
+  /* Get the type of hardware address */
+  strncpy(ifr.ifr_name, ifname, IFNAMSIZ-1);
+  ifr.ifr_name[IFNAMSIZ-1] = '\0';
+  if((ioctl(skfd, SIOCGIFHWADDR, &ifr) < 0) ||
+     (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER))
+    {
+      /* Deep trouble... */
+      fprintf(stderr, "Interface %s doesn't support MAC addresses\n",
+	     ifname);
+      return(-1);
+    }
+
+#ifdef DEBUG
+  printf("Hardware : %d - %s\n", ifr.ifr_hwaddr.sa_family,
+	 iw_ether_ntoa((struct ether_addr *) ifr.ifr_hwaddr.sa_data));
+#endif
+
+  return(0);
+}
+
+
+/*------------------------------------------------------------------*/
+/*
+ * Check if interface support the right interface address type...
+ */
+int
+iw_check_if_addr_type(int		skfd,
+		      char *		ifname)
+{
+  struct ifreq		ifr;
+
+  /* Get the type of interface address */
+  strncpy(ifr.ifr_name, ifname, IFNAMSIZ-1);
+  ifr.ifr_name[IFNAMSIZ-1] = '\0';
+  if((ioctl(skfd, SIOCGIFADDR, &ifr) < 0) ||
+     (ifr.ifr_addr.sa_family !=  AF_INET))
+    {
+      /* Deep trouble... */
+      fprintf(stderr, "Interface %s doesn't support IP addresses\n", ifname);
+      return(-1);
+    }
+
+#ifdef DEBUG
+  printf("Interface : %d - 0x%lX\n", ifr.ifr_addr.sa_family,
+	 *((unsigned long *) ifr.ifr_addr.sa_data));
+#endif
+
+  return(0);
+}
+
+#if 0
+/*------------------------------------------------------------------*/
+/*
+ * Check if interface support the right address types...
+ */
+int
+iw_check_addr_type(int		skfd,
+		   char *	ifname)
+{
+  /* Check the interface address type */
+  if(iw_check_if_addr_type(skfd, ifname) < 0)
+    return(-1);
+
+  /* Check the interface address type */
+  if(iw_check_mac_addr_type(skfd, ifname) < 0)
+    return(-1);
+
+  return(0);
+}
+#endif
+
+/*------------------------------------------------------------------*/
+/*
+ * Display an Ethernet address in readable format.
+ */
+void
+iw_ether_ntop(const struct ether_addr* eth, char* buf)
+{
+  sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X",
+	  eth->ether_addr_octet[0], eth->ether_addr_octet[1],
+	  eth->ether_addr_octet[2], eth->ether_addr_octet[3],
+	  eth->ether_addr_octet[4], eth->ether_addr_octet[5]);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display an Ethernet address in readable format.
+ * Same with a static buffer
+ */
+char *
+iw_ether_ntoa(const struct ether_addr* eth)
+{
+  static char buf[20];
+  iw_ether_ntop(eth, buf);
+  return buf;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Input an Ethernet address and convert to binary.
+ */
+int
+iw_ether_aton(const char *orig, struct ether_addr *eth)
+{
+  const char *bufp;
+  int i;
+
+  i = 0;
+  for(bufp = orig; *bufp != '\0'; ++bufp) {
+	unsigned int val;
+	unsigned char c = *bufp++;
+	if (isdigit(c)) val = c - '0';
+	else if (c >= 'a' && c <= 'f') val = c - 'a' + 10;
+	else if (c >= 'A' && c <= 'F') val = c - 'A' + 10;
+	else break;
+
+	val <<= 4;
+	c = *bufp++;
+	if (isdigit(c)) val |= c - '0';
+	else if (c >= 'a' && c <= 'f') val |= c - 'a' + 10;
+	else if (c >= 'A' && c <= 'F') val |= c - 'A' + 10;
+	else break;
+
+	eth->ether_addr_octet[i] = (unsigned char) (val & 0377);
+	if(++i == ETH_ALEN) {
+		/* That's it.  Any trailing junk? */
+		if (*bufp != '\0') {
+#ifdef DEBUG
+			fprintf(stderr, "iw_ether_aton(%s): trailing junk!\n", orig);
+			errno = EINVAL;
+			return(0);
+#endif
+		}
+#ifdef DEBUG
+		fprintf(stderr, "iw_ether_aton(%s): %s\n",
+			orig, ether_ntoa(eth));
+#endif
+		return(1);
+	}
+	if (*bufp != ':')
+		break;
+  }
+
+#ifdef DEBUG
+  fprintf(stderr, "iw_ether_aton(%s): invalid ether address!\n", orig);
+#endif
+  errno = EINVAL;
+  return(0);
+}
+
+
+/*------------------------------------------------------------------*/
+/*
+ * Input an Internet address and convert to binary.
+ */
+int
+iw_in_inet(char *name, struct sockaddr *sap)
+{
+  struct hostent *hp;
+  struct netent *np;
+  struct sockaddr_in *sin = (struct sockaddr_in *) sap;
+
+  /* Grmpf. -FvK */
+  sin->sin_family = AF_INET;
+  sin->sin_port = 0;
+
+  /* Default is special, meaning 0.0.0.0. */
+  if (!strcmp(name, "default")) {
+	sin->sin_addr.s_addr = INADDR_ANY;
+	return(1);
+  }
+
+  /* Try the NETWORKS database to see if this is a known network. */
+  if ((np = getnetbyname(name)) != (struct netent *)NULL) {
+	sin->sin_addr.s_addr = htonl(np->n_net);
+	strcpy(name, np->n_name);
+	return(1);
+  }
+
+  /* Always use the resolver (DNS name + IP addresses) */
+  if ((hp = gethostbyname(name)) == (struct hostent *)NULL) {
+	errno = h_errno;
+	return(-1);
+  }
+  memcpy((char *) &sin->sin_addr, (char *) hp->h_addr_list[0], hp->h_length);
+  strcpy(name, hp->h_name);
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Input an address and convert to binary.
+ */
+int
+iw_in_addr(int		skfd,
+	   char *	ifname,
+	   char *	bufp,
+	   struct sockaddr *sap)
+{
+  /* Check if it is a hardware or IP address */
+  if(index(bufp, ':') == NULL)
+    {
+      struct sockaddr	if_address;
+      struct arpreq	arp_query;
+
+      /* Check if we have valid interface address type */
+      if(iw_check_if_addr_type(skfd, ifname) < 0)
+	{
+	  fprintf(stderr, "%-8.8s  Interface doesn't support IP addresses\n", ifname);
+	  return(-1);
+	}
+
+      /* Read interface address */
+      if(iw_in_inet(bufp, &if_address) < 0)
+	{
+	  fprintf(stderr, "Invalid interface address %s\n", bufp);
+	  return(-1);
+	}
+
+      /* Translate IP addresses to MAC addresses */
+      memcpy((char *) &(arp_query.arp_pa),
+	     (char *) &if_address,
+	     sizeof(struct sockaddr));
+      arp_query.arp_ha.sa_family = 0;
+      arp_query.arp_flags = 0;
+      /* The following restrict the search to the interface only */
+      /* For old kernels which complain, just comment it... */
+      strncpy(arp_query.arp_dev, ifname, IFNAMSIZ-1);
+      arp_query.arp_dev[IFNAMSIZ-1] = '\0';
+      if((ioctl(skfd, SIOCGARP, &arp_query) < 0) ||
+	 !(arp_query.arp_flags & ATF_COM))
+	{
+	  fprintf(stderr, "Arp failed for %s on %s... (%d)\nTry to ping the address before setting it.\n",
+		  bufp, ifname, errno);
+	  return(-1);
+	}
+
+      /* Store new MAC address */
+      memcpy((char *) sap,
+	     (char *) &(arp_query.arp_ha),
+	     sizeof(struct sockaddr));
+
+#ifdef DEBUG
+      printf("IP Address %s => Hw Address = %s\n",
+	     bufp, iw_ether_ntoa((struct ether_addr *) sap->sa_data));
+#endif
+    }
+  else	/* If it's an hardware address */
+    {
+      /* Check if we have valid mac address type */
+      if(iw_check_mac_addr_type(skfd, ifname) < 0)
+	{
+	  fprintf(stderr, "%-8.8s  Interface doesn't support MAC addresses\n", ifname);
+	  return(-1);
+	}
+
+      /* Get the hardware address */
+      if(iw_in_ether(bufp, sap) < 0)
+	{
+	  fprintf(stderr, "Invalid hardware address %s\n", bufp);
+	  return(-1);
+	}
+    }
+
+#ifdef DEBUG
+  printf("Hw Address = %s\n", iw_ether_ntoa((struct ether_addr *) sap->sa_data));
+#endif
+
+  return(0);
+}
+
+/************************* MISC SUBROUTINES **************************/
+
+/* Size (in bytes) of various events */
+static const int priv_type_size[] = {
+	0,				/* IW_PRIV_TYPE_NONE */
+	1,				/* IW_PRIV_TYPE_BYTE */
+	1,				/* IW_PRIV_TYPE_CHAR */
+	0,				/* Not defined */
+	sizeof(__u32),			/* IW_PRIV_TYPE_INT */
+	sizeof(struct iw_freq),		/* IW_PRIV_TYPE_FLOAT */
+	sizeof(struct sockaddr),	/* IW_PRIV_TYPE_ADDR */
+	0,				/* Not defined */
+};
+
+/*------------------------------------------------------------------*/
+/*
+ * Max size in bytes of an private argument.
+ */
+int
+iw_get_priv_size(int	args)
+{
+  int	num = args & IW_PRIV_SIZE_MASK;
+  int	type = (args & IW_PRIV_TYPE_MASK) >> 12;
+
+  return(num * priv_type_size[type]);
+}
+
+/************************ EVENT SUBROUTINES ************************/
+/*
+ * The Wireless Extension API 14 and greater define Wireless Events,
+ * that are used for various events and scanning.
+ * Those functions help the decoding of events, so are needed only in
+ * this case.
+ */
+#if WIRELESS_EXT > 13
+
+/* Type of headers we know about (basically union iwreq_data) */
+#define IW_HEADER_TYPE_NULL	0	/* Not available */
+#define IW_HEADER_TYPE_CHAR	2	/* char [IFNAMSIZ] */
+#define IW_HEADER_TYPE_UINT	4	/* __u32 */
+#define IW_HEADER_TYPE_FREQ	5	/* struct iw_freq */
+#define IW_HEADER_TYPE_ADDR	6	/* struct sockaddr */
+#define IW_HEADER_TYPE_POINT	8	/* struct iw_point */
+#define IW_HEADER_TYPE_PARAM	9	/* struct iw_param */
+#define IW_HEADER_TYPE_QUAL	10	/* struct iw_quality */
+
+/* Headers for the various requests */
+static const char standard_ioctl_hdr[] = {
+	IW_HEADER_TYPE_NULL,	/* SIOCSIWCOMMIT */
+	IW_HEADER_TYPE_CHAR,	/* SIOCGIWNAME */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWNWID */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWNWID */
+	IW_HEADER_TYPE_FREQ,	/* SIOCSIWFREQ */
+	IW_HEADER_TYPE_FREQ,	/* SIOCGIWFREQ */
+	IW_HEADER_TYPE_UINT,	/* SIOCSIWMODE */
+	IW_HEADER_TYPE_UINT,	/* SIOCGIWMODE */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWSENS */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWSENS */
+	IW_HEADER_TYPE_NULL,	/* SIOCSIWRANGE */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWRANGE */
+	IW_HEADER_TYPE_NULL,	/* SIOCSIWPRIV */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWPRIV */
+	IW_HEADER_TYPE_NULL,	/* SIOCSIWSTATS */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWSTATS */
+	IW_HEADER_TYPE_POINT,	/* SIOCSIWSPY */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWSPY */
+	IW_HEADER_TYPE_NULL,	/* -- hole -- */
+	IW_HEADER_TYPE_NULL,	/* -- hole -- */
+	IW_HEADER_TYPE_ADDR,	/* SIOCSIWAP */
+	IW_HEADER_TYPE_ADDR,	/* SIOCGIWAP */
+	IW_HEADER_TYPE_NULL,	/* -- hole -- */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWAPLIST */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWSCAN */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWSCAN */
+	IW_HEADER_TYPE_POINT,	/* SIOCSIWESSID */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWESSID */
+	IW_HEADER_TYPE_POINT,	/* SIOCSIWNICKN */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWNICKN */
+	IW_HEADER_TYPE_NULL,	/* -- hole -- */
+	IW_HEADER_TYPE_NULL,	/* -- hole -- */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWRATE */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWRATE */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWRTS */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWRTS */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWFRAG */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWFRAG */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWTXPOW */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWTXPOW */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWRETRY */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWRETRY */
+	IW_HEADER_TYPE_POINT,	/* SIOCSIWENCODE */
+	IW_HEADER_TYPE_POINT,	/* SIOCGIWENCODE */
+	IW_HEADER_TYPE_PARAM,	/* SIOCSIWPOWER */
+	IW_HEADER_TYPE_PARAM,	/* SIOCGIWPOWER */
+};
+static const unsigned int standard_ioctl_num = sizeof(standard_ioctl_hdr);
+
+/*
+ * Meta-data about all the additional standard Wireless Extension events
+ * we know about.
+ */
+static const char	standard_event_hdr[] = {
+	IW_HEADER_TYPE_ADDR,	/* IWEVTXDROP */
+	IW_HEADER_TYPE_QUAL,	/* IWEVQUAL */
+	IW_HEADER_TYPE_POINT,	/* IWEVCUSTOM */
+	IW_HEADER_TYPE_ADDR,	/* IWEVREGISTERED */
+	IW_HEADER_TYPE_ADDR,	/* IWEVEXPIRED */
+};
+static const unsigned int standard_event_num = sizeof(standard_event_hdr);
+
+/* Size (in bytes) of various events */
+static const int event_type_size[] = {
+	IW_EV_LCP_LEN,		/* IW_HEADER_TYPE_NULL */
+	0,
+	IW_EV_CHAR_LEN,		/* IW_HEADER_TYPE_CHAR */
+	0,
+	IW_EV_UINT_LEN,		/* IW_HEADER_TYPE_UINT */
+	IW_EV_FREQ_LEN,		/* IW_HEADER_TYPE_FREQ */
+	IW_EV_ADDR_LEN,		/* IW_HEADER_TYPE_ADDR */
+	0,
+	IW_EV_POINT_LEN,	/* Without variable payload */
+	IW_EV_PARAM_LEN,	/* IW_HEADER_TYPE_PARAM */
+	IW_EV_QUAL_LEN,		/* IW_HEADER_TYPE_QUAL */
+};
+
+/*------------------------------------------------------------------*/
+/*
+ * Initialise the struct stream_descr so that we can extract
+ * individual events from the event stream.
+ */
+void
+iw_init_event_stream(struct stream_descr *	stream,	/* Stream of events */
+		     char *			data,
+		     int			len)
+{
+  /* Cleanup */
+  memset((char *) stream, '\0', sizeof(struct stream_descr));
+
+  /* Set things up */
+  stream->current = data;
+  stream->end = data + len;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Extract the next event from the event stream.
+ */
+int
+iw_extract_event_stream(struct stream_descr *	stream,	/* Stream of events */
+			struct iw_event *	iwe)	/* Extracted event */
+{
+  int		event_type = 0;
+  unsigned int	event_len = 1;		/* Invalid */
+  char *	pointer;
+  /* Don't "optimise" the following variable, it will crash */
+  unsigned	cmd_index;		/* *MUST* be unsigned */
+
+  /* Check for end of stream */
+  if((stream->current + IW_EV_LCP_LEN) > stream->end)
+    return(0);
+
+#if 0
+  printf("DBG - stream->current = %p, stream->value = %p, stream->end = %p\n",
+	 stream->current, stream->value, stream->end);
+#endif
+
+  /* Extract the event header (to get the event id).
+   * Note : the event may be unaligned, therefore copy... */
+  memcpy((char *) iwe, stream->current, IW_EV_LCP_LEN);
+
+#if 0
+  printf("DBG - iwe->cmd = 0x%X, iwe->len = %d\n",
+	 iwe->cmd, iwe->len);
+#endif
+
+  /* Check invalid events */
+  if(iwe->len <= IW_EV_LCP_LEN)
+    return(-1);
+
+  /* Get the type and length of that event */
+  if(iwe->cmd <= SIOCIWLAST)
+    {
+      cmd_index = iwe->cmd - SIOCIWFIRST;
+      if(cmd_index < standard_ioctl_num)
+	event_type = standard_ioctl_hdr[cmd_index];
+    }
+  else
+    {
+      cmd_index = iwe->cmd - IWEVFIRST;
+      if(cmd_index < standard_event_num)
+	event_type = standard_event_hdr[cmd_index];
+    }
+  /* Unknown events -> event_type=0 => IW_EV_LCP_LEN */
+  event_len = event_type_size[event_type];
+
+  /* Check if we know about this event */
+  if(event_len <= IW_EV_LCP_LEN)
+    {
+      /* Skip to next event */
+      stream->current += iwe->len;
+      return(2);
+    }
+  event_len -= IW_EV_LCP_LEN;
+
+  /* Set pointer on data */
+  if(stream->value != NULL)
+    pointer = stream->value;			/* Next value in event */
+  else
+    pointer = stream->current + IW_EV_LCP_LEN;	/* First value in event */
+
+#if 0
+  printf("DBG - event_type = %d, event_len = %d, pointer = %p\n",
+	 event_type, event_len, pointer);
+#endif
+
+  /* Copy the rest of the event (at least, fixed part) */
+  if((pointer + event_len) > stream->end)
+    {
+      /* Go to next event */
+      stream->current += iwe->len;
+      return(-2);
+    }
+  memcpy((char *) iwe + IW_EV_LCP_LEN, pointer, event_len);
+
+  /* Skip event in the stream */
+  pointer += event_len;
+
+  /* Special processing for iw_point events */
+  if(event_type == IW_HEADER_TYPE_POINT)
+    {
+      /* Check the length of the payload */
+      if((iwe->len - (event_len + IW_EV_LCP_LEN)) > 0)
+	/* Set pointer on variable part (warning : non aligned) */
+	iwe->u.data.pointer = pointer;
+      else
+	/* No data */
+	iwe->u.data.pointer = NULL;
+
+      /* Go to next event */
+      stream->current += iwe->len;
+    }
+  else
+    {
+      /* Is there more value in the event ? */
+      if((pointer + event_len) <= (stream->current + iwe->len))
+	/* Go to next value */
+	stream->value = pointer;
+      else
+	{
+	  /* Go to next event */
+	  stream->value = NULL;
+	  stream->current += iwe->len;
+	}
+    }
+  return(1);
+}
+
+#endif /* WIRELESS_EXT > 13 */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.h
new file mode 100644
index 0000000..88894c0
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlib.h
@@ -0,0 +1,490 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB 97->99 - HPL 99->02
+ *
+ * Common header for the Wireless Extension library...
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#ifndef IWLIB_H
+#define IWLIB_H
+
+/*#include "CHANGELOG.h"*/
+
+/***************************** INCLUDES *****************************/
+
+/* Standard headers */
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <stdio.h>
+#include <math.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <netdb.h>		/* gethostbyname, getnetbyname */
+//#include <net/ethernet.h>	/* struct ether_addr */
+#if defined(__GLIBC__) && (__GLIBC__)
+#include <netinet/if_ether.h>
+#else
+#include <linux/if_ether.h>
+#ifdef __ANDROID__
+#include <net/if_ether.h>
+#endif
+#endif
+#include <sys/time.h>		/* struct timeval */
+#include <unistd.h>
+
+/* This is our header selection. Try to hide the mess and the misery :-(
+ * Don't look, you would go blind ;-) */
+
+#ifndef LINUX_VERSION_CODE
+#include <linux/version.h>
+#endif
+
+/* Kernel headers 2.4.X + Glibc 2.2 - Mandrake 8.0, Debian 2.3, RH 7.1
+ * Kernel headers 2.2.X + Glibc 2.2 - Slackware 8.0 */
+#if defined(__GLIBC__) \
+    && __GLIBC__ == 2 \
+    && __GLIBC_MINOR__ >= 2 \
+    && LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+//#define GLIBC22_HEADERS
+#define GENERIC_HEADERS
+
+/* Kernel headers 2.4.X + Glibc 2.1 - Debian 2.2 upgraded, RH 7.0
+ * Kernel headers 2.2.X + Glibc 2.1 - Debian 2.2, RH 6.1 */
+#elif defined(__GLIBC__) \
+      && __GLIBC__ == 2 \
+      && __GLIBC_MINOR__ == 1 \
+      && LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+//#define GLIBC_HEADERS
+#define GENERIC_HEADERS
+
+/* Kernel headers 2.2.X + Glibc 2.0 - Debian 2.1 */
+#elif defined(__GLIBC__) \
+      && __GLIBC__ == 2 \
+      && __GLIBC_MINOR__ == 0 \
+      && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0) \
+      && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
+#define GLIBC_HEADERS
+#define KLUDGE_HEADERS
+
+/* Note : is it really worth supporting kernel 2.0.X, knowing that
+ * we require WE v9, which is only available in 2.2.X and higher ?
+ * I guess one could use 2.0.x with an upgraded wireless.h... */
+
+/* Kernel headers 2.0.X + Glibc 2.0 - Debian 2.0, RH 5 */
+#elif defined(__GLIBC__) \
+      && __GLIBC__ == 2 \
+      && __GLIBC_MINOR__ == 0 \
+      && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0) \
+      && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)
+#define GLIBC_HEADERS
+
+/* Kernel headers 2.0.X + libc5 - old systems */
+#elif defined(_LINUX_C_LIB_VERSION_MAJOR) \
+      && _LINUX_C_LIB_VERSION_MAJOR == 5 \
+      && LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0) \
+      && LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0)
+#define LIBC5_HEADERS
+
+/* Unsupported combination */
+#elif defined(__ANDROID__)
+#define GLIBC_HEADERS
+#else
+#error "Your kernel/libc combination is not supported"
+#endif
+
+#ifdef GENERIC_HEADERS 
+/* Proposed by Dr. Michael Rietz <rietz@mail.amps.de>, 27.3.2 */
+/* If this works for all, it might be more stable on the long term - Jean II */
+#include <net/if_arp.h>		/* For ARPHRD_ETHER */
+#include <sys/socket.h>		/* For AF_INET & struct sockaddr */
+#include <netinet/in.h>         /* For struct sockaddr_in */
+#include <netinet/if_ether.h>
+#endif /* GENERIC_HEADERS */    
+
+#ifdef GLIBC22_HEADERS 
+/* Added by Ross G. Miller <Ross_Miller@baylor.edu>, 3/28/01 */
+#include <linux/if_arp.h> 	/* For ARPHRD_ETHER */
+#include <linux/socket.h>	/* For AF_INET & struct sockaddr */
+#include <sys/socket.h>
+#endif /* GLIBC22_HEADERS */    
+
+#ifdef KLUDGE_HEADERS
+#include <socketbits.h>
+#endif	/* KLUDGE_HEADERS */
+
+#ifdef GLIBC_HEADERS
+#include <linux/if_arp.h>	/* For ARPHRD_ETHER */
+#include <linux/socket.h>	/* For AF_INET & struct sockaddr */
+#include <linux/in.h>		/* For struct sockaddr_in */
+#endif	/* KLUDGE_HEADERS || GLIBC_HEADERS */
+
+#ifdef LIBC5_HEADERS
+#include <sys/socket.h>		/* For AF_INET & struct sockaddr & socket() */
+#include <linux/if_arp.h>	/* For ARPHRD_ETHER */
+#include <linux/in.h>		/* For struct sockaddr_in */
+#endif	/* LIBC5_HEADERS */
+
+#ifdef WEXT_HEADER
+/* Private copy of Wireless extensions */
+#include WEXT_HEADER
+#else	/* !WEXT_HEADER */
+/* System wide Wireless extensions */
+#include <linux/if.h>
+#include <linux/wireless.h>
+#endif	/* !WEXT_HEADER */
+
+/****************************** DEBUG ******************************/
+
+
+/************************ CONSTANTS & MACROS ************************/
+
+/* Paths */
+#define PROC_NET_WIRELESS	"/proc/net/wireless"
+#define PROC_NET_DEV		"/proc/net/dev"
+
+/* Some usefull constants */
+#define KILO	1e3
+#define MEGA	1e6
+#define GIGA	1e9
+
+/* Backward compatibility for Wireless Extension 9 */
+#ifndef IW_POWER_MODIFIER
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+#endif /* IW_POWER_MODIFIER */
+
+#ifndef IW_ENCODE_NOKEY
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not here */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#endif /* IW_ENCODE_NOKEY */
+
+/* More backward compatibility */
+#ifndef SIOCSIWCOMMIT
+#define SIOCSIWCOMMIT	SIOCSIWNAME
+#endif /* SIOCSIWCOMMIT */
+
+/****************************** TYPES ******************************/
+
+/* Shortcuts */
+typedef struct iw_statistics	iwstats;
+typedef struct iw_range		iwrange;
+typedef struct iw_param		iwparam;
+typedef struct iw_freq		iwfreq;
+typedef struct iw_quality	iwqual;
+typedef struct iw_priv_args	iwprivargs;
+typedef struct sockaddr		sockaddr;
+
+/* Structure for storing all wireless information for each device
+ * This is pretty exhaustive... */
+typedef struct wireless_info
+{
+  char		name[IFNAMSIZ + 1];	/* Wireless/protocol name */
+  int		has_nwid;
+  iwparam	nwid;			/* Network ID */
+  int		has_freq;
+  double	freq;			/* Frequency/channel */
+  int		has_sens;
+  iwparam	sens;			/* sensitivity */
+  int		has_key;
+  unsigned char	key[IW_ENCODING_TOKEN_MAX];	/* Encoding key used */
+  int		key_size;		/* Number of bytes */
+  int		key_flags;		/* Various flags */
+  int		has_essid;
+  int		essid_on;
+  char		essid[IW_ESSID_MAX_SIZE + 1];	/* ESSID (extended network) */
+  int		has_nickname;
+  char		nickname[IW_ESSID_MAX_SIZE + 1]; /* NickName */
+  int		has_ap_addr;
+  sockaddr	ap_addr;		/* Access point address */
+  int		has_bitrate;
+  iwparam	bitrate;		/* Bit rate in bps */
+  int		has_rts;
+  iwparam	rts;			/* RTS threshold in bytes */
+  int		has_frag;
+  iwparam	frag;			/* Fragmentation threshold in bytes */
+  int		has_mode;
+  int		mode;			/* Operation mode */
+  int		has_power;
+  iwparam	power;			/* Power management parameters */
+  int		has_txpower;
+  iwparam	txpower;		/* Transmit Power in dBm */
+  int		has_retry;
+  iwparam	retry;			/* Retry limit or lifetime */
+
+  /* Stats */
+  iwstats	stats;
+  int		has_stats;
+  iwrange	range;
+  int		has_range;
+} wireless_info;
+
+/* Structure for storing all wireless information for each device
+ * This is a cut down version of the one above, containing only
+ * the things *truly* needed to configure a card.
+ * Don't add other junk, I'll remove it... */
+typedef struct wireless_config
+{
+  char		name[IFNAMSIZ + 1];	/* Wireless/protocol name */
+  int		has_nwid;
+  iwparam	nwid;			/* Network ID */
+  int		has_freq;
+  double	freq;			/* Frequency/channel */
+  int		has_key;
+  unsigned char	key[IW_ENCODING_TOKEN_MAX];	/* Encoding key used */
+  int		key_size;		/* Number of bytes */
+  int		key_flags;		/* Various flags */
+  int		has_essid;
+  int		essid_on;
+  char		essid[IW_ESSID_MAX_SIZE + 1];	/* ESSID (extended network) */
+  int		has_mode;
+  int		mode;			/* Operation mode */
+} wireless_config;
+
+typedef struct stream_descr
+{
+  char *	end;		/* End of the stream */
+  char *	current;	/* Current event in stream of events */
+  char *	value;		/* Current value in event */
+} stream_descr;
+
+/* Prototype for handling display of each single interface on the
+ * system - see iw_enum_devices() */
+typedef int (*iw_enum_handler)(int	skfd,
+			       char *	ifname,
+			       char *	args[],
+			       int	count);
+
+/**************************** PROTOTYPES ****************************/
+/*
+ * All the functions in iwcommon.c
+ */
+/* ---------------------- SOCKET SUBROUTINES -----------------------*/
+int
+	iw_sockets_open(void);
+void
+	iw_enum_devices(int		skfd,
+			iw_enum_handler fn,
+			char *		args[],
+			int		count);
+/* --------------------- WIRELESS SUBROUTINES ----------------------*/
+int
+	iw_get_range_info(int		skfd,
+			  char *	ifname,
+			  iwrange *	range);
+int
+	iw_print_version_info(char *	toolname);
+int
+	iw_get_priv_info(int		skfd,
+			 char *		ifname,
+			 iwprivargs *	priv,
+			 int		maxpriv);
+int
+	iw_get_basic_config(int			skfd,
+			    char *		ifname,
+			    wireless_config *	info);
+int
+	iw_set_basic_config(int			skfd,
+			    char *		ifname,
+			    wireless_config *	info);
+/* --------------------- PROTOCOL SUBROUTINES --------------------- */
+int
+	iw_protocol_compare(char *	protocol1,
+			    char *	protocol2);
+/* -------------------- FREQUENCY SUBROUTINES --------------------- */
+void
+	iw_float2freq(double	in,
+		   iwfreq *	out);
+double
+	iw_freq2float(iwfreq *	in);
+void
+	iw_print_freq(char *	buffer,
+		      double	freq);
+int
+	iw_freq_to_channel(double		freq,
+			   struct iw_range *	range);
+void
+	iw_print_bitrate(char *	buffer,
+			 int	bitrate);
+/* ---------------------- POWER SUBROUTINES ----------------------- */
+int
+	iw_dbm2mwatt(int	in);
+int
+	iw_mwatt2dbm(int	in);
+/* -------------------- STATISTICS SUBROUTINES -------------------- */
+int
+	iw_get_stats(int	skfd,
+		     char *	ifname,
+		     iwstats *	stats);
+void
+	iw_print_stats(char *		buffer,
+		       iwqual *		qual,
+		       iwrange *	range,
+		       int		has_range);
+/* --------------------- ENCODING SUBROUTINES --------------------- */
+void
+	iw_print_key(char *		buffer,
+		     unsigned char *	key,
+		     int		key_size,
+		     int		key_flags);
+int
+	iw_in_key(char *		input,
+		  unsigned char *	key);
+/* ----------------- POWER MANAGEMENT SUBROUTINES ----------------- */
+void
+	iw_print_pm_value(char *	buffer,
+			  int		value,
+			  int		flags);
+void
+	iw_print_pm_mode(char *		buffer,
+			 int		flags);
+/* --------------- RETRY LIMIT/LIFETIME SUBROUTINES --------------- */
+#if WIRELESS_EXT > 10
+void
+	iw_print_retry_value(char *	buffer,
+			     int	value,
+			     int	flags);
+#endif
+/* ----------------------- TIME SUBROUTINES ----------------------- */
+void
+	iw_print_timeval(char *			buffer,
+			 const struct timeval *	time);
+/* --------------------- ADDRESS SUBROUTINES ---------------------- */
+int
+	iw_check_mac_addr_type(int	skfd,
+			       char *	ifname);
+int
+	iw_check_if_addr_type(int	skfd,
+			      char *	ifname);
+#if 0
+int
+	iw_check_addr_type(int		skfd,
+			   char *	ifname);
+#endif
+void
+	iw_ether_ntop(const struct ether_addr* eth, char* buf);
+char*
+	iw_ether_ntoa(const struct ether_addr* eth);
+int
+	iw_ether_aton(const char* bufp, struct ether_addr* eth);
+int
+	iw_in_inet(char *bufp, struct sockaddr *sap);
+int
+	iw_in_addr(int			skfd,
+		   char *		ifname,
+		   char *		bufp,
+		   struct sockaddr *	sap);
+/* ----------------------- MISC SUBROUTINES ------------------------ */
+int
+	iw_get_priv_size(int		args);
+
+#if WIRELESS_EXT > 13
+/* ---------------------- EVENT SUBROUTINES ---------------------- */
+void
+	iw_init_event_stream(struct stream_descr *	stream,
+			     char *			data,
+			     int			len);
+int
+	iw_extract_event_stream(struct stream_descr *	stream,
+				struct iw_event *	iwe);
+#endif /* WIRELESS_EXT > 13 */
+
+/**************************** VARIABLES ****************************/
+
+extern const char * const	iw_operation_mode[];
+#define IW_NUM_OPER_MODE	7
+
+/************************* INLINE FUNTIONS *************************/
+/*
+ * Functions that are so simple that it's more efficient inlining them
+ */
+
+/*
+ * Note : I've defined wrapper for the ioctl request so that
+ * it will be easier to migrate to other kernel API if needed
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Wrapper to push some Wireless Parameter in the driver
+ */
+static inline int
+iw_set_ext(int			skfd,		/* Socket to the kernel */
+	   char *		ifname,		/* Device name */
+	   int			request,	/* WE ID */
+	   struct iwreq *	pwrq)		/* Fixed part of the request */
+{
+  /* Set device name */
+  strncpy(pwrq->ifr_name, ifname, IFNAMSIZ-1);
+  pwrq->ifr_name[IFNAMSIZ-1] = '\0';
+  /* Do the request */
+  return(ioctl(skfd, request, pwrq));
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Wrapper to extract some Wireless Parameter out of the driver
+ */
+static inline int
+iw_get_ext(int			skfd,		/* Socket to the kernel */
+	   char *		ifname,		/* Device name */
+	   int			request,	/* WE ID */
+	   struct iwreq *	pwrq)		/* Fixed part of the request */
+{
+  /* Set device name */
+  strncpy(pwrq->ifr_name, ifname, IFNAMSIZ-1);
+  pwrq->ifr_name[IFNAMSIZ-1] = '\0';
+  /* Do the request */
+  return(ioctl(skfd, request, pwrq));
+}
+
+/*------------------------------------------------------------------*/
+/* Backwards compatability
+ * Actually, those form are much easier to use when dealing with
+ * struct sockaddr... */
+static inline char*
+iw_pr_ether(char* bufp, const unsigned char* addr)
+{
+  iw_ether_ntop((const struct ether_addr *) addr, bufp);
+  return bufp;
+}
+/* Backwards compatability */
+static inline int
+iw_in_ether(const char *bufp, struct sockaddr *sap)
+{
+  sap->sa_family = ARPHRD_ETHER;
+  return iw_ether_aton(bufp, (struct ether_addr *) sap->sa_data) ? 0 : -1;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Create an Ethernet broadcast address
+ */
+static inline void
+iw_broad_ether(struct sockaddr *sap)
+{
+  sap->sa_family = ARPHRD_ETHER;
+  memset((char *) sap->sa_data, 0xFF, ETH_ALEN);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Create an Ethernet NULL address
+ */
+static inline void
+iw_null_ether(struct sockaddr *sap)
+{
+  sap->sa_family = ARPHRD_ETHER;
+  memset((char *) sap->sa_data, 0x00, ETH_ALEN);
+}
+
+#endif	/* IWLIB_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.8
new file mode 100644
index 0000000..3623626
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.8
@@ -0,0 +1,105 @@
+.\" Jean II - HPLB - 96
+.\" iwlist.8
+.\"
+.TH IWLIST 8 "31 October 1996" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwlist \- Get wireless statistics from specific nodes
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwlist " interface " freq"
+.br
+.BI "iwlist " interface " ap"
+.br
+.BI "iwlist " interface " scan"
+.br
+.BI "iwlist " interface " rate"
+.br
+.BI "iwlist " interface " key"
+.br
+.BI "iwlist " interface " power"
+.br
+.BI "iwlist " interface " txpower"
+.br
+.BI "iwlist " interface " retry"
+.br
+.BI "iwlist --help"
+.br
+.BI "iwlist --version"
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B Iwlist
+is used to display some large chunk of information from a wireless
+network interface that is not displayed by iwconfig. This is typically
+list of parameters.
+.\"
+.\" PARAMETER part
+.\"
+.SH PARAMETERS
+.TP
+.BR freq / channel
+Give the list of available frequencies in the device and the number of
+defined channels. Please note that usually the driver returns the
+total number of channels and only the frequencies available in the
+present locale, so there is no one to one mapping between frequencies
+displayed and channel numbers.
+.TP
+.BR ap / accesspoint
+Give the list of Access Points in range, and optionally the quality of
+link to them. This feature is obsolte and now deprecated in favor of
+scanning support (below), and it will disappear in the future.
+.TP
+.BR scan [ning]
+Give the list of Access Points and Ad-Hoc cells in range, and
+optionally a whole bunch of information about them (ESSID, Quality,
+Frequency, Mode...). The type of information returned depend on what
+the card support.
+.br
+Triggering scanning is a priviledged operation
+.RI ( root
+only) and normal users can only read letf-over scan results. By
+default, the way scanning is done (the scope of the scan) will be
+impacted by the current setting of the driver. Also, this command is
+supposed to take extra arguments to control the scanning behaviour,
+but this is currently not implemented.
+.TP
+.BR rate / bit [rate]
+List the bit-rates supported by the device.
+.TP
+.BR key / enc [ryption]
+List the encryption key sizes supported and display all the encryption
+keys availables in the device.
+.TP
+.B power
+List the various Power Management attributes and modes of the device.
+.TP
+.B txpower
+List the various Transmit Power available on the device.
+.TP
+.B retry
+List the transmit retry limits and retry lifetime on the device.
+.TP
+.B --version
+Display the version of the tools, as well as the recommended and
+current Wireless Extensions version for the tool and the various
+wireless interfaces.
+.\"
+.\" FILES part
+.\"
+.SH FILES
+.I /proc/net/wireless
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR iwconfig (8),
+.BR ifconfig (8),
+.BR iwspy (8).
+.BR iwpriv (8).
+
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.c
new file mode 100644
index 0000000..c5de308
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwlist.c
@@ -0,0 +1,1143 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB '99 - HPL 99->01
+ *
+ * This tool can access various piece of information on the card
+ * not part of iwconfig...
+ * You need to link this code against "iwlist.c" and "-lm".
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#include "iwlib.h"		/* Header */
+#include <sys/time.h>
+
+/*********************** FREQUENCIES/CHANNELS ***********************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the number of channels and available frequency for the device
+ */
+static int
+print_freq_info(int		skfd,
+		char *		ifname,
+		char *		args[],		/* Command line args */
+		int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  double		freq;
+  int			k;
+  int			channel;
+  char			buffer[128];	/* Temporary buffer */
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Get list of frequencies / channels */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no frequency information.\n\n",
+		      ifname);
+  else
+    {
+      if(range.num_frequency > 0)
+	{
+	  printf("%-8.8s  %d channels in total; available frequencies :\n",
+		 ifname, range.num_channels);
+	  /* Print them all */
+	  for(k = 0; k < range.num_frequency; k++)
+	    {
+	      printf("          Channel %.2d : ", range.freq[k].i);
+	      freq = iw_freq2float(&(range.freq[k]));
+	      if(freq >= GIGA)
+		printf("%g GHz\n", freq / GIGA);
+	      else
+		if(freq >= MEGA)
+		  printf("%g MHz\n", freq / MEGA);
+		else
+		  printf("%g kHz\n", freq / KILO);
+	    }
+	}
+      else
+	printf("%-8.8s  %d channels\n",
+	       ifname, range.num_channels);
+
+      /* Get current frequency / channel and display it */
+      if(iw_get_ext(skfd, ifname, SIOCGIWFREQ, &wrq) >= 0)
+	{
+	  freq = iw_freq2float(&(wrq.u.freq));
+	  iw_print_freq(buffer, freq);
+	  channel = iw_freq_to_channel(freq, &range);
+	  if(channel >= 0)
+	    printf("          Current %s (channel %.2d)\n\n", buffer, channel);
+	  else
+	    printf("          Current %s\n\n", buffer);
+	}
+    }
+  return(0);
+}
+
+/************************ ACCESS POINT LIST ************************/
+/*
+ * Note : now that we have scanning support, this is depracted and
+ * won't survive long. Actually, next version it's out !
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the list of ap addresses and the associated stats
+ * Exacly the same as the spy list, only with different IOCTL and messages
+ */
+static int
+print_ap_info(int	skfd,
+	      char *	ifname,
+	      char *	args[],		/* Command line args */
+	      int	count)		/* Args count */
+{
+  struct iwreq		wrq;
+  char		buffer[(sizeof(struct iw_quality) +
+			sizeof(struct sockaddr)) * IW_MAX_AP];
+  char		temp[128];
+  struct sockaddr *	hwa;
+  struct iw_quality *	qual;
+  iwrange	range;
+  int		has_range = 0;
+  int		has_qual = 0;
+  int		n;
+  int		i;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Collect stats */
+  wrq.u.data.pointer = (caddr_t) buffer;
+  wrq.u.data.length = IW_MAX_AP;
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWAPLIST, &wrq) < 0)
+    {
+      fprintf(stderr, "%-8.8s  Interface doesn't have a list of Access Points\n\n", ifname);
+      return(-1);
+    }
+
+  /* Number of addresses */
+  n = wrq.u.data.length;
+  has_qual = wrq.u.data.flags;
+
+  /* The two lists */
+  hwa = (struct sockaddr *) buffer;
+  qual = (struct iw_quality *) (buffer + (sizeof(struct sockaddr) * n));
+
+  /* Check if we have valid mac address type */
+  if(iw_check_mac_addr_type(skfd, ifname) < 0)
+    {
+      fprintf(stderr, "%-8.8s  Interface doesn't support MAC addresses\n\n", ifname);
+      return(-2);
+    }
+
+  /* Get range info if we can */
+  if(iw_get_range_info(skfd, ifname, &(range)) >= 0)
+    has_range = 1;
+
+  /* Display it */
+  if(n == 0)
+    printf("%-8.8s  No Access Point in range\n", ifname);
+  else
+    printf("%-8.8s  Access Points in range:\n", ifname);
+  for(i = 0; i < n; i++)
+    {
+      if(has_qual)
+	{
+	  /* Print stats for this address */
+	  printf("    %s : ", iw_pr_ether(temp, (unsigned char *)hwa[i].sa_data));
+	  iw_print_stats(temp, &qual[i], &range, has_range);
+	  printf("%s\n", temp);
+	}
+      else
+	/* Only print the address */
+	printf("    %s\n", iw_pr_ether(temp, (unsigned char *)hwa[i].sa_data));
+    }
+  printf("\n");
+  return(0);
+}
+
+/***************************** BITRATES *****************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the number of available bitrates for the device
+ */
+static int
+print_bitrate_info(int		skfd,
+		   char *	ifname,
+		   char *	args[],		/* Command line args */
+		   int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  int			k;
+  char			buffer[128];
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Extract range info */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no bit-rate information.\n\n",
+		      ifname);
+  else
+    {
+      if((range.num_bitrates > 0) && (range.num_bitrates < IW_MAX_BITRATES))
+	{
+	  printf("%-8.8s  %d available bit-rates :\n",
+		 ifname, range.num_bitrates);
+	  /* Print them all */
+	  for(k = 0; k < range.num_bitrates; k++)
+	    {
+	      iw_print_bitrate(buffer, range.bitrate[k]);
+	      /* Maybe this should be %10s */
+	      printf("\t  %s\n", buffer);
+	    }
+	}
+      else
+	printf("%-8.8s  No bit-rates ? Please update driver...\n", ifname);
+
+      /* Get current bit rate */
+      if(iw_get_ext(skfd, ifname, SIOCGIWRATE, &wrq) >= 0)
+	{
+	  iw_print_bitrate(buffer, wrq.u.bitrate.value);
+	  printf("          Current Bit Rate%c%s\n\n",
+		 (wrq.u.bitrate.fixed ? '=' : ':'), buffer);
+	}
+    }
+  return(0);
+}
+
+/************************* ENCRYPTION KEYS *************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the number of available encryption key for the device
+ */
+static int
+print_keys_info(int		skfd,
+		char *		ifname,
+		char *		args[],		/* Command line args */
+		int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  unsigned char		key[IW_ENCODING_TOKEN_MAX];
+  int			k;
+  char			buffer[128];
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Extract range info */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no encryption keys information.\n\n",
+		      ifname);
+  else
+    {
+      printf("%-8.8s  ", ifname);
+      /* Print key sizes */
+      if((range.num_encoding_sizes > 0) &&
+	 (range.num_encoding_sizes < IW_MAX_ENCODING_SIZES))
+	{
+	  printf("%d key sizes : %d", range.num_encoding_sizes,
+		 range.encoding_size[0] * 8);
+	  /* Print them all */
+	  for(k = 1; k < range.num_encoding_sizes; k++)
+	    printf(", %d", range.encoding_size[k] * 8);
+	  printf("bits\n          ");
+	}
+      /* Print the keys and associate mode */
+      printf("%d keys available :\n", range.max_encoding_tokens);
+      for(k = 1; k <= range.max_encoding_tokens; k++)
+	{
+	  wrq.u.data.pointer = (caddr_t) key;
+	  wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
+	  wrq.u.data.flags = k;
+	  if(iw_get_ext(skfd, ifname, SIOCGIWENCODE, &wrq) < 0)
+	    {
+	      fprintf(stderr, "SIOCGIWENCODE: %s\n", strerror(errno));
+	      break;
+	    }
+	  if((wrq.u.data.flags & IW_ENCODE_DISABLED) ||
+	     (wrq.u.data.length == 0))
+	    printf("\t\t[%d]: off\n", k);
+	  else
+	    {
+	      /* Display the key */
+	      iw_print_key(buffer, key, wrq.u.data.length, wrq.u.data.flags);
+	      printf("\t\t[%d]: %s", k, buffer);
+
+	      /* Other info... */
+	      printf(" (%d bits)", wrq.u.data.length * 8);
+	      printf("\n");
+	    }
+	}
+      /* Print current key and mode */
+      wrq.u.data.pointer = (caddr_t) key;
+      wrq.u.data.length = IW_ENCODING_TOKEN_MAX;
+      wrq.u.data.flags = 0;	/* Set index to zero to get current */
+      if(iw_get_ext(skfd, ifname, SIOCGIWENCODE, &wrq) < 0)
+	{
+	  fprintf(stderr, "SIOCGIWENCODE: %s\n", strerror(errno));
+	  return(-1);
+	}
+      printf("          Current Transmit Key: [%d]\n",
+	     wrq.u.data.flags & IW_ENCODE_INDEX);
+      if(wrq.u.data.flags & IW_ENCODE_RESTRICTED)
+	printf("          Encryption mode:restricted\n");
+      if(wrq.u.data.flags & IW_ENCODE_OPEN)
+	printf("          Encryption mode:open\n");
+
+      printf("\n\n");
+    }
+  return(0);
+}
+
+/************************* POWER MANAGEMENT *************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print Power Management info for each device
+ */
+static inline int
+get_pm_value(int		skfd,
+	     char *		ifname,
+	     struct iwreq *	pwrq,
+	     int		flags,
+	     char *		buffer)
+{
+  /* Get Another Power Management value */
+  pwrq->u.power.flags = flags;
+  if(iw_get_ext(skfd, ifname, SIOCGIWPOWER, pwrq) >= 0)
+    {
+      /* Let's check the value and its type */
+      if(pwrq->u.power.flags & IW_POWER_TYPE)
+	{
+	  iw_print_pm_value(buffer, pwrq->u.power.value, pwrq->u.power.flags);
+	  printf("\n                 %s", buffer);
+	}
+    }
+  return(pwrq->u.power.flags);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print Power Management info for each device
+ */
+static int
+print_pm_info(int		skfd,
+	      char *		ifname,
+	      char *		args[],		/* Command line args */
+	      int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  char			buffer[128];
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Extract range info */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no power management information.\n\n",
+		      ifname);
+  else
+    {
+      printf("%-8.8s  ", ifname);
+#if WIRELESS_EXT > 9
+      /* Display modes availables */
+      if(range.pm_capa & IW_POWER_MODE)
+	{
+	  printf("Supported modes :\n          ");
+	  if(range.pm_capa & (IW_POWER_UNICAST_R | IW_POWER_MULTICAST_R))
+	    printf("\t\to Receive all packets (unicast & multicast)\n          ");
+	  if(range.pm_capa & IW_POWER_UNICAST_R)
+	    printf("\t\to Receive Unicast only (discard multicast)\n          ");
+	  if(range.pm_capa & IW_POWER_MULTICAST_R)
+	    printf("\t\to Receive Multicast only (discard unicast)\n          ");
+	  if(range.pm_capa & IW_POWER_FORCE_S)
+	    printf("\t\to Force sending using Power Management\n          ");
+	  if(range.pm_capa & IW_POWER_REPEATER)
+	    printf("\t\to Repeat multicast\n          ");
+	}
+      /* Display min/max period availables */
+      if(range.pmp_flags & IW_POWER_PERIOD)
+	{
+	  int	flags = (range.pmp_flags & ~(IW_POWER_MIN | IW_POWER_MAX));
+	  /* Display if auto or fixed */
+	  if(range.pmp_flags & IW_POWER_MIN)
+	    printf("Auto  period  ; ");
+	  else
+	    printf("Fixed period  ; ");
+	  /* Print the range */
+	  iw_print_pm_value(buffer, range.min_pmp, flags | IW_POWER_MIN);
+	  printf("%s\n                          ", buffer);
+	  iw_print_pm_value(buffer, range.max_pmp, flags | IW_POWER_MAX);
+	  printf("%s\n          ", buffer);
+	  
+	}
+      /* Display min/max timeout availables */
+      if(range.pmt_flags & IW_POWER_TIMEOUT)
+	{
+	  int	flags = (range.pmt_flags & ~(IW_POWER_MIN | IW_POWER_MAX));
+	  /* Display if auto or fixed */
+	  if(range.pmt_flags & IW_POWER_MIN)
+	    printf("Auto  timeout ; ");
+	  else
+	    printf("Fixed timeout ; ");
+	  /* Print the range */
+	  iw_print_pm_value(buffer, range.min_pmt, flags | IW_POWER_MIN);
+	  printf("%s\n                          ", buffer);
+	  iw_print_pm_value(buffer, range.max_pmt, flags | IW_POWER_MAX);
+	  printf("%s\n          ", buffer);
+	  
+	}
+#endif /* WIRELESS_EXT > 9 */
+
+      /* Get current Power Management settings */
+      wrq.u.power.flags = 0;
+      if(iw_get_ext(skfd, ifname, SIOCGIWPOWER, &wrq) >= 0)
+	{
+	  int	flags = wrq.u.power.flags;
+
+	  /* Is it disabled ? */
+	  if(wrq.u.power.disabled)
+	    printf("Current mode:off\n          ");
+	  else
+	    {
+	      int	pm_mask = 0;
+
+	      /* Let's check the mode */
+	      iw_print_pm_mode(buffer, flags);
+	      printf("Current %s", buffer);
+
+	      /* Let's check if nothing (simply on) */
+	      if((flags & IW_POWER_MODE) == IW_POWER_ON)
+		printf("mode:on");
+	      printf("\n                 ");
+
+	      /* Let's check the value and its type */
+	      if(wrq.u.power.flags & IW_POWER_TYPE)
+		{
+		  iw_print_pm_value(buffer,
+				    wrq.u.power.value, wrq.u.power.flags);
+		  printf("%s", buffer);
+		}
+
+	      /* If we have been returned a MIN value, ask for the MAX */
+	      if(flags & IW_POWER_MIN)
+		pm_mask = IW_POWER_MAX;
+	      /* If we have been returned a MAX value, ask for the MIN */
+	      if(flags & IW_POWER_MAX)
+		pm_mask = IW_POWER_MIN;
+	      /* If we have something to ask for... */
+	      if(pm_mask)
+		get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);
+
+#if WIRELESS_EXT > 9
+	      /* And if we have both a period and a timeout, ask the other */
+	      pm_mask = (range.pm_capa & (~(wrq.u.power.flags) &
+					  IW_POWER_TYPE));
+	      if(pm_mask)
+		{
+		  int	base_mask = pm_mask;
+		  flags = get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);
+		  pm_mask = 0;
+
+		  /* If we have been returned a MIN value, ask for the MAX */
+		  if(flags & IW_POWER_MIN)
+		    pm_mask = IW_POWER_MAX | base_mask;
+		  /* If we have been returned a MAX value, ask for the MIN */
+		  if(flags & IW_POWER_MAX)
+		    pm_mask = IW_POWER_MIN | base_mask;
+		  /* If we have something to ask for... */
+		  if(pm_mask)
+		    get_pm_value(skfd, ifname, &wrq, pm_mask, buffer);
+		}
+#endif /* WIRELESS_EXT > 9 */
+	    }
+	}
+      printf("\n");
+    }
+  return(0);
+}
+
+/************************** TRANSMIT POWER **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print the number of available transmit powers for the device
+ */
+static int
+print_txpower_info(int		skfd,
+		   char *	ifname,
+		   char *	args[],		/* Command line args */
+		   int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  int			dbm;
+  int			mwatt;
+  int			k;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+#if WIRELESS_EXT > 9
+  /* Extract range info */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no transmit-power information.\n\n",
+		      ifname);
+  else
+    {
+      if((range.num_txpower <= 0) || (range.num_txpower > IW_MAX_TXPOWER))
+	printf("%-8.8s  No transmit-powers ? Please update driver...\n\n", ifname);
+      else
+	{
+	  printf("%-8.8s  %d available transmit-powers :\n",
+		 ifname, range.num_txpower);
+	  /* Print them all */
+	  for(k = 0; k < range.num_txpower; k++)
+	    {
+	      if(range.txpower_capa & IW_TXPOW_MWATT)
+		{
+		  dbm = iw_mwatt2dbm(range.txpower[k]);
+		  mwatt = range.txpower[k];
+		}
+	      else
+		{
+		  dbm = range.txpower[k];
+		  mwatt = iw_dbm2mwatt(range.txpower[k]);
+		}
+	      printf("\t  %d dBm  \t(%d mW)\n", dbm, mwatt);
+	    }
+
+	  /* Get current Transmit Power */
+	  if(iw_get_ext(skfd, ifname, SIOCGIWTXPOW, &wrq) >= 0)
+	    {
+	      printf("          Current Tx-Power");
+	      /* Disabled ? */
+	      if(wrq.u.txpower.disabled)
+		printf(":off\n\n");
+	      else
+		{
+		  /* Fixed ? */
+		  if(wrq.u.txpower.fixed)
+		    printf("=");
+		  else
+		    printf(":");
+		  if(wrq.u.txpower.flags & IW_TXPOW_MWATT)
+		    {
+		      dbm = iw_mwatt2dbm(wrq.u.txpower.value);
+		      mwatt = wrq.u.txpower.value;
+		    }
+		  else
+		    {
+		      dbm = wrq.u.txpower.value;
+		      mwatt = iw_dbm2mwatt(wrq.u.txpower.value);
+		    }
+		  printf("%d dBm  \t(%d mW)\n\n", dbm, mwatt);
+		}
+	    }
+	}
+    }
+#endif /* WIRELESS_EXT > 9 */
+  return(0);
+}
+
+/*********************** RETRY LIMIT/LIFETIME ***********************/
+
+#if WIRELESS_EXT > 10
+/*------------------------------------------------------------------*/
+/*
+ * Print one retry value
+ */
+static inline int
+get_retry_value(int		skfd,
+		char *		ifname,
+		struct iwreq *	pwrq,
+		int		flags,
+		char *		buffer)
+{
+  /* Get Another retry value */
+  pwrq->u.retry.flags = flags;
+  if(iw_get_ext(skfd, ifname, SIOCGIWRETRY, pwrq) >= 0)
+    {
+      /* Let's check the value and its type */
+      if(pwrq->u.retry.flags & IW_RETRY_TYPE)
+	{
+	  iw_print_retry_value(buffer,
+			       pwrq->u.retry.value, pwrq->u.retry.flags);
+	  printf("%s\n                 ", buffer);
+	}
+    }
+  return(pwrq->u.retry.flags);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print Retry info for each device
+ */
+static int
+print_retry_info(int		skfd,
+		 char *		ifname,
+		 char *		args[],		/* Command line args */
+		 int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  struct iw_range	range;
+  char			buffer[128];
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Extract range info */
+  if(iw_get_range_info(skfd, ifname, &range) < 0)
+      fprintf(stderr, "%-8.8s  no retry limit/lifetime information.\n\n",
+	      ifname);
+  else
+    {
+      printf("%-8.8s  ", ifname);
+
+      /* Display min/max limit availables */
+      if(range.retry_flags & IW_RETRY_LIMIT)
+	{
+	  int	flags = (range.retry_flags & ~(IW_RETRY_MIN | IW_RETRY_MAX));
+	  /* Display if auto or fixed */
+	  if(range.retry_flags & IW_RETRY_MIN)
+	    printf("Auto  limit    ; ");
+	  else
+	    printf("Fixed limit    ; ");
+	  /* Print the range */
+	  iw_print_retry_value(buffer, range.min_retry, flags | IW_RETRY_MIN);
+	  printf("%s\n                           ", buffer);
+	  iw_print_retry_value(buffer, range.max_retry, flags | IW_RETRY_MAX);
+	  printf("%s\n          ", buffer);
+	  
+	}
+      /* Display min/max lifetime availables */
+      if(range.r_time_flags & IW_RETRY_LIFETIME)
+	{
+	  int	flags = (range.r_time_flags & ~(IW_RETRY_MIN | IW_RETRY_MAX));
+	  /* Display if auto or fixed */
+	  if(range.r_time_flags & IW_RETRY_MIN)
+	    printf("Auto  lifetime ; ");
+	  else
+	    printf("Fixed lifetime ; ");
+	  /* Print the range */
+	  iw_print_retry_value(buffer, range.min_r_time, flags | IW_RETRY_MIN);
+	  printf("%s\n                           ", buffer);
+	  iw_print_retry_value(buffer, range.max_r_time, flags | IW_RETRY_MAX);
+	  printf("%s\n          ", buffer);
+	  
+	}
+
+      /* Get current retry settings */
+      wrq.u.retry.flags = 0;
+      if(iw_get_ext(skfd, ifname, SIOCGIWRETRY, &wrq) >= 0)
+	{
+	  int	flags = wrq.u.retry.flags;
+
+	  /* Is it disabled ? */
+	  if(wrq.u.retry.disabled)
+	    printf("Current mode:off\n          ");
+	  else
+	    {
+	      int	retry_mask = 0;
+
+	      /* Let's check the mode */
+	      printf("Current mode:on\n                 ");
+
+	      /* Let's check the value and its type */
+	      if(wrq.u.retry.flags & IW_RETRY_TYPE)
+		{
+		  iw_print_retry_value(buffer,
+				       wrq.u.retry.value, wrq.u.retry.flags);
+		  printf("%s", buffer);
+		}
+
+	      /* If we have been returned a MIN value, ask for the MAX */
+	      if(flags & IW_RETRY_MIN)
+		retry_mask = IW_RETRY_MAX;
+	      /* If we have been returned a MAX value, ask for the MIN */
+	      if(flags & IW_RETRY_MAX)
+		retry_mask = IW_RETRY_MIN;
+	      /* If we have something to ask for... */
+	      if(retry_mask)
+		get_retry_value(skfd, ifname, &wrq, retry_mask, buffer);
+
+	      /* And if we have both a period and a timeout, ask the other */
+	      retry_mask = (range.retry_capa & (~(wrq.u.retry.flags) &
+					  IW_RETRY_TYPE));
+	      if(retry_mask)
+		{
+		  int	base_mask = retry_mask;
+		  flags = get_retry_value(skfd, ifname, &wrq, retry_mask,
+					  buffer);
+		  retry_mask = 0;
+
+		  /* If we have been returned a MIN value, ask for the MAX */
+		  if(flags & IW_RETRY_MIN)
+		    retry_mask = IW_RETRY_MAX | base_mask;
+		  /* If we have been returned a MAX value, ask for the MIN */
+		  if(flags & IW_RETRY_MAX)
+		    retry_mask = IW_RETRY_MIN | base_mask;
+		  /* If we have something to ask for... */
+		  if(retry_mask)
+		    get_retry_value(skfd, ifname, &wrq, retry_mask, buffer);
+		}
+	    }
+	}
+      printf("\n");
+    }
+  return(0);
+}
+
+#endif	/* WIRELESS_EXT > 10 */
+
+/***************************** SCANNING *****************************/
+/*
+ * This one behave quite differently from the others
+ */
+#if WIRELESS_EXT > 13
+/*------------------------------------------------------------------*/
+/*
+ * Print one element from the scanning results
+ */
+static inline int
+print_scanning_token(struct iw_event *	event,	/* Extracted token */
+		     int		ap_num,	/* AP number */
+		     struct iw_range *	iwrange,	/* Range info */
+		     int		has_range)
+{
+  char		buffer[128];	/* Temporary buffer */
+
+  /* Now, let's decode the event */
+  switch(event->cmd)
+    {
+    case SIOCGIWAP:
+      printf("          Cell %02d - Address: %s\n", ap_num,
+	     iw_pr_ether(buffer, (unsigned char *)event->u.ap_addr.sa_data));
+      ap_num++;
+      break;
+    case SIOCGIWNWID:
+      if(event->u.nwid.disabled)
+	printf("                    NWID:off/any\n");
+      else
+	printf("                    NWID:%X\n", event->u.nwid.value);
+      break;
+    case SIOCGIWFREQ:
+      {
+	double		freq;			/* Frequency/channel */
+	freq = iw_freq2float(&(event->u.freq));
+	iw_print_freq(buffer, freq);
+	printf("                    %s\n", buffer);
+      }
+      break;
+    case SIOCGIWMODE:
+      printf("                    Mode:%s\n",
+	     iw_operation_mode[event->u.mode]);
+      break;
+    case SIOCGIWESSID:
+      {
+	char essid[IW_ESSID_MAX_SIZE+1];
+	if((event->u.essid.pointer) && (event->u.essid.length))
+	  memcpy(essid, event->u.essid.pointer, event->u.essid.length);
+	essid[event->u.essid.length] = '\0';
+	if(event->u.essid.flags)
+	  {
+	    /* Does it have an ESSID index ? */
+	    if((event->u.essid.flags & IW_ENCODE_INDEX) > 1)
+	      printf("                    ESSID:\"%s\" [%d]\n", essid,
+		     (event->u.essid.flags & IW_ENCODE_INDEX));
+	    else
+	      printf("                    ESSID:\"%s\"\n", essid);
+	  }
+	else
+	  printf("                    ESSID:off/any\n");
+      }
+      break;
+    case SIOCGIWENCODE:
+      {
+	unsigned char	key[IW_ENCODING_TOKEN_MAX];
+	if(event->u.data.pointer)
+	  memcpy(key, event->u.essid.pointer, event->u.data.length);
+	else
+	  event->u.data.flags |= IW_ENCODE_NOKEY;
+	printf("                    Encryption key:");
+	if(event->u.data.flags & IW_ENCODE_DISABLED)
+	  printf("off\n");
+	else
+	  {
+	    /* Display the key */
+	    iw_print_key(buffer, key, event->u.data.length,
+			 event->u.data.flags);
+	    printf("%s", buffer);
+
+	    /* Other info... */
+	    if((event->u.data.flags & IW_ENCODE_INDEX) > 1)
+	      printf(" [%d]", event->u.data.flags & IW_ENCODE_INDEX);
+	    if(event->u.data.flags & IW_ENCODE_RESTRICTED)
+	      printf("   Encryption mode:restricted");
+	    if(event->u.data.flags & IW_ENCODE_OPEN)
+	      printf("   Encryption mode:open");
+	    printf("\n");
+	  }
+      }
+      break;
+    case SIOCGIWRATE:
+      iw_print_bitrate(buffer, event->u.bitrate.value);
+      printf("                    Bit Rate:%s\n", buffer);
+      break;
+    case IWEVQUAL:
+      {
+	event->u.qual.updated = 0x0;	/* Not that reliable, disable */
+	iw_print_stats(buffer, &event->u.qual, iwrange, has_range);
+	printf("                    %s\n", buffer);
+	break;
+      }
+#if WIRELESS_EXT > 14
+    case IWEVCUSTOM:
+      {
+	char custom[IW_CUSTOM_MAX+1];
+	if((event->u.data.pointer) && (event->u.data.length))
+	  memcpy(custom, event->u.data.pointer, event->u.data.length);
+	custom[event->u.data.length] = '\0';
+	printf("                    Extra:%s\n", custom);
+      }
+      break;
+#endif /* WIRELESS_EXT > 14 */
+    default:
+      printf("                    (Unknown Wireless Token 0x%04X)\n",
+	     event->cmd);
+   }	/* switch(event->cmd) */
+
+  /* May have changed */
+  return(ap_num);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Perform a scanning on one device
+ */
+static int
+print_scanning_info(int		skfd,
+		    char *	ifname,
+		    char *	args[],		/* Command line args */
+		    int		count)		/* Args count */
+{
+  struct iwreq		wrq;
+  unsigned char		buffer[IW_SCAN_MAX_DATA];	/* Results */
+  struct timeval	tv;				/* Select timeout */
+  int			timeout = 5000000;		/* 5s */
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Init timeout value -> 250ms*/
+  tv.tv_sec = 0;
+  tv.tv_usec = 250000;
+
+  /*
+   * Here we should look at the command line args and set the IW_SCAN_ flags
+   * properly
+   */
+  wrq.u.param.flags = IW_SCAN_DEFAULT;
+  wrq.u.param.value = 0;		/* Later */
+
+  /* Initiate Scanning */
+  if(iw_set_ext(skfd, ifname, SIOCSIWSCAN, &wrq) < 0)
+    {
+      if(errno != EPERM)
+	{
+	  fprintf(stderr, "%-8.8s  Interface doesn't support scanning : %s\n\n",
+		  ifname, strerror(errno));
+	  return(-1);
+	}
+      /* If we don't have the permission to initiate the scan, we may
+       * still have permission to read left-over results.
+       * But, don't wait !!! */
+#if 0
+      /* Not cool, it display for non wireless interfaces... */
+      fprintf(stderr, "%-8.8s  (Could not trigger scanning, just reading left-over results)\n", ifname);
+#endif
+      tv.tv_usec = 0;
+    }
+  timeout -= tv.tv_usec;
+
+  /* Forever */
+  while(1)
+    {
+      fd_set		rfds;		/* File descriptors for select */
+      int		last_fd;	/* Last fd */
+      int		ret;
+
+      /* Guess what ? We must re-generate rfds each time */
+      FD_ZERO(&rfds);
+      last_fd = -1;
+
+      /* In here, add the rtnetlink fd in the list */
+
+      /* Wait until something happens */
+      ret = select(last_fd + 1, &rfds, NULL, NULL, &tv);
+
+      /* Check if there was an error */
+      if(ret < 0)
+	{
+	  if(errno == EAGAIN || errno == EINTR)
+	    continue;
+	  fprintf(stderr, "Unhandled signal - exiting...\n");
+	  return(-1);
+	}
+
+      /* Check if there was a timeout */
+      if(ret == 0)
+	{
+	  /* Try to read the results */
+	  wrq.u.data.pointer = buffer;
+	  wrq.u.data.flags = 0;
+	  wrq.u.data.length = sizeof(buffer);
+	  if(iw_get_ext(skfd, ifname, SIOCGIWSCAN, &wrq) < 0)
+	    {
+	      /* Check if results not available yet */
+	      if(errno == EAGAIN)
+		{
+		  /* Restart timer for only 100ms*/
+		  tv.tv_sec = 0;
+		  tv.tv_usec = 100000;
+		  timeout -= tv.tv_usec;
+		  if(timeout > 0)
+		    continue;	/* Try again later */
+		}
+
+	      /* Bad error */
+	      fprintf(stderr, "%-8.8s  Failed to read scan data : %s\n\n",
+		      ifname, strerror(errno));
+	      return(-2);
+	    }
+	  else
+	    /* We have the results, go to process them */
+	    break;
+	}
+
+      /* In here, check if event and event type
+       * if scan event, read results. All errors bad & no reset timeout */
+    }
+
+  if(wrq.u.data.length)
+    {
+      struct iw_event		iwe;
+      struct stream_descr	stream;
+      int			ap_num = 1;
+      int			ret;
+      struct iw_range		range;
+      int			has_range;
+#if 0
+      /* Debugging code. In theory useless, because it's debugged ;-) */
+      int	i;
+      printf("Scan result [%02X", buffer[0]);
+      for(i = 1; i < wrq.u.data.length; i++)
+	printf(":%02X", buffer[i]);
+      printf("]\n");
+#endif
+      has_range = (iw_get_range_info(skfd, ifname, &range) >= 0);
+      printf("%-8.8s  Scan completed :\n", ifname);
+      iw_init_event_stream(&stream, (char *)buffer, wrq.u.data.length);
+      do
+	{
+	  /* Extract an event and print it */
+	  ret = iw_extract_event_stream(&stream, &iwe);
+	  if(ret > 0)
+	    ap_num = print_scanning_token(&iwe, ap_num, &range, has_range);
+	}
+      while(ret > 0);
+      printf("\n");
+    }
+  else
+    printf("%-8.8s  No scan results\n", ifname);
+
+  return(0);
+}
+#endif	/* WIRELESS_EXT > 13 */
+
+/************************* COMMON UTILITIES *************************/
+/*
+ * This section was written by Michael Tokarev <mjt@tls.msk.ru>
+ * But modified by me ;-)
+ */
+
+/* command list */
+typedef struct iwlist_entry {
+  const char *cmd;
+  iw_enum_handler fn;
+  int min_count;
+  int max_count;
+} iwlist_cmd;
+
+static const struct iwlist_entry iwlist_cmds[] = {
+  { "frequency",	print_freq_info,	0, 0 },
+  { "channel",		print_freq_info,	0, 0 },
+  { "ap",		print_ap_info,		0, 0 },
+  { "accesspoints",	print_ap_info,		0, 0 },
+  { "bitrate",		print_bitrate_info,	0, 0 },
+  { "rate",		print_bitrate_info,	0, 0 },
+  { "encryption",	print_keys_info,	0, 0 },
+  { "key",		print_keys_info,	0, 0 },
+  { "power",		print_pm_info,		0, 0 },
+  { "txpower",		print_txpower_info,	0, 0 },
+#if WIRELESS_EXT > 10
+  { "retry",		print_retry_info,	0, 0 },
+#endif
+#if WIRELESS_EXT > 13
+  { "scanning",		print_scanning_info,	0, 5 },
+#endif
+  { NULL, NULL, 0, 0 },
+};
+
+/*------------------------------------------------------------------*/
+/*
+ * Find the most appropriate command matching the command line
+ */
+static inline const iwlist_cmd *
+find_command(const char *	cmd)
+{
+  const iwlist_cmd *	found = NULL;
+  int			ambig = 0;
+  unsigned int		len = strlen(cmd);
+  int			i;
+
+  /* Go through all commands */
+  for(i = 0; iwlist_cmds[i].cmd != NULL; ++i)
+    {
+      /* No match -> next one */
+      if(strncasecmp(iwlist_cmds[i].cmd, cmd, len) != 0)
+	continue;
+
+      /* Exact match -> perfect */
+      if(len == strlen(iwlist_cmds[i].cmd))
+	return &iwlist_cmds[i];
+
+      /* Partial match */
+      if(found == NULL)
+	/* First time */
+	found = &iwlist_cmds[i];
+      else
+	/* Another time */
+	if (iwlist_cmds[i].fn != found->fn)
+	  ambig = 1;
+    }
+
+  if(found == NULL)
+    {
+      fprintf(stderr, "iwlist: unknown command `%s'\n", cmd);
+      return NULL;
+    }
+
+  if(ambig)
+    {
+      fprintf(stderr, "iwlist: command `%s' is ambiguous\n", cmd);
+      return NULL;
+    }
+
+  return found;
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Display help
+ */
+static void iw_usage(int status)
+{
+  FILE* f = status ? stderr : stdout;
+  int i;
+
+  fprintf(f,   "Usage: iwlist [interface] %s\n", iwlist_cmds[0].cmd);
+  for(i = 1; iwlist_cmds[i].cmd != NULL; ++i)
+    fprintf(f, "              [interface] %s\n", iwlist_cmds[i].cmd);
+  exit(status);
+}
+
+/******************************* MAIN ********************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * The main !
+ */
+int
+main(int	argc,
+     char **	argv)
+{
+  int skfd;			/* generic raw socket desc.	*/
+  char *dev;			/* device name			*/
+  char *cmd;			/* command			*/
+  char **args;			/* Command arguments */
+  int count;			/* Number of arguments */
+  const iwlist_cmd *iwcmd;
+
+  if(argc == 1 || argc > 3)
+    iw_usage(1);
+
+  if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))
+    iw_usage(0);
+
+  /* This is also handled slightly differently */
+  if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version"))
+    return(iw_print_version_info("iwlist"));
+
+  if (argc == 2)
+    {
+      cmd = argv[1];
+      dev = NULL;
+      args = NULL;
+      count = 0;
+    }
+  else
+    {
+      cmd = argv[2];
+      dev = argv[1];
+      args = argv + 3;
+      count = argc - 3;
+    }
+
+  /* find a command */
+  iwcmd = find_command(cmd);
+  if(iwcmd == NULL)
+    return 1;
+
+  /* Check arg numbers */
+  if(count < iwcmd->min_count)
+    {
+      fprintf(stderr, "iwlist: command `%s' needs more arguments\n", cmd);
+      return 1;
+    }
+  if(count > iwcmd->max_count)
+    {
+      fprintf(stderr, "iwlist: command `%s' needs fewer arguments\n", cmd);
+      return 1;
+    }
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      return -1;
+    }
+
+  /* do the actual work */
+  if (dev)
+    (*iwcmd->fn)(skfd, dev, args, count);
+  else
+    iw_enum_devices(skfd, iwcmd->fn, args, count);
+
+  /* Close the socket. */
+  close(skfd);
+
+  return 0;
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.8
new file mode 100644
index 0000000..d662840
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.8
@@ -0,0 +1,138 @@
+.\" Jean II - HPLB - 96
+.\" iwpriv.8
+.\"
+.TH IWPRIV 8 "31 October 1996" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwpriv \- configure optionals (private) parameters of a wireless
+network interface
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwpriv [" interface ]
+.br
+.BI "iwpriv " "interface private-command " "[" private-parameters ]
+.br
+.BI "iwpriv " "interface private-command [I] " "[" private-parameters ]
+.br
+.BI "iwpriv " interface " --all"
+.br
+.BI "iwpriv " interface " roam " {on,off}
+.br
+.BI "iwpriv " interface " port " {ad-hoc,managed,N}
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B Iwpriv
+is the companion tool to
+.IR iwconfig (8).
+.B Iwpriv
+deals with parameters and setting specific to each driver (as opposed to
+.I iwconfig
+which deals with generic ones).
+.PP
+Without any argument,
+.B iwpriv
+list the available private commands available on each interface, and
+the parameters that they require. Using this information, the user may
+apply those interface specific commands on the specified interface.
+.PP
+In theory, the documentation of each device driver should indicate how
+to use those interface specific commands and their effect.
+.\"
+.\" PARAMETER part
+.\"
+.SH PARAMETERS
+.TP
+.IR private-command " [" private-parameters ]
+Execute the specified
+.I private-command
+on the interface.
+.br
+The command may optionally take or require arguments, and may display
+information. Therefore, the command line parameters may or may not be
+needed and should match the command expectations. The list of commands
+that
+.B iwpriv
+displays (when called without argument) should give you some hints
+about those parameters.
+.br
+However you should refer to the device driver documentation for
+information on how to properly use the command and the effect.
+.TP
+.I "private-command [I]" "[" private-parameters ]
+Idem, except that
+.I I
+(an integer) is passed to the command as a
+.IR "Token Index" .
+Only some command will use the Token Index (most will ignore it), and
+the driver documentation should tell you when it's needed.
+.TP
+.BR -a / --all
+Execute and display all the private commands that don't take any
+arguments (i.e.  read only).
+.TP
+.B roam
+Enable or disable roaming, if supported. Call the private command
+.IR setroam .
+Found in the
+.I wavelan_cs
+driver.
+.TP
+.B port
+Read or configure the port type. Call the private commands
+.IR gport_type ", " sport_type ", " get_port " or " set_port
+found in the
+.IR wavelan2_cs " and " wvlan_cs " drivers."
+.\"
+.\" DISPLAY part
+.\"
+.SH DISPLAY
+For each device which support private commands,
+.I iwpriv
+will display the list of private commands available.
+.PP
+This include the name of the private command, the number or arguments
+that may be set and their type, and the number or arguments that may
+be display and their type.
+.PP
+For example, you may have the following display :
+.br
+.B "eth0      Available private ioctl :"
+.br
+.B "          setqualthr (89F0) : set   1 byte & get   0"
+.br
+.B "          gethisto (89F7) : set   0      & get  16 int"
+.PP
+This indicate that you may set the quality threshold and display an
+histogram of up to 16 values with the following commands :
+.br
+.I "  iwpriv eth0 setqualthr 20"
+.br
+.I "  iwpriv eth0 gethisto"
+.\"
+.\" AUTHOR part
+.\"
+.SH AUTHOR
+Jean Tourrilhes \- jt@hpl.hp.com
+.\"
+.\" FILES part
+.\"
+.SH FILES
+.I /proc/net/wireless
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR ifconfig (8),
+.BR iwconfig (8),
+.BR iwlist (8),
+.BR iwspy (8),
+.BR wavelan (4),
+.BR wavelan_cs (4),
+.BR wvlan_cs (4),
+.BR netwave_cs (4).
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.c
new file mode 100644
index 0000000..d9aeb5c
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.c
@@ -0,0 +1,922 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB 97->99 - HPL 99->00
+ *
+ * Main code for "iwconfig". This is the generic tool for most
+ * manipulations...
+ * You need to link this code against "iwlib.c" and "-lm".
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#include "iwlib.h"		/* Header */
+#include "rtk_arch.h"
+/************************** DOCUMENTATION **************************/
+
+/*
+ * IOCTL RANGES :
+ * ------------
+ *	The initial implementation of iwpriv was using the SIOCDEVPRIVATE
+ * ioctl range (up to 16 ioctls - driver specific). However, this was
+ * causing some compatibility problems with other usages of those
+ * ioctls, and those ioctls are supposed to be removed.
+ *	Therefore, I created a new ioctl range, at SIOCIWFIRSTPRIV. Those
+ * ioctls are specific to Wireless Extensions, so you don't have to
+ * worry about collisions with other usages. On the other hand, in the
+ * new range, the SET convention is enforced (see below).
+ *	The differences are :		SIOCDEVPRIVATE	SIOCIWFIRSTPRIV
+ *		o availability :	<= 2.5.X	WE > 11 (>= 2.4.13)
+ *		o collisions		yes		no
+ *		o SET convention	optional	enforced
+ *		o number		16		32
+ *
+ * NEW DRIVER API :
+ * --------------
+ *	Wireless Extension 13 introduce a new driver API. Wireless
+ * Extensions requests can be handled via a iw_handler table instead
+ * of through the regular ioctl handler.
+ *	The new driver API can be handled only with the new ioctl range
+ * and enforce the GET convention (see below).
+ *	The differences are :		old API		new API
+ *		o handler		do_ioctl()	struct iw_handler_def
+ *		o SIOCIWFIRSTPRIV	WE > 11		yes
+ *		o SIOCDEVPRIVATE	yes		no
+ *		o GET convention	optional	enforced
+ *	Note that the new API before Wireless Extension 15 contains bugs
+ * with regards to handling sub-ioctls and addr/float data types.
+ *
+ * SET/GET CONVENTION :
+ * ------------------
+ *	The regular Wireless Extensions use a SET/GET convention, where
+ * the low order bit identify a SET (0) or a GET (1) request.
+ *	The new ioctl range enforce the SET convention : SET request will
+ * be available to root only and can't return any arguments. If you don't
+ * like that, just use every other two ioctl.
+ *	The new driver API enforce the GET convention : GET request won't
+ * be able to accept any arguments (except if its fits within (union
+ * iwreq_data)). If you don't like that, just use the old API (aka the
+ * ioctl handler).
+ *	In any case, it's a good idea to not have ioctl with both SET
+ * and GET arguments. If the GET arguments doesn't fit within
+ * (union iwreq_data) and SET do, or vice versa, the current code in iwpriv
+ * won't work. One exception is if both SET and GET arguments fit within
+ * (union iwreq_data), this case should be handled safely in a GET
+ * request.
+ *
+ * SUB-IOCTLS :
+ * ----------
+ *	Wireless Extension 15 introduce sub-ioctls. For some applications,
+ * 32 ioctl is not enough, and this simple mechanism allow to increase
+ * the number of ioctls by adding a sub-ioctl index to some of the ioctl
+ * (so basically a two level addressing).
+ *	One might argue that at the point, some other mechanisms might be
+ * better, like using a real filesystem abstraction (/proc, driverfs, ...),
+ * but sub-ioctls are simple enough to not have much drawbacks (which means
+ * that it's a quick and dirty hack ;-).
+ *
+ *	There is two slightly different variation of the sub-ioctl scheme :
+ *	If the payload fit within (union iwreq_data), the first int (4 bytes)
+ * is reserved as the sub-ioctl number and the regular payload shifted by
+ * 4 bytes.
+ *	If the ioctl use (struct iw_point), the sub-ioctl number is in the
+ * flags member of the structure.
+ *	Then, in your handler you would just extract the sub-ioctl number
+ * and do the appropriate processing.
+ *
+ *	Sub-ioctls are declared normally in the private definition table,
+ * with cmd (first arg) beeing the sub-ioctl number. Then, you need to
+ * declare the real ioctl which will process the sub-ioctls with the
+ * SAME ARGUMENTS and a NULL NAME.
+ *	It could look like, for example :
+ * --------------------------------------------
+	// --- Raw access to sub-ioctl handlers ---
+	{ 0x8BE0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "set_paramN" },
+	{ 0x8BE1, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1,
+	  IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_paramN" },
+	// --- sub-ioctls handlers ---
+	{ 0x8BE0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "" },
+	{ 0x8BE1, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "" },
+	// --- sub-ioctls definitions ---
+	{ 1, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_param1" },
+	{ 1, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_param1" },
+	{ 2, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_param2" },
+	{ 2, 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_param2" },
+ * --------------------------------------------
+ *	And iwpriv should do the rest for you ;-)
+ *
+ *	Note that version of iwpriv up to v24 (included) expect at most
+ * 16 ioctls definitions and will likely crash when given more.
+ *	There is no fix that I can see, apart from recommending an upgrade
+ * of Wireless Tools. Wireless Extensions 15 will check this condition, so
+ * another workaround is restricting those extra definitions to WE-15.
+ *
+ *	Another problem is that new API before Wireless Extension 15
+ * will get it wrong when passing fixed arguments of 12-15 bytes. It will
+ * try to get them inline instead of by pointer. You can fool the new API
+ * to do the right thing using fake ioctl definitions (but remember that
+ * you will get more likely to hit the limit of 16 ioctl definitions).
+ *	For safety, use the ioctl handler before v15.
+ *
+ * NEW DATA TYPES (ADDR/FLOAT) :
+ * ---------------------------
+ *	Wireless Tools 25 introduce two new data types, addr and float,
+ * corresponding to struct sockaddr and struct iwfreq.
+ *	Those types are properly handled with Wireless Extensions 15.
+ * However, the new API before v15 won't handle them properly.
+ *
+ *	The first problem is that the new API won't know their size, so
+ * won't copy them. This can be workaround with a fake ioctl definition.
+ *	The second problem is that a fixed single addr won't be inlined
+ * in struct iwreq and will be passed as a pointer. This is due to an
+ * off-by-one error, where all fixed data of 16 bytes is considered too
+ * big to fit in struct iwreq.
+ *
+ *	For those reasons, I would recommend to use the ioctl handler
+ * before v15 when manipulating those data.
+ *
+ * TOKEN INDEX :
+ * -----------
+ *	Token index is very similar to sub-ioctl. It allow the user
+ * to specify an integer index in front of a bunch of other arguments
+ * (addresses, strings, ...).
+ *	Token index works only with data passed as pointer, and is
+ * otherwise ignored. If your data would fit within struct iwreq, you
+ * need to declare the command *without* IW_PRIV_SIZE_FIXED to force
+ * this to happen (and check arg number yourself).
+ * --------------------------------------------
+	// --- Commands that would fit in struct iwreq ---
+	{ 0x8BE0, IW_PRIV_TYPE_ADDR | 1, 0, "set_param_with_token" },
+	// --- No problem here ---
+	{ 0x8BE1, IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 2, 0, "again" },
+ * --------------------------------------------
+ *	The token index feature is pretty transparent, the token index
+ * will just be in the flags member of (struct iw_point). Default value
+ * (if the user doesn't specify it) will be 0. Token index itself will
+ * work with any version of Wireless Extensions.
+ *	Token index is not compatible with sub-ioctl (both use the same
+ * field of struct iw_point). However, token index can be use to offer
+ * raw access to the sub-ioctl handlers (if it uses struct iw_point) :
+ * --------------------------------------------
+	// --- sub-ioctls handler ---
+	{ 0x8BE0, IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "" },
+	// --- sub-ioctls definitions ---
+	{ 0, IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "setaddr" },
+	{ 1, IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "deladdr" },
+	// --- raw access with token index (+ iwreq workaround) ---
+	{ 0x8BE0, IW_PRIV_TYPE_ADDR | 1, 0, "rawaddr" },
+ * --------------------------------------------
+ *
+ * Jean II
+ */
+
+/**************************** CONSTANTS ****************************/
+
+static const char *	argtype[] = {
+  "     ", "byte ", "char ", "", "int  ",  "addr " };
+
+#define IW_MAX_PRIV_DEF	128
+
+/* Backward compatibility */
+#ifndef IW_PRIV_TYPE_ADDR
+#define IW_PRIV_TYPE_ADDR	0x6000
+#endif	/* IW_PRIV_TYPE_ADDR */
+
+/************************* MISC SUBROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print usage string
+ */
+static void
+iw_usage(void)
+{
+  fprintf(stderr, "Usage: iwpriv interface [private-command [private-arguments]]\n");
+  fprintf(stderr, "              interface [roam {on|off}]\n");
+  fprintf(stderr, "              interface [port {ad-hoc|managed|N}]\n");
+}
+
+/************************* SETTING ROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Execute a private command on the interface
+ */
+static int
+set_private_cmd(int		skfd,		/* Socket */
+		char *		args[],		/* Command line args */
+		int		count,		/* Args count */
+		char *		ifname,		/* Dev name */
+		char *		cmdname,	/* Command name */
+		iwprivargs *	priv,		/* Private ioctl description */
+		int		priv_num)	/* Number of descriptions */
+{
+  struct iwreq	wrq;
+  u_char	buffer[4096];	/* Only that big in v25 and later */
+  int		i = 0;		/* Start with first command arg */
+  int		k;		/* Index in private description table */
+  int		temp;
+  int		subcmd = 0;	/* sub-ioctl index */
+  int		offset = 0;	/* Space for sub-ioctl index */
+
+#if __PC__
+	int dd_4;
+	short dd_2;
+#endif
+
+//printf("set_private_cmd args[0]=%s\n",args[0]);
+
+// david  
+//  printf("in set_private_cmd, args[0]=%s, ifname=%s, cmdname=%s,count=%x\n",args[0], ifname, cmdname, count);
+  /* Check if we have a token index.
+   * Do it know so that sub-ioctl takes precendence, and so that we
+   * don't have to bother with it later on... */
+  if((count > 1) && (sscanf(args[0], "[%d]", &temp) == 1))
+  {
+      subcmd = temp;
+      args++;
+      count--;
+  }
+
+  /* Search the correct ioctl */
+  k = -1;
+  while((++k < priv_num) && strcmp(priv[k].name, cmdname));
+
+  /* If not found... */
+  if(k == priv_num)
+	{
+      fprintf(stderr, "Invalid command : %s\n", cmdname);
+      return(-1);
+	}
+	  
+  /* Watch out for sub-ioctls ! */
+  if(priv[k].cmd < SIOCDEVPRIVATE)
+	{
+      int	j = -1;
+			printf("Here < ? \n");
+      /* Find the matching *real* ioctl */
+      while((++j < priv_num) && ((priv[j].name[0] != '\0') ||
+				 (priv[j].set_args != priv[k].set_args) ||
+				 (priv[j].get_args != priv[k].get_args)));
+
+				/* If not found... */
+			if(j == priv_num)
+			{
+				fprintf(stderr, "Invalid private ioctl definition for : %s\n", cmdname);
+				return(-1);
+			}
+
+      /* Save sub-ioctl number */
+      subcmd = priv[k].cmd;
+      /* Reserve one int (simplify alignement issues) */
+      offset = sizeof(__u32);
+      /* Use real ioctl definition from now on */
+      k = j;
+
+			printf("<mapping sub-ioctl %s to cmd 0x%X-%d>\n", cmdname,
+			priv[k].cmd, subcmd);
+	}
+
+  /* If we have to set some data */
+  if((priv[k].set_args & IW_PRIV_TYPE_MASK) && (priv[k].set_args & IW_PRIV_SIZE_MASK))
+	{
+// david	    
+//     	printf("should not be here!\n"); 
+		switch(priv[k].set_args & IW_PRIV_TYPE_MASK)
+		{
+		case IW_PRIV_TYPE_BYTE:
+		  /* Number of args to fetch */
+		  wrq.u.data.length = count;
+		  if(wrq.u.data.length > (priv[k].set_args & IW_PRIV_SIZE_MASK))
+		    wrq.u.data.length = priv[k].set_args & IW_PRIV_SIZE_MASK;
+	
+		  /* Fetch args */
+		  for(; i < wrq.u.data.length; i++) {
+		    sscanf(args[i], "%d", &temp);
+		    buffer[i] = (char) temp;
+		  }
+		  break;
+	
+		case IW_PRIV_TYPE_INT:
+		  /* Number of args to fetch */
+		  wrq.u.data.length = count;
+		  if(wrq.u.data.length > (priv[k].set_args & IW_PRIV_SIZE_MASK))
+		    wrq.u.data.length = priv[k].set_args & IW_PRIV_SIZE_MASK;
+	
+		  /* Fetch args */
+		  for(; i < wrq.u.data.length; i++) {
+		    sscanf(args[i], "%d", &temp);
+		    ((__s32 *) buffer)[i] = (__s32) temp;
+		  }
+		  break;
+	
+		case IW_PRIV_TYPE_CHAR:
+		  if(i < count)
+		    {
+		      /* Size of the string to fetch */
+		      wrq.u.data.length = strlen(args[i]) + 1;
+		      if(wrq.u.data.length > (priv[k].set_args & IW_PRIV_SIZE_MASK))
+			wrq.u.data.length = priv[k].set_args & IW_PRIV_SIZE_MASK;
+	
+		      /* Fetch string */
+		      memcpy(buffer, args[i], wrq.u.data.length);
+		      buffer[sizeof(buffer) - 1] = '\0';
+		      i++;
+		    }
+		  else
+		    {
+		      wrq.u.data.length = 1;
+		      buffer[0] = '\0';
+		    }
+		  break;
+	
+		case IW_PRIV_TYPE_FLOAT:
+		  /* Number of args to fetch */
+		  wrq.u.data.length = count;
+		  if(wrq.u.data.length > (priv[k].set_args & IW_PRIV_SIZE_MASK))
+		    wrq.u.data.length = priv[k].set_args & IW_PRIV_SIZE_MASK;
+	
+		  /* Fetch args */
+		  for(; i < wrq.u.data.length; i++) {
+	#if 0			  
+		    double		freq;
+		    if(sscanf(args[i], "%lg", &(freq)) != 1)
+		      {
+			printf("Invalid float [%s]...\n", args[i]);
+			return(-1);
+		      }    
+		    if(index(args[i], 'G')) freq *= GIGA;
+		    if(index(args[i], 'M')) freq *= MEGA;
+		    if(index(args[i], 'k')) freq *= KILO;
+		    sscanf(args[i], "%d", &temp);
+		    iw_float2freq(freq, ((struct iw_freq *) buffer) + i);
+	#endif		
+		  }
+		  break;
+	
+		case IW_PRIV_TYPE_ADDR:
+		  /* Number of args to fetch */
+		  wrq.u.data.length = count;
+		  if(wrq.u.data.length > (priv[k].set_args & IW_PRIV_SIZE_MASK))
+		    wrq.u.data.length = priv[k].set_args & IW_PRIV_SIZE_MASK;
+	
+		  /* Fetch args */
+		  for(; i < wrq.u.data.length; i++) {
+		    if(iw_in_addr(skfd, ifname, args[i],
+				  ((struct sockaddr *) buffer) + i) < 0)
+		      {
+			printf("Invalid address [%s]...\n", args[i]);
+			return(-1);
+		      }
+		  }
+		  break;
+	
+		default:
+		  fprintf(stderr, "Not yet implemented...\n");
+		  return(-1);
+		}
+	  
+		if((priv[k].set_args & IW_PRIV_SIZE_FIXED) && (wrq.u.data.length != (priv[k].set_args & IW_PRIV_SIZE_MASK)))
+		{
+		  printf("The command %s need exactly %d argument...\n",
+			 cmdname, priv[k].set_args & IW_PRIV_SIZE_MASK);
+		  return(-1);
+		}
+	}	/* if args to set */
+  else
+	{
+		printf("length=0?\n"); 
+		wrq.u.data.length = 0L;
+	}
+
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+// david  
+//	printf("offset=%X\n", offset);
+  /* Those two tests are important. They define how the driver
+   * will have to handle the data */
+  if((priv[k].set_args & IW_PRIV_SIZE_FIXED) && ((iw_get_priv_size(priv[k].set_args) + offset) <= IFNAMSIZ))
+	{
+      /* First case : all SET args fit within wrq */
+			// for debug	    
+			//     	printf("here 1,offset=%X\n"); 
+		if(offset)
+			wrq.u.mode = subcmd;
+		memcpy(wrq.u.name + offset, buffer, IFNAMSIZ - offset);
+	}
+  else
+	{
+      if((priv[k].set_args == 0) && (priv[k].get_args & IW_PRIV_SIZE_FIXED) && (iw_get_priv_size(priv[k].get_args) <= IFNAMSIZ))
+			{
+				/* Second case : no SET args, GET args fit within wrq */
+				if(offset)
+					wrq.u.mode = subcmd;
+			}
+      else
+			{
+				/* Thirst case : args won't fit in wrq, or variable number of args */
+				// davud		
+				//	 	printf("here 3\n"); 
+				wrq.u.data.pointer = (caddr_t) buffer;
+				wrq.u.data.flags = subcmd;
+			}
+	}
+
+  /* Perform the private ioctl */
+  //printf("priv[%d].cmd=%08x",k,priv[k].cmd);
+  if(ioctl(skfd, priv[k].cmd , &wrq) < 0)
+	{
+		fprintf(stderr, "Interface doesn't accept private ioctl...\n");
+		fprintf(stderr, "%s (%X): %s\n", cmdname, priv[k].cmd, strerror(errno));
+		return(-1);
+	}
+
+  /* If we have to get some data */
+  if((priv[k].get_args & IW_PRIV_TYPE_MASK) &&
+     (priv[k].get_args & IW_PRIV_SIZE_MASK))
+    {
+      int	j = 0;
+      int	n = 0;		/* number of args */
+
+      printf("%-8.8s  %s:", ifname, cmdname);
+
+      /* Check where is the returned data */
+      if((priv[k].get_args & IW_PRIV_SIZE_FIXED) &&
+	 (iw_get_priv_size(priv[k].get_args) <= IFNAMSIZ))
+	{
+	  memcpy(buffer, wrq.u.name, IFNAMSIZ);
+	  n = priv[k].get_args & IW_PRIV_SIZE_MASK;
+	}
+      else
+	n = wrq.u.data.length;
+
+      switch(priv[k].get_args & IW_PRIV_TYPE_MASK)
+	{
+	case IW_PRIV_TYPE_BYTE:
+	  for(j = 0; j < n; j++)
+	    printf("%d  ", buffer[j]);
+	  printf("\n");
+	  break;
+
+	case IW_PRIV_TYPE_INT:
+	  /* Display args */
+	  for(j = 0; j < n; j++)
+	    printf("%d  ", ((__s32 *) buffer)[j]);
+	  printf("\n");
+	  break;
+
+	case IW_PRIV_TYPE_CHAR:
+	  /* Display args */
+	  buffer[wrq.u.data.length - 1] = '\0';
+	  printf("%s\n", buffer);
+	  break;
+
+	case IW_PRIV_TYPE_FLOAT:
+	  {
+	  	printf("Set PRIV FLOAT is not allowed!\n"); 
+	  }
+	  break;
+
+	case IW_PRIV_TYPE_ADDR:
+	  {
+	    char		scratch[128];
+	    struct sockaddr *	hwa;
+	    /* Display args */
+	    for(j = 0; j < n; j++)
+	      {
+		hwa = ((struct sockaddr *) buffer) + j;
+		if(j)
+		  printf("           %.*s", 
+			 (int) strlen(cmdname), "                ");
+		printf("%s\n", iw_pr_ether(scratch, (unsigned char *)hwa->sa_data));
+	      }
+	  }
+	  break;
+
+	default:
+	  fprintf(stderr, "Not yet implemented...\n");
+	  return(-1);
+	}
+    }	/* if args to set */
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Execute a private command on the interface
+ */
+static inline int
+set_private(int		skfd,		/* Socket */
+	    char *	args[],		/* Command line args */
+	    int		count,		/* Args count */
+	    char *	ifname)		/* Dev name */
+{
+  iwprivargs	priv[IW_MAX_PRIV_DEF];
+  int		number;		/* Max of private ioctl */
+// david
+//  printf("args[0]=%s, args[1]=%s, count=%d, ifname=%s\n", args[0], args[1],
+//				  count, ifname);
+	
+  //printf("sizeof priv=%X\n", sizeof(priv));
+  /* Read the private ioctls */
+  number = iw_get_priv_info(skfd, ifname, priv, IW_MAX_PRIV_DEF);
+  
+//  printf("set_private number=%d\n", number );
+
+  /* Is there any ? */
+  if(number <= 0)
+  {
+      /* Could skip this message ? */
+      fprintf(stderr, "%-8.8s  no private ioctls.\n\n",
+	      ifname);
+      return(-1);
+  }
+  
+//  printf("set_private\n");
+  
+  return(set_private_cmd(skfd, args + 1, count - 1, ifname, args[0], priv, number));
+}
+
+/************************ CATALOG FUNCTIONS ************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Print on the screen in a neat fashion all the info we have collected
+ * on a device.
+ */
+static int
+print_priv_info(int		skfd,
+		char *		ifname,
+		char *		args[],
+		int		count)
+{
+  int		k;
+  iwprivargs	priv[IW_MAX_PRIV_DEF];
+  int		n;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Read the private ioctls */
+  n = iw_get_priv_info(skfd, ifname, priv, IW_MAX_PRIV_DEF);
+  
+  printf("print_priv_info n=%d\n", n );
+
+  /* Is there any ? */
+  if(n <= 0)
+  {
+      /* Could skip this message ? */
+      fprintf(stderr, "%-8.8s  no private ioctls.\n\n",
+	      ifname);
+  }
+  else
+  {
+  	
+      printf("%-8.8s  Available private ioctl :\n", ifname);
+      /* Print them all */
+      for(k = 0; k < n; k++)
+				if(priv[k].name[0] != '\0')
+	  			printf("          %-16.16s (%.4X) : set %3d %s & get %3d %s\n",
+										priv[k].name, priv[k].cmd,
+										priv[k].set_args & IW_PRIV_SIZE_MASK,
+										argtype[(priv[k].set_args & IW_PRIV_TYPE_MASK) >> 12],
+										priv[k].get_args & IW_PRIV_SIZE_MASK,
+										argtype[(priv[k].get_args & IW_PRIV_TYPE_MASK) >> 12]);
+					printf("\n");
+	}
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Print on the screen in a neat fashion all the info we have collected
+ * on a device.
+ */
+static int
+print_priv_all(int		skfd,
+	       char *		ifname,
+	       char *		args[],
+	       int		count)
+{
+  int		k;
+  iwprivargs	priv[IW_MAX_PRIV_DEF];
+  int		n;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Read the private ioctls */
+  n = iw_get_priv_info(skfd, ifname, priv, IW_MAX_PRIV_DEF);
+  
+  printf("print_priv_all n=%d\n", n );
+
+  /* Is there any ? */
+  if(n <= 0)
+	{
+      /* Could skip this message ? */
+      fprintf(stderr, "%-8.8s  no private ioctls.\n\n",
+	      ifname);
+	}
+  else
+	{
+      printf("%-8.8s  Available read-only private ioctl :\n", ifname);
+      /* Print them all */
+      for(k = 0; k < n; k++)
+      {
+      	
+				/* We call all ioctl that don't have a null name, don't require
+	 			* args and return some (avoid triggering "reset" commands) */
+				if((priv[k].name[0] != '\0') && (priv[k].set_args == 0) &&  (priv[k].get_args != 0))
+				{
+					printf("cmd=%08x name=%s set_args=%d get_args=%d\n",priv[k].cmd,priv[k].name , priv[k].set_args , priv[k].get_args );
+	  			set_private_cmd(skfd, NULL, 0, ifname, priv[k].name,  priv, n);
+	  			
+	  		}
+      }
+      printf("\n");
+	}
+#if 0
+  // Debug
+  printf("struct ifreq = %d ; struct iwreq = %d ; IFNAMSIZ = %d\n",
+	 sizeof(struct ifreq), sizeof(struct iwreq), IFNAMSIZ);
+  printf("struct iw_freq = %d ; struct sockaddr = %d\n",
+	 sizeof(struct iw_freq), sizeof(struct sockaddr));
+#endif
+  return(0);
+}
+
+/********************** PRIVATE IOCTLS MANIPS ***********************/
+/*
+ * Convenient access to some private ioctls of some devices
+ */
+
+/*------------------------------------------------------------------*/
+/*
+ * Set roaming mode on and off
+ * Found in wavelan_cs driver
+ */
+static int
+set_roaming(int		skfd,		/* Socket */
+	    char *	args[],		/* Command line args */
+	    int		count,		/* Args count */
+	    char *	ifname)		/* Dev name */
+{
+  u_char	buffer[1024];
+  struct iwreq		wrq;
+  int		i = 0;		/* Start with first arg */
+  int		k;
+  iwprivargs	priv[IW_MAX_PRIV_DEF];
+  int		number;
+  char		RoamState;		/* buffer to hold new roam state */
+  char		ChangeRoamState=0;	/* whether or not we are going to
+					   change roam states */
+
+  /* Read the private ioctls */
+  number = iw_get_priv_info(skfd, ifname, priv, IW_MAX_PRIV_DEF);
+  
+  printf("set_roaming number=%d\n", number );
+
+  /* Is there any ? */
+  if(number <= 0)
+    {
+      /* Could skip this message ? */
+      fprintf(stderr, "%-8.8s  no private ioctls.\n\n",
+	      ifname);
+      return(-1);
+    }
+
+  if(count != 1)
+    {
+      iw_usage();
+      return(-1);
+    }
+
+  if(!strcasecmp(args[i], "on"))
+    {
+      printf("%-8.8s  enable roaming\n", ifname);
+      if(!number)
+	{
+	  fprintf(stderr, "This device doesn't support roaming\n");
+	  return(-1);
+	}
+      ChangeRoamState=1;
+      RoamState=1;
+    }
+  else
+    if(!strcasecmp(args[i], "off"))
+      {
+	i++;
+	printf("%-8.8s  disable roaming\n",  ifname);
+	if(!number)
+	  {
+	    fprintf(stderr, "This device doesn't support roaming\n");
+	    return(-1);
+	  }
+	ChangeRoamState=1;
+	RoamState=0;
+      }
+    else
+      {
+	iw_usage();
+	return(-1);
+      }
+
+  if(ChangeRoamState)
+    {
+      k = -1;
+      while((++k < number) && strcmp(priv[k].name, "setroam"));
+      if(k == number)
+	{
+	  fprintf(stderr, "This device doesn't support roaming\n");
+	  return(-1);
+	}
+      strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+
+      buffer[0]=RoamState;
+
+      memcpy(wrq.u.name, &buffer, IFNAMSIZ);
+
+      if(ioctl(skfd, priv[k].cmd, &wrq) < 0)
+	{
+	  fprintf(stderr, "Roaming support is broken.\n");
+	  return(-1);
+	}
+    }
+
+  return(0);
+}
+
+/*------------------------------------------------------------------*/
+/*
+ * Get and set the port type
+ * Found in wavelan2_cs and wvlan_cs drivers
+ */
+static int
+port_type(int		skfd,		/* Socket */
+	  char *	args[],		/* Command line args */
+	  int		count,		/* Args count */
+	  char *	ifname)		/* Dev name */
+{
+  struct iwreq	wrq;
+  int		i = 0;		/* Start with first arg */
+  int		k;
+  iwprivargs	priv[IW_MAX_PRIV_DEF];
+  int		number;
+  char		ptype = 0;
+  char *	modes[] = { "invalid", "managed (BSS)", "reserved", "ad-hoc" };
+
+  /* Read the private ioctls */
+  number = iw_get_priv_info(skfd, ifname, priv, IW_MAX_PRIV_DEF);
+  
+  printf("port_type number=%d\n", number );
+
+  /* Is there any ? */
+  if(number <= 0)
+    {
+      /* Could skip this message ? */
+      fprintf(stderr, "%-8.8s  no private ioctls.\n\n", ifname);
+      return(-1);
+    }
+
+  /* Arguments ? */
+  if(count == 0)
+    {
+      /* So, we just want to see the current value... */
+      k = -1;
+      while((++k < number) && strcmp(priv[k].name, "gport_type") &&
+	     strcmp(priv[k].name, "get_port"));
+      if(k == number)
+	{
+	  fprintf(stderr, "This device doesn't support getting port type\n");
+	  return(-1);
+	}
+      strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+
+      /* Get it */
+      if(ioctl(skfd, priv[k].cmd, &wrq) < 0)
+	{
+	  fprintf(stderr, "Port type support is broken.\n");
+	  exit(0);
+	}
+      ptype = *wrq.u.name;
+
+      /* Display it */
+      printf("%-8.8s  Current port mode is %s <port type is %d>.\n\n",
+	     ifname, modes[(int) ptype], ptype);
+
+      return(0);
+    }
+
+  if(count != 1)
+    {
+      iw_usage();
+      return(-1);
+    }
+
+  /* Read it */
+  /* As a string... */
+  k = 0;
+  while((k < 4) && strncasecmp(args[i], modes[k], 2))
+    k++;
+  if(k < 4)
+    ptype = k;
+  else
+    /* ...or as an integer */
+    if(sscanf(args[i], "%d", (int *) &ptype) != 1)
+      {
+	iw_usage();
+	return(-1);
+      }
+  
+  k = -1;
+  while((++k < number) && strcmp(priv[k].name, "sport_type") &&
+	strcmp(priv[k].name, "set_port"));
+  if(k == number)
+    {
+      fprintf(stderr, "This device doesn't support setting port type\n");
+      return(-1);
+    }
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+
+  *(wrq.u.name) = ptype;
+
+  if(ioctl(skfd, priv[k].cmd, &wrq) < 0)
+    {
+      fprintf(stderr, "Invalid port type (or setting not allowed)\n");
+      return(-1);
+    }
+
+  return(0);
+}
+
+/******************************* MAIN ********************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * The main !
+ */
+int
+main(int	argc,
+     char **	argv)
+{
+  int skfd;		/* generic raw socket desc.	*/
+  int goterr = 0;
+
+	if( argc==2 && (!strcmp(argv[1], "version")) ) 
+	{
+		printf("version : %s\n",DAEMON_VERSION);
+		return 0;
+	}
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      return(-1);
+    }
+
+  /* No argument : show the list of all device + info */
+  if(argc == 1)
+    iw_enum_devices(skfd, &print_priv_info, NULL, 0);
+  else
+    /* Special cases take one... */
+    /* All */
+    if((!strncmp(argv[1], "-a", 2)) || (!strcmp(argv[1], "--all")))
+      iw_enum_devices(skfd, &print_priv_all, NULL, 0);
+    else
+      /* Help */
+      if((!strncmp(argv[1], "-h", 2)) || (!strcmp(argv[1], "--help")))
+	iw_usage();
+      else
+	/* Version */
+	if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version"))
+	  goterr = iw_print_version_info("iwpriv");
+	else
+	  /* The device name must be the first argument */
+	  /* Name only : show for that device only */
+	  if(argc == 2)
+	    print_priv_info(skfd, argv[1], NULL, 0);
+	  else
+	    /* Special cases take two... */
+	    /* All */
+	    if((!strncmp(argv[2], "-a", 2)) ||
+	       (!strcmp(argv[2], "--all")))
+	      print_priv_all(skfd, argv[1], NULL, 0);
+	    else
+	      /* Roaming */
+	      if(!strncmp(argv[2], "roam", 4))
+		goterr = set_roaming(skfd, argv + 3, argc - 3, argv[1]);
+	      else
+		/* Port type */
+		if(!strncmp(argv[2], "port", 4))
+		  goterr = port_type(skfd, argv + 3, argc - 3, argv[1]);
+		else
+		{
+			goterr = set_private(skfd, argv + 2, argc - 2, argv[1]);
+		}
+  /* Close the socket. */
+  close(skfd);
+
+  return(goterr);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.txt b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.txt
new file mode 100644
index 0000000..a0835c2
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwpriv.txt
@@ -0,0 +1,16150 @@
+
+iwpriv:     file format elf32-tradbigmips
+
+Sections:
+Idx Name          Size      VMA               LMA               File off  Algn
+  0 .reginfo      00000018  00400094  00400094  00000094  2**2
+                  CONTENTS, ALLOC, LOAD, READONLY, DATA, LINK_ONCE_SAME_SIZE
+  1 .text         0000f7c0  004000b0  004000b0  000000b0  2**4
+                  CONTENTS, ALLOC, LOAD, READONLY, CODE
+  2 .rodata       00001b00  0040f870  0040f870  0000f870  2**4
+                  CONTENTS, ALLOC, LOAD, READONLY, DATA
+  3 .data         00000260  10000000  10000000  00012000  2**4
+                  CONTENTS, ALLOC, LOAD, DATA
+  4 .got          000002c0  10000260  10000260  00012260  2**4
+                  CONTENTS, ALLOC, LOAD, DATA
+  5 .sbss         0000000c  10000520  10000520  00012520  2**2
+                  ALLOC
+  6 .bss          000006ac  10000530  10000524  00012524  2**4
+                  ALLOC
+  7 .comment      00000024  00000000  00000000  00012524  2**0
+                  CONTENTS, READONLY
+  8 .pdr          00001800  00000000  00000000  00012548  2**2
+                  CONTENTS, READONLY
+Disassembly of section .text:
+
+004000b0 <__start>:
+  4000b0:	04100001 	bltzal	zero,4000b8 <__start+0x8>
+  4000b4:	00000000 	nop
+  4000b8:	3c1c0fc1 	lui	gp,0xfc1
+  4000bc:	279c8198 	addiu	gp,gp,-32360
+  4000c0:	039fe021 	addu	gp,gp,ra
+  4000c4:	0000f821 	move	ra,zero
+  4000c8:	8fa40000 	lw	a0,0(sp)
+  4000cc:	27a50004 	addiu	a1,sp,4
+  4000d0:	24860001 	addiu	a2,a0,1
+  4000d4:	00063080 	sll	a2,a2,0x2
+  4000d8:	00c53020 	add	a2,a2,a1
+  4000dc:	8f998154 	lw	t9,-32428(gp)
+  4000e0:	00000000 	nop
+  4000e4:	0320f809 	jalr	t9
+  4000e8:	00000000 	nop
+  4000ec:	1000ffff 	b	4000ec <__start+0x3c>
+  4000f0:	00000000 	nop
+  4000f4:	004016d4 	0x4016d4
+	...
+
+00400100 <iw_usage>:
+  400100:	3c1c0fc1 	lui	gp,0xfc1
+  400104:	279c8150 	addiu	gp,gp,-32432
+  400108:	0399e021 	addu	gp,gp,t9
+  40010c:	27bdffe0 	addiu	sp,sp,-32
+  400110:	afbc0010 	sw	gp,16(sp)
+  400114:	8f8780e8 	lw	a3,-32536(gp)
+  400118:	00000000 	nop
+  40011c:	8ce70000 	lw	a3,0(a3)
+  400120:	8f848018 	lw	a0,-32744(gp)
+  400124:	00000000 	nop
+  400128:	2484f89c 	addiu	a0,a0,-1892
+  40012c:	24050001 	li	a1,1
+  400130:	2406003e 	li	a2,62
+  400134:	afbf001c 	sw	ra,28(sp)
+  400138:	afbc0018 	sw	gp,24(sp)
+  40013c:	8f9980c8 	lw	t9,-32568(gp)
+  400140:	00000000 	nop
+  400144:	0320f809 	jalr	t9
+  400148:	00000000 	nop
+  40014c:	8fbc0010 	lw	gp,16(sp)
+  400150:	00000000 	nop
+  400154:	8f8780e8 	lw	a3,-32536(gp)
+  400158:	00000000 	nop
+  40015c:	8ce70000 	lw	a3,0(a3)
+  400160:	8f848018 	lw	a0,-32744(gp)
+  400164:	00000000 	nop
+  400168:	2484f8dc 	addiu	a0,a0,-1828
+  40016c:	24050001 	li	a1,1
+  400170:	24060028 	li	a2,40
+  400174:	8f9980c8 	lw	t9,-32568(gp)
+  400178:	00000000 	nop
+  40017c:	0320f809 	jalr	t9
+  400180:	00000000 	nop
+  400184:	8fbc0010 	lw	gp,16(sp)
+  400188:	00000000 	nop
+  40018c:	8f8780e8 	lw	a3,-32536(gp)
+  400190:	00000000 	nop
+  400194:	8ce70000 	lw	a3,0(a3)
+  400198:	8f848018 	lw	a0,-32744(gp)
+  40019c:	00000000 	nop
+  4001a0:	2484f908 	addiu	a0,a0,-1784
+  4001a4:	24050001 	li	a1,1
+  4001a8:	24060032 	li	a2,50
+  4001ac:	8f9980c8 	lw	t9,-32568(gp)
+  4001b0:	00000000 	nop
+  4001b4:	0320f809 	jalr	t9
+  4001b8:	00000000 	nop
+  4001bc:	8fbc0010 	lw	gp,16(sp)
+  4001c0:	8fbf001c 	lw	ra,28(sp)
+  4001c4:	00000000 	nop
+  4001c8:	03e00008 	jr	ra
+  4001cc:	27bd0020 	addiu	sp,sp,32
+
+004001d0 <set_private_cmd>:
+  4001d0:	3c1c0fc1 	lui	gp,0xfc1
+  4001d4:	279c8080 	addiu	gp,gp,-32640
+  4001d8:	0399e021 	addu	gp,gp,t9
+  4001dc:	27bdef00 	addiu	sp,sp,-4352
+  4001e0:	afbc0018 	sw	gp,24(sp)
+  4001e4:	afb110d4 	sw	s1,4308(sp)
+  4001e8:	00c08821 	move	s1,a2
+  4001ec:	2a220002 	slti	v0,s1,2
+  4001f0:	afbe10f4 	sw	s8,4340(sp)
+  4001f4:	afb710ec 	sw	s7,4332(sp)
+  4001f8:	afb410e0 	sw	s4,4320(sp)
+  4001fc:	afb310dc 	sw	s3,4316(sp)
+  400200:	afb210d8 	sw	s2,4312(sp)
+  400204:	afbf10f8 	sw	ra,4344(sp)
+  400208:	afbc10f0 	sw	gp,4336(sp)
+  40020c:	afb610e8 	sw	s6,4328(sp)
+  400210:	afb510e4 	sw	s5,4324(sp)
+  400214:	afb010d0 	sw	s0,4304(sp)
+  400218:	afa41100 	sw	a0,4352(sp)
+  40021c:	00a0a021 	move	s4,a1
+  400220:	afa7110c 	sw	a3,4364(sp)
+  400224:	8fbe1110 	lw	s8,4368(sp)
+  400228:	8fb71114 	lw	s7,4372(sp)
+  40022c:	8fb21118 	lw	s2,4376(sp)
+  400230:	00009821 	move	s3,zero
+  400234:	afa010c4 	sw	zero,4292(sp)
+  400238:	1440000e 	bnez	v0,400274 <set_private_cmd+0xa4>
+  40023c:	afa010c8 	sw	zero,4296(sp)
+  400240:	8e840000 	lw	a0,0(s4)
+  400244:	8f858018 	lw	a1,-32744(gp)
+  400248:	00000000 	nop
+  40024c:	24a5f93c 	addiu	a1,a1,-1732
+  400250:	27a610c0 	addiu	a2,sp,4288
+  400254:	8f998170 	lw	t9,-32400(gp)
+  400258:	00000000 	nop
+  40025c:	0320f809 	jalr	t9
+  400260:	00000000 	nop
+  400264:	8fbc0018 	lw	gp,24(sp)
+  400268:	24030001 	li	v1,1
+  40026c:	10430276 	beq	v0,v1,400c48 <set_private_cmd+0xa78>
+  400270:	00000000 	nop
+  400274:	2416ffff 	li	s6,-1
+  400278:	26f0fff0 	addiu	s0,s7,-16
+  40027c:	26d60001 	addiu	s6,s6,1
+  400280:	26100018 	addiu	s0,s0,24
+  400284:	02d2102a 	slt	v0,s6,s2
+  400288:	03c02821 	move	a1,s8
+  40028c:	10400008 	beqz	v0,4002b0 <set_private_cmd+0xe0>
+  400290:	02002021 	move	a0,s0
+  400294:	8f998120 	lw	t9,-32480(gp)
+  400298:	00000000 	nop
+  40029c:	0320f809 	jalr	t9
+  4002a0:	00000000 	nop
+  4002a4:	8fbc0018 	lw	gp,24(sp)
+  4002a8:	1440fff4 	bnez	v0,40027c <set_private_cmd+0xac>
+  4002ac:	00000000 	nop
+  4002b0:	12d20257 	beq	s6,s2,400c10 <set_private_cmd+0xa40>
+  4002b4:	0016a840 	sll	s5,s6,0x1
+  4002b8:	02b61021 	addu	v0,s5,s6
+  4002bc:	000210c0 	sll	v0,v0,0x3
+  4002c0:	00572021 	addu	a0,v0,s7
+  4002c4:	8c830000 	lw	v1,0(a0)
+  4002c8:	340289ef 	li	v0,0x89ef
+  4002cc:	0043102b 	sltu	v0,v0,v1
+  4002d0:	14400029 	bnez	v0,400378 <set_private_cmd+0x1a8>
+  4002d4:	02a03821 	move	a3,s5
+  4002d8:	00803021 	move	a2,a0
+  4002dc:	2405ffff 	li	a1,-1
+  4002e0:	26e4ffe8 	addiu	a0,s7,-24
+  4002e4:	24a50001 	addiu	a1,a1,1
+  4002e8:	00b2102a 	slt	v0,a1,s2
+  4002ec:	1040000a 	beqz	v0,400318 <set_private_cmd+0x148>
+  4002f0:	24840018 	addiu	a0,a0,24
+  4002f4:	80820008 	lb	v0,8(a0)
+  4002f8:	00000000 	nop
+  4002fc:	1440fff9 	bnez	v0,4002e4 <set_private_cmd+0x114>
+  400300:	00000000 	nop
+  400304:	8c830004 	lw	v1,4(a0)
+  400308:	8cc20004 	lw	v0,4(a2)
+  40030c:	00000000 	nop
+  400310:	1462fff4 	bne	v1,v0,4002e4 <set_private_cmd+0x114>
+  400314:	00000000 	nop
+  400318:	10b2022f 	beq	a1,s2,400bd8 <set_private_cmd+0xa08>
+  40031c:	00f61821 	addu	v1,a3,s6
+  400320:	000318c0 	sll	v1,v1,0x3
+  400324:	00a0b021 	move	s6,a1
+  400328:	0016a840 	sll	s5,s6,0x1
+  40032c:	00771821 	addu	v1,v1,s7
+  400330:	8c630000 	lw	v1,0(v1)
+  400334:	02b61021 	addu	v0,s5,s6
+  400338:	000210c0 	sll	v0,v0,0x3
+  40033c:	afa310c4 	sw	v1,4292(sp)
+  400340:	00571021 	addu	v0,v0,s7
+  400344:	8c460000 	lw	a2,0(v0)
+  400348:	00603821 	move	a3,v1
+  40034c:	8f848018 	lw	a0,-32744(gp)
+  400350:	00000000 	nop
+  400354:	2484f944 	addiu	a0,a0,-1724
+  400358:	24030004 	li	v1,4
+  40035c:	03c02821 	move	a1,s8
+  400360:	afa310c8 	sw	v1,4296(sp)
+  400364:	8f9982b0 	lw	t9,-32080(gp)
+  400368:	00000000 	nop
+  40036c:	0320f809 	jalr	t9
+  400370:	00000000 	nop
+  400374:	8fbc0018 	lw	gp,24(sp)
+  400378:	02b61021 	addu	v0,s5,s6
+  40037c:	000210c0 	sll	v0,v0,0x3
+  400380:	00571021 	addu	v0,v0,s7
+  400384:	94420004 	lhu	v0,4(v0)
+  400388:	00000000 	nop
+  40038c:	30437000 	andi	v1,v0,0x7000
+  400390:	1060020f 	beqz	v1,400bd0 <set_private_cmd+0xa00>
+  400394:	304507ff 	andi	a1,v0,0x7ff
+  400398:	30a4ffff 	andi	a0,a1,0xffff
+  40039c:	1080020c 	beqz	a0,400bd0 <set_private_cmd+0xa00>
+  4003a0:	24024000 	li	v0,16384
+  4003a4:	106201e5 	beq	v1,v0,400b3c <set_private_cmd+0x96c>
+  4003a8:	28624001 	slti	v0,v1,16385
+  4003ac:	1040019d 	beqz	v0,400a24 <set_private_cmd+0x854>
+  4003b0:	24025000 	li	v0,20480
+  4003b4:	24021000 	li	v0,4096
+  4003b8:	10620179 	beq	v1,v0,4009a0 <set_private_cmd+0x7d0>
+  4003bc:	24022000 	li	v0,8192
+  4003c0:	1062001b 	beq	v1,v0,400430 <set_private_cmd+0x260>
+  4003c4:	00000000 	nop
+  4003c8:	8f8780e8 	lw	a3,-32536(gp)
+  4003cc:	00000000 	nop
+  4003d0:	8ce70000 	lw	a3,0(a3)
+  4003d4:	8f848018 	lw	a0,-32744(gp)
+  4003d8:	00000000 	nop
+  4003dc:	2484f96c 	addiu	a0,a0,-1684
+  4003e0:	24050001 	li	a1,1
+  4003e4:	24060017 	li	a2,23
+  4003e8:	8f9980c8 	lw	t9,-32568(gp)
+  4003ec:	00000000 	nop
+  4003f0:	0320f809 	jalr	t9
+  4003f4:	00000000 	nop
+  4003f8:	8fbc0018 	lw	gp,24(sp)
+  4003fc:	2402ffff 	li	v0,-1
+  400400:	8fbf10f8 	lw	ra,4344(sp)
+  400404:	8fbe10f4 	lw	s8,4340(sp)
+  400408:	8fb710ec 	lw	s7,4332(sp)
+  40040c:	8fb610e8 	lw	s6,4328(sp)
+  400410:	8fb510e4 	lw	s5,4324(sp)
+  400414:	8fb410e0 	lw	s4,4320(sp)
+  400418:	8fb310dc 	lw	s3,4316(sp)
+  40041c:	8fb210d8 	lw	s2,4312(sp)
+  400420:	8fb110d4 	lw	s1,4308(sp)
+  400424:	8fb010d0 	lw	s0,4304(sp)
+  400428:	03e00008 	jr	ra
+  40042c:	27bd1100 	addiu	sp,sp,4352
+  400430:	1a200158 	blez	s1,400994 <set_private_cmd+0x7c4>
+  400434:	24020001 	li	v0,1
+  400438:	8e840000 	lw	a0,0(s4)
+  40043c:	8f998068 	lw	t9,-32664(gp)
+  400440:	00000000 	nop
+  400444:	0320f809 	jalr	t9
+  400448:	00000000 	nop
+  40044c:	8fbc0018 	lw	gp,24(sp)
+  400450:	02b61821 	addu	v1,s5,s6
+  400454:	000318c0 	sll	v1,v1,0x3
+  400458:	00771821 	addu	v1,v1,s7
+  40045c:	94640004 	lhu	a0,4(v1)
+  400460:	24420001 	addiu	v0,v0,1
+  400464:	308407ff 	andi	a0,a0,0x7ff
+  400468:	3043ffff 	andi	v1,v0,0xffff
+  40046c:	0083182b 	sltu	v1,a0,v1
+  400470:	10600002 	beqz	v1,40047c <set_private_cmd+0x2ac>
+  400474:	a7a20034 	sh	v0,52(sp)
+  400478:	a7a40034 	sh	a0,52(sp)
+  40047c:	8e850000 	lw	a1,0(s4)
+  400480:	97a60034 	lhu	a2,52(sp)
+  400484:	27b40040 	addiu	s4,sp,64
+  400488:	02802021 	move	a0,s4
+  40048c:	8f998254 	lw	t9,-32172(gp)
+  400490:	00000000 	nop
+  400494:	0320f809 	jalr	t9
+  400498:	00000000 	nop
+  40049c:	8fbc0018 	lw	gp,24(sp)
+  4004a0:	a3a0103f 	sb	zero,4159(sp)
+  4004a4:	02b61021 	addu	v0,s5,s6
+  4004a8:	000210c0 	sll	v0,v0,0x3
+  4004ac:	00571021 	addu	v0,v0,s7
+  4004b0:	94460004 	lhu	a2,4(v0)
+  4004b4:	00000000 	nop
+  4004b8:	30c30800 	andi	v1,a2,0x800
+  4004bc:	1060000f 	beqz	v1,4004fc <set_private_cmd+0x32c>
+  4004c0:	30c607ff 	andi	a2,a2,0x7ff
+  4004c4:	97a20034 	lhu	v0,52(sp)
+  4004c8:	00000000 	nop
+  4004cc:	1046000b 	beq	v0,a2,4004fc <set_private_cmd+0x32c>
+  4004d0:	03c02821 	move	a1,s8
+  4004d4:	8f848018 	lw	a0,-32744(gp)
+  4004d8:	00000000 	nop
+  4004dc:	2484f984 	addiu	a0,a0,-1660
+  4004e0:	8f9982b0 	lw	t9,-32080(gp)
+  4004e4:	00000000 	nop
+  4004e8:	0320f809 	jalr	t9
+  4004ec:	00000000 	nop
+  4004f0:	8fbc0018 	lw	gp,24(sp)
+  4004f4:	1000ffc2 	b	400400 <set_private_cmd+0x230>
+  4004f8:	2402ffff 	li	v0,-1
+  4004fc:	8fa5110c 	lw	a1,4364(sp)
+  400500:	27a40020 	addiu	a0,sp,32
+  400504:	24060010 	li	a2,16
+  400508:	8f998188 	lw	t9,-32376(gp)
+  40050c:	00000000 	nop
+  400510:	0320f809 	jalr	t9
+  400514:	00000000 	nop
+  400518:	8fbc0018 	lw	gp,24(sp)
+  40051c:	02b61821 	addu	v1,s5,s6
+  400520:	000318c0 	sll	v1,v1,0x3
+  400524:	00771821 	addu	v1,v1,s7
+  400528:	94620004 	lhu	v0,4(v1)
+  40052c:	00000000 	nop
+  400530:	30420800 	andi	v0,v0,0x800
+  400534:	104000f9 	beqz	v0,40091c <set_private_cmd+0x74c>
+  400538:	02b61021 	addu	v0,s5,s6
+  40053c:	94640004 	lhu	a0,4(v1)
+  400540:	8f998118 	lw	t9,-32488(gp)
+  400544:	00000000 	nop
+  400548:	0320f809 	jalr	t9
+  40054c:	00000000 	nop
+  400550:	8fbc0018 	lw	gp,24(sp)
+  400554:	8fa310c8 	lw	v1,4296(sp)
+  400558:	00000000 	nop
+  40055c:	00431021 	addu	v0,v0,v1
+  400560:	28420011 	slti	v0,v0,17
+  400564:	104000ed 	beqz	v0,40091c <set_private_cmd+0x74c>
+  400568:	02b61021 	addu	v0,s5,s6
+  40056c:	10600005 	beqz	v1,400584 <set_private_cmd+0x3b4>
+  400570:	27a40030 	addiu	a0,sp,48
+  400574:	8fa210c4 	lw	v0,4292(sp)
+  400578:	00000000 	nop
+  40057c:	afa20030 	sw	v0,48(sp)
+  400580:	8fa310c8 	lw	v1,4296(sp)
+  400584:	27b40040 	addiu	s4,sp,64
+  400588:	24060010 	li	a2,16
+  40058c:	00c33023 	subu	a2,a2,v1
+  400590:	00832021 	addu	a0,a0,v1
+  400594:	02802821 	move	a1,s4
+  400598:	8f998254 	lw	t9,-32172(gp)
+  40059c:	00000000 	nop
+  4005a0:	0320f809 	jalr	t9
+  4005a4:	00000000 	nop
+  4005a8:	8fbc0018 	lw	gp,24(sp)
+  4005ac:	02b61021 	addu	v0,s5,s6
+  4005b0:	000210c0 	sll	v0,v0,0x3
+  4005b4:	00578021 	addu	s0,v0,s7
+  4005b8:	8e050000 	lw	a1,0(s0)
+  4005bc:	8fa41100 	lw	a0,4352(sp)
+  4005c0:	27a60020 	addiu	a2,sp,32
+  4005c4:	8f9982b8 	lw	t9,-32072(gp)
+  4005c8:	00000000 	nop
+  4005cc:	0320f809 	jalr	t9
+  4005d0:	00000000 	nop
+  4005d4:	8fbc0018 	lw	gp,24(sp)
+  4005d8:	044000a8 	bltz	v0,40087c <set_private_cmd+0x6ac>
+  4005dc:	24050001 	li	a1,1
+  4005e0:	96030006 	lhu	v1,6(s0)
+  4005e4:	00000000 	nop
+  4005e8:	30627000 	andi	v0,v1,0x7000
+  4005ec:	1040ff84 	beqz	v0,400400 <set_private_cmd+0x230>
+  4005f0:	00001021 	move	v0,zero
+  4005f4:	306207ff 	andi	v0,v1,0x7ff
+  4005f8:	1040003a 	beqz	v0,4006e4 <set_private_cmd+0x514>
+  4005fc:	03c03021 	move	a2,s8
+  400600:	8fa5110c 	lw	a1,4364(sp)
+  400604:	8f848018 	lw	a0,-32744(gp)
+  400608:	00000000 	nop
+  40060c:	2484f9b0 	addiu	a0,a0,-1616
+  400610:	8f9982b0 	lw	t9,-32080(gp)
+  400614:	00000000 	nop
+  400618:	0320f809 	jalr	t9
+  40061c:	00000000 	nop
+  400620:	8fbc0018 	lw	gp,24(sp)
+  400624:	96030006 	lhu	v1,6(s0)
+  400628:	00000000 	nop
+  40062c:	30630800 	andi	v1,v1,0x800
+  400630:	1060008f 	beqz	v1,400870 <set_private_cmd+0x6a0>
+  400634:	00000000 	nop
+  400638:	96040006 	lhu	a0,6(s0)
+  40063c:	8f998118 	lw	t9,-32488(gp)
+  400640:	00000000 	nop
+  400644:	0320f809 	jalr	t9
+  400648:	00000000 	nop
+  40064c:	8fbc0018 	lw	gp,24(sp)
+  400650:	28420011 	slti	v0,v0,17
+  400654:	10400086 	beqz	v0,400870 <set_private_cmd+0x6a0>
+  400658:	00000000 	nop
+  40065c:	96020006 	lhu	v0,6(s0)
+  400660:	8fa30030 	lw	v1,48(sp)
+  400664:	305207ff 	andi	s2,v0,0x7ff
+  400668:	8fa20034 	lw	v0,52(sp)
+  40066c:	afa30040 	sw	v1,64(sp)
+  400670:	afa20044 	sw	v0,68(sp)
+  400674:	8fa30038 	lw	v1,56(sp)
+  400678:	8fa2003c 	lw	v0,60(sp)
+  40067c:	afa30048 	sw	v1,72(sp)
+  400680:	afa2004c 	sw	v0,76(sp)
+  400684:	02b61021 	addu	v0,s5,s6
+  400688:	000210c0 	sll	v0,v0,0x3
+  40068c:	00571021 	addu	v0,v0,s7
+  400690:	94430006 	lhu	v1,6(v0)
+  400694:	24024000 	li	v0,16384
+  400698:	30637000 	andi	v1,v1,0x7000
+  40069c:	1062005c 	beq	v1,v0,400810 <set_private_cmd+0x640>
+  4006a0:	28624001 	slti	v0,v1,16385
+  4006a4:	10400024 	beqz	v0,400738 <set_private_cmd+0x568>
+  4006a8:	24025000 	li	v0,20480
+  4006ac:	24021000 	li	v0,4096
+  4006b0:	1062000e 	beq	v1,v0,4006ec <set_private_cmd+0x51c>
+  4006b4:	24022000 	li	v0,8192
+  4006b8:	1462ff43 	bne	v1,v0,4003c8 <set_private_cmd+0x1f8>
+  4006bc:	27a40040 	addiu	a0,sp,64
+  4006c0:	97a20034 	lhu	v0,52(sp)
+  4006c4:	00000000 	nop
+  4006c8:	00441021 	addu	v0,v0,a0
+  4006cc:	a040ffff 	sb	zero,-1(v0)
+  4006d0:	8f998240 	lw	t9,-32192(gp)
+  4006d4:	00000000 	nop
+  4006d8:	0320f809 	jalr	t9
+  4006dc:	00000000 	nop
+  4006e0:	8fbc0018 	lw	gp,24(sp)
+  4006e4:	1000ff46 	b	400400 <set_private_cmd+0x230>
+  4006e8:	00001021 	move	v0,zero
+  4006ec:	12400058 	beqz	s2,400850 <set_private_cmd+0x680>
+  4006f0:	00008021 	move	s0,zero
+  4006f4:	27b40040 	addiu	s4,sp,64
+  4006f8:	02901021 	addu	v0,s4,s0
+  4006fc:	90450000 	lbu	a1,0(v0)
+  400700:	8f848018 	lw	a0,-32744(gp)
+  400704:	00000000 	nop
+  400708:	2484f9bc 	addiu	a0,a0,-1604
+  40070c:	26100001 	addiu	s0,s0,1
+  400710:	8f9982b0 	lw	t9,-32080(gp)
+  400714:	00000000 	nop
+  400718:	0320f809 	jalr	t9
+  40071c:	00000000 	nop
+  400720:	8fbc0018 	lw	gp,24(sp)
+  400724:	0212182a 	slt	v1,s0,s2
+  400728:	1460fff3 	bnez	v1,4006f8 <set_private_cmd+0x528>
+  40072c:	2404000a 	li	a0,10
+  400730:	10000048 	b	400854 <set_private_cmd+0x684>
+  400734:	00000000 	nop
+  400738:	10620030 	beq	v1,v0,4007fc <set_private_cmd+0x62c>
+  40073c:	00000000 	nop
+  400740:	24026000 	li	v0,24576
+  400744:	1462ff20 	bne	v1,v0,4003c8 <set_private_cmd+0x1f8>
+  400748:	00000000 	nop
+  40074c:	1240ffe5 	beqz	s2,4006e4 <set_private_cmd+0x514>
+  400750:	00008021 	move	s0,zero
+  400754:	27b40040 	addiu	s4,sp,64
+  400758:	27b31040 	addiu	s3,sp,4160
+  40075c:	00101100 	sll	v0,s0,0x4
+  400760:	03c02021 	move	a0,s8
+  400764:	12000012 	beqz	s0,4007b0 <set_private_cmd+0x5e0>
+  400768:	02828821 	addu	s1,s4,v0
+  40076c:	8f998068 	lw	t9,-32664(gp)
+  400770:	00000000 	nop
+  400774:	0320f809 	jalr	t9
+  400778:	00000000 	nop
+  40077c:	8fbc0018 	lw	gp,24(sp)
+  400780:	00402821 	move	a1,v0
+  400784:	8f868018 	lw	a2,-32744(gp)
+  400788:	00000000 	nop
+  40078c:	24c6f9c4 	addiu	a2,a2,-1596
+  400790:	8f848018 	lw	a0,-32744(gp)
+  400794:	00000000 	nop
+  400798:	2484f9d8 	addiu	a0,a0,-1576
+  40079c:	8f9982b0 	lw	t9,-32080(gp)
+  4007a0:	00000000 	nop
+  4007a4:	0320f809 	jalr	t9
+  4007a8:	00000000 	nop
+  4007ac:	8fbc0018 	lw	gp,24(sp)
+  4007b0:	26240002 	addiu	a0,s1,2
+  4007b4:	27a51040 	addiu	a1,sp,4160
+  4007b8:	8f99819c 	lw	t9,-32356(gp)
+  4007bc:	00000000 	nop
+  4007c0:	0320f809 	jalr	t9
+  4007c4:	00000000 	nop
+  4007c8:	8fbc0018 	lw	gp,24(sp)
+  4007cc:	26100001 	addiu	s0,s0,1
+  4007d0:	02602021 	move	a0,s3
+  4007d4:	8f998240 	lw	t9,-32192(gp)
+  4007d8:	00000000 	nop
+  4007dc:	0320f809 	jalr	t9
+  4007e0:	00000000 	nop
+  4007e4:	8fbc0018 	lw	gp,24(sp)
+  4007e8:	0212182a 	slt	v1,s0,s2
+  4007ec:	1460ffdb 	bnez	v1,40075c <set_private_cmd+0x58c>
+  4007f0:	00001021 	move	v0,zero
+  4007f4:	1000ff02 	b	400400 <set_private_cmd+0x230>
+  4007f8:	00000000 	nop
+  4007fc:	8f848018 	lw	a0,-32744(gp)
+  400800:	00000000 	nop
+  400804:	2484f9e8 	addiu	a0,a0,-1560
+  400808:	1000ffb1 	b	4006d0 <set_private_cmd+0x500>
+  40080c:	00000000 	nop
+  400810:	12400010 	beqz	s2,400854 <set_private_cmd+0x684>
+  400814:	2404000a 	li	a0,10
+  400818:	02408021 	move	s0,s2
+  40081c:	27b10040 	addiu	s1,sp,64
+  400820:	8e250000 	lw	a1,0(s1)
+  400824:	8f848018 	lw	a0,-32744(gp)
+  400828:	00000000 	nop
+  40082c:	2484f9bc 	addiu	a0,a0,-1604
+  400830:	2610ffff 	addiu	s0,s0,-1
+  400834:	8f9982b0 	lw	t9,-32080(gp)
+  400838:	00000000 	nop
+  40083c:	0320f809 	jalr	t9
+  400840:	00000000 	nop
+  400844:	8fbc0018 	lw	gp,24(sp)
+  400848:	1600fff5 	bnez	s0,400820 <set_private_cmd+0x650>
+  40084c:	26310004 	addiu	s1,s1,4
+  400850:	2404000a 	li	a0,10
+  400854:	8f9982c8 	lw	t9,-32056(gp)
+  400858:	00000000 	nop
+  40085c:	0320f809 	jalr	t9
+  400860:	00000000 	nop
+  400864:	8fbc0018 	lw	gp,24(sp)
+  400868:	1000fee5 	b	400400 <set_private_cmd+0x230>
+  40086c:	00001021 	move	v0,zero
+  400870:	97b20034 	lhu	s2,52(sp)
+  400874:	1000ff84 	b	400688 <set_private_cmd+0x4b8>
+  400878:	02b61021 	addu	v0,s5,s6
+  40087c:	8f8780e8 	lw	a3,-32536(gp)
+  400880:	00000000 	nop
+  400884:	8ce70000 	lw	a3,0(a3)
+  400888:	2406002a 	li	a2,42
+  40088c:	8f848018 	lw	a0,-32744(gp)
+  400890:	00000000 	nop
+  400894:	2484fa08 	addiu	a0,a0,-1528
+  400898:	8f9980c8 	lw	t9,-32568(gp)
+  40089c:	00000000 	nop
+  4008a0:	0320f809 	jalr	t9
+  4008a4:	00000000 	nop
+  4008a8:	8fbc0018 	lw	gp,24(sp)
+  4008ac:	00000000 	nop
+  4008b0:	8f9980a0 	lw	t9,-32608(gp)
+  4008b4:	00000000 	nop
+  4008b8:	0320f809 	jalr	t9
+  4008bc:	00000000 	nop
+  4008c0:	8fbc0018 	lw	gp,24(sp)
+  4008c4:	8c440000 	lw	a0,0(v0)
+  4008c8:	8f99828c 	lw	t9,-32116(gp)
+  4008cc:	00000000 	nop
+  4008d0:	0320f809 	jalr	t9
+  4008d4:	00000000 	nop
+  4008d8:	8fbc0018 	lw	gp,24(sp)
+  4008dc:	8e070000 	lw	a3,0(s0)
+  4008e0:	8f8480e8 	lw	a0,-32536(gp)
+  4008e4:	00000000 	nop
+  4008e8:	8c840000 	lw	a0,0(a0)
+  4008ec:	8f858018 	lw	a1,-32744(gp)
+  4008f0:	00000000 	nop
+  4008f4:	24a5fa34 	addiu	a1,a1,-1484
+  4008f8:	03c03021 	move	a2,s8
+  4008fc:	afa20010 	sw	v0,16(sp)
+  400900:	8f9981c4 	lw	t9,-32316(gp)
+  400904:	00000000 	nop
+  400908:	0320f809 	jalr	t9
+  40090c:	00000000 	nop
+  400910:	8fbc0018 	lw	gp,24(sp)
+  400914:	1000feba 	b	400400 <set_private_cmd+0x230>
+  400918:	2402ffff 	li	v0,-1
+  40091c:	000210c0 	sll	v0,v0,0x3
+  400920:	00572821 	addu	a1,v0,s7
+  400924:	8ca40004 	lw	a0,4(a1)
+  400928:	3c02ffff 	lui	v0,0xffff
+  40092c:	34420800 	ori	v0,v0,0x800
+  400930:	00822024 	and	a0,a0,v0
+  400934:	24030800 	li	v1,2048
+  400938:	10830006 	beq	a0,v1,400954 <set_private_cmd+0x784>
+  40093c:	00000000 	nop
+  400940:	8fa210c4 	lw	v0,4292(sp)
+  400944:	27b40040 	addiu	s4,sp,64
+  400948:	afb40030 	sw	s4,48(sp)
+  40094c:	1000ff17 	b	4005ac <set_private_cmd+0x3dc>
+  400950:	a7a20036 	sh	v0,54(sp)
+  400954:	94a40006 	lhu	a0,6(a1)
+  400958:	8f998118 	lw	t9,-32488(gp)
+  40095c:	00000000 	nop
+  400960:	0320f809 	jalr	t9
+  400964:	00000000 	nop
+  400968:	8fbc0018 	lw	gp,24(sp)
+  40096c:	28420011 	slti	v0,v0,17
+  400970:	1040fff3 	beqz	v0,400940 <set_private_cmd+0x770>
+  400974:	00000000 	nop
+  400978:	8fa210c8 	lw	v0,4296(sp)
+  40097c:	00000000 	nop
+  400980:	1040ff0b 	beqz	v0,4005b0 <set_private_cmd+0x3e0>
+  400984:	02b61021 	addu	v0,s5,s6
+  400988:	8fa310c4 	lw	v1,4292(sp)
+  40098c:	1000ff08 	b	4005b0 <set_private_cmd+0x3e0>
+  400990:	afa30030 	sw	v1,48(sp)
+  400994:	a7a20034 	sh	v0,52(sp)
+  400998:	1000fec2 	b	4004a4 <set_private_cmd+0x2d4>
+  40099c:	a3a00040 	sb	zero,64(sp)
+  4009a0:	3222ffff 	andi	v0,s1,0xffff
+  4009a4:	0082102b 	sltu	v0,a0,v0
+  4009a8:	10400002 	beqz	v0,4009b4 <set_private_cmd+0x7e4>
+  4009ac:	a7b10034 	sh	s1,52(sp)
+  4009b0:	a7a50034 	sh	a1,52(sp)
+  4009b4:	97a20034 	lhu	v0,52(sp)
+  4009b8:	00000000 	nop
+  4009bc:	1040feba 	beqz	v0,4004a8 <set_private_cmd+0x2d8>
+  4009c0:	02b61021 	addu	v0,s5,s6
+  4009c4:	00131080 	sll	v0,s3,0x2
+  4009c8:	00548021 	addu	s0,v0,s4
+  4009cc:	27b110c0 	addiu	s1,sp,4288
+  4009d0:	27b40040 	addiu	s4,sp,64
+  4009d4:	8e040000 	lw	a0,0(s0)
+  4009d8:	8f858018 	lw	a1,-32744(gp)
+  4009dc:	00000000 	nop
+  4009e0:	24a5fa44 	addiu	a1,a1,-1468
+  4009e4:	27a610c0 	addiu	a2,sp,4288
+  4009e8:	8f998170 	lw	t9,-32400(gp)
+  4009ec:	00000000 	nop
+  4009f0:	0320f809 	jalr	t9
+  4009f4:	00000000 	nop
+  4009f8:	8fbc0018 	lw	gp,24(sp)
+  4009fc:	92230003 	lbu	v1,3(s1)
+  400a00:	02931021 	addu	v0,s4,s3
+  400a04:	a0430000 	sb	v1,0(v0)
+  400a08:	97a40034 	lhu	a0,52(sp)
+  400a0c:	26730001 	addiu	s3,s3,1
+  400a10:	0264202a 	slt	a0,s3,a0
+  400a14:	1480ffef 	bnez	a0,4009d4 <set_private_cmd+0x804>
+  400a18:	26100004 	addiu	s0,s0,4
+  400a1c:	1000fea2 	b	4004a8 <set_private_cmd+0x2d8>
+  400a20:	02b61021 	addu	v0,s5,s6
+  400a24:	10620036 	beq	v1,v0,400b00 <set_private_cmd+0x930>
+  400a28:	24026000 	li	v0,24576
+  400a2c:	1462fe66 	bne	v1,v0,4003c8 <set_private_cmd+0x1f8>
+  400a30:	02b61021 	addu	v0,s5,s6
+  400a34:	000210c0 	sll	v0,v0,0x3
+  400a38:	00571021 	addu	v0,v0,s7
+  400a3c:	94440004 	lhu	a0,4(v0)
+  400a40:	3223ffff 	andi	v1,s1,0xffff
+  400a44:	308407ff 	andi	a0,a0,0x7ff
+  400a48:	0083182b 	sltu	v1,a0,v1
+  400a4c:	10600002 	beqz	v1,400a58 <set_private_cmd+0x888>
+  400a50:	a7b10034 	sh	s1,52(sp)
+  400a54:	a7a40034 	sh	a0,52(sp)
+  400a58:	97a20034 	lhu	v0,52(sp)
+  400a5c:	00000000 	nop
+  400a60:	1040fe91 	beqz	v0,4004a8 <set_private_cmd+0x2d8>
+  400a64:	02b61021 	addu	v0,s5,s6
+  400a68:	00131080 	sll	v0,s3,0x2
+  400a6c:	00548021 	addu	s0,v0,s4
+  400a70:	27b40040 	addiu	s4,sp,64
+  400a74:	00131100 	sll	v0,s3,0x4
+  400a78:	00548821 	addu	s1,v0,s4
+  400a7c:	02009021 	move	s2,s0
+  400a80:	8e060000 	lw	a2,0(s0)
+  400a84:	8fa41100 	lw	a0,4352(sp)
+  400a88:	8fa5110c 	lw	a1,4364(sp)
+  400a8c:	02203821 	move	a3,s1
+  400a90:	8f99825c 	lw	t9,-32164(gp)
+  400a94:	00000000 	nop
+  400a98:	0320f809 	jalr	t9
+  400a9c:	00000000 	nop
+  400aa0:	8fbc0018 	lw	gp,24(sp)
+  400aa4:	26730001 	addiu	s3,s3,1
+  400aa8:	26100004 	addiu	s0,s0,4
+  400aac:	26310010 	addiu	s1,s1,16
+  400ab0:	04400008 	bltz	v0,400ad4 <set_private_cmd+0x904>
+  400ab4:	02401821 	move	v1,s2
+  400ab8:	97a20034 	lhu	v0,52(sp)
+  400abc:	00000000 	nop
+  400ac0:	0262102a 	slt	v0,s3,v0
+  400ac4:	1440ffee 	bnez	v0,400a80 <set_private_cmd+0x8b0>
+  400ac8:	24720004 	addiu	s2,v1,4
+  400acc:	1000fe76 	b	4004a8 <set_private_cmd+0x2d8>
+  400ad0:	02b61021 	addu	v0,s5,s6
+  400ad4:	8e450000 	lw	a1,0(s2)
+  400ad8:	8f848018 	lw	a0,-32744(gp)
+  400adc:	00000000 	nop
+  400ae0:	2484fa48 	addiu	a0,a0,-1464
+  400ae4:	8f9982b0 	lw	t9,-32080(gp)
+  400ae8:	00000000 	nop
+  400aec:	0320f809 	jalr	t9
+  400af0:	00000000 	nop
+  400af4:	8fbc0018 	lw	gp,24(sp)
+  400af8:	1000fe41 	b	400400 <set_private_cmd+0x230>
+  400afc:	2402ffff 	li	v0,-1
+  400b00:	3222ffff 	andi	v0,s1,0xffff
+  400b04:	0082102b 	sltu	v0,a0,v0
+  400b08:	10400002 	beqz	v0,400b14 <set_private_cmd+0x944>
+  400b0c:	a7b10034 	sh	s1,52(sp)
+  400b10:	a7a50034 	sh	a1,52(sp)
+  400b14:	97a20034 	lhu	v0,52(sp)
+  400b18:	00000000 	nop
+  400b1c:	1040fe61 	beqz	v0,4004a4 <set_private_cmd+0x2d4>
+  400b20:	00401821 	move	v1,v0
+  400b24:	26730001 	addiu	s3,s3,1
+  400b28:	0263102a 	slt	v0,s3,v1
+  400b2c:	1440fffd 	bnez	v0,400b24 <set_private_cmd+0x954>
+  400b30:	02b61021 	addu	v0,s5,s6
+  400b34:	1000fe5d 	b	4004ac <set_private_cmd+0x2dc>
+  400b38:	000210c0 	sll	v0,v0,0x3
+  400b3c:	02b61021 	addu	v0,s5,s6
+  400b40:	000210c0 	sll	v0,v0,0x3
+  400b44:	00571021 	addu	v0,v0,s7
+  400b48:	94440004 	lhu	a0,4(v0)
+  400b4c:	3223ffff 	andi	v1,s1,0xffff
+  400b50:	308407ff 	andi	a0,a0,0x7ff
+  400b54:	0083182b 	sltu	v1,a0,v1
+  400b58:	10600002 	beqz	v1,400b64 <set_private_cmd+0x994>
+  400b5c:	a7b10034 	sh	s1,52(sp)
+  400b60:	a7a40034 	sh	a0,52(sp)
+  400b64:	97a20034 	lhu	v0,52(sp)
+  400b68:	00000000 	nop
+  400b6c:	1040fe4e 	beqz	v0,4004a8 <set_private_cmd+0x2d8>
+  400b70:	02b61021 	addu	v0,s5,s6
+  400b74:	27b10020 	addiu	s1,sp,32
+  400b78:	00138080 	sll	s0,s3,0x2
+  400b7c:	02141021 	addu	v0,s0,s4
+  400b80:	8c440000 	lw	a0,0(v0)
+  400b84:	8f858018 	lw	a1,-32744(gp)
+  400b88:	00000000 	nop
+  400b8c:	24a5fa44 	addiu	a1,a1,-1468
+  400b90:	27a610c0 	addiu	a2,sp,4288
+  400b94:	8f998170 	lw	t9,-32400(gp)
+  400b98:	00000000 	nop
+  400b9c:	0320f809 	jalr	t9
+  400ba0:	00000000 	nop
+  400ba4:	8fbc0018 	lw	gp,24(sp)
+  400ba8:	8fa310c0 	lw	v1,4288(sp)
+  400bac:	02118021 	addu	s0,s0,s1
+  400bb0:	ae030020 	sw	v1,32(s0)
+  400bb4:	97a20034 	lhu	v0,52(sp)
+  400bb8:	26730001 	addiu	s3,s3,1
+  400bbc:	0262102a 	slt	v0,s3,v0
+  400bc0:	1440ffee 	bnez	v0,400b7c <set_private_cmd+0x9ac>
+  400bc4:	00138080 	sll	s0,s3,0x2
+  400bc8:	1000fe37 	b	4004a8 <set_private_cmd+0x2d8>
+  400bcc:	02b61021 	addu	v0,s5,s6
+  400bd0:	1000fe4a 	b	4004fc <set_private_cmd+0x32c>
+  400bd4:	a7a00034 	sh	zero,52(sp)
+  400bd8:	8f8480e8 	lw	a0,-32536(gp)
+  400bdc:	00000000 	nop
+  400be0:	8c840000 	lw	a0,0(a0)
+  400be4:	8f858018 	lw	a1,-32744(gp)
+  400be8:	00000000 	nop
+  400bec:	24a5fa64 	addiu	a1,a1,-1436
+  400bf0:	03c03021 	move	a2,s8
+  400bf4:	8f9981c4 	lw	t9,-32316(gp)
+  400bf8:	00000000 	nop
+  400bfc:	0320f809 	jalr	t9
+  400c00:	00000000 	nop
+  400c04:	8fbc0018 	lw	gp,24(sp)
+  400c08:	1000fdfd 	b	400400 <set_private_cmd+0x230>
+  400c0c:	2402ffff 	li	v0,-1
+  400c10:	8f8480e8 	lw	a0,-32536(gp)
+  400c14:	00000000 	nop
+  400c18:	8c840000 	lw	a0,0(a0)
+  400c1c:	8f858018 	lw	a1,-32744(gp)
+  400c20:	00000000 	nop
+  400c24:	24a5fa90 	addiu	a1,a1,-1392
+  400c28:	03c03021 	move	a2,s8
+  400c2c:	8f9981c4 	lw	t9,-32316(gp)
+  400c30:	00000000 	nop
+  400c34:	0320f809 	jalr	t9
+  400c38:	00000000 	nop
+  400c3c:	8fbc0018 	lw	gp,24(sp)
+  400c40:	1000fdef 	b	400400 <set_private_cmd+0x230>
+  400c44:	2402ffff 	li	v0,-1
+  400c48:	8fa210c0 	lw	v0,4288(sp)
+  400c4c:	26940004 	addiu	s4,s4,4
+  400c50:	afa210c4 	sw	v0,4292(sp)
+  400c54:	1000fd87 	b	400274 <set_private_cmd+0xa4>
+  400c58:	2631ffff 	addiu	s1,s1,-1
+
+00400c5c <print_priv_info>:
+  400c5c:	3c1c0fc0 	lui	gp,0xfc0
+  400c60:	279c75f4 	addiu	gp,gp,30196
+  400c64:	0399e021 	addu	gp,gp,t9
+  400c68:	27bdf3c0 	addiu	sp,sp,-3136
+  400c6c:	afbc0020 	sw	gp,32(sp)
+  400c70:	27a60028 	addiu	a2,sp,40
+  400c74:	24070080 	li	a3,128
+  400c78:	afb10c2c 	sw	s1,3116(sp)
+  400c7c:	afb00c28 	sw	s0,3112(sp)
+  400c80:	afbf0c38 	sw	ra,3128(sp)
+  400c84:	afbc0c34 	sw	gp,3124(sp)
+  400c88:	afb20c30 	sw	s2,3120(sp)
+  400c8c:	00a08821 	move	s1,a1
+  400c90:	8f998074 	lw	t9,-32652(gp)
+  400c94:	00000000 	nop
+  400c98:	0320f809 	jalr	t9
+  400c9c:	00000000 	nop
+  400ca0:	8fbc0020 	lw	gp,32(sp)
+  400ca4:	00408021 	move	s0,v0
+  400ca8:	1a00003b 	blez	s0,400d98 <print_priv_info+0x13c>
+  400cac:	02202821 	move	a1,s1
+  400cb0:	8f848018 	lw	a0,-32744(gp)
+  400cb4:	00000000 	nop
+  400cb8:	2484faa8 	addiu	a0,a0,-1368
+  400cbc:	8f9982b0 	lw	t9,-32080(gp)
+  400cc0:	00000000 	nop
+  400cc4:	0320f809 	jalr	t9
+  400cc8:	00000000 	nop
+  400ccc:	8fbc0020 	lw	gp,32(sp)
+  400cd0:	1a000025 	blez	s0,400d68 <print_priv_info+0x10c>
+  400cd4:	2404000a 	li	a0,10
+  400cd8:	02008821 	move	s1,s0
+  400cdc:	8f92801c 	lw	s2,-32740(gp)
+  400ce0:	00000000 	nop
+  400ce4:	26520000 	addiu	s2,s2,0
+  400ce8:	27b00028 	addiu	s0,sp,40
+  400cec:	82020008 	lb	v0,8(s0)
+  400cf0:	26050008 	addiu	a1,s0,8
+  400cf4:	8f848018 	lw	a0,-32744(gp)
+  400cf8:	00000000 	nop
+  400cfc:	2484facc 	addiu	a0,a0,-1332
+  400d00:	10400016 	beqz	v0,400d5c <print_priv_info+0x100>
+  400d04:	2631ffff 	addiu	s1,s1,-1
+  400d08:	96070004 	lhu	a3,4(s0)
+  400d0c:	96080006 	lhu	t0,6(s0)
+  400d10:	30e27000 	andi	v0,a3,0x7000
+  400d14:	31037000 	andi	v1,t0,0x7000
+  400d18:	00021282 	srl	v0,v0,0xa
+  400d1c:	00031a82 	srl	v1,v1,0xa
+  400d20:	00521021 	addu	v0,v0,s2
+  400d24:	00721821 	addu	v1,v1,s2
+  400d28:	8c490000 	lw	t1,0(v0)
+  400d2c:	8c6a0000 	lw	t2,0(v1)
+  400d30:	8e060000 	lw	a2,0(s0)
+  400d34:	310807ff 	andi	t0,t0,0x7ff
+  400d38:	30e707ff 	andi	a3,a3,0x7ff
+  400d3c:	afa90010 	sw	t1,16(sp)
+  400d40:	afa80014 	sw	t0,20(sp)
+  400d44:	afaa0018 	sw	t2,24(sp)
+  400d48:	8f9982b0 	lw	t9,-32080(gp)
+  400d4c:	00000000 	nop
+  400d50:	0320f809 	jalr	t9
+  400d54:	00000000 	nop
+  400d58:	8fbc0020 	lw	gp,32(sp)
+  400d5c:	1620ffe3 	bnez	s1,400cec <print_priv_info+0x90>
+  400d60:	26100018 	addiu	s0,s0,24
+  400d64:	2404000a 	li	a0,10
+  400d68:	8f9982c8 	lw	t9,-32056(gp)
+  400d6c:	00000000 	nop
+  400d70:	0320f809 	jalr	t9
+  400d74:	00000000 	nop
+  400d78:	8fbc0020 	lw	gp,32(sp)
+  400d7c:	8fbf0c38 	lw	ra,3128(sp)
+  400d80:	8fb20c30 	lw	s2,3120(sp)
+  400d84:	8fb10c2c 	lw	s1,3116(sp)
+  400d88:	8fb00c28 	lw	s0,3112(sp)
+  400d8c:	00001021 	move	v0,zero
+  400d90:	03e00008 	jr	ra
+  400d94:	27bd0c40 	addiu	sp,sp,3136
+  400d98:	8f8480e8 	lw	a0,-32536(gp)
+  400d9c:	00000000 	nop
+  400da0:	8c840000 	lw	a0,0(a0)
+  400da4:	8f858018 	lw	a1,-32744(gp)
+  400da8:	00000000 	nop
+  400dac:	24a5fb04 	addiu	a1,a1,-1276
+  400db0:	02203021 	move	a2,s1
+  400db4:	8f9981c4 	lw	t9,-32316(gp)
+  400db8:	00000000 	nop
+  400dbc:	0320f809 	jalr	t9
+  400dc0:	00000000 	nop
+  400dc4:	8fbc0020 	lw	gp,32(sp)
+  400dc8:	1000ffec 	b	400d7c <print_priv_info+0x120>
+  400dcc:	00000000 	nop
+
+00400dd0 <print_priv_all>:
+  400dd0:	3c1c0fc0 	lui	gp,0xfc0
+  400dd4:	279c7480 	addiu	gp,gp,29824
+  400dd8:	0399e021 	addu	gp,gp,t9
+  400ddc:	27bdf3b8 	addiu	sp,sp,-3144
+  400de0:	afbc0020 	sw	gp,32(sp)
+  400de4:	27a60028 	addiu	a2,sp,40
+  400de8:	24070080 	li	a3,128
+  400dec:	afb50c3c 	sw	s5,3132(sp)
+  400df0:	afb30c34 	sw	s3,3124(sp)
+  400df4:	afb20c30 	sw	s2,3120(sp)
+  400df8:	afbf0c44 	sw	ra,3140(sp)
+  400dfc:	afbc0c40 	sw	gp,3136(sp)
+  400e00:	afb40c38 	sw	s4,3128(sp)
+  400e04:	afb10c2c 	sw	s1,3116(sp)
+  400e08:	afb00c28 	sw	s0,3112(sp)
+  400e0c:	0080a821 	move	s5,a0
+  400e10:	00a09821 	move	s3,a1
+  400e14:	8f998074 	lw	t9,-32652(gp)
+  400e18:	00000000 	nop
+  400e1c:	0320f809 	jalr	t9
+  400e20:	00000000 	nop
+  400e24:	8fbc0020 	lw	gp,32(sp)
+  400e28:	00409021 	move	s2,v0
+  400e2c:	1a40003a 	blez	s2,400f18 <print_priv_all+0x148>
+  400e30:	02602821 	move	a1,s3
+  400e34:	8f848018 	lw	a0,-32744(gp)
+  400e38:	00000000 	nop
+  400e3c:	2484fb24 	addiu	a0,a0,-1244
+  400e40:	8f9982b0 	lw	t9,-32080(gp)
+  400e44:	00000000 	nop
+  400e48:	0320f809 	jalr	t9
+  400e4c:	00000000 	nop
+  400e50:	8fbc0020 	lw	gp,32(sp)
+  400e54:	1a40000f 	blez	s2,400e94 <print_priv_all+0xc4>
+  400e58:	2404000a 	li	a0,10
+  400e5c:	27b00028 	addiu	s0,sp,40
+  400e60:	0200a021 	move	s4,s0
+  400e64:	02408821 	move	s1,s2
+  400e68:	82020008 	lb	v0,8(s0)
+  400e6c:	00000000 	nop
+  400e70:	10400005 	beqz	v0,400e88 <print_priv_all+0xb8>
+  400e74:	2631ffff 	addiu	s1,s1,-1
+  400e78:	96020004 	lhu	v0,4(s0)
+  400e7c:	00000000 	nop
+  400e80:	10400013 	beqz	v0,400ed0 <print_priv_all+0x100>
+  400e84:	26030008 	addiu	v1,s0,8
+  400e88:	1620fff7 	bnez	s1,400e68 <print_priv_all+0x98>
+  400e8c:	26100018 	addiu	s0,s0,24
+  400e90:	2404000a 	li	a0,10
+  400e94:	8f9982c8 	lw	t9,-32056(gp)
+  400e98:	00000000 	nop
+  400e9c:	0320f809 	jalr	t9
+  400ea0:	00000000 	nop
+  400ea4:	8fbc0020 	lw	gp,32(sp)
+  400ea8:	8fbf0c44 	lw	ra,3140(sp)
+  400eac:	8fb50c3c 	lw	s5,3132(sp)
+  400eb0:	8fb40c38 	lw	s4,3128(sp)
+  400eb4:	8fb30c34 	lw	s3,3124(sp)
+  400eb8:	8fb20c30 	lw	s2,3120(sp)
+  400ebc:	8fb10c2c 	lw	s1,3116(sp)
+  400ec0:	8fb00c28 	lw	s0,3112(sp)
+  400ec4:	00001021 	move	v0,zero
+  400ec8:	03e00008 	jr	ra
+  400ecc:	27bd0c48 	addiu	sp,sp,3144
+  400ed0:	96020006 	lhu	v0,6(s0)
+  400ed4:	02a02021 	move	a0,s5
+  400ed8:	00002821 	move	a1,zero
+  400edc:	00003021 	move	a2,zero
+  400ee0:	1040ffe9 	beqz	v0,400e88 <print_priv_all+0xb8>
+  400ee4:	02603821 	move	a3,s3
+  400ee8:	afa30010 	sw	v1,16(sp)
+  400eec:	afb40014 	sw	s4,20(sp)
+  400ef0:	afb20018 	sw	s2,24(sp)
+  400ef4:	8f998020 	lw	t9,-32736(gp)
+  400ef8:	00000000 	nop
+  400efc:	273901d0 	addiu	t9,t9,464
+  400f00:	00000000 	nop
+  400f04:	0320f809 	jalr	t9
+  400f08:	00000000 	nop
+  400f0c:	8fbc0020 	lw	gp,32(sp)
+  400f10:	1000ffdd 	b	400e88 <print_priv_all+0xb8>
+  400f14:	00000000 	nop
+  400f18:	8f8480e8 	lw	a0,-32536(gp)
+  400f1c:	00000000 	nop
+  400f20:	8c840000 	lw	a0,0(a0)
+  400f24:	8f858018 	lw	a1,-32744(gp)
+  400f28:	00000000 	nop
+  400f2c:	24a5fb04 	addiu	a1,a1,-1276
+  400f30:	02603021 	move	a2,s3
+  400f34:	8f9981c4 	lw	t9,-32316(gp)
+  400f38:	00000000 	nop
+  400f3c:	0320f809 	jalr	t9
+  400f40:	00000000 	nop
+  400f44:	8fbc0020 	lw	gp,32(sp)
+  400f48:	1000ffd7 	b	400ea8 <print_priv_all+0xd8>
+  400f4c:	00000000 	nop
+
+00400f50 <set_roaming>:
+  400f50:	3c1c0fc0 	lui	gp,0xfc0
+  400f54:	279c7300 	addiu	gp,gp,29440
+  400f58:	0399e021 	addu	gp,gp,t9
+  400f5c:	27bdefa0 	addiu	sp,sp,-4192
+  400f60:	afbc0010 	sw	gp,16(sp)
+  400f64:	afb5104c 	sw	s5,4172(sp)
+  400f68:	afb31044 	sw	s3,4164(sp)
+  400f6c:	27b50438 	addiu	s5,sp,1080
+  400f70:	00e09821 	move	s3,a3
+  400f74:	afb1103c 	sw	s1,4156(sp)
+  400f78:	afb01038 	sw	s0,4152(sp)
+  400f7c:	00a08821 	move	s1,a1
+  400f80:	00c08021 	move	s0,a2
+  400f84:	02602821 	move	a1,s3
+  400f88:	02a03021 	move	a2,s5
+  400f8c:	24070080 	li	a3,128
+  400f90:	afb61050 	sw	s6,4176(sp)
+  400f94:	afb21040 	sw	s2,4160(sp)
+  400f98:	afbf1058 	sw	ra,4184(sp)
+  400f9c:	afbc1054 	sw	gp,4180(sp)
+  400fa0:	afb41048 	sw	s4,4168(sp)
+  400fa4:	0080b021 	move	s6,a0
+  400fa8:	8f998074 	lw	t9,-32652(gp)
+  400fac:	00000000 	nop
+  400fb0:	0320f809 	jalr	t9
+  400fb4:	00000000 	nop
+  400fb8:	8fbc0010 	lw	gp,16(sp)
+  400fbc:	00409021 	move	s2,v0
+  400fc0:	1a400090 	blez	s2,401204 <set_roaming+0x2b4>
+  400fc4:	02603021 	move	a2,s3
+  400fc8:	24020001 	li	v0,1
+  400fcc:	12020013 	beq	s0,v0,40101c <set_roaming+0xcc>
+  400fd0:	00000000 	nop
+  400fd4:	8f998020 	lw	t9,-32736(gp)
+  400fd8:	00000000 	nop
+  400fdc:	27390100 	addiu	t9,t9,256
+  400fe0:	00000000 	nop
+  400fe4:	0320f809 	jalr	t9
+  400fe8:	00000000 	nop
+  400fec:	8fbc0010 	lw	gp,16(sp)
+  400ff0:	2402ffff 	li	v0,-1
+  400ff4:	8fbf1058 	lw	ra,4184(sp)
+  400ff8:	8fb61050 	lw	s6,4176(sp)
+  400ffc:	8fb5104c 	lw	s5,4172(sp)
+  401000:	8fb41048 	lw	s4,4168(sp)
+  401004:	8fb31044 	lw	s3,4164(sp)
+  401008:	8fb21040 	lw	s2,4160(sp)
+  40100c:	8fb1103c 	lw	s1,4156(sp)
+  401010:	8fb01038 	lw	s0,4152(sp)
+  401014:	03e00008 	jr	ra
+  401018:	27bd1060 	addiu	sp,sp,4192
+  40101c:	8e240000 	lw	a0,0(s1)
+  401020:	8f858018 	lw	a1,-32744(gp)
+  401024:	00000000 	nop
+  401028:	24a5fb54 	addiu	a1,a1,-1196
+  40102c:	8f998184 	lw	t9,-32380(gp)
+  401030:	00000000 	nop
+  401034:	0320f809 	jalr	t9
+  401038:	00000000 	nop
+  40103c:	8fbc0010 	lw	gp,16(sp)
+  401040:	10400066 	beqz	v0,4011dc <set_roaming+0x28c>
+  401044:	02602821 	move	a1,s3
+  401048:	8e240000 	lw	a0,0(s1)
+  40104c:	8f858018 	lw	a1,-32744(gp)
+  401050:	00000000 	nop
+  401054:	24a5fb58 	addiu	a1,a1,-1192
+  401058:	8f998184 	lw	t9,-32380(gp)
+  40105c:	00000000 	nop
+  401060:	0320f809 	jalr	t9
+  401064:	00000000 	nop
+  401068:	8fbc0010 	lw	gp,16(sp)
+  40106c:	1440ffd9 	bnez	v0,400fd4 <set_roaming+0x84>
+  401070:	02602821 	move	a1,s3
+  401074:	8f848018 	lw	a0,-32744(gp)
+  401078:	00000000 	nop
+  40107c:	2484fb5c 	addiu	a0,a0,-1188
+  401080:	8f9982b0 	lw	t9,-32080(gp)
+  401084:	00000000 	nop
+  401088:	0320f809 	jalr	t9
+  40108c:	00000000 	nop
+  401090:	8fbc0010 	lw	gp,16(sp)
+  401094:	0000a021 	move	s4,zero
+  401098:	2411ffff 	li	s1,-1
+  40109c:	26b0fff0 	addiu	s0,s5,-16
+  4010a0:	26310001 	addiu	s1,s1,1
+  4010a4:	26100018 	addiu	s0,s0,24
+  4010a8:	0232102a 	slt	v0,s1,s2
+  4010ac:	8f858018 	lw	a1,-32744(gp)
+  4010b0:	00000000 	nop
+  4010b4:	24a5fb78 	addiu	a1,a1,-1160
+  4010b8:	10400008 	beqz	v0,4010dc <set_roaming+0x18c>
+  4010bc:	02002021 	move	a0,s0
+  4010c0:	8f998120 	lw	t9,-32480(gp)
+  4010c4:	00000000 	nop
+  4010c8:	0320f809 	jalr	t9
+  4010cc:	00000000 	nop
+  4010d0:	8fbc0010 	lw	gp,16(sp)
+  4010d4:	1440fff2 	bnez	v0,4010a0 <set_roaming+0x150>
+  4010d8:	00000000 	nop
+  4010dc:	12320030 	beq	s1,s2,4011a0 <set_roaming+0x250>
+  4010e0:	27b00418 	addiu	s0,sp,1048
+  4010e4:	02602821 	move	a1,s3
+  4010e8:	02002021 	move	a0,s0
+  4010ec:	24060010 	li	a2,16
+  4010f0:	8f998188 	lw	t9,-32376(gp)
+  4010f4:	00000000 	nop
+  4010f8:	0320f809 	jalr	t9
+  4010fc:	00000000 	nop
+  401100:	8fbc0010 	lw	gp,16(sp)
+  401104:	a3b40018 	sb	s4,24(sp)
+  401108:	8fa30018 	lw	v1,24(sp)
+  40110c:	8fa4001c 	lw	a0,28(sp)
+  401110:	00111040 	sll	v0,s1,0x1
+  401114:	afa30428 	sw	v1,1064(sp)
+  401118:	afa4042c 	sw	a0,1068(sp)
+  40111c:	00511021 	addu	v0,v0,s1
+  401120:	8fa40024 	lw	a0,36(sp)
+  401124:	8fa30020 	lw	v1,32(sp)
+  401128:	000210c0 	sll	v0,v0,0x3
+  40112c:	afa40434 	sw	a0,1076(sp)
+  401130:	afa30430 	sw	v1,1072(sp)
+  401134:	02a21021 	addu	v0,s5,v0
+  401138:	8c450000 	lw	a1,0(v0)
+  40113c:	02c02021 	move	a0,s6
+  401140:	02003021 	move	a2,s0
+  401144:	8f9982b8 	lw	t9,-32072(gp)
+  401148:	00000000 	nop
+  40114c:	0320f809 	jalr	t9
+  401150:	00000000 	nop
+  401154:	8fbc0010 	lw	gp,16(sp)
+  401158:	04400003 	bltz	v0,401168 <set_roaming+0x218>
+  40115c:	24050001 	li	a1,1
+  401160:	1000ffa4 	b	400ff4 <set_roaming+0xa4>
+  401164:	00001021 	move	v0,zero
+  401168:	8f8780e8 	lw	a3,-32536(gp)
+  40116c:	00000000 	nop
+  401170:	8ce70000 	lw	a3,0(a3)
+  401174:	8f848018 	lw	a0,-32744(gp)
+  401178:	00000000 	nop
+  40117c:	2484fb80 	addiu	a0,a0,-1152
+  401180:	2406001b 	li	a2,27
+  401184:	8f9980c8 	lw	t9,-32568(gp)
+  401188:	00000000 	nop
+  40118c:	0320f809 	jalr	t9
+  401190:	00000000 	nop
+  401194:	8fbc0010 	lw	gp,16(sp)
+  401198:	1000ff96 	b	400ff4 <set_roaming+0xa4>
+  40119c:	2402ffff 	li	v0,-1
+  4011a0:	8f8780e8 	lw	a3,-32536(gp)
+  4011a4:	00000000 	nop
+  4011a8:	8ce70000 	lw	a3,0(a3)
+  4011ac:	8f848018 	lw	a0,-32744(gp)
+  4011b0:	00000000 	nop
+  4011b4:	2484fb9c 	addiu	a0,a0,-1124
+  4011b8:	24050001 	li	a1,1
+  4011bc:	24060024 	li	a2,36
+  4011c0:	8f9980c8 	lw	t9,-32568(gp)
+  4011c4:	00000000 	nop
+  4011c8:	0320f809 	jalr	t9
+  4011cc:	00000000 	nop
+  4011d0:	8fbc0010 	lw	gp,16(sp)
+  4011d4:	1000ff87 	b	400ff4 <set_roaming+0xa4>
+  4011d8:	2402ffff 	li	v0,-1
+  4011dc:	8f848018 	lw	a0,-32744(gp)
+  4011e0:	00000000 	nop
+  4011e4:	2484fbc4 	addiu	a0,a0,-1084
+  4011e8:	8f9982b0 	lw	t9,-32080(gp)
+  4011ec:	00000000 	nop
+  4011f0:	0320f809 	jalr	t9
+  4011f4:	00000000 	nop
+  4011f8:	8fbc0010 	lw	gp,16(sp)
+  4011fc:	1000ffa6 	b	401098 <set_roaming+0x148>
+  401200:	24140001 	li	s4,1
+  401204:	8f8480e8 	lw	a0,-32536(gp)
+  401208:	00000000 	nop
+  40120c:	8c840000 	lw	a0,0(a0)
+  401210:	8f858018 	lw	a1,-32744(gp)
+  401214:	00000000 	nop
+  401218:	24a5fb04 	addiu	a1,a1,-1276
+  40121c:	8f9981c4 	lw	t9,-32316(gp)
+  401220:	00000000 	nop
+  401224:	0320f809 	jalr	t9
+  401228:	00000000 	nop
+  40122c:	8fbc0010 	lw	gp,16(sp)
+  401230:	1000ff70 	b	400ff4 <set_roaming+0xa4>
+  401234:	2402ffff 	li	v0,-1
+
+00401238 <port_type>:
+  401238:	3c1c0fc0 	lui	gp,0xfc0
+  40123c:	279c7018 	addiu	gp,gp,28696
+  401240:	0399e021 	addu	gp,gp,t9
+  401244:	27bdf390 	addiu	sp,sp,-3184
+  401248:	afbc0010 	sw	gp,16(sp)
+  40124c:	afb50c64 	sw	s5,3172(sp)
+  401250:	afb40c60 	sw	s4,3168(sp)
+  401254:	afb30c5c 	sw	s3,3164(sp)
+  401258:	afb20c58 	sw	s2,3160(sp)
+  40125c:	afb10c54 	sw	s1,3156(sp)
+  401260:	afb00c50 	sw	s0,3152(sp)
+  401264:	afbf0c6c 	sw	ra,3180(sp)
+  401268:	afbc0c68 	sw	gp,3176(sp)
+  40126c:	8f82801c 	lw	v0,-32740(gp)
+  401270:	00000000 	nop
+  401274:	24420018 	addiu	v0,v0,24
+  401278:	00000000 	nop
+  40127c:	8c4a000c 	lw	t2,12(v0)
+  401280:	8c430000 	lw	v1,0(v0)
+  401284:	8c480004 	lw	t0,4(v0)
+  401288:	8c490008 	lw	t1,8(v0)
+  40128c:	00e09821 	move	s3,a3
+  401290:	27b40038 	addiu	s4,sp,56
+  401294:	00a08021 	move	s0,a1
+  401298:	00c08821 	move	s1,a2
+  40129c:	02602821 	move	a1,s3
+  4012a0:	02803021 	move	a2,s4
+  4012a4:	24070080 	li	a3,128
+  4012a8:	afa30c40 	sw	v1,3136(sp)
+  4012ac:	afa80c44 	sw	t0,3140(sp)
+  4012b0:	afa90c48 	sw	t1,3144(sp)
+  4012b4:	afaa0c4c 	sw	t2,3148(sp)
+  4012b8:	a3a00c38 	sb	zero,3128(sp)
+  4012bc:	0080a821 	move	s5,a0
+  4012c0:	8f998074 	lw	t9,-32652(gp)
+  4012c4:	00000000 	nop
+  4012c8:	0320f809 	jalr	t9
+  4012cc:	00000000 	nop
+  4012d0:	8fbc0010 	lw	gp,16(sp)
+  4012d4:	00409021 	move	s2,v0
+  4012d8:	1a4000dd 	blez	s2,401650 <port_type+0x418>
+  4012dc:	02603021 	move	a2,s3
+  4012e0:	12200088 	beqz	s1,401504 <port_type+0x2cc>
+  4012e4:	24020001 	li	v0,1
+  4012e8:	12220012 	beq	s1,v0,401334 <port_type+0xfc>
+  4012ec:	00008821 	move	s1,zero
+  4012f0:	8f998020 	lw	t9,-32736(gp)
+  4012f4:	00000000 	nop
+  4012f8:	27390100 	addiu	t9,t9,256
+  4012fc:	00000000 	nop
+  401300:	0320f809 	jalr	t9
+  401304:	00000000 	nop
+  401308:	8fbc0010 	lw	gp,16(sp)
+  40130c:	2402ffff 	li	v0,-1
+  401310:	8fbf0c6c 	lw	ra,3180(sp)
+  401314:	8fb50c64 	lw	s5,3172(sp)
+  401318:	8fb40c60 	lw	s4,3168(sp)
+  40131c:	8fb30c5c 	lw	s3,3164(sp)
+  401320:	8fb20c58 	lw	s2,3160(sp)
+  401324:	8fb10c54 	lw	s1,3156(sp)
+  401328:	8fb00c50 	lw	s0,3152(sp)
+  40132c:	03e00008 	jr	ra
+  401330:	27bd0c70 	addiu	sp,sp,3184
+  401334:	00111080 	sll	v0,s1,0x2
+  401338:	03a21821 	addu	v1,sp,v0
+  40133c:	2a220004 	slti	v0,s1,4
+  401340:	10400061 	beqz	v0,4014c8 <port_type+0x290>
+  401344:	24060002 	li	a2,2
+  401348:	8c650c40 	lw	a1,3136(v1)
+  40134c:	8e040000 	lw	a0,0(s0)
+  401350:	8f9981f0 	lw	t9,-32272(gp)
+  401354:	00000000 	nop
+  401358:	0320f809 	jalr	t9
+  40135c:	00000000 	nop
+  401360:	8fbc0010 	lw	gp,16(sp)
+  401364:	10400003 	beqz	v0,401374 <port_type+0x13c>
+  401368:	00000000 	nop
+  40136c:	1000fff1 	b	401334 <port_type+0xfc>
+  401370:	26310001 	addiu	s1,s1,1
+  401374:	a3b10c38 	sb	s1,3128(sp)
+  401378:	2411ffff 	li	s1,-1
+  40137c:	2690fff0 	addiu	s0,s4,-16
+  401380:	26310001 	addiu	s1,s1,1
+  401384:	26100018 	addiu	s0,s0,24
+  401388:	0232102a 	slt	v0,s1,s2
+  40138c:	8f858018 	lw	a1,-32744(gp)
+  401390:	00000000 	nop
+  401394:	24a5fc08 	addiu	a1,a1,-1016
+  401398:	10400013 	beqz	v0,4013e8 <port_type+0x1b0>
+  40139c:	02002021 	move	a0,s0
+  4013a0:	8f998120 	lw	t9,-32480(gp)
+  4013a4:	00000000 	nop
+  4013a8:	0320f809 	jalr	t9
+  4013ac:	00000000 	nop
+  4013b0:	8fbc0010 	lw	gp,16(sp)
+  4013b4:	00000000 	nop
+  4013b8:	8f858018 	lw	a1,-32744(gp)
+  4013bc:	00000000 	nop
+  4013c0:	24a5fc14 	addiu	a1,a1,-1004
+  4013c4:	10400008 	beqz	v0,4013e8 <port_type+0x1b0>
+  4013c8:	02002021 	move	a0,s0
+  4013cc:	8f998120 	lw	t9,-32480(gp)
+  4013d0:	00000000 	nop
+  4013d4:	0320f809 	jalr	t9
+  4013d8:	00000000 	nop
+  4013dc:	8fbc0010 	lw	gp,16(sp)
+  4013e0:	1440ffe7 	bnez	v0,401380 <port_type+0x148>
+  4013e4:	00000000 	nop
+  4013e8:	12320028 	beq	s1,s2,40148c <port_type+0x254>
+  4013ec:	02602821 	move	a1,s3
+  4013f0:	27a40018 	addiu	a0,sp,24
+  4013f4:	24060010 	li	a2,16
+  4013f8:	8f998188 	lw	t9,-32376(gp)
+  4013fc:	00000000 	nop
+  401400:	0320f809 	jalr	t9
+  401404:	00000000 	nop
+  401408:	8fbc0010 	lw	gp,16(sp)
+  40140c:	00111840 	sll	v1,s1,0x1
+  401410:	00711821 	addu	v1,v1,s1
+  401414:	93a20c38 	lbu	v0,3128(sp)
+  401418:	000318c0 	sll	v1,v1,0x3
+  40141c:	a3a20028 	sb	v0,40(sp)
+  401420:	02831821 	addu	v1,s4,v1
+  401424:	8c650000 	lw	a1,0(v1)
+  401428:	02a02021 	move	a0,s5
+  40142c:	27a60018 	addiu	a2,sp,24
+  401430:	8f9982b8 	lw	t9,-32072(gp)
+  401434:	00000000 	nop
+  401438:	0320f809 	jalr	t9
+  40143c:	00000000 	nop
+  401440:	8fbc0010 	lw	gp,16(sp)
+  401444:	04400003 	bltz	v0,401454 <port_type+0x21c>
+  401448:	24050001 	li	a1,1
+  40144c:	1000ffb0 	b	401310 <port_type+0xd8>
+  401450:	00001021 	move	v0,zero
+  401454:	8f8780e8 	lw	a3,-32536(gp)
+  401458:	00000000 	nop
+  40145c:	8ce70000 	lw	a3,0(a3)
+  401460:	8f848018 	lw	a0,-32744(gp)
+  401464:	00000000 	nop
+  401468:	2484fc20 	addiu	a0,a0,-992
+  40146c:	2406002b 	li	a2,43
+  401470:	8f9980c8 	lw	t9,-32568(gp)
+  401474:	00000000 	nop
+  401478:	0320f809 	jalr	t9
+  40147c:	00000000 	nop
+  401480:	8fbc0010 	lw	gp,16(sp)
+  401484:	1000ffa2 	b	401310 <port_type+0xd8>
+  401488:	2402ffff 	li	v0,-1
+  40148c:	8f8780e8 	lw	a3,-32536(gp)
+  401490:	00000000 	nop
+  401494:	8ce70000 	lw	a3,0(a3)
+  401498:	8f848018 	lw	a0,-32744(gp)
+  40149c:	00000000 	nop
+  4014a0:	2484fc4c 	addiu	a0,a0,-948
+  4014a4:	24050001 	li	a1,1
+  4014a8:	2406002e 	li	a2,46
+  4014ac:	8f9980c8 	lw	t9,-32568(gp)
+  4014b0:	00000000 	nop
+  4014b4:	0320f809 	jalr	t9
+  4014b8:	00000000 	nop
+  4014bc:	8fbc0010 	lw	gp,16(sp)
+  4014c0:	1000ff93 	b	401310 <port_type+0xd8>
+  4014c4:	2402ffff 	li	v0,-1
+  4014c8:	8e040000 	lw	a0,0(s0)
+  4014cc:	8f858018 	lw	a1,-32744(gp)
+  4014d0:	00000000 	nop
+  4014d4:	24a5fa44 	addiu	a1,a1,-1468
+  4014d8:	27a60c38 	addiu	a2,sp,3128
+  4014dc:	8f998170 	lw	t9,-32400(gp)
+  4014e0:	00000000 	nop
+  4014e4:	0320f809 	jalr	t9
+  4014e8:	00000000 	nop
+  4014ec:	8fbc0010 	lw	gp,16(sp)
+  4014f0:	24030001 	li	v1,1
+  4014f4:	1043ffa1 	beq	v0,v1,40137c <port_type+0x144>
+  4014f8:	2411ffff 	li	s1,-1
+  4014fc:	1000ff7c 	b	4012f0 <port_type+0xb8>
+  401500:	00000000 	nop
+  401504:	2411ffff 	li	s1,-1
+  401508:	27b00028 	addiu	s0,sp,40
+  40150c:	26310001 	addiu	s1,s1,1
+  401510:	26100018 	addiu	s0,s0,24
+  401514:	0232102a 	slt	v0,s1,s2
+  401518:	8f858018 	lw	a1,-32744(gp)
+  40151c:	00000000 	nop
+  401520:	24a5fc7c 	addiu	a1,a1,-900
+  401524:	10400013 	beqz	v0,401574 <port_type+0x33c>
+  401528:	02002021 	move	a0,s0
+  40152c:	8f998120 	lw	t9,-32480(gp)
+  401530:	00000000 	nop
+  401534:	0320f809 	jalr	t9
+  401538:	00000000 	nop
+  40153c:	8fbc0010 	lw	gp,16(sp)
+  401540:	00000000 	nop
+  401544:	8f858018 	lw	a1,-32744(gp)
+  401548:	00000000 	nop
+  40154c:	24a5fc88 	addiu	a1,a1,-888
+  401550:	10400008 	beqz	v0,401574 <port_type+0x33c>
+  401554:	02002021 	move	a0,s0
+  401558:	8f998120 	lw	t9,-32480(gp)
+  40155c:	00000000 	nop
+  401560:	0320f809 	jalr	t9
+  401564:	00000000 	nop
+  401568:	8fbc0010 	lw	gp,16(sp)
+  40156c:	1440ffe7 	bnez	v0,40150c <port_type+0x2d4>
+  401570:	00000000 	nop
+  401574:	12320027 	beq	s1,s2,401614 <port_type+0x3dc>
+  401578:	27a40018 	addiu	a0,sp,24
+  40157c:	02602821 	move	a1,s3
+  401580:	24060010 	li	a2,16
+  401584:	8f998188 	lw	t9,-32376(gp)
+  401588:	00000000 	nop
+  40158c:	0320f809 	jalr	t9
+  401590:	00000000 	nop
+  401594:	8fbc0010 	lw	gp,16(sp)
+  401598:	00111840 	sll	v1,s1,0x1
+  40159c:	00711821 	addu	v1,v1,s1
+  4015a0:	000318c0 	sll	v1,v1,0x3
+  4015a4:	02831821 	addu	v1,s4,v1
+  4015a8:	8c650000 	lw	a1,0(v1)
+  4015ac:	02a02021 	move	a0,s5
+  4015b0:	27a60018 	addiu	a2,sp,24
+  4015b4:	8f9982b8 	lw	t9,-32072(gp)
+  4015b8:	00000000 	nop
+  4015bc:	0320f809 	jalr	t9
+  4015c0:	00000000 	nop
+  4015c4:	8fbc0010 	lw	gp,16(sp)
+  4015c8:	0440002e 	bltz	v0,401684 <port_type+0x44c>
+  4015cc:	02602821 	move	a1,s3
+  4015d0:	93a80028 	lbu	t0,40(sp)
+  4015d4:	8f848018 	lw	a0,-32744(gp)
+  4015d8:	00000000 	nop
+  4015dc:	2484fc94 	addiu	a0,a0,-876
+  4015e0:	00083e00 	sll	a3,t0,0x18
+  4015e4:	00073e03 	sra	a3,a3,0x18
+  4015e8:	00071080 	sll	v0,a3,0x2
+  4015ec:	03a21821 	addu	v1,sp,v0
+  4015f0:	8c660c40 	lw	a2,3136(v1)
+  4015f4:	a3a80c38 	sb	t0,3128(sp)
+  4015f8:	8f9982b0 	lw	t9,-32080(gp)
+  4015fc:	00000000 	nop
+  401600:	0320f809 	jalr	t9
+  401604:	00000000 	nop
+  401608:	8fbc0010 	lw	gp,16(sp)
+  40160c:	1000ff40 	b	401310 <port_type+0xd8>
+  401610:	00001021 	move	v0,zero
+  401614:	8f8780e8 	lw	a3,-32536(gp)
+  401618:	00000000 	nop
+  40161c:	8ce70000 	lw	a3,0(a3)
+  401620:	8f848018 	lw	a0,-32744(gp)
+  401624:	00000000 	nop
+  401628:	2484fccc 	addiu	a0,a0,-820
+  40162c:	24050001 	li	a1,1
+  401630:	2406002e 	li	a2,46
+  401634:	8f9980c8 	lw	t9,-32568(gp)
+  401638:	00000000 	nop
+  40163c:	0320f809 	jalr	t9
+  401640:	00000000 	nop
+  401644:	8fbc0010 	lw	gp,16(sp)
+  401648:	1000ff31 	b	401310 <port_type+0xd8>
+  40164c:	2402ffff 	li	v0,-1
+  401650:	8f8480e8 	lw	a0,-32536(gp)
+  401654:	00000000 	nop
+  401658:	8c840000 	lw	a0,0(a0)
+  40165c:	8f858018 	lw	a1,-32744(gp)
+  401660:	00000000 	nop
+  401664:	24a5fb04 	addiu	a1,a1,-1276
+  401668:	8f9981c4 	lw	t9,-32316(gp)
+  40166c:	00000000 	nop
+  401670:	0320f809 	jalr	t9
+  401674:	00000000 	nop
+  401678:	8fbc0010 	lw	gp,16(sp)
+  40167c:	1000ff24 	b	401310 <port_type+0xd8>
+  401680:	2402ffff 	li	v0,-1
+  401684:	8f8780e8 	lw	a3,-32536(gp)
+  401688:	00000000 	nop
+  40168c:	8ce70000 	lw	a3,0(a3)
+  401690:	8f848018 	lw	a0,-32744(gp)
+  401694:	00000000 	nop
+  401698:	2484fcfc 	addiu	a0,a0,-772
+  40169c:	24050001 	li	a1,1
+  4016a0:	2406001d 	li	a2,29
+  4016a4:	8f9980c8 	lw	t9,-32568(gp)
+  4016a8:	00000000 	nop
+  4016ac:	0320f809 	jalr	t9
+  4016b0:	00000000 	nop
+  4016b4:	8fbc0010 	lw	gp,16(sp)
+  4016b8:	00002021 	move	a0,zero
+  4016bc:	8f99809c 	lw	t9,-32612(gp)
+  4016c0:	00000000 	nop
+  4016c4:	0320f809 	jalr	t9
+  4016c8:	00000000 	nop
+  4016cc:	8fbc0010 	lw	gp,16(sp)
+  4016d0:	00000000 	nop
+
+004016d4 <main>:
+  4016d4:	3c1c0fc0 	lui	gp,0xfc0
+  4016d8:	279c6b7c 	addiu	gp,gp,27516
+  4016dc:	0399e021 	addu	gp,gp,t9
+  4016e0:	27bdf3b8 	addiu	sp,sp,-3144
+  4016e4:	afbc0020 	sw	gp,32(sp)
+  4016e8:	afb30c34 	sw	s3,3124(sp)
+  4016ec:	afb20c30 	sw	s2,3120(sp)
+  4016f0:	afb10c2c 	sw	s1,3116(sp)
+  4016f4:	afb00c28 	sw	s0,3112(sp)
+  4016f8:	afbf0c44 	sw	ra,3140(sp)
+  4016fc:	afbc0c40 	sw	gp,3136(sp)
+  401700:	afb50c3c 	sw	s5,3132(sp)
+  401704:	afb40c38 	sw	s4,3128(sp)
+  401708:	00809821 	move	s3,a0
+  40170c:	00a08821 	move	s1,a1
+  401710:	8f998258 	lw	t9,-32168(gp)
+  401714:	00000000 	nop
+  401718:	0320f809 	jalr	t9
+  40171c:	00000000 	nop
+  401720:	8fbc0020 	lw	gp,32(sp)
+  401724:	00409021 	move	s2,v0
+  401728:	06400104 	bltz	s2,401b3c <main+0x468>
+  40172c:	00008021 	move	s0,zero
+  401730:	24020001 	li	v0,1
+  401734:	126200f4 	beq	s3,v0,401b08 <main+0x434>
+  401738:	24060002 	li	a2,2
+  40173c:	8f958018 	lw	s5,-32744(gp)
+  401740:	00000000 	nop
+  401744:	26b5fd1c 	addiu	s5,s5,-740
+  401748:	8e240004 	lw	a0,4(s1)
+  40174c:	02a02821 	move	a1,s5
+  401750:	8f99818c 	lw	t9,-32372(gp)
+  401754:	00000000 	nop
+  401758:	0320f809 	jalr	t9
+  40175c:	00000000 	nop
+  401760:	8fbc0020 	lw	gp,32(sp)
+  401764:	104000e3 	beqz	v0,401af4 <main+0x420>
+  401768:	00000000 	nop
+  40176c:	8f948018 	lw	s4,-32744(gp)
+  401770:	00000000 	nop
+  401774:	2694fd20 	addiu	s4,s4,-736
+  401778:	8e240004 	lw	a0,4(s1)
+  40177c:	02802821 	move	a1,s4
+  401780:	8f998120 	lw	t9,-32480(gp)
+  401784:	00000000 	nop
+  401788:	0320f809 	jalr	t9
+  40178c:	00000000 	nop
+  401790:	8fbc0020 	lw	gp,32(sp)
+  401794:	104000d7 	beqz	v0,401af4 <main+0x420>
+  401798:	24060002 	li	a2,2
+  40179c:	8e240004 	lw	a0,4(s1)
+  4017a0:	8f858018 	lw	a1,-32744(gp)
+  4017a4:	00000000 	nop
+  4017a8:	24a5fd28 	addiu	a1,a1,-728
+  4017ac:	8f99818c 	lw	t9,-32372(gp)
+  4017b0:	00000000 	nop
+  4017b4:	0320f809 	jalr	t9
+  4017b8:	00000000 	nop
+  4017bc:	8fbc0020 	lw	gp,32(sp)
+  4017c0:	104000c3 	beqz	v0,401ad0 <main+0x3fc>
+  4017c4:	00000000 	nop
+  4017c8:	8e240004 	lw	a0,4(s1)
+  4017cc:	8f858018 	lw	a1,-32744(gp)
+  4017d0:	00000000 	nop
+  4017d4:	24a5fd2c 	addiu	a1,a1,-724
+  4017d8:	8f998120 	lw	t9,-32480(gp)
+  4017dc:	00000000 	nop
+  4017e0:	0320f809 	jalr	t9
+  4017e4:	00000000 	nop
+  4017e8:	8fbc0020 	lw	gp,32(sp)
+  4017ec:	104000b8 	beqz	v0,401ad0 <main+0x3fc>
+  4017f0:	00000000 	nop
+  4017f4:	8e240004 	lw	a0,4(s1)
+  4017f8:	8f858018 	lw	a1,-32744(gp)
+  4017fc:	00000000 	nop
+  401800:	24a5fd34 	addiu	a1,a1,-716
+  401804:	8f998120 	lw	t9,-32480(gp)
+  401808:	00000000 	nop
+  40180c:	0320f809 	jalr	t9
+  401810:	00000000 	nop
+  401814:	8fbc0020 	lw	gp,32(sp)
+  401818:	104000a3 	beqz	v0,401aa8 <main+0x3d4>
+  40181c:	00000000 	nop
+  401820:	8e240004 	lw	a0,4(s1)
+  401824:	8f858018 	lw	a1,-32744(gp)
+  401828:	00000000 	nop
+  40182c:	24a5fd38 	addiu	a1,a1,-712
+  401830:	8f998120 	lw	t9,-32480(gp)
+  401834:	00000000 	nop
+  401838:	0320f809 	jalr	t9
+  40183c:	00000000 	nop
+  401840:	8fbc0020 	lw	gp,32(sp)
+  401844:	10400098 	beqz	v0,401aa8 <main+0x3d4>
+  401848:	24020002 	li	v0,2
+  40184c:	12620089 	beq	s3,v0,401a74 <main+0x3a0>
+  401850:	02a02821 	move	a1,s5
+  401854:	8e240008 	lw	a0,8(s1)
+  401858:	24060002 	li	a2,2
+  40185c:	8f99818c 	lw	t9,-32372(gp)
+  401860:	00000000 	nop
+  401864:	0320f809 	jalr	t9
+  401868:	00000000 	nop
+  40186c:	8fbc0020 	lw	gp,32(sp)
+  401870:	10400073 	beqz	v0,401a40 <main+0x36c>
+  401874:	02802821 	move	a1,s4
+  401878:	8e240008 	lw	a0,8(s1)
+  40187c:	8f998120 	lw	t9,-32480(gp)
+  401880:	00000000 	nop
+  401884:	0320f809 	jalr	t9
+  401888:	00000000 	nop
+  40188c:	8fbc0020 	lw	gp,32(sp)
+  401890:	1040006b 	beqz	v0,401a40 <main+0x36c>
+  401894:	24060004 	li	a2,4
+  401898:	8e240008 	lw	a0,8(s1)
+  40189c:	8f858018 	lw	a1,-32744(gp)
+  4018a0:	00000000 	nop
+  4018a4:	24a5fd44 	addiu	a1,a1,-700
+  4018a8:	8f99818c 	lw	t9,-32372(gp)
+  4018ac:	00000000 	nop
+  4018b0:	0320f809 	jalr	t9
+  4018b4:	00000000 	nop
+  4018b8:	8fbc0020 	lw	gp,32(sp)
+  4018bc:	10400053 	beqz	v0,401a0c <main+0x338>
+  4018c0:	24060004 	li	a2,4
+  4018c4:	8e240008 	lw	a0,8(s1)
+  4018c8:	8f858018 	lw	a1,-32744(gp)
+  4018cc:	00000000 	nop
+  4018d0:	24a5fd4c 	addiu	a1,a1,-692
+  4018d4:	8f99818c 	lw	t9,-32372(gp)
+  4018d8:	00000000 	nop
+  4018dc:	0320f809 	jalr	t9
+  4018e0:	00000000 	nop
+  4018e4:	8fbc0020 	lw	gp,32(sp)
+  4018e8:	1040003c 	beqz	v0,4019dc <main+0x308>
+  4018ec:	02402021 	move	a0,s2
+  4018f0:	8e300004 	lw	s0,4(s1)
+  4018f4:	00000000 	nop
+  4018f8:	02002821 	move	a1,s0
+  4018fc:	27a60028 	addiu	a2,sp,40
+  401900:	24070080 	li	a3,128
+  401904:	8f998074 	lw	t9,-32652(gp)
+  401908:	00000000 	nop
+  40190c:	0320f809 	jalr	t9
+  401910:	00000000 	nop
+  401914:	8fbc0020 	lw	gp,32(sp)
+  401918:	00404021 	move	t0,v0
+  40191c:	19000021 	blez	t0,4019a4 <main+0x2d0>
+  401920:	02003821 	move	a3,s0
+  401924:	8e230008 	lw	v1,8(s1)
+  401928:	27a20028 	addiu	v0,sp,40
+  40192c:	2666fffd 	addiu	a2,s3,-3
+  401930:	2625000c 	addiu	a1,s1,12
+  401934:	02402021 	move	a0,s2
+  401938:	afa30010 	sw	v1,16(sp)
+  40193c:	afa20014 	sw	v0,20(sp)
+  401940:	afa80018 	sw	t0,24(sp)
+  401944:	8f998020 	lw	t9,-32736(gp)
+  401948:	00000000 	nop
+  40194c:	273901d0 	addiu	t9,t9,464
+  401950:	00000000 	nop
+  401954:	0320f809 	jalr	t9
+  401958:	00000000 	nop
+  40195c:	8fbc0020 	lw	gp,32(sp)
+  401960:	00408021 	move	s0,v0
+  401964:	02402021 	move	a0,s2
+  401968:	8f998040 	lw	t9,-32704(gp)
+  40196c:	00000000 	nop
+  401970:	0320f809 	jalr	t9
+  401974:	00000000 	nop
+  401978:	8fbc0020 	lw	gp,32(sp)
+  40197c:	02001021 	move	v0,s0
+  401980:	8fbf0c44 	lw	ra,3140(sp)
+  401984:	8fb50c3c 	lw	s5,3132(sp)
+  401988:	8fb40c38 	lw	s4,3128(sp)
+  40198c:	8fb30c34 	lw	s3,3124(sp)
+  401990:	8fb20c30 	lw	s2,3120(sp)
+  401994:	8fb10c2c 	lw	s1,3116(sp)
+  401998:	8fb00c28 	lw	s0,3112(sp)
+  40199c:	03e00008 	jr	ra
+  4019a0:	27bd0c48 	addiu	sp,sp,3144
+  4019a4:	8f8480e8 	lw	a0,-32536(gp)
+  4019a8:	00000000 	nop
+  4019ac:	8c840000 	lw	a0,0(a0)
+  4019b0:	02003021 	move	a2,s0
+  4019b4:	8f858018 	lw	a1,-32744(gp)
+  4019b8:	00000000 	nop
+  4019bc:	24a5fb04 	addiu	a1,a1,-1276
+  4019c0:	8f9981c4 	lw	t9,-32316(gp)
+  4019c4:	00000000 	nop
+  4019c8:	0320f809 	jalr	t9
+  4019cc:	00000000 	nop
+  4019d0:	8fbc0020 	lw	gp,32(sp)
+  4019d4:	1000ffe3 	b	401964 <main+0x290>
+  4019d8:	2410ffff 	li	s0,-1
+  4019dc:	8e270004 	lw	a3,4(s1)
+  4019e0:	2666fffd 	addiu	a2,s3,-3
+  4019e4:	2625000c 	addiu	a1,s1,12
+  4019e8:	8f998020 	lw	t9,-32736(gp)
+  4019ec:	00000000 	nop
+  4019f0:	27391238 	addiu	t9,t9,4664
+  4019f4:	00000000 	nop
+  4019f8:	0320f809 	jalr	t9
+  4019fc:	00000000 	nop
+  401a00:	8fbc0020 	lw	gp,32(sp)
+  401a04:	1000ffd7 	b	401964 <main+0x290>
+  401a08:	00408021 	move	s0,v0
+  401a0c:	8e270004 	lw	a3,4(s1)
+  401a10:	2666fffd 	addiu	a2,s3,-3
+  401a14:	2625000c 	addiu	a1,s1,12
+  401a18:	02402021 	move	a0,s2
+  401a1c:	8f998020 	lw	t9,-32736(gp)
+  401a20:	00000000 	nop
+  401a24:	27390f50 	addiu	t9,t9,3920
+  401a28:	00000000 	nop
+  401a2c:	0320f809 	jalr	t9
+  401a30:	00000000 	nop
+  401a34:	8fbc0020 	lw	gp,32(sp)
+  401a38:	1000ffca 	b	401964 <main+0x290>
+  401a3c:	00408021 	move	s0,v0
+  401a40:	8e250004 	lw	a1,4(s1)
+  401a44:	02402021 	move	a0,s2
+  401a48:	00003021 	move	a2,zero
+  401a4c:	00003821 	move	a3,zero
+  401a50:	8f998020 	lw	t9,-32736(gp)
+  401a54:	00000000 	nop
+  401a58:	27390dd0 	addiu	t9,t9,3536
+  401a5c:	00000000 	nop
+  401a60:	0320f809 	jalr	t9
+  401a64:	00000000 	nop
+  401a68:	8fbc0020 	lw	gp,32(sp)
+  401a6c:	1000ffbe 	b	401968 <main+0x294>
+  401a70:	02402021 	move	a0,s2
+  401a74:	8e250004 	lw	a1,4(s1)
+  401a78:	02402021 	move	a0,s2
+  401a7c:	00003021 	move	a2,zero
+  401a80:	00003821 	move	a3,zero
+  401a84:	8f998020 	lw	t9,-32736(gp)
+  401a88:	00000000 	nop
+  401a8c:	27390c5c 	addiu	t9,t9,3164
+  401a90:	00000000 	nop
+  401a94:	0320f809 	jalr	t9
+  401a98:	00000000 	nop
+  401a9c:	8fbc0020 	lw	gp,32(sp)
+  401aa0:	1000ffb1 	b	401968 <main+0x294>
+  401aa4:	02402021 	move	a0,s2
+  401aa8:	8f848018 	lw	a0,-32744(gp)
+  401aac:	00000000 	nop
+  401ab0:	2484fd54 	addiu	a0,a0,-684
+  401ab4:	8f998048 	lw	t9,-32696(gp)
+  401ab8:	00000000 	nop
+  401abc:	0320f809 	jalr	t9
+  401ac0:	00000000 	nop
+  401ac4:	8fbc0020 	lw	gp,32(sp)
+  401ac8:	1000ffa6 	b	401964 <main+0x290>
+  401acc:	00408021 	move	s0,v0
+  401ad0:	8f998020 	lw	t9,-32736(gp)
+  401ad4:	00000000 	nop
+  401ad8:	27390100 	addiu	t9,t9,256
+  401adc:	00000000 	nop
+  401ae0:	0320f809 	jalr	t9
+  401ae4:	00000000 	nop
+  401ae8:	8fbc0020 	lw	gp,32(sp)
+  401aec:	1000ff9e 	b	401968 <main+0x294>
+  401af0:	02402021 	move	a0,s2
+  401af4:	8f858020 	lw	a1,-32736(gp)
+  401af8:	00000000 	nop
+  401afc:	24a50dd0 	addiu	a1,a1,3536
+  401b00:	10000005 	b	401b18 <main+0x444>
+  401b04:	02402021 	move	a0,s2
+  401b08:	8f858020 	lw	a1,-32736(gp)
+  401b0c:	00000000 	nop
+  401b10:	24a50c5c 	addiu	a1,a1,3164
+  401b14:	02402021 	move	a0,s2
+  401b18:	00003021 	move	a2,zero
+  401b1c:	00003821 	move	a3,zero
+  401b20:	8f9982c0 	lw	t9,-32064(gp)
+  401b24:	00000000 	nop
+  401b28:	0320f809 	jalr	t9
+  401b2c:	00000000 	nop
+  401b30:	8fbc0020 	lw	gp,32(sp)
+  401b34:	1000ff8c 	b	401968 <main+0x294>
+  401b38:	02402021 	move	a0,s2
+  401b3c:	8f848018 	lw	a0,-32744(gp)
+  401b40:	00000000 	nop
+  401b44:	2484fd5c 	addiu	a0,a0,-676
+  401b48:	8f998250 	lw	t9,-32176(gp)
+  401b4c:	00000000 	nop
+  401b50:	0320f809 	jalr	t9
+  401b54:	00000000 	nop
+  401b58:	8fbc0020 	lw	gp,32(sp)
+  401b5c:	1000ff88 	b	401980 <main+0x2ac>
+  401b60:	2402ffff 	li	v0,-1
+	...
+
+00401b70 <iw_sockets_open>:
+  401b70:	3c1c0fc0 	lui	gp,0xfc0
+  401b74:	279c66e0 	addiu	gp,gp,26336
+  401b78:	0399e021 	addu	gp,gp,t9
+  401b7c:	27bdffd8 	addiu	sp,sp,-40
+  401b80:	afbc0010 	sw	gp,16(sp)
+  401b84:	afb1001c 	sw	s1,28(sp)
+  401b88:	afb00018 	sw	s0,24(sp)
+  401b8c:	afbf0024 	sw	ra,36(sp)
+  401b90:	afbc0020 	sw	gp,32(sp)
+  401b94:	00008821 	move	s1,zero
+  401b98:	8f908018 	lw	s0,-32744(gp)
+  401b9c:	00000000 	nop
+  401ba0:	2610fdb0 	addiu	s0,s0,-592
+  401ba4:	00000000 	nop
+  401ba8:	8e040000 	lw	a0,0(s0)
+  401bac:	24050001 	li	a1,1
+  401bb0:	00003021 	move	a2,zero
+  401bb4:	8f998218 	lw	t9,-32232(gp)
+  401bb8:	00000000 	nop
+  401bbc:	0320f809 	jalr	t9
+  401bc0:	00000000 	nop
+  401bc4:	8fbc0010 	lw	gp,16(sp)
+  401bc8:	26310001 	addiu	s1,s1,1
+  401bcc:	00401821 	move	v1,v0
+  401bd0:	2e240004 	sltiu	a0,s1,4
+  401bd4:	04600006 	bltz	v1,401bf0 <iw_sockets_open+0x80>
+  401bd8:	26100004 	addiu	s0,s0,4
+  401bdc:	8fbf0024 	lw	ra,36(sp)
+  401be0:	8fb1001c 	lw	s1,28(sp)
+  401be4:	8fb00018 	lw	s0,24(sp)
+  401be8:	03e00008 	jr	ra
+  401bec:	27bd0028 	addiu	sp,sp,40
+  401bf0:	1480ffed 	bnez	a0,401ba8 <iw_sockets_open+0x38>
+  401bf4:	2402ffff 	li	v0,-1
+  401bf8:	1000fff8 	b	401bdc <iw_sockets_open+0x6c>
+  401bfc:	00000000 	nop
+
+00401c00 <iw_enum_devices>:
+  401c00:	3c1c0fc0 	lui	gp,0xfc0
+  401c04:	279c6650 	addiu	gp,gp,26192
+  401c08:	0399e021 	addu	gp,gp,t9
+  401c0c:	27bdfb98 	addiu	sp,sp,-1128
+  401c10:	afbc0010 	sw	gp,16(sp)
+  401c14:	afb60450 	sw	s6,1104(sp)
+  401c18:	afa5046c 	sw	a1,1132(sp)
+  401c1c:	0080b021 	move	s6,a0
+  401c20:	8f858018 	lw	a1,-32744(gp)
+  401c24:	00000000 	nop
+  401c28:	24a5fdc0 	addiu	a1,a1,-576
+  401c2c:	8f848018 	lw	a0,-32744(gp)
+  401c30:	00000000 	nop
+  401c34:	2484fdc4 	addiu	a0,a0,-572
+  401c38:	afbe045c 	sw	s8,1116(sp)
+  401c3c:	afb70454 	sw	s7,1108(sp)
+  401c40:	afb30444 	sw	s3,1092(sp)
+  401c44:	afbf0460 	sw	ra,1120(sp)
+  401c48:	afbc0458 	sw	gp,1112(sp)
+  401c4c:	afb5044c 	sw	s5,1100(sp)
+  401c50:	afb40448 	sw	s4,1096(sp)
+  401c54:	afb20440 	sw	s2,1088(sp)
+  401c58:	afb1043c 	sw	s1,1084(sp)
+  401c5c:	afb00438 	sw	s0,1080(sp)
+  401c60:	00c0f021 	move	s8,a2
+  401c64:	00e0b821 	move	s7,a3
+  401c68:	8f998140 	lw	t9,-32448(gp)
+  401c6c:	00000000 	nop
+  401c70:	0320f809 	jalr	t9
+  401c74:	00000000 	nop
+  401c78:	8fbc0010 	lw	gp,16(sp)
+  401c7c:	00409821 	move	s3,v0
+  401c80:	1260006d 	beqz	s3,401e38 <iw_enum_devices+0x238>
+  401c84:	27a40018 	addiu	a0,sp,24
+  401c88:	02603021 	move	a2,s3
+  401c8c:	24050400 	li	a1,1024
+  401c90:	8f998268 	lw	t9,-32152(gp)
+  401c94:	00000000 	nop
+  401c98:	0320f809 	jalr	t9
+  401c9c:	00000000 	nop
+  401ca0:	8fbc0010 	lw	gp,16(sp)
+  401ca4:	27a40018 	addiu	a0,sp,24
+  401ca8:	24050400 	li	a1,1024
+  401cac:	02603021 	move	a2,s3
+  401cb0:	8f998268 	lw	t9,-32152(gp)
+  401cb4:	00000000 	nop
+  401cb8:	0320f809 	jalr	t9
+  401cbc:	00000000 	nop
+  401cc0:	8fbc0010 	lw	gp,16(sp)
+  401cc4:	27a40018 	addiu	a0,sp,24
+  401cc8:	24050400 	li	a1,1024
+  401ccc:	02603021 	move	a2,s3
+  401cd0:	8f998268 	lw	t9,-32152(gp)
+  401cd4:	00000000 	nop
+  401cd8:	0320f809 	jalr	t9
+  401cdc:	00000000 	nop
+  401ce0:	8fbc0010 	lw	gp,16(sp)
+  401ce4:	10400042 	beqz	v0,401df0 <iw_enum_devices+0x1f0>
+  401ce8:	27b40420 	addiu	s4,sp,1056
+  401cec:	24150011 	li	s5,17
+  401cf0:	27b20018 	addiu	s2,sp,24
+  401cf4:	82440000 	lb	a0,0(s2)
+  401cf8:	8f998210 	lw	t9,-32240(gp)
+  401cfc:	00000000 	nop
+  401d00:	0320f809 	jalr	t9
+  401d04:	00000000 	nop
+  401d08:	8fbc0010 	lw	gp,16(sp)
+  401d0c:	10400003 	beqz	v0,401d1c <iw_enum_devices+0x11c>
+  401d10:	02402021 	move	a0,s2
+  401d14:	1000fff7 	b	401cf4 <iw_enum_devices+0xf4>
+  401d18:	26520001 	addiu	s2,s2,1
+  401d1c:	2405003a 	li	a1,58
+  401d20:	8f9981d8 	lw	t9,-32296(gp)
+  401d24:	00000000 	nop
+  401d28:	0320f809 	jalr	t9
+  401d2c:	00000000 	nop
+  401d30:	8fbc0010 	lw	gp,16(sp)
+  401d34:	00408821 	move	s1,v0
+  401d38:	12200007 	beqz	s1,401d58 <iw_enum_devices+0x158>
+  401d3c:	00001021 	move	v0,zero
+  401d40:	02328023 	subu	s0,s1,s2
+  401d44:	26020001 	addiu	v0,s0,1
+  401d48:	02a2102a 	slt	v0,s5,v0
+  401d4c:	1040001d 	beqz	v0,401dc4 <iw_enum_devices+0x1c4>
+  401d50:	02402821 	move	a1,s2
+  401d54:	00001021 	move	v0,zero
+  401d58:	1040000b 	beqz	v0,401d88 <iw_enum_devices+0x188>
+  401d5c:	02802821 	move	a1,s4
+  401d60:	8fa3046c 	lw	v1,1132(sp)
+  401d64:	02c02021 	move	a0,s6
+  401d68:	03c03021 	move	a2,s8
+  401d6c:	02e03821 	move	a3,s7
+  401d70:	0060c821 	move	t9,v1
+  401d74:	0320f809 	jalr	t9
+  401d78:	00000000 	nop
+  401d7c:	8fbc0010 	lw	gp,16(sp)
+  401d80:	1000ffd1 	b	401cc8 <iw_enum_devices+0xc8>
+  401d84:	27a40018 	addiu	a0,sp,24
+  401d88:	8f8780e8 	lw	a3,-32536(gp)
+  401d8c:	00000000 	nop
+  401d90:	8ce70000 	lw	a3,0(a3)
+  401d94:	8f848018 	lw	a0,-32744(gp)
+  401d98:	00000000 	nop
+  401d9c:	2484fdd4 	addiu	a0,a0,-556
+  401da0:	24050001 	li	a1,1
+  401da4:	24060020 	li	a2,32
+  401da8:	8f9980c8 	lw	t9,-32568(gp)
+  401dac:	00000000 	nop
+  401db0:	0320f809 	jalr	t9
+  401db4:	00000000 	nop
+  401db8:	8fbc0010 	lw	gp,16(sp)
+  401dbc:	1000ffc2 	b	401cc8 <iw_enum_devices+0xc8>
+  401dc0:	27a40018 	addiu	a0,sp,24
+  401dc4:	27a40420 	addiu	a0,sp,1056
+  401dc8:	02003021 	move	a2,s0
+  401dcc:	8f998254 	lw	t9,-32172(gp)
+  401dd0:	00000000 	nop
+  401dd4:	0320f809 	jalr	t9
+  401dd8:	00000000 	nop
+  401ddc:	8fbc0010 	lw	gp,16(sp)
+  401de0:	02901021 	addu	v0,s4,s0
+  401de4:	a0400000 	sb	zero,0(v0)
+  401de8:	1000ffdb 	b	401d58 <iw_enum_devices+0x158>
+  401dec:	26220002 	addiu	v0,s1,2
+  401df0:	02602021 	move	a0,s3
+  401df4:	8f998134 	lw	t9,-32460(gp)
+  401df8:	00000000 	nop
+  401dfc:	0320f809 	jalr	t9
+  401e00:	00000000 	nop
+  401e04:	8fbc0010 	lw	gp,16(sp)
+  401e08:	8fbf0460 	lw	ra,1120(sp)
+  401e0c:	8fbe045c 	lw	s8,1116(sp)
+  401e10:	8fb70454 	lw	s7,1108(sp)
+  401e14:	8fb60450 	lw	s6,1104(sp)
+  401e18:	8fb5044c 	lw	s5,1100(sp)
+  401e1c:	8fb40448 	lw	s4,1096(sp)
+  401e20:	8fb30444 	lw	s3,1092(sp)
+  401e24:	8fb20440 	lw	s2,1088(sp)
+  401e28:	8fb1043c 	lw	s1,1084(sp)
+  401e2c:	8fb00438 	lw	s0,1080(sp)
+  401e30:	03e00008 	jr	ra
+  401e34:	27bd0468 	addiu	sp,sp,1128
+  401e38:	24020400 	li	v0,1024
+  401e3c:	27a30018 	addiu	v1,sp,24
+  401e40:	27a60418 	addiu	a2,sp,1048
+  401e44:	02c02021 	move	a0,s6
+  401e48:	34058912 	li	a1,0x8912
+  401e4c:	afa20418 	sw	v0,1048(sp)
+  401e50:	afa3041c 	sw	v1,1052(sp)
+  401e54:	8f9982b8 	lw	t9,-32072(gp)
+  401e58:	00000000 	nop
+  401e5c:	0320f809 	jalr	t9
+  401e60:	00000000 	nop
+  401e64:	8fbc0010 	lw	gp,16(sp)
+  401e68:	04400015 	bltz	v0,401ec0 <iw_enum_devices+0x2c0>
+  401e6c:	00000000 	nop
+  401e70:	8fa20418 	lw	v0,1048(sp)
+  401e74:	8fb1041c 	lw	s1,1052(sp)
+  401e78:	00028142 	srl	s0,v0,0x5
+  401e7c:	2610ffff 	addiu	s0,s0,-1
+  401e80:	0600ffe1 	bltz	s0,401e08 <iw_enum_devices+0x208>
+  401e84:	00000000 	nop
+  401e88:	8fa3046c 	lw	v1,1132(sp)
+  401e8c:	02202821 	move	a1,s1
+  401e90:	02c02021 	move	a0,s6
+  401e94:	03c03021 	move	a2,s8
+  401e98:	02e03821 	move	a3,s7
+  401e9c:	2610ffff 	addiu	s0,s0,-1
+  401ea0:	0060c821 	move	t9,v1
+  401ea4:	0320f809 	jalr	t9
+  401ea8:	00000000 	nop
+  401eac:	8fbc0010 	lw	gp,16(sp)
+  401eb0:	0601fff5 	bgez	s0,401e88 <iw_enum_devices+0x288>
+  401eb4:	26310020 	addiu	s1,s1,32
+  401eb8:	1000ffd3 	b	401e08 <iw_enum_devices+0x208>
+  401ebc:	00000000 	nop
+  401ec0:	8f9980a0 	lw	t9,-32608(gp)
+  401ec4:	00000000 	nop
+  401ec8:	0320f809 	jalr	t9
+  401ecc:	00000000 	nop
+  401ed0:	8fbc0010 	lw	gp,16(sp)
+  401ed4:	8c440000 	lw	a0,0(v0)
+  401ed8:	8f99828c 	lw	t9,-32116(gp)
+  401edc:	00000000 	nop
+  401ee0:	0320f809 	jalr	t9
+  401ee4:	00000000 	nop
+  401ee8:	8fbc0010 	lw	gp,16(sp)
+  401eec:	00000000 	nop
+  401ef0:	8f8480e8 	lw	a0,-32536(gp)
+  401ef4:	00000000 	nop
+  401ef8:	8c840000 	lw	a0,0(a0)
+  401efc:	8f858018 	lw	a1,-32744(gp)
+  401f00:	00000000 	nop
+  401f04:	24a5fdf8 	addiu	a1,a1,-520
+  401f08:	00403021 	move	a2,v0
+  401f0c:	8f9981c4 	lw	t9,-32316(gp)
+  401f10:	00000000 	nop
+  401f14:	0320f809 	jalr	t9
+  401f18:	00000000 	nop
+  401f1c:	8fbc0010 	lw	gp,16(sp)
+  401f20:	1000ffb9 	b	401e08 <iw_enum_devices+0x208>
+  401f24:	00000000 	nop
+
+00401f28 <iw_get_range_info>:
+  401f28:	3c1c0fc0 	lui	gp,0xfc0
+  401f2c:	279c6328 	addiu	gp,gp,25384
+  401f30:	0399e021 	addu	gp,gp,t9
+  401f34:	27bdfd40 	addiu	sp,sp,-704
+  401f38:	afbc0010 	sw	gp,16(sp)
+  401f3c:	afb302ac 	sw	s3,684(sp)
+  401f40:	27b30038 	addiu	s3,sp,56
+  401f44:	afb402b0 	sw	s4,688(sp)
+  401f48:	afb202a8 	sw	s2,680(sp)
+  401f4c:	afb102a4 	sw	s1,676(sp)
+  401f50:	00a0a021 	move	s4,a1
+  401f54:	00808821 	move	s1,a0
+  401f58:	00002821 	move	a1,zero
+  401f5c:	02602021 	move	a0,s3
+  401f60:	00c09021 	move	s2,a2
+  401f64:	24060268 	li	a2,616
+  401f68:	afb002a0 	sw	s0,672(sp)
+  401f6c:	afbf02b8 	sw	ra,696(sp)
+  401f70:	afbc02b4 	sw	gp,692(sp)
+  401f74:	8f99813c 	lw	t9,-32452(gp)
+  401f78:	00000000 	nop
+  401f7c:	0320f809 	jalr	t9
+  401f80:	00000000 	nop
+  401f84:	8fbc0010 	lw	gp,16(sp)
+  401f88:	27b00018 	addiu	s0,sp,24
+  401f8c:	02802821 	move	a1,s4
+  401f90:	24060010 	li	a2,16
+  401f94:	02002021 	move	a0,s0
+  401f98:	24020268 	li	v0,616
+  401f9c:	a7a2002c 	sh	v0,44(sp)
+  401fa0:	afb30028 	sw	s3,40(sp)
+  401fa4:	a7a0002e 	sh	zero,46(sp)
+  401fa8:	8f998188 	lw	t9,-32376(gp)
+  401fac:	00000000 	nop
+  401fb0:	0320f809 	jalr	t9
+  401fb4:	00000000 	nop
+  401fb8:	8fbc0010 	lw	gp,16(sp)
+  401fbc:	02202021 	move	a0,s1
+  401fc0:	02003021 	move	a2,s0
+  401fc4:	34058b0b 	li	a1,0x8b0b
+  401fc8:	8f9982b8 	lw	t9,-32072(gp)
+  401fcc:	00000000 	nop
+  401fd0:	0320f809 	jalr	t9
+  401fd4:	00000000 	nop
+  401fd8:	8fbc0010 	lw	gp,16(sp)
+  401fdc:	00401821 	move	v1,v0
+  401fe0:	0460001d 	bltz	v1,402058 <iw_get_range_info+0x130>
+  401fe4:	2402ffff 	li	v0,-1
+  401fe8:	02602021 	move	a0,s3
+  401fec:	02401021 	move	v0,s2
+  401ff0:	27a30168 	addiu	v1,sp,360
+  401ff4:	8c850000 	lw	a1,0(a0)
+  401ff8:	8c860004 	lw	a2,4(a0)
+  401ffc:	8c870008 	lw	a3,8(a0)
+  402000:	8c88000c 	lw	t0,12(a0)
+  402004:	ac450000 	sw	a1,0(v0)
+  402008:	ac460004 	sw	a2,4(v0)
+  40200c:	ac470008 	sw	a3,8(v0)
+  402010:	ac48000c 	sw	t0,12(v0)
+  402014:	24840010 	addiu	a0,a0,16
+  402018:	1483fff6 	bne	a0,v1,401ff4 <iw_get_range_info+0xcc>
+  40201c:	24420010 	addiu	v0,v0,16
+  402020:	8c830000 	lw	v1,0(a0)
+  402024:	00000000 	nop
+  402028:	ac430000 	sw	v1,0(v0)
+  40202c:	8f828260 	lw	v0,-32160(gp)
+  402030:	00000000 	nop
+  402034:	8c420000 	lw	v0,0(v0)
+  402038:	00000000 	nop
+  40203c:	1040000e 	beqz	v0,402078 <iw_get_range_info+0x150>
+  402040:	00000000 	nop
+  402044:	24020001 	li	v0,1
+  402048:	8f818260 	lw	at,-32160(gp)
+  40204c:	00000000 	nop
+  402050:	ac220000 	sw	v0,0(at)
+  402054:	00001021 	move	v0,zero
+  402058:	8fbf02b8 	lw	ra,696(sp)
+  40205c:	8fb402b0 	lw	s4,688(sp)
+  402060:	8fb302ac 	lw	s3,684(sp)
+  402064:	8fb202a8 	lw	s2,680(sp)
+  402068:	8fb102a4 	lw	s1,676(sp)
+  40206c:	8fb002a0 	lw	s0,672(sp)
+  402070:	03e00008 	jr	ra
+  402074:	27bd02c0 	addiu	sp,sp,704
+  402078:	97a3002c 	lhu	v1,44(sp)
+  40207c:	00000000 	nop
+  402080:	2c62012c 	sltiu	v0,v1,300
+  402084:	1440005a 	bnez	v0,4021f0 <iw_get_range_info+0x2c8>
+  402088:	24020134 	li	v0,308
+  40208c:	92430118 	lbu	v1,280(s2)
+  402090:	2402000c 	li	v0,12
+  402094:	10620029 	beq	v1,v0,40213c <iw_get_range_info+0x214>
+  402098:	306700ff 	andi	a3,v1,0xff
+  40209c:	8f8480e8 	lw	a0,-32536(gp)
+  4020a0:	00000000 	nop
+  4020a4:	8c840000 	lw	a0,0(a0)
+  4020a8:	8f858018 	lw	a1,-32744(gp)
+  4020ac:	00000000 	nop
+  4020b0:	24a5fe0c 	addiu	a1,a1,-500
+  4020b4:	02803021 	move	a2,s4
+  4020b8:	8f9981c4 	lw	t9,-32316(gp)
+  4020bc:	00000000 	nop
+  4020c0:	0320f809 	jalr	t9
+  4020c4:	00000000 	nop
+  4020c8:	8fbc0010 	lw	gp,16(sp)
+  4020cc:	00000000 	nop
+  4020d0:	8f8480e8 	lw	a0,-32536(gp)
+  4020d4:	00000000 	nop
+  4020d8:	8c840000 	lw	a0,0(a0)
+  4020dc:	8f858018 	lw	a1,-32744(gp)
+  4020e0:	00000000 	nop
+  4020e4:	24a5fe50 	addiu	a1,a1,-432
+  4020e8:	2406000c 	li	a2,12
+  4020ec:	8f9981c4 	lw	t9,-32316(gp)
+  4020f0:	00000000 	nop
+  4020f4:	0320f809 	jalr	t9
+  4020f8:	00000000 	nop
+  4020fc:	8fbc0010 	lw	gp,16(sp)
+  402100:	00000000 	nop
+  402104:	8f8780e8 	lw	a3,-32536(gp)
+  402108:	00000000 	nop
+  40210c:	8ce70000 	lw	a3,0(a3)
+  402110:	8f848018 	lw	a0,-32744(gp)
+  402114:	00000000 	nop
+  402118:	2484fe90 	addiu	a0,a0,-368
+  40211c:	24050001 	li	a1,1
+  402120:	2406001e 	li	a2,30
+  402124:	8f9980c8 	lw	t9,-32568(gp)
+  402128:	00000000 	nop
+  40212c:	0320f809 	jalr	t9
+  402130:	00000000 	nop
+  402134:	8fbc0010 	lw	gp,16(sp)
+  402138:	92430118 	lbu	v1,280(s2)
+  40213c:	92420119 	lbu	v0,281(s2)
+  402140:	00000000 	nop
+  402144:	0062102b 	sltu	v0,v1,v0
+  402148:	1040ffbe 	beqz	v0,402044 <iw_get_range_info+0x11c>
+  40214c:	02803021 	move	a2,s4
+  402150:	92470119 	lbu	a3,281(s2)
+  402154:	8f8480e8 	lw	a0,-32536(gp)
+  402158:	00000000 	nop
+  40215c:	8c840000 	lw	a0,0(a0)
+  402160:	8f858018 	lw	a1,-32744(gp)
+  402164:	00000000 	nop
+  402168:	24a5feb0 	addiu	a1,a1,-336
+  40216c:	8f9981c4 	lw	t9,-32316(gp)
+  402170:	00000000 	nop
+  402174:	0320f809 	jalr	t9
+  402178:	00000000 	nop
+  40217c:	8fbc0010 	lw	gp,16(sp)
+  402180:	92460118 	lbu	a2,280(s2)
+  402184:	8f8480e8 	lw	a0,-32536(gp)
+  402188:	00000000 	nop
+  40218c:	8c840000 	lw	a0,0(a0)
+  402190:	8f858018 	lw	a1,-32744(gp)
+  402194:	00000000 	nop
+  402198:	24a5fefc 	addiu	a1,a1,-260
+  40219c:	8f9981c4 	lw	t9,-32316(gp)
+  4021a0:	00000000 	nop
+  4021a4:	0320f809 	jalr	t9
+  4021a8:	00000000 	nop
+  4021ac:	8fbc0010 	lw	gp,16(sp)
+  4021b0:	00000000 	nop
+  4021b4:	8f8780e8 	lw	a3,-32536(gp)
+  4021b8:	00000000 	nop
+  4021bc:	8ce70000 	lw	a3,0(a3)
+  4021c0:	8f848018 	lw	a0,-32744(gp)
+  4021c4:	00000000 	nop
+  4021c8:	2484ff44 	addiu	a0,a0,-188
+  4021cc:	24050001 	li	a1,1
+  4021d0:	24060019 	li	a2,25
+  4021d4:	8f9980c8 	lw	t9,-32568(gp)
+  4021d8:	00000000 	nop
+  4021dc:	0320f809 	jalr	t9
+  4021e0:	00000000 	nop
+  4021e4:	8fbc0010 	lw	gp,16(sp)
+  4021e8:	1000ff97 	b	402048 <iw_get_range_info+0x120>
+  4021ec:	24020001 	li	v0,1
+  4021f0:	1062ff94 	beq	v1,v0,402044 <iw_get_range_info+0x11c>
+  4021f4:	02803021 	move	a2,s4
+  4021f8:	8f8480e8 	lw	a0,-32536(gp)
+  4021fc:	00000000 	nop
+  402200:	8c840000 	lw	a0,0(a0)
+  402204:	8f858018 	lw	a1,-32744(gp)
+  402208:	00000000 	nop
+  40220c:	24a5ff60 	addiu	a1,a1,-160
+  402210:	8f9981c4 	lw	t9,-32316(gp)
+  402214:	00000000 	nop
+  402218:	0320f809 	jalr	t9
+  40221c:	00000000 	nop
+  402220:	8fbc0010 	lw	gp,16(sp)
+  402224:	00000000 	nop
+  402228:	8f8480e8 	lw	a0,-32536(gp)
+  40222c:	00000000 	nop
+  402230:	8c840000 	lw	a0,0(a0)
+  402234:	8f858018 	lw	a1,-32744(gp)
+  402238:	00000000 	nop
+  40223c:	24a5fe50 	addiu	a1,a1,-432
+  402240:	2406000c 	li	a2,12
+  402244:	8f9981c4 	lw	t9,-32316(gp)
+  402248:	00000000 	nop
+  40224c:	0320f809 	jalr	t9
+  402250:	00000000 	nop
+  402254:	8fbc0010 	lw	gp,16(sp)
+  402258:	00000000 	nop
+  40225c:	8f8780e8 	lw	a3,-32536(gp)
+  402260:	00000000 	nop
+  402264:	8ce70000 	lw	a3,0(a3)
+  402268:	8f848018 	lw	a0,-32744(gp)
+  40226c:	00000000 	nop
+  402270:	2484fe90 	addiu	a0,a0,-368
+  402274:	24050001 	li	a1,1
+  402278:	2406001e 	li	a2,30
+  40227c:	8f9980c8 	lw	t9,-32568(gp)
+  402280:	00000000 	nop
+  402284:	0320f809 	jalr	t9
+  402288:	00000000 	nop
+  40228c:	8fbc0010 	lw	gp,16(sp)
+  402290:	1000ff6d 	b	402048 <iw_get_range_info+0x120>
+  402294:	24020001 	li	v0,1
+
+00402298 <print_iface_version_info>:
+  402298:	3c1c0fc0 	lui	gp,0xfc0
+  40229c:	279c5fb8 	addiu	gp,gp,24504
+  4022a0:	0399e021 	addu	gp,gp,t9
+  4022a4:	27bdfd48 	addiu	sp,sp,-696
+  4022a8:	afbc0010 	sw	gp,16(sp)
+  4022ac:	afb102a4 	sw	s1,676(sp)
+  4022b0:	27b10038 	addiu	s1,sp,56
+  4022b4:	afb302ac 	sw	s3,684(sp)
+  4022b8:	afb202a8 	sw	s2,680(sp)
+  4022bc:	00a09821 	move	s3,a1
+  4022c0:	00809021 	move	s2,a0
+  4022c4:	00002821 	move	a1,zero
+  4022c8:	02202021 	move	a0,s1
+  4022cc:	24060268 	li	a2,616
+  4022d0:	afb002a0 	sw	s0,672(sp)
+  4022d4:	afbf02b4 	sw	ra,692(sp)
+  4022d8:	afbc02b0 	sw	gp,688(sp)
+  4022dc:	8f99813c 	lw	t9,-32452(gp)
+  4022e0:	00000000 	nop
+  4022e4:	0320f809 	jalr	t9
+  4022e8:	00000000 	nop
+  4022ec:	8fbc0010 	lw	gp,16(sp)
+  4022f0:	27b00018 	addiu	s0,sp,24
+  4022f4:	02602821 	move	a1,s3
+  4022f8:	24060010 	li	a2,16
+  4022fc:	02002021 	move	a0,s0
+  402300:	24020268 	li	v0,616
+  402304:	afb10028 	sw	s1,40(sp)
+  402308:	a7a2002c 	sh	v0,44(sp)
+  40230c:	a7a0002e 	sh	zero,46(sp)
+  402310:	8f998188 	lw	t9,-32376(gp)
+  402314:	00000000 	nop
+  402318:	0320f809 	jalr	t9
+  40231c:	00000000 	nop
+  402320:	8fbc0010 	lw	gp,16(sp)
+  402324:	02402021 	move	a0,s2
+  402328:	02003021 	move	a2,s0
+  40232c:	34058b0b 	li	a1,0x8b0b
+  402330:	8f9982b8 	lw	t9,-32072(gp)
+  402334:	00000000 	nop
+  402338:	0320f809 	jalr	t9
+  40233c:	00000000 	nop
+  402340:	8fbc0010 	lw	gp,16(sp)
+  402344:	00401821 	move	v1,v0
+  402348:	04600019 	bltz	v1,4023b0 <print_iface_version_info+0x118>
+  40234c:	2402ffff 	li	v0,-1
+  402350:	97a2002c 	lhu	v0,44(sp)
+  402354:	00000000 	nop
+  402358:	2c42012c 	sltiu	v0,v0,300
+  40235c:	8f848018 	lw	a0,-32744(gp)
+  402360:	00000000 	nop
+  402364:	2484ffac 	addiu	a0,a0,-84
+  402368:	14400010 	bnez	v0,4023ac <print_iface_version_info+0x114>
+  40236c:	02602821 	move	a1,s3
+  402370:	93a60151 	lbu	a2,337(sp)
+  402374:	8f9982b0 	lw	t9,-32080(gp)
+  402378:	00000000 	nop
+  40237c:	0320f809 	jalr	t9
+  402380:	00000000 	nop
+  402384:	8fbc0010 	lw	gp,16(sp)
+  402388:	93a50150 	lbu	a1,336(sp)
+  40238c:	8f848018 	lw	a0,-32744(gp)
+  402390:	00000000 	nop
+  402394:	2484ffe0 	addiu	a0,a0,-32
+  402398:	8f9982b0 	lw	t9,-32080(gp)
+  40239c:	00000000 	nop
+  4023a0:	0320f809 	jalr	t9
+  4023a4:	00000000 	nop
+  4023a8:	8fbc0010 	lw	gp,16(sp)
+  4023ac:	00001021 	move	v0,zero
+  4023b0:	8fbf02b4 	lw	ra,692(sp)
+  4023b4:	8fb302ac 	lw	s3,684(sp)
+  4023b8:	8fb202a8 	lw	s2,680(sp)
+  4023bc:	8fb102a4 	lw	s1,676(sp)
+  4023c0:	8fb002a0 	lw	s0,672(sp)
+  4023c4:	03e00008 	jr	ra
+  4023c8:	27bd02b8 	addiu	sp,sp,696
+
+004023cc <iw_print_version_info>:
+  4023cc:	3c1c0fc0 	lui	gp,0xfc0
+  4023d0:	279c5e84 	addiu	gp,gp,24196
+  4023d4:	0399e021 	addu	gp,gp,t9
+  4023d8:	27bdffd8 	addiu	sp,sp,-40
+  4023dc:	afbc0010 	sw	gp,16(sp)
+  4023e0:	afb1001c 	sw	s1,28(sp)
+  4023e4:	afb00018 	sw	s0,24(sp)
+  4023e8:	00808821 	move	s1,a0
+  4023ec:	afbf0024 	sw	ra,36(sp)
+  4023f0:	afbc0020 	sw	gp,32(sp)
+  4023f4:	8f998258 	lw	t9,-32168(gp)
+  4023f8:	00000000 	nop
+  4023fc:	0320f809 	jalr	t9
+  402400:	00000000 	nop
+  402404:	8fbc0010 	lw	gp,16(sp)
+  402408:	00408021 	move	s0,v0
+  40240c:	8f848018 	lw	a0,-32744(gp)
+  402410:	00000000 	nop
+  402414:	2484001c 	addiu	a0,a0,28
+  402418:	06000037 	bltz	s0,4024f8 <iw_print_version_info+0x12c>
+  40241c:	02202821 	move	a1,s1
+  402420:	8f848018 	lw	a0,-32744(gp)
+  402424:	00000000 	nop
+  402428:	24840024 	addiu	a0,a0,36
+  40242c:	12200007 	beqz	s1,40244c <iw_print_version_info+0x80>
+  402430:	24060019 	li	a2,25
+  402434:	8f9982b0 	lw	t9,-32080(gp)
+  402438:	00000000 	nop
+  40243c:	0320f809 	jalr	t9
+  402440:	00000000 	nop
+  402444:	8fbc0010 	lw	gp,16(sp)
+  402448:	00000000 	nop
+  40244c:	8f848018 	lw	a0,-32744(gp)
+  402450:	00000000 	nop
+  402454:	24840038 	addiu	a0,a0,56
+  402458:	2405000f 	li	a1,15
+  40245c:	8f9982b0 	lw	t9,-32080(gp)
+  402460:	00000000 	nop
+  402464:	0320f809 	jalr	t9
+  402468:	00000000 	nop
+  40246c:	8fbc0010 	lw	gp,16(sp)
+  402470:	00000000 	nop
+  402474:	8f848018 	lw	a0,-32744(gp)
+  402478:	00000000 	nop
+  40247c:	2484ffe0 	addiu	a0,a0,-32
+  402480:	2405000c 	li	a1,12
+  402484:	8f9982b0 	lw	t9,-32080(gp)
+  402488:	00000000 	nop
+  40248c:	0320f809 	jalr	t9
+  402490:	00000000 	nop
+  402494:	8fbc0010 	lw	gp,16(sp)
+  402498:	00000000 	nop
+  40249c:	8f858020 	lw	a1,-32736(gp)
+  4024a0:	00000000 	nop
+  4024a4:	24a52298 	addiu	a1,a1,8856
+  4024a8:	00003021 	move	a2,zero
+  4024ac:	00003821 	move	a3,zero
+  4024b0:	02002021 	move	a0,s0
+  4024b4:	8f9982c0 	lw	t9,-32064(gp)
+  4024b8:	00000000 	nop
+  4024bc:	0320f809 	jalr	t9
+  4024c0:	00000000 	nop
+  4024c4:	8fbc0010 	lw	gp,16(sp)
+  4024c8:	02002021 	move	a0,s0
+  4024cc:	8f998040 	lw	t9,-32704(gp)
+  4024d0:	00000000 	nop
+  4024d4:	0320f809 	jalr	t9
+  4024d8:	00000000 	nop
+  4024dc:	8fbc0010 	lw	gp,16(sp)
+  4024e0:	00001021 	move	v0,zero
+  4024e4:	8fbf0024 	lw	ra,36(sp)
+  4024e8:	8fb1001c 	lw	s1,28(sp)
+  4024ec:	8fb00018 	lw	s0,24(sp)
+  4024f0:	03e00008 	jr	ra
+  4024f4:	27bd0028 	addiu	sp,sp,40
+  4024f8:	8f998250 	lw	t9,-32176(gp)
+  4024fc:	00000000 	nop
+  402500:	0320f809 	jalr	t9
+  402504:	00000000 	nop
+  402508:	8fbc0010 	lw	gp,16(sp)
+  40250c:	1000fff5 	b	4024e4 <iw_print_version_info+0x118>
+  402510:	2402ffff 	li	v0,-1
+
+00402514 <iw_get_priv_info>:
+  402514:	3c1c0fc0 	lui	gp,0xfc0
+  402518:	279c5d3c 	addiu	gp,gp,23868
+  40251c:	0399e021 	addu	gp,gp,t9
+  402520:	27bdffb8 	addiu	sp,sp,-72
+  402524:	afbc0010 	sw	gp,16(sp)
+  402528:	afb00038 	sw	s0,56(sp)
+  40252c:	27b00018 	addiu	s0,sp,24
+  402530:	afb1003c 	sw	s1,60(sp)
+  402534:	00c01021 	move	v0,a2
+  402538:	00808821 	move	s1,a0
+  40253c:	24060010 	li	a2,16
+  402540:	02002021 	move	a0,s0
+  402544:	afbf0044 	sw	ra,68(sp)
+  402548:	afbc0040 	sw	gp,64(sp)
+  40254c:	afa20028 	sw	v0,40(sp)
+  402550:	a7a7002c 	sh	a3,44(sp)
+  402554:	a7a0002e 	sh	zero,46(sp)
+  402558:	8f998188 	lw	t9,-32376(gp)
+  40255c:	00000000 	nop
+  402560:	0320f809 	jalr	t9
+  402564:	00000000 	nop
+  402568:	8fbc0010 	lw	gp,16(sp)
+  40256c:	02202021 	move	a0,s1
+  402570:	02003021 	move	a2,s0
+  402574:	34058b0d 	li	a1,0x8b0d
+  402578:	8f9982b8 	lw	t9,-32072(gp)
+  40257c:	00000000 	nop
+  402580:	0320f809 	jalr	t9
+  402584:	00000000 	nop
+  402588:	8fbc0010 	lw	gp,16(sp)
+  40258c:	00401821 	move	v1,v0
+  402590:	04600002 	bltz	v1,40259c <iw_get_priv_info+0x88>
+  402594:	2402ffff 	li	v0,-1
+  402598:	97a2002c 	lhu	v0,44(sp)
+  40259c:	8fbf0044 	lw	ra,68(sp)
+  4025a0:	8fb1003c 	lw	s1,60(sp)
+  4025a4:	8fb00038 	lw	s0,56(sp)
+  4025a8:	03e00008 	jr	ra
+  4025ac:	27bd0048 	addiu	sp,sp,72
+
+004025b0 <iw_get_basic_config>:
+  4025b0:	3c1c0fc0 	lui	gp,0xfc0
+  4025b4:	279c5ca0 	addiu	gp,gp,23712
+  4025b8:	0399e021 	addu	gp,gp,t9
+  4025bc:	27bdffa8 	addiu	sp,sp,-88
+  4025c0:	afbc0010 	sw	gp,16(sp)
+  4025c4:	afb00038 	sw	s0,56(sp)
+  4025c8:	00c08021 	move	s0,a2
+  4025cc:	afb30044 	sw	s3,68(sp)
+  4025d0:	afb20040 	sw	s2,64(sp)
+  4025d4:	00809821 	move	s3,a0
+  4025d8:	00a09021 	move	s2,a1
+  4025dc:	02002021 	move	a0,s0
+  4025e0:	00002821 	move	a1,zero
+  4025e4:	24060090 	li	a2,144
+  4025e8:	afb1003c 	sw	s1,60(sp)
+  4025ec:	afbf0050 	sw	ra,80(sp)
+  4025f0:	afbc004c 	sw	gp,76(sp)
+  4025f4:	afb40048 	sw	s4,72(sp)
+  4025f8:	8f99813c 	lw	t9,-32452(gp)
+  4025fc:	00000000 	nop
+  402600:	0320f809 	jalr	t9
+  402604:	00000000 	nop
+  402608:	8fbc0010 	lw	gp,16(sp)
+  40260c:	27b10018 	addiu	s1,sp,24
+  402610:	02402821 	move	a1,s2
+  402614:	24060010 	li	a2,16
+  402618:	02202021 	move	a0,s1
+  40261c:	8f998188 	lw	t9,-32376(gp)
+  402620:	00000000 	nop
+  402624:	0320f809 	jalr	t9
+  402628:	00000000 	nop
+  40262c:	8fbc0010 	lw	gp,16(sp)
+  402630:	02602021 	move	a0,s3
+  402634:	34058b01 	li	a1,0x8b01
+  402638:	02203021 	move	a2,s1
+  40263c:	8f9982b8 	lw	t9,-32072(gp)
+  402640:	00000000 	nop
+  402644:	0320f809 	jalr	t9
+  402648:	00000000 	nop
+  40264c:	8fbc0010 	lw	gp,16(sp)
+  402650:	00401821 	move	v1,v0
+  402654:	0460008d 	bltz	v1,40288c <iw_get_basic_config+0x2dc>
+  402658:	2402ffff 	li	v0,-1
+  40265c:	27b40028 	addiu	s4,sp,40
+  402660:	02002021 	move	a0,s0
+  402664:	02802821 	move	a1,s4
+  402668:	24060010 	li	a2,16
+  40266c:	8f998188 	lw	t9,-32376(gp)
+  402670:	00000000 	nop
+  402674:	0320f809 	jalr	t9
+  402678:	00000000 	nop
+  40267c:	8fbc0010 	lw	gp,16(sp)
+  402680:	02402821 	move	a1,s2
+  402684:	24060010 	li	a2,16
+  402688:	02202021 	move	a0,s1
+  40268c:	a2000010 	sb	zero,16(s0)
+  402690:	8f998188 	lw	t9,-32376(gp)
+  402694:	00000000 	nop
+  402698:	0320f809 	jalr	t9
+  40269c:	00000000 	nop
+  4026a0:	8fbc0010 	lw	gp,16(sp)
+  4026a4:	02602021 	move	a0,s3
+  4026a8:	34058b03 	li	a1,0x8b03
+  4026ac:	02203021 	move	a2,s1
+  4026b0:	8f9982b8 	lw	t9,-32072(gp)
+  4026b4:	00000000 	nop
+  4026b8:	0320f809 	jalr	t9
+  4026bc:	00000000 	nop
+  4026c0:	8fbc0010 	lw	gp,16(sp)
+  4026c4:	04400006 	bltz	v0,4026e0 <iw_get_basic_config+0x130>
+  4026c8:	24030001 	li	v1,1
+  4026cc:	8fa20028 	lw	v0,40(sp)
+  4026d0:	8fa4002c 	lw	a0,44(sp)
+  4026d4:	ae030014 	sw	v1,20(s0)
+  4026d8:	ae020018 	sw	v0,24(s0)
+  4026dc:	ae04001c 	sw	a0,28(s0)
+  4026e0:	02402821 	move	a1,s2
+  4026e4:	24060010 	li	a2,16
+  4026e8:	02202021 	move	a0,s1
+  4026ec:	8f998188 	lw	t9,-32376(gp)
+  4026f0:	00000000 	nop
+  4026f4:	0320f809 	jalr	t9
+  4026f8:	00000000 	nop
+  4026fc:	8fbc0010 	lw	gp,16(sp)
+  402700:	02602021 	move	a0,s3
+  402704:	34058b05 	li	a1,0x8b05
+  402708:	02203021 	move	a2,s1
+  40270c:	8f9982b8 	lw	t9,-32072(gp)
+  402710:	00000000 	nop
+  402714:	0320f809 	jalr	t9
+  402718:	00000000 	nop
+  40271c:	8fbc0010 	lw	gp,16(sp)
+  402720:	0440000a 	bltz	v0,40274c <iw_get_basic_config+0x19c>
+  402724:	24020001 	li	v0,1
+  402728:	ae020020 	sw	v0,32(s0)
+  40272c:	02802021 	move	a0,s4
+  402730:	8f9980c4 	lw	t9,-32572(gp)
+  402734:	00000000 	nop
+  402738:	0320f809 	jalr	t9
+  40273c:	00000000 	nop
+  402740:	8fbc0010 	lw	gp,16(sp)
+  402744:	e6010028 	swc1	$f1,40(s0)
+  402748:	e600002c 	swc1	$f0,44(s0)
+  40274c:	02402821 	move	a1,s2
+  402750:	24060010 	li	a2,16
+  402754:	26020034 	addiu	v0,s0,52
+  402758:	02202021 	move	a0,s1
+  40275c:	24030020 	li	v1,32
+  402760:	afa20028 	sw	v0,40(sp)
+  402764:	a7a3002c 	sh	v1,44(sp)
+  402768:	a7a0002e 	sh	zero,46(sp)
+  40276c:	8f998188 	lw	t9,-32376(gp)
+  402770:	00000000 	nop
+  402774:	0320f809 	jalr	t9
+  402778:	00000000 	nop
+  40277c:	8fbc0010 	lw	gp,16(sp)
+  402780:	02602021 	move	a0,s3
+  402784:	34058b2b 	li	a1,0x8b2b
+  402788:	02203021 	move	a2,s1
+  40278c:	8f9982b8 	lw	t9,-32072(gp)
+  402790:	00000000 	nop
+  402794:	0320f809 	jalr	t9
+  402798:	00000000 	nop
+  40279c:	8fbc0010 	lw	gp,16(sp)
+  4027a0:	04400006 	bltz	v0,4027bc <iw_get_basic_config+0x20c>
+  4027a4:	24030001 	li	v1,1
+  4027a8:	97a2002c 	lhu	v0,44(sp)
+  4027ac:	97a4002e 	lhu	a0,46(sp)
+  4027b0:	ae030030 	sw	v1,48(s0)
+  4027b4:	ae020054 	sw	v0,84(s0)
+  4027b8:	ae040058 	sw	a0,88(s0)
+  4027bc:	02402821 	move	a1,s2
+  4027c0:	24060010 	li	a2,16
+  4027c4:	26020064 	addiu	v0,s0,100
+  4027c8:	02202021 	move	a0,s1
+  4027cc:	24030021 	li	v1,33
+  4027d0:	afa20028 	sw	v0,40(sp)
+  4027d4:	a7a3002c 	sh	v1,44(sp)
+  4027d8:	a7a0002e 	sh	zero,46(sp)
+  4027dc:	8f998188 	lw	t9,-32376(gp)
+  4027e0:	00000000 	nop
+  4027e4:	0320f809 	jalr	t9
+  4027e8:	00000000 	nop
+  4027ec:	8fbc0010 	lw	gp,16(sp)
+  4027f0:	02602021 	move	a0,s3
+  4027f4:	34058b1b 	li	a1,0x8b1b
+  4027f8:	02203021 	move	a2,s1
+  4027fc:	8f9982b8 	lw	t9,-32072(gp)
+  402800:	00000000 	nop
+  402804:	0320f809 	jalr	t9
+  402808:	00000000 	nop
+  40280c:	8fbc0010 	lw	gp,16(sp)
+  402810:	04400004 	bltz	v0,402824 <iw_get_basic_config+0x274>
+  402814:	24020001 	li	v0,1
+  402818:	97a3002e 	lhu	v1,46(sp)
+  40281c:	ae02005c 	sw	v0,92(s0)
+  402820:	ae030060 	sw	v1,96(s0)
+  402824:	02402821 	move	a1,s2
+  402828:	24060010 	li	a2,16
+  40282c:	02202021 	move	a0,s1
+  402830:	8f998188 	lw	t9,-32376(gp)
+  402834:	00000000 	nop
+  402838:	0320f809 	jalr	t9
+  40283c:	00000000 	nop
+  402840:	8fbc0010 	lw	gp,16(sp)
+  402844:	02602021 	move	a0,s3
+  402848:	02203021 	move	a2,s1
+  40284c:	34058b07 	li	a1,0x8b07
+  402850:	8f9982b8 	lw	t9,-32072(gp)
+  402854:	00000000 	nop
+  402858:	0320f809 	jalr	t9
+  40285c:	00000000 	nop
+  402860:	8fbc0010 	lw	gp,16(sp)
+  402864:	04400009 	bltz	v0,40288c <iw_get_basic_config+0x2dc>
+  402868:	00001021 	move	v0,zero
+  40286c:	8fa20028 	lw	v0,40(sp)
+  402870:	00000000 	nop
+  402874:	2c430006 	sltiu	v1,v0,6
+  402878:	10600003 	beqz	v1,402888 <iw_get_basic_config+0x2d8>
+  40287c:	ae02008c 	sw	v0,140(s0)
+  402880:	24020001 	li	v0,1
+  402884:	ae020088 	sw	v0,136(s0)
+  402888:	00001021 	move	v0,zero
+  40288c:	8fbf0050 	lw	ra,80(sp)
+  402890:	8fb40048 	lw	s4,72(sp)
+  402894:	8fb30044 	lw	s3,68(sp)
+  402898:	8fb20040 	lw	s2,64(sp)
+  40289c:	8fb1003c 	lw	s1,60(sp)
+  4028a0:	8fb00038 	lw	s0,56(sp)
+  4028a4:	03e00008 	jr	ra
+  4028a8:	27bd0058 	addiu	sp,sp,88
+
+004028ac <iw_set_basic_config>:
+  4028ac:	3c1c0fc0 	lui	gp,0xfc0
+  4028b0:	279c59a4 	addiu	gp,gp,22948
+  4028b4:	0399e021 	addu	gp,gp,t9
+  4028b8:	27bdffa0 	addiu	sp,sp,-96
+  4028bc:	afbc0010 	sw	gp,16(sp)
+  4028c0:	afb30044 	sw	s3,68(sp)
+  4028c4:	27b30018 	addiu	s3,sp,24
+  4028c8:	afb60050 	sw	s6,80(sp)
+  4028cc:	afb20040 	sw	s2,64(sp)
+  4028d0:	0080b021 	move	s6,a0
+  4028d4:	00c09021 	move	s2,a2
+  4028d8:	02602021 	move	a0,s3
+  4028dc:	24060010 	li	a2,16
+  4028e0:	afb5004c 	sw	s5,76(sp)
+  4028e4:	afb40048 	sw	s4,72(sp)
+  4028e8:	afbf0058 	sw	ra,88(sp)
+  4028ec:	afbc0054 	sw	gp,84(sp)
+  4028f0:	afb1003c 	sw	s1,60(sp)
+  4028f4:	afb00038 	sw	s0,56(sp)
+  4028f8:	00a0a821 	move	s5,a1
+  4028fc:	8f998188 	lw	t9,-32376(gp)
+  402900:	00000000 	nop
+  402904:	0320f809 	jalr	t9
+  402908:	00000000 	nop
+  40290c:	8fbc0010 	lw	gp,16(sp)
+  402910:	02c02021 	move	a0,s6
+  402914:	34058b01 	li	a1,0x8b01
+  402918:	02603021 	move	a2,s3
+  40291c:	8f9982b8 	lw	t9,-32072(gp)
+  402920:	00000000 	nop
+  402924:	0320f809 	jalr	t9
+  402928:	00000000 	nop
+  40292c:	8fbc0010 	lw	gp,16(sp)
+  402930:	00401821 	move	v1,v0
+  402934:	0000a021 	move	s4,zero
+  402938:	046000b0 	bltz	v1,402bfc <iw_set_basic_config+0x350>
+  40293c:	2402fffe 	li	v0,-2
+  402940:	8e420014 	lw	v0,20(s2)
+  402944:	00000000 	nop
+  402948:	10400018 	beqz	v0,4029ac <iw_set_basic_config+0x100>
+  40294c:	02a02821 	move	a1,s5
+  402950:	8e42001c 	lw	v0,28(s2)
+  402954:	8e430018 	lw	v1,24(s2)
+  402958:	afa2002c 	sw	v0,44(sp)
+  40295c:	24060010 	li	a2,16
+  402960:	02602021 	move	a0,s3
+  402964:	24020001 	li	v0,1
+  402968:	afa30028 	sw	v1,40(sp)
+  40296c:	a3a2002c 	sb	v0,44(sp)
+  402970:	8f998188 	lw	t9,-32376(gp)
+  402974:	00000000 	nop
+  402978:	0320f809 	jalr	t9
+  40297c:	00000000 	nop
+  402980:	8fbc0010 	lw	gp,16(sp)
+  402984:	02c02021 	move	a0,s6
+  402988:	34058b02 	li	a1,0x8b02
+  40298c:	02603021 	move	a2,s3
+  402990:	8f9982b8 	lw	t9,-32072(gp)
+  402994:	00000000 	nop
+  402998:	0320f809 	jalr	t9
+  40299c:	00000000 	nop
+  4029a0:	8fbc0010 	lw	gp,16(sp)
+  4029a4:	04400123 	bltz	v0,402e34 <iw_set_basic_config+0x588>
+  4029a8:	00000000 	nop
+  4029ac:	8e420020 	lw	v0,32(s2)
+  4029b0:	00000000 	nop
+  4029b4:	1040001a 	beqz	v0,402a20 <iw_set_basic_config+0x174>
+  4029b8:	27a60028 	addiu	a2,sp,40
+  4029bc:	c64d0028 	lwc1	$f13,40(s2)
+  4029c0:	c64c002c 	lwc1	$f12,44(s2)
+  4029c4:	8f998190 	lw	t9,-32368(gp)
+  4029c8:	00000000 	nop
+  4029cc:	0320f809 	jalr	t9
+  4029d0:	00000000 	nop
+  4029d4:	8fbc0010 	lw	gp,16(sp)
+  4029d8:	02602021 	move	a0,s3
+  4029dc:	02a02821 	move	a1,s5
+  4029e0:	24060010 	li	a2,16
+  4029e4:	8f998188 	lw	t9,-32376(gp)
+  4029e8:	00000000 	nop
+  4029ec:	0320f809 	jalr	t9
+  4029f0:	00000000 	nop
+  4029f4:	8fbc0010 	lw	gp,16(sp)
+  4029f8:	02c02021 	move	a0,s6
+  4029fc:	34058b04 	li	a1,0x8b04
+  402a00:	02603021 	move	a2,s3
+  402a04:	8f9982b8 	lw	t9,-32072(gp)
+  402a08:	00000000 	nop
+  402a0c:	0320f809 	jalr	t9
+  402a10:	00000000 	nop
+  402a14:	8fbc0010 	lw	gp,16(sp)
+  402a18:	044000ec 	bltz	v0,402dcc <iw_set_basic_config+0x520>
+  402a1c:	00000000 	nop
+  402a20:	8e420030 	lw	v0,48(s2)
+  402a24:	00000000 	nop
+  402a28:	10400034 	beqz	v0,402afc <iw_set_basic_config+0x250>
+  402a2c:	00000000 	nop
+  402a30:	8e510058 	lw	s1,88(s2)
+  402a34:	00000000 	nop
+  402a38:	322200ff 	andi	v0,s1,0xff
+  402a3c:	18400016 	blez	v0,402a98 <iw_set_basic_config+0x1ec>
+  402a40:	34420800 	ori	v0,v0,0x800
+  402a44:	02a02821 	move	a1,s5
+  402a48:	24060010 	li	a2,16
+  402a4c:	02602021 	move	a0,s3
+  402a50:	a7a2002e 	sh	v0,46(sp)
+  402a54:	afa00028 	sw	zero,40(sp)
+  402a58:	a7a0002c 	sh	zero,44(sp)
+  402a5c:	8f998188 	lw	t9,-32376(gp)
+  402a60:	00000000 	nop
+  402a64:	0320f809 	jalr	t9
+  402a68:	00000000 	nop
+  402a6c:	8fbc0010 	lw	gp,16(sp)
+  402a70:	02c02021 	move	a0,s6
+  402a74:	34058b2a 	li	a1,0x8b2a
+  402a78:	02603021 	move	a2,s3
+  402a7c:	8f9982b8 	lw	t9,-32072(gp)
+  402a80:	00000000 	nop
+  402a84:	0320f809 	jalr	t9
+  402a88:	00000000 	nop
+  402a8c:	8fbc0010 	lw	gp,16(sp)
+  402a90:	044000b3 	bltz	v0,402d60 <iw_set_basic_config+0x4b4>
+  402a94:	00000000 	nop
+  402a98:	96430056 	lhu	v1,86(s2)
+  402a9c:	2402ff00 	li	v0,-256
+  402aa0:	02228824 	and	s1,s1,v0
+  402aa4:	02a02821 	move	a1,s5
+  402aa8:	24060010 	li	a2,16
+  402aac:	26420034 	addiu	v0,s2,52
+  402ab0:	02602021 	move	a0,s3
+  402ab4:	afa20028 	sw	v0,40(sp)
+  402ab8:	a7a3002c 	sh	v1,44(sp)
+  402abc:	a7b1002e 	sh	s1,46(sp)
+  402ac0:	8f998188 	lw	t9,-32376(gp)
+  402ac4:	00000000 	nop
+  402ac8:	0320f809 	jalr	t9
+  402acc:	00000000 	nop
+  402ad0:	8fbc0010 	lw	gp,16(sp)
+  402ad4:	02c02021 	move	a0,s6
+  402ad8:	34058b2a 	li	a1,0x8b2a
+  402adc:	02603021 	move	a2,s3
+  402ae0:	8f9982b8 	lw	t9,-32072(gp)
+  402ae4:	00000000 	nop
+  402ae8:	0320f809 	jalr	t9
+  402aec:	00000000 	nop
+  402af0:	8fbc0010 	lw	gp,16(sp)
+  402af4:	0440007f 	bltz	v0,402cf4 <iw_set_basic_config+0x448>
+  402af8:	00000000 	nop
+  402afc:	8e42005c 	lw	v0,92(s2)
+  402b00:	00000000 	nop
+  402b04:	1040001d 	beqz	v0,402b7c <iw_set_basic_config+0x2d0>
+  402b08:	26440064 	addiu	a0,s2,100
+  402b0c:	afa40028 	sw	a0,40(sp)
+  402b10:	8f998068 	lw	t9,-32664(gp)
+  402b14:	00000000 	nop
+  402b18:	0320f809 	jalr	t9
+  402b1c:	00000000 	nop
+  402b20:	8fbc0010 	lw	gp,16(sp)
+  402b24:	96430062 	lhu	v1,98(s2)
+  402b28:	24420001 	addiu	v0,v0,1
+  402b2c:	02a02821 	move	a1,s5
+  402b30:	24060010 	li	a2,16
+  402b34:	02602021 	move	a0,s3
+  402b38:	a7a2002c 	sh	v0,44(sp)
+  402b3c:	a7a3002e 	sh	v1,46(sp)
+  402b40:	8f998188 	lw	t9,-32376(gp)
+  402b44:	00000000 	nop
+  402b48:	0320f809 	jalr	t9
+  402b4c:	00000000 	nop
+  402b50:	8fbc0010 	lw	gp,16(sp)
+  402b54:	02c02021 	move	a0,s6
+  402b58:	34058b1a 	li	a1,0x8b1a
+  402b5c:	02603021 	move	a2,s3
+  402b60:	8f9982b8 	lw	t9,-32072(gp)
+  402b64:	00000000 	nop
+  402b68:	0320f809 	jalr	t9
+  402b6c:	00000000 	nop
+  402b70:	8fbc0010 	lw	gp,16(sp)
+  402b74:	04400045 	bltz	v0,402c8c <iw_set_basic_config+0x3e0>
+  402b78:	00000000 	nop
+  402b7c:	8e420088 	lw	v0,136(s2)
+  402b80:	00000000 	nop
+  402b84:	1040001c 	beqz	v0,402bf8 <iw_set_basic_config+0x34c>
+  402b88:	27a40018 	addiu	a0,sp,24
+  402b8c:	02a02821 	move	a1,s5
+  402b90:	24060010 	li	a2,16
+  402b94:	8f998188 	lw	t9,-32376(gp)
+  402b98:	00000000 	nop
+  402b9c:	0320f809 	jalr	t9
+  402ba0:	00000000 	nop
+  402ba4:	8fbc0010 	lw	gp,16(sp)
+  402ba8:	8e43008c 	lw	v1,140(s2)
+  402bac:	02a02821 	move	a1,s5
+  402bb0:	24060010 	li	a2,16
+  402bb4:	02602021 	move	a0,s3
+  402bb8:	afa30028 	sw	v1,40(sp)
+  402bbc:	8f998188 	lw	t9,-32376(gp)
+  402bc0:	00000000 	nop
+  402bc4:	0320f809 	jalr	t9
+  402bc8:	00000000 	nop
+  402bcc:	8fbc0010 	lw	gp,16(sp)
+  402bd0:	02c02021 	move	a0,s6
+  402bd4:	02603021 	move	a2,s3
+  402bd8:	34058b06 	li	a1,0x8b06
+  402bdc:	8f9982b8 	lw	t9,-32072(gp)
+  402be0:	00000000 	nop
+  402be4:	0320f809 	jalr	t9
+  402be8:	00000000 	nop
+  402bec:	8fbc0010 	lw	gp,16(sp)
+  402bf0:	0440000c 	bltz	v0,402c24 <iw_set_basic_config+0x378>
+  402bf4:	00000000 	nop
+  402bf8:	02801021 	move	v0,s4
+  402bfc:	8fbf0058 	lw	ra,88(sp)
+  402c00:	8fb60050 	lw	s6,80(sp)
+  402c04:	8fb5004c 	lw	s5,76(sp)
+  402c08:	8fb40048 	lw	s4,72(sp)
+  402c0c:	8fb30044 	lw	s3,68(sp)
+  402c10:	8fb20040 	lw	s2,64(sp)
+  402c14:	8fb1003c 	lw	s1,60(sp)
+  402c18:	8fb00038 	lw	s0,56(sp)
+  402c1c:	03e00008 	jr	ra
+  402c20:	27bd0060 	addiu	sp,sp,96
+  402c24:	8f9980a0 	lw	t9,-32608(gp)
+  402c28:	00000000 	nop
+  402c2c:	0320f809 	jalr	t9
+  402c30:	00000000 	nop
+  402c34:	8fbc0010 	lw	gp,16(sp)
+  402c38:	8c440000 	lw	a0,0(v0)
+  402c3c:	8f99828c 	lw	t9,-32116(gp)
+  402c40:	00000000 	nop
+  402c44:	0320f809 	jalr	t9
+  402c48:	00000000 	nop
+  402c4c:	8fbc0010 	lw	gp,16(sp)
+  402c50:	00000000 	nop
+  402c54:	8f8480e8 	lw	a0,-32536(gp)
+  402c58:	00000000 	nop
+  402c5c:	8c840000 	lw	a0,0(a0)
+  402c60:	8f858018 	lw	a1,-32744(gp)
+  402c64:	00000000 	nop
+  402c68:	24a50078 	addiu	a1,a1,120
+  402c6c:	00403021 	move	a2,v0
+  402c70:	8f9981c4 	lw	t9,-32316(gp)
+  402c74:	00000000 	nop
+  402c78:	0320f809 	jalr	t9
+  402c7c:	00000000 	nop
+  402c80:	8fbc0010 	lw	gp,16(sp)
+  402c84:	1000ffdc 	b	402bf8 <iw_set_basic_config+0x34c>
+  402c88:	2414ffff 	li	s4,-1
+  402c8c:	8f9980a0 	lw	t9,-32608(gp)
+  402c90:	00000000 	nop
+  402c94:	0320f809 	jalr	t9
+  402c98:	00000000 	nop
+  402c9c:	8fbc0010 	lw	gp,16(sp)
+  402ca0:	8c440000 	lw	a0,0(v0)
+  402ca4:	8f99828c 	lw	t9,-32116(gp)
+  402ca8:	00000000 	nop
+  402cac:	0320f809 	jalr	t9
+  402cb0:	00000000 	nop
+  402cb4:	8fbc0010 	lw	gp,16(sp)
+  402cb8:	00000000 	nop
+  402cbc:	8f8480e8 	lw	a0,-32536(gp)
+  402cc0:	00000000 	nop
+  402cc4:	8c840000 	lw	a0,0(a0)
+  402cc8:	8f858018 	lw	a1,-32744(gp)
+  402ccc:	00000000 	nop
+  402cd0:	24a5008c 	addiu	a1,a1,140
+  402cd4:	00403021 	move	a2,v0
+  402cd8:	8f9981c4 	lw	t9,-32316(gp)
+  402cdc:	00000000 	nop
+  402ce0:	0320f809 	jalr	t9
+  402ce4:	00000000 	nop
+  402ce8:	8fbc0010 	lw	gp,16(sp)
+  402cec:	1000ffa3 	b	402b7c <iw_set_basic_config+0x2d0>
+  402cf0:	2414ffff 	li	s4,-1
+  402cf4:	8f9980a0 	lw	t9,-32608(gp)
+  402cf8:	00000000 	nop
+  402cfc:	0320f809 	jalr	t9
+  402d00:	00000000 	nop
+  402d04:	8fbc0010 	lw	gp,16(sp)
+  402d08:	00408021 	move	s0,v0
+  402d0c:	8c440000 	lw	a0,0(v0)
+  402d10:	8f99828c 	lw	t9,-32116(gp)
+  402d14:	00000000 	nop
+  402d18:	0320f809 	jalr	t9
+  402d1c:	00000000 	nop
+  402d20:	8fbc0010 	lw	gp,16(sp)
+  402d24:	8e060000 	lw	a2,0(s0)
+  402d28:	8f8480e8 	lw	a0,-32536(gp)
+  402d2c:	00000000 	nop
+  402d30:	8c840000 	lw	a0,0(a0)
+  402d34:	8f858018 	lw	a1,-32744(gp)
+  402d38:	00000000 	nop
+  402d3c:	24a500a0 	addiu	a1,a1,160
+  402d40:	00403821 	move	a3,v0
+  402d44:	8f9981c4 	lw	t9,-32316(gp)
+  402d48:	00000000 	nop
+  402d4c:	0320f809 	jalr	t9
+  402d50:	00000000 	nop
+  402d54:	8fbc0010 	lw	gp,16(sp)
+  402d58:	1000ff68 	b	402afc <iw_set_basic_config+0x250>
+  402d5c:	2414ffff 	li	s4,-1
+  402d60:	8f9980a0 	lw	t9,-32608(gp)
+  402d64:	00000000 	nop
+  402d68:	0320f809 	jalr	t9
+  402d6c:	00000000 	nop
+  402d70:	8fbc0010 	lw	gp,16(sp)
+  402d74:	00408021 	move	s0,v0
+  402d78:	8c440000 	lw	a0,0(v0)
+  402d7c:	8f99828c 	lw	t9,-32116(gp)
+  402d80:	00000000 	nop
+  402d84:	0320f809 	jalr	t9
+  402d88:	00000000 	nop
+  402d8c:	8fbc0010 	lw	gp,16(sp)
+  402d90:	8e060000 	lw	a2,0(s0)
+  402d94:	8f8480e8 	lw	a0,-32536(gp)
+  402d98:	00000000 	nop
+  402d9c:	8c840000 	lw	a0,0(a0)
+  402da0:	8f858018 	lw	a1,-32744(gp)
+  402da4:	00000000 	nop
+  402da8:	24a500a0 	addiu	a1,a1,160
+  402dac:	00403821 	move	a3,v0
+  402db0:	8f9981c4 	lw	t9,-32316(gp)
+  402db4:	00000000 	nop
+  402db8:	0320f809 	jalr	t9
+  402dbc:	00000000 	nop
+  402dc0:	8fbc0010 	lw	gp,16(sp)
+  402dc4:	1000ff34 	b	402a98 <iw_set_basic_config+0x1ec>
+  402dc8:	2414ffff 	li	s4,-1
+  402dcc:	8f9980a0 	lw	t9,-32608(gp)
+  402dd0:	00000000 	nop
+  402dd4:	0320f809 	jalr	t9
+  402dd8:	00000000 	nop
+  402ddc:	8fbc0010 	lw	gp,16(sp)
+  402de0:	8c440000 	lw	a0,0(v0)
+  402de4:	8f99828c 	lw	t9,-32116(gp)
+  402de8:	00000000 	nop
+  402dec:	0320f809 	jalr	t9
+  402df0:	00000000 	nop
+  402df4:	8fbc0010 	lw	gp,16(sp)
+  402df8:	00000000 	nop
+  402dfc:	8f8480e8 	lw	a0,-32536(gp)
+  402e00:	00000000 	nop
+  402e04:	8c840000 	lw	a0,0(a0)
+  402e08:	8f858018 	lw	a1,-32744(gp)
+  402e0c:	00000000 	nop
+  402e10:	24a500b8 	addiu	a1,a1,184
+  402e14:	00403021 	move	a2,v0
+  402e18:	8f9981c4 	lw	t9,-32316(gp)
+  402e1c:	00000000 	nop
+  402e20:	0320f809 	jalr	t9
+  402e24:	00000000 	nop
+  402e28:	8fbc0010 	lw	gp,16(sp)
+  402e2c:	1000fefc 	b	402a20 <iw_set_basic_config+0x174>
+  402e30:	2414ffff 	li	s4,-1
+  402e34:	8f9980a0 	lw	t9,-32608(gp)
+  402e38:	00000000 	nop
+  402e3c:	0320f809 	jalr	t9
+  402e40:	00000000 	nop
+  402e44:	8fbc0010 	lw	gp,16(sp)
+  402e48:	8c440000 	lw	a0,0(v0)
+  402e4c:	8f99828c 	lw	t9,-32116(gp)
+  402e50:	00000000 	nop
+  402e54:	0320f809 	jalr	t9
+  402e58:	00000000 	nop
+  402e5c:	8fbc0010 	lw	gp,16(sp)
+  402e60:	00000000 	nop
+  402e64:	8f8480e8 	lw	a0,-32536(gp)
+  402e68:	00000000 	nop
+  402e6c:	8c840000 	lw	a0,0(a0)
+  402e70:	8f858018 	lw	a1,-32744(gp)
+  402e74:	00000000 	nop
+  402e78:	24a500cc 	addiu	a1,a1,204
+  402e7c:	00403021 	move	a2,v0
+  402e80:	8f9981c4 	lw	t9,-32316(gp)
+  402e84:	00000000 	nop
+  402e88:	0320f809 	jalr	t9
+  402e8c:	00000000 	nop
+  402e90:	8fbc0010 	lw	gp,16(sp)
+  402e94:	1000fec5 	b	4029ac <iw_set_basic_config+0x100>
+  402e98:	2414ffff 	li	s4,-1
+
+00402e9c <iw_protocol_compare>:
+  402e9c:	3c1c0fc0 	lui	gp,0xfc0
+  402ea0:	279c53b4 	addiu	gp,gp,21428
+  402ea4:	0399e021 	addu	gp,gp,t9
+  402ea8:	27bdffd0 	addiu	sp,sp,-48
+  402eac:	afbc0010 	sw	gp,16(sp)
+  402eb0:	afb20020 	sw	s2,32(sp)
+  402eb4:	afb1001c 	sw	s1,28(sp)
+  402eb8:	afbf0028 	sw	ra,40(sp)
+  402ebc:	afbc0024 	sw	gp,36(sp)
+  402ec0:	afb00018 	sw	s0,24(sp)
+  402ec4:	24060010 	li	a2,16
+  402ec8:	00808821 	move	s1,a0
+  402ecc:	00a09021 	move	s2,a1
+  402ed0:	8f99818c 	lw	t9,-32372(gp)
+  402ed4:	00000000 	nop
+  402ed8:	0320f809 	jalr	t9
+  402edc:	00000000 	nop
+  402ee0:	8fbc0010 	lw	gp,16(sp)
+  402ee4:	00401821 	move	v1,v0
+  402ee8:	10600017 	beqz	v1,402f48 <iw_protocol_compare+0xac>
+  402eec:	24020001 	li	v0,1
+  402ef0:	8f848018 	lw	a0,-32744(gp)
+  402ef4:	00000000 	nop
+  402ef8:	248400e0 	addiu	a0,a0,224
+  402efc:	8f998068 	lw	t9,-32664(gp)
+  402f00:	00000000 	nop
+  402f04:	0320f809 	jalr	t9
+  402f08:	00000000 	nop
+  402f0c:	8fbc0010 	lw	gp,16(sp)
+  402f10:	00408021 	move	s0,v0
+  402f14:	02202021 	move	a0,s1
+  402f18:	02003021 	move	a2,s0
+  402f1c:	8f858018 	lw	a1,-32744(gp)
+  402f20:	00000000 	nop
+  402f24:	24a500e0 	addiu	a1,a1,224
+  402f28:	8f99818c 	lw	t9,-32372(gp)
+  402f2c:	00000000 	nop
+  402f30:	0320f809 	jalr	t9
+  402f34:	00000000 	nop
+  402f38:	8fbc0010 	lw	gp,16(sp)
+  402f3c:	10400008 	beqz	v0,402f60 <iw_protocol_compare+0xc4>
+  402f40:	02402021 	move	a0,s2
+  402f44:	00001021 	move	v0,zero
+  402f48:	8fbf0028 	lw	ra,40(sp)
+  402f4c:	8fb20020 	lw	s2,32(sp)
+  402f50:	8fb1001c 	lw	s1,28(sp)
+  402f54:	8fb00018 	lw	s0,24(sp)
+  402f58:	03e00008 	jr	ra
+  402f5c:	27bd0030 	addiu	sp,sp,48
+  402f60:	8f858018 	lw	a1,-32744(gp)
+  402f64:	00000000 	nop
+  402f68:	24a500e0 	addiu	a1,a1,224
+  402f6c:	02003021 	move	a2,s0
+  402f70:	8f99818c 	lw	t9,-32372(gp)
+  402f74:	00000000 	nop
+  402f78:	0320f809 	jalr	t9
+  402f7c:	00000000 	nop
+  402f80:	8fbc0010 	lw	gp,16(sp)
+  402f84:	1440fff0 	bnez	v0,402f48 <iw_protocol_compare+0xac>
+  402f88:	00001021 	move	v0,zero
+  402f8c:	02302021 	addu	a0,s1,s0
+  402f90:	80820000 	lb	v0,0(a0)
+  402f94:	2403002d 	li	v1,45
+  402f98:	90850000 	lbu	a1,0(a0)
+  402f9c:	10430021 	beq	v0,v1,403024 <iw_protocol_compare+0x188>
+  402fa0:	02508021 	addu	s0,s2,s0
+  402fa4:	82020000 	lb	v0,0(s0)
+  402fa8:	00000000 	nop
+  402fac:	1043001b 	beq	v0,v1,40301c <iw_protocol_compare+0x180>
+  402fb0:	00000000 	nop
+  402fb4:	00052e00 	sll	a1,a1,0x18
+  402fb8:	00052e03 	sra	a1,a1,0x18
+  402fbc:	8f848018 	lw	a0,-32744(gp)
+  402fc0:	00000000 	nop
+  402fc4:	248400ec 	addiu	a0,a0,236
+  402fc8:	8f99805c 	lw	t9,-32676(gp)
+  402fcc:	00000000 	nop
+  402fd0:	0320f809 	jalr	t9
+  402fd4:	00000000 	nop
+  402fd8:	8fbc0010 	lw	gp,16(sp)
+  402fdc:	1040ffd9 	beqz	v0,402f44 <iw_protocol_compare+0xa8>
+  402fe0:	00000000 	nop
+  402fe4:	82050000 	lb	a1,0(s0)
+  402fe8:	8f848018 	lw	a0,-32744(gp)
+  402fec:	00000000 	nop
+  402ff0:	248400ec 	addiu	a0,a0,236
+  402ff4:	8f99805c 	lw	t9,-32676(gp)
+  402ff8:	00000000 	nop
+  402ffc:	0320f809 	jalr	t9
+  403000:	00000000 	nop
+  403004:	8fbc0010 	lw	gp,16(sp)
+  403008:	00401821 	move	v1,v0
+  40300c:	1460ffce 	bnez	v1,402f48 <iw_protocol_compare+0xac>
+  403010:	24020001 	li	v0,1
+  403014:	1000ffcc 	b	402f48 <iw_protocol_compare+0xac>
+  403018:	00001021 	move	v0,zero
+  40301c:	1000ffe5 	b	402fb4 <iw_protocol_compare+0x118>
+  403020:	26100001 	addiu	s0,s0,1
+  403024:	90850001 	lbu	a1,1(a0)
+  403028:	1000ffde 	b	402fa4 <iw_protocol_compare+0x108>
+  40302c:	00000000 	nop
+
+00403030 <iw_float2freq>:
+  403030:	3c1c0fc0 	lui	gp,0xfc0
+  403034:	279c5220 	addiu	gp,gp,21024
+  403038:	0399e021 	addu	gp,gp,t9
+  40303c:	8f818018 	lw	at,-32744(gp)
+  403040:	00000000 	nop
+  403044:	c42100f0 	lwc1	$f1,240(at)
+  403048:	c42000f4 	lwc1	$f0,244(at)
+  40304c:	00000000 	nop
+  403050:	462c003c 	c.lt.d	$f0,$f12
+  403054:	00000000 	nop
+  403058:	4500000c 	bc1f	40308c <iw_float2freq+0x5c>
+  40305c:	a4c00004 	sh	zero,4(a2)
+  403060:	3c014024 	lui	at,0x4024
+  403064:	44811800 	mtc1	at,$f3
+  403068:	44801000 	mtc1	zero,$f2
+  40306c:	00001821 	move	v1,zero
+  403070:	46226303 	div.d	$f12,$f12,$f2
+  403074:	24620001 	addiu	v0,v1,1
+  403078:	462c003c 	c.lt.d	$f0,$f12
+  40307c:	00000000 	nop
+  403080:	4501fffb 	bc1t	403070 <iw_float2freq+0x40>
+  403084:	00401821 	move	v1,v0
+  403088:	a4c20004 	sh	v0,4(a2)
+  40308c:	4442f800 	cfc1	v0,$31
+  403090:	4442f800 	cfc1	v0,$31
+  403094:	00000000 	nop
+  403098:	34410003 	ori	at,v0,0x3
+  40309c:	38210002 	xori	at,at,0x2
+  4030a0:	44c1f800 	ctc1	at,$31
+  4030a4:	00000000 	nop
+  4030a8:	46206024 	cvt.w.d	$f0,$f12
+  4030ac:	44c2f800 	ctc1	v0,$31
+  4030b0:	00000000 	nop
+  4030b4:	e4c00000 	swc1	$f0,0(a2)
+  4030b8:	03e00008 	jr	ra
+  4030bc:	00000000 	nop
+
+004030c0 <iw_freq2float>:
+  4030c0:	3c1c0fc0 	lui	gp,0xfc0
+  4030c4:	279c5190 	addiu	gp,gp,20880
+  4030c8:	0399e021 	addu	gp,gp,t9
+  4030cc:	8c820000 	lw	v0,0(a0)
+  4030d0:	00000000 	nop
+  4030d4:	44821000 	mtc1	v0,$f2
+  4030d8:	00000000 	nop
+  4030dc:	0440000d 	bltz	v0,403114 <iw_freq2float+0x54>
+  4030e0:	468010a1 	cvt.d.w	$f2,$f2
+  4030e4:	94820004 	lhu	v0,4(a0)
+  4030e8:	00000000 	nop
+  4030ec:	10400007 	beqz	v0,40310c <iw_freq2float+0x4c>
+  4030f0:	00000000 	nop
+  4030f4:	3c014024 	lui	at,0x4024
+  4030f8:	44810800 	mtc1	at,$f1
+  4030fc:	44800000 	mtc1	zero,$f0
+  403100:	2442ffff 	addiu	v0,v0,-1
+  403104:	1440fffe 	bnez	v0,403100 <iw_freq2float+0x40>
+  403108:	46201082 	mul.d	$f2,$f2,$f0
+  40310c:	03e00008 	jr	ra
+  403110:	46201006 	mov.d	$f0,$f2
+  403114:	3c0141f0 	lui	at,0x41f0
+  403118:	44810800 	mtc1	at,$f1
+  40311c:	44800000 	mtc1	zero,$f0
+  403120:	1000fff0 	b	4030e4 <iw_freq2float+0x24>
+  403124:	46201080 	add.d	$f2,$f2,$f0
+
+00403128 <iw_print_freq>:
+  403128:	3c1c0fc0 	lui	gp,0xfc0
+  40312c:	279c5128 	addiu	gp,gp,20776
+  403130:	0399e021 	addu	gp,gp,t9
+  403134:	27bdffe0 	addiu	sp,sp,-32
+  403138:	afbc0010 	sw	gp,16(sp)
+  40313c:	44870000 	mtc1	a3,$f0
+  403140:	44860800 	mtc1	a2,$f1
+  403144:	8f818018 	lw	at,-32744(gp)
+  403148:	00000000 	nop
+  40314c:	c4270138 	lwc1	$f7,312(at)
+  403150:	c426013c 	lwc1	$f6,316(at)
+  403154:	afbf001c 	sw	ra,28(sp)
+  403158:	4626003c 	c.lt.d	$f0,$f6
+  40315c:	8f818018 	lw	at,-32744(gp)
+  403160:	00000000 	nop
+  403164:	c4230140 	lwc1	$f3,320(at)
+  403168:	c4220144 	lwc1	$f2,324(at)
+  40316c:	8f858018 	lw	a1,-32744(gp)
+  403170:	00000000 	nop
+  403174:	24a500f8 	addiu	a1,a1,248
+  403178:	4500000a 	bc1f	4031a4 <iw_print_freq+0x7c>
+  40317c:	afbc0018 	sw	gp,24(sp)
+  403180:	8f9980fc 	lw	t9,-32516(gp)
+  403184:	00000000 	nop
+  403188:	0320f809 	jalr	t9
+  40318c:	00000000 	nop
+  403190:	8fbc0010 	lw	gp,16(sp)
+  403194:	8fbf001c 	lw	ra,28(sp)
+  403198:	00000000 	nop
+  40319c:	03e00008 	jr	ra
+  4031a0:	27bd0020 	addiu	sp,sp,32
+  4031a4:	4620103e 	c.le.d	$f2,$f0
+  4031a8:	8f818018 	lw	at,-32744(gp)
+  4031ac:	00000000 	nop
+  4031b0:	c4250148 	lwc1	$f5,328(at)
+  4031b4:	c424014c 	lwc1	$f4,332(at)
+  4031b8:	8f858018 	lw	a1,-32744(gp)
+  4031bc:	00000000 	nop
+  4031c0:	24a50104 	addiu	a1,a1,260
+  4031c4:	45000006 	bc1f	4031e0 <iw_print_freq+0xb8>
+  4031c8:	00000000 	nop
+  4031cc:	46220003 	div.d	$f0,$f0,$f2
+  4031d0:	44070000 	mfc1	a3,$f0
+  4031d4:	44060800 	mfc1	a2,$f1
+  4031d8:	1000ffe9 	b	403180 <iw_print_freq+0x58>
+  4031dc:	00000000 	nop
+  4031e0:	4620203e 	c.le.d	$f4,$f0
+  4031e4:	8f858018 	lw	a1,-32744(gp)
+  4031e8:	00000000 	nop
+  4031ec:	24a50114 	addiu	a1,a1,276
+  4031f0:	45000006 	bc1f	40320c <iw_print_freq+0xe4>
+  4031f4:	00000000 	nop
+  4031f8:	46240003 	div.d	$f0,$f0,$f4
+  4031fc:	44070000 	mfc1	a3,$f0
+  403200:	44060800 	mfc1	a2,$f1
+  403204:	1000ffde 	b	403180 <iw_print_freq+0x58>
+  403208:	00000000 	nop
+  40320c:	46260003 	div.d	$f0,$f0,$f6
+  403210:	8f858018 	lw	a1,-32744(gp)
+  403214:	00000000 	nop
+  403218:	24a50124 	addiu	a1,a1,292
+  40321c:	44070000 	mfc1	a3,$f0
+  403220:	44060800 	mfc1	a2,$f1
+  403224:	8f9980fc 	lw	t9,-32516(gp)
+  403228:	00000000 	nop
+  40322c:	0320f809 	jalr	t9
+  403230:	00000000 	nop
+  403234:	8fbc0010 	lw	gp,16(sp)
+  403238:	1000ffd6 	b	403194 <iw_print_freq+0x6c>
+  40323c:	00000000 	nop
+
+00403240 <iw_freq_to_channel>:
+  403240:	3c1c0fc0 	lui	gp,0xfc0
+  403244:	279c5010 	addiu	gp,gp,20496
+  403248:	0399e021 	addu	gp,gp,t9
+  40324c:	27bdffc8 	addiu	sp,sp,-56
+  403250:	afbc0010 	sw	gp,16(sp)
+  403254:	8f818018 	lw	at,-32744(gp)
+  403258:	00000000 	nop
+  40325c:	c4210150 	lwc1	$f1,336(at)
+  403260:	c4200154 	lwc1	$f0,340(at)
+  403264:	e7b50030 	swc1	$f21,48(sp)
+  403268:	e7b40034 	swc1	$f20,52(sp)
+  40326c:	46206506 	mov.d	$f20,$f12
+  403270:	4620a03c 	c.lt.d	$f20,$f0
+  403274:	afb20020 	sw	s2,32(sp)
+  403278:	afb00018 	sw	s0,24(sp)
+  40327c:	afbf0028 	sw	ra,40(sp)
+  403280:	afbc0024 	sw	gp,36(sp)
+  403284:	afb1001c 	sw	s1,28(sp)
+  403288:	00c09021 	move	s2,a2
+  40328c:	4500000a 	bc1f	4032b8 <iw_freq_to_channel+0x78>
+  403290:	00008021 	move	s0,zero
+  403294:	2402ffff 	li	v0,-1
+  403298:	8fbf0028 	lw	ra,40(sp)
+  40329c:	8fb20020 	lw	s2,32(sp)
+  4032a0:	8fb1001c 	lw	s1,28(sp)
+  4032a4:	8fb00018 	lw	s0,24(sp)
+  4032a8:	c7b50030 	lwc1	$f21,48(sp)
+  4032ac:	c7b40034 	lwc1	$f20,52(sp)
+  4032b0:	03e00008 	jr	ra
+  4032b4:	27bd0038 	addiu	sp,sp,56
+  4032b8:	9242000e 	lbu	v0,14(s2)
+  4032bc:	001088c0 	sll	s1,s0,0x3
+  4032c0:	02512021 	addu	a0,s2,s1
+  4032c4:	0202102a 	slt	v0,s0,v0
+  4032c8:	24840010 	addiu	a0,a0,16
+  4032cc:	14400003 	bnez	v0,4032dc <iw_freq_to_channel+0x9c>
+  4032d0:	26100001 	addiu	s0,s0,1
+  4032d4:	1000fff0 	b	403298 <iw_freq_to_channel+0x58>
+  4032d8:	2402fffe 	li	v0,-2
+  4032dc:	8f9980c4 	lw	t9,-32572(gp)
+  4032e0:	00000000 	nop
+  4032e4:	0320f809 	jalr	t9
+  4032e8:	00000000 	nop
+  4032ec:	8fbc0010 	lw	gp,16(sp)
+  4032f0:	4620a032 	c.eq.d	$f20,$f0
+  4032f4:	00000000 	nop
+  4032f8:	4500ffef 	bc1f	4032b8 <iw_freq_to_channel+0x78>
+  4032fc:	02321821 	addu	v1,s1,s2
+  403300:	90620016 	lbu	v0,22(v1)
+  403304:	1000ffe4 	b	403298 <iw_freq_to_channel+0x58>
+  403308:	00000000 	nop
+
+0040330c <iw_print_bitrate>:
+  40330c:	3c1c0fc0 	lui	gp,0xfc0
+  403310:	279c4f44 	addiu	gp,gp,20292
+  403314:	0399e021 	addu	gp,gp,t9
+  403318:	27bdffe0 	addiu	sp,sp,-32
+  40331c:	afbc0010 	sw	gp,16(sp)
+  403320:	8f818018 	lw	at,-32744(gp)
+  403324:	00000000 	nop
+  403328:	c4210170 	lwc1	$f1,368(at)
+  40332c:	c4200174 	lwc1	$f0,372(at)
+  403330:	44851000 	mtc1	a1,$f2
+  403334:	00000000 	nop
+  403338:	468010a1 	cvt.d.w	$f2,$f2
+  40333c:	4622003e 	c.le.d	$f0,$f2
+  403340:	afbf001c 	sw	ra,28(sp)
+  403344:	8f818018 	lw	at,-32744(gp)
+  403348:	00000000 	nop
+  40334c:	c4250178 	lwc1	$f5,376(at)
+  403350:	c424017c 	lwc1	$f4,380(at)
+  403354:	8f858018 	lw	a1,-32744(gp)
+  403358:	00000000 	nop
+  40335c:	24a50158 	addiu	a1,a1,344
+  403360:	4500000d 	bc1f	403398 <iw_print_bitrate+0x8c>
+  403364:	afbc0018 	sw	gp,24(sp)
+  403368:	46201003 	div.d	$f0,$f2,$f0
+  40336c:	44070000 	mfc1	a3,$f0
+  403370:	44060800 	mfc1	a2,$f1
+  403374:	8f9980fc 	lw	t9,-32516(gp)
+  403378:	00000000 	nop
+  40337c:	0320f809 	jalr	t9
+  403380:	00000000 	nop
+  403384:	8fbc0010 	lw	gp,16(sp)
+  403388:	8fbf001c 	lw	ra,28(sp)
+  40338c:	00000000 	nop
+  403390:	03e00008 	jr	ra
+  403394:	27bd0020 	addiu	sp,sp,32
+  403398:	4622203e 	c.le.d	$f4,$f2
+  40339c:	8f858018 	lw	a1,-32744(gp)
+  4033a0:	00000000 	nop
+  4033a4:	24a50160 	addiu	a1,a1,352
+  4033a8:	45000003 	bc1f	4033b8 <iw_print_bitrate+0xac>
+  4033ac:	00000000 	nop
+  4033b0:	1000ffee 	b	40336c <iw_print_bitrate+0x60>
+  4033b4:	46241003 	div.d	$f0,$f2,$f4
+  4033b8:	8f818018 	lw	at,-32744(gp)
+  4033bc:	00000000 	nop
+  4033c0:	c4210180 	lwc1	$f1,384(at)
+  4033c4:	c4200184 	lwc1	$f0,388(at)
+  4033c8:	8f858018 	lw	a1,-32744(gp)
+  4033cc:	00000000 	nop
+  4033d0:	24a50168 	addiu	a1,a1,360
+  4033d4:	46201003 	div.d	$f0,$f2,$f0
+  4033d8:	44070000 	mfc1	a3,$f0
+  4033dc:	44060800 	mfc1	a2,$f1
+  4033e0:	8f9980fc 	lw	t9,-32516(gp)
+  4033e4:	00000000 	nop
+  4033e8:	0320f809 	jalr	t9
+  4033ec:	00000000 	nop
+  4033f0:	8fbc0010 	lw	gp,16(sp)
+  4033f4:	1000ffe4 	b	403388 <iw_print_bitrate+0x7c>
+  4033f8:	00000000 	nop
+
+004033fc <iw_dbm2mwatt>:
+  4033fc:	3c1c0fc0 	lui	gp,0xfc0
+  403400:	279c4e54 	addiu	gp,gp,20052
+  403404:	0399e021 	addu	gp,gp,t9
+  403408:	03e00008 	jr	ra
+  40340c:	00000000 	nop
+
+00403410 <iw_mwatt2dbm>:
+  403410:	3c1c0fc0 	lui	gp,0xfc0
+  403414:	279c4e40 	addiu	gp,gp,20032
+  403418:	0399e021 	addu	gp,gp,t9
+  40341c:	03e00008 	jr	ra
+  403420:	00000000 	nop
+
+00403424 <iw_get_stats>:
+  403424:	3c1c0fc0 	lui	gp,0xfc0
+  403428:	279c4e2c 	addiu	gp,gp,20012
+  40342c:	0399e021 	addu	gp,gp,t9
+  403430:	27bdffb0 	addiu	sp,sp,-80
+  403434:	afbc0010 	sw	gp,16(sp)
+  403438:	00c01821 	move	v1,a2
+  40343c:	afb20040 	sw	s2,64(sp)
+  403440:	24060010 	li	a2,16
+  403444:	00809021 	move	s2,a0
+  403448:	24020001 	li	v0,1
+  40344c:	27a40018 	addiu	a0,sp,24
+  403450:	afbf0048 	sw	ra,72(sp)
+  403454:	afb1003c 	sw	s1,60(sp)
+  403458:	afb00038 	sw	s0,56(sp)
+  40345c:	afbc0044 	sw	gp,68(sp)
+  403460:	afa30028 	sw	v1,40(sp)
+  403464:	a7a2002e 	sh	v0,46(sp)
+  403468:	a7a0002c 	sh	zero,44(sp)
+  40346c:	00a08021 	move	s0,a1
+  403470:	8f998188 	lw	t9,-32376(gp)
+  403474:	00000000 	nop
+  403478:	0320f809 	jalr	t9
+  40347c:	00000000 	nop
+  403480:	8fbc0010 	lw	gp,16(sp)
+  403484:	27b10018 	addiu	s1,sp,24
+  403488:	02002821 	move	a1,s0
+  40348c:	02202021 	move	a0,s1
+  403490:	24060010 	li	a2,16
+  403494:	8f998188 	lw	t9,-32376(gp)
+  403498:	00000000 	nop
+  40349c:	0320f809 	jalr	t9
+  4034a0:	00000000 	nop
+  4034a4:	8fbc0010 	lw	gp,16(sp)
+  4034a8:	02402021 	move	a0,s2
+  4034ac:	02203021 	move	a2,s1
+  4034b0:	34058b0f 	li	a1,0x8b0f
+  4034b4:	8f9982b8 	lw	t9,-32072(gp)
+  4034b8:	00000000 	nop
+  4034bc:	0320f809 	jalr	t9
+  4034c0:	00000000 	nop
+  4034c4:	8fbc0010 	lw	gp,16(sp)
+  4034c8:	28420000 	slti	v0,v0,0
+  4034cc:	8fbf0048 	lw	ra,72(sp)
+  4034d0:	8fb20040 	lw	s2,64(sp)
+  4034d4:	8fb1003c 	lw	s1,60(sp)
+  4034d8:	8fb00038 	lw	s0,56(sp)
+  4034dc:	00021023 	negu	v0,v0
+  4034e0:	03e00008 	jr	ra
+  4034e4:	27bd0050 	addiu	sp,sp,80
+
+004034e8 <iw_print_stats>:
+  4034e8:	3c1c0fc0 	lui	gp,0xfc0
+  4034ec:	279c4d68 	addiu	gp,gp,19816
+  4034f0:	0399e021 	addu	gp,gp,t9
+  4034f4:	27bdffc8 	addiu	sp,sp,-56
+  4034f8:	afbc0028 	sw	gp,40(sp)
+  4034fc:	afbf0034 	sw	ra,52(sp)
+  403500:	afbc0030 	sw	gp,48(sp)
+  403504:	00805021 	move	t2,a0
+  403508:	00a04021 	move	t0,a1
+  40350c:	10e0004e 	beqz	a3,403648 <iw_print_stats+0x160>
+  403510:	00c04821 	move	t1,a2
+  403514:	91030001 	lbu	v1,1(t0)
+  403518:	00000000 	nop
+  40351c:	1060004a 	beqz	v1,403648 <iw_print_stats+0x160>
+  403520:	00000000 	nop
+  403524:	91220095 	lbu	v0,149(t1)
+  403528:	00000000 	nop
+  40352c:	0043102b 	sltu	v0,v0,v1
+  403530:	10400023 	beqz	v0,4035c0 <iw_print_stats+0xd8>
+  403534:	00000000 	nop
+  403538:	91040002 	lbu	a0,2(t0)
+  40353c:	91020003 	lbu	v0,3(t0)
+  403540:	2463ff00 	addiu	v1,v1,-256
+  403544:	2484ff00 	addiu	a0,a0,-256
+  403548:	afa30010 	sw	v1,16(sp)
+  40354c:	afa40014 	sw	a0,20(sp)
+  403550:	30420007 	andi	v0,v0,0x7
+  403554:	91270094 	lbu	a3,148(t1)
+  403558:	91060000 	lbu	a2,0(t0)
+  40355c:	10400013 	beqz	v0,4035ac <iw_print_stats+0xc4>
+  403560:	00000000 	nop
+  403564:	8f828018 	lw	v0,-32744(gp)
+  403568:	00000000 	nop
+  40356c:	24420188 	addiu	v0,v0,392
+  403570:	00000000 	nop
+  403574:	afa20018 	sw	v0,24(sp)
+  403578:	01402021 	move	a0,t2
+  40357c:	8f858018 	lw	a1,-32744(gp)
+  403580:	00000000 	nop
+  403584:	24a50194 	addiu	a1,a1,404
+  403588:	8f9980fc 	lw	t9,-32516(gp)
+  40358c:	00000000 	nop
+  403590:	0320f809 	jalr	t9
+  403594:	00000000 	nop
+  403598:	8fbc0028 	lw	gp,40(sp)
+  40359c:	8fbf0034 	lw	ra,52(sp)
+  4035a0:	00000000 	nop
+  4035a4:	03e00008 	jr	ra
+  4035a8:	27bd0038 	addiu	sp,sp,56
+  4035ac:	8f828018 	lw	v0,-32744(gp)
+  4035b0:	00000000 	nop
+  4035b4:	244201d0 	addiu	v0,v0,464
+  4035b8:	1000ffef 	b	403578 <iw_print_stats+0x90>
+  4035bc:	afa20018 	sw	v0,24(sp)
+  4035c0:	91020003 	lbu	v0,3(t0)
+  4035c4:	91260096 	lbu	a2,150(t1)
+  4035c8:	91240095 	lbu	a0,149(t1)
+  4035cc:	91050002 	lbu	a1,2(t0)
+  4035d0:	30420007 	andi	v0,v0,0x7
+  4035d4:	afa30010 	sw	v1,16(sp)
+  4035d8:	afa40014 	sw	a0,20(sp)
+  4035dc:	afa50018 	sw	a1,24(sp)
+  4035e0:	afa6001c 	sw	a2,28(sp)
+  4035e4:	91060000 	lbu	a2,0(t0)
+  4035e8:	91270094 	lbu	a3,148(t1)
+  4035ec:	10400011 	beqz	v0,403634 <iw_print_stats+0x14c>
+  4035f0:	00000000 	nop
+  4035f4:	8f828018 	lw	v0,-32744(gp)
+  4035f8:	00000000 	nop
+  4035fc:	24420188 	addiu	v0,v0,392
+  403600:	00000000 	nop
+  403604:	afa20020 	sw	v0,32(sp)
+  403608:	01402021 	move	a0,t2
+  40360c:	8f858018 	lw	a1,-32744(gp)
+  403610:	00000000 	nop
+  403614:	24a501d4 	addiu	a1,a1,468
+  403618:	8f9980fc 	lw	t9,-32516(gp)
+  40361c:	00000000 	nop
+  403620:	0320f809 	jalr	t9
+  403624:	00000000 	nop
+  403628:	8fbc0028 	lw	gp,40(sp)
+  40362c:	1000ffdb 	b	40359c <iw_print_stats+0xb4>
+  403630:	00000000 	nop
+  403634:	8f828018 	lw	v0,-32744(gp)
+  403638:	00000000 	nop
+  40363c:	244201d0 	addiu	v0,v0,464
+  403640:	1000fff1 	b	403608 <iw_print_stats+0x120>
+  403644:	afa20020 	sw	v0,32(sp)
+  403648:	91020003 	lbu	v0,3(t0)
+  40364c:	91030002 	lbu	v1,2(t0)
+  403650:	30420007 	andi	v0,v0,0x7
+  403654:	afa30010 	sw	v1,16(sp)
+  403658:	91060000 	lbu	a2,0(t0)
+  40365c:	91070001 	lbu	a3,1(t0)
+  403660:	10400011 	beqz	v0,4036a8 <iw_print_stats+0x1c0>
+  403664:	00000000 	nop
+  403668:	8f828018 	lw	v0,-32744(gp)
+  40366c:	00000000 	nop
+  403670:	24420188 	addiu	v0,v0,392
+  403674:	00000000 	nop
+  403678:	afa20014 	sw	v0,20(sp)
+  40367c:	01402021 	move	a0,t2
+  403680:	8f858018 	lw	a1,-32744(gp)
+  403684:	00000000 	nop
+  403688:	24a5020c 	addiu	a1,a1,524
+  40368c:	8f9980fc 	lw	t9,-32516(gp)
+  403690:	00000000 	nop
+  403694:	0320f809 	jalr	t9
+  403698:	00000000 	nop
+  40369c:	8fbc0028 	lw	gp,40(sp)
+  4036a0:	1000ffbe 	b	40359c <iw_print_stats+0xb4>
+  4036a4:	00000000 	nop
+  4036a8:	8f828018 	lw	v0,-32744(gp)
+  4036ac:	00000000 	nop
+  4036b0:	244201d0 	addiu	v0,v0,464
+  4036b4:	1000fff1 	b	40367c <iw_print_stats+0x194>
+  4036b8:	afa20014 	sw	v0,20(sp)
+
+004036bc <iw_print_key>:
+  4036bc:	3c1c0fc0 	lui	gp,0xfc0
+  4036c0:	279c4b94 	addiu	gp,gp,19348
+  4036c4:	0399e021 	addu	gp,gp,t9
+  4036c8:	27bdffd0 	addiu	sp,sp,-48
+  4036cc:	afbc0010 	sw	gp,16(sp)
+  4036d0:	30e70800 	andi	a3,a3,0x800
+  4036d4:	afb30024 	sw	s3,36(sp)
+  4036d8:	afb20020 	sw	s2,32(sp)
+  4036dc:	afb00018 	sw	s0,24(sp)
+  4036e0:	afbf002c 	sw	ra,44(sp)
+  4036e4:	afbc0028 	sw	gp,40(sp)
+  4036e8:	afb1001c 	sw	s1,28(sp)
+  4036ec:	00808021 	move	s0,a0
+  4036f0:	00a09821 	move	s3,a1
+  4036f4:	10e00038 	beqz	a3,4037d8 <iw_print_key+0x11c>
+  4036f8:	00c09021 	move	s2,a2
+  4036fc:	1a40002b 	blez	s2,4037ac <iw_print_key+0xf0>
+  403700:	24110001 	li	s1,1
+  403704:	8f838018 	lw	v1,-32744(gp)
+  403708:	00000000 	nop
+  40370c:	2463023c 	addiu	v1,v1,572
+  403710:	00000000 	nop
+  403714:	80660000 	lb	a2,0(v1)
+  403718:	80670001 	lb	a3,1(v1)
+  40371c:	80680002 	lb	t0,2(v1)
+  403720:	a2060000 	sb	a2,0(s0)
+  403724:	a2070001 	sb	a3,1(s0)
+  403728:	0232102a 	slt	v0,s1,s2
+  40372c:	a2080002 	sb	t0,2(s0)
+  403730:	10400011 	beqz	v0,403778 <iw_print_key+0xbc>
+  403734:	26100002 	addiu	s0,s0,2
+  403738:	00602821 	move	a1,v1
+  40373c:	8f848018 	lw	a0,-32744(gp)
+  403740:	00000000 	nop
+  403744:	24840240 	addiu	a0,a0,576
+  403748:	32220001 	andi	v0,s1,0x1
+  40374c:	26310001 	addiu	s1,s1,1
+  403750:	10400010 	beqz	v0,403794 <iw_print_key+0xd8>
+  403754:	0232182a 	slt	v1,s1,s2
+  403758:	80a60000 	lb	a2,0(a1)
+  40375c:	80a70001 	lb	a3,1(a1)
+  403760:	80a80002 	lb	t0,2(a1)
+  403764:	a2060000 	sb	a2,0(s0)
+  403768:	a2070001 	sb	a3,1(s0)
+  40376c:	a2080002 	sb	t0,2(s0)
+  403770:	1460fff5 	bnez	v1,403748 <iw_print_key+0x8c>
+  403774:	26100002 	addiu	s0,s0,2
+  403778:	8fbf002c 	lw	ra,44(sp)
+  40377c:	8fb30024 	lw	s3,36(sp)
+  403780:	8fb20020 	lw	s2,32(sp)
+  403784:	8fb1001c 	lw	s1,28(sp)
+  403788:	8fb00018 	lw	s0,24(sp)
+  40378c:	03e00008 	jr	ra
+  403790:	27bd0030 	addiu	sp,sp,48
+  403794:	80860000 	lb	a2,0(a0)
+  403798:	80870001 	lb	a3,1(a0)
+  40379c:	a2060000 	sb	a2,0(s0)
+  4037a0:	a2070001 	sb	a3,1(s0)
+  4037a4:	1000ffec 	b	403758 <iw_print_key+0x9c>
+  4037a8:	26100001 	addiu	s0,s0,1
+  4037ac:	8f858018 	lw	a1,-32744(gp)
+  4037b0:	00000000 	nop
+  4037b4:	24a50244 	addiu	a1,a1,580
+  4037b8:	00000000 	nop
+  4037bc:	80a20000 	lb	v0,0(a1)
+  4037c0:	80a30001 	lb	v1,1(a1)
+  4037c4:	80a40002 	lb	a0,2(a1)
+  4037c8:	a2020000 	sb	v0,0(s0)
+  4037cc:	a2030001 	sb	v1,1(s0)
+  4037d0:	1000ffe9 	b	403778 <iw_print_key+0xbc>
+  4037d4:	a2040002 	sb	a0,2(s0)
+  4037d8:	92660000 	lbu	a2,0(s3)
+  4037dc:	02002021 	move	a0,s0
+  4037e0:	8f858018 	lw	a1,-32744(gp)
+  4037e4:	00000000 	nop
+  4037e8:	24a50248 	addiu	a1,a1,584
+  4037ec:	24110001 	li	s1,1
+  4037f0:	8f9980fc 	lw	t9,-32516(gp)
+  4037f4:	00000000 	nop
+  4037f8:	0320f809 	jalr	t9
+  4037fc:	00000000 	nop
+  403800:	8fbc0010 	lw	gp,16(sp)
+  403804:	0232182a 	slt	v1,s1,s2
+  403808:	1060ffdb 	beqz	v1,403778 <iw_print_key+0xbc>
+  40380c:	26100002 	addiu	s0,s0,2
+  403810:	32220001 	andi	v0,s1,0x1
+  403814:	02711821 	addu	v1,s3,s1
+  403818:	8f858018 	lw	a1,-32744(gp)
+  40381c:	00000000 	nop
+  403820:	24a50248 	addiu	a1,a1,584
+  403824:	1040000d 	beqz	v0,40385c <iw_print_key+0x1a0>
+  403828:	26310001 	addiu	s1,s1,1
+  40382c:	90660000 	lbu	a2,0(v1)
+  403830:	02002021 	move	a0,s0
+  403834:	8f9980fc 	lw	t9,-32516(gp)
+  403838:	00000000 	nop
+  40383c:	0320f809 	jalr	t9
+  403840:	00000000 	nop
+  403844:	8fbc0010 	lw	gp,16(sp)
+  403848:	0232182a 	slt	v1,s1,s2
+  40384c:	1460fff0 	bnez	v1,403810 <iw_print_key+0x154>
+  403850:	26100002 	addiu	s0,s0,2
+  403854:	1000ffc8 	b	403778 <iw_print_key+0xbc>
+  403858:	00000000 	nop
+  40385c:	8f848018 	lw	a0,-32744(gp)
+  403860:	00000000 	nop
+  403864:	24840240 	addiu	a0,a0,576
+  403868:	80840000 	lb	a0,0(a0)
+  40386c:	8f868018 	lw	a2,-32744(gp)
+  403870:	00000000 	nop
+  403874:	24c60240 	addiu	a2,a2,576
+  403878:	80c60001 	lb	a2,1(a2)
+  40387c:	a2040000 	sb	a0,0(s0)
+  403880:	a2060001 	sb	a2,1(s0)
+  403884:	1000ffe9 	b	40382c <iw_print_key+0x170>
+  403888:	26100001 	addiu	s0,s0,1
+
+0040388c <iw_pass_key>:
+  40388c:	3c1c0fc0 	lui	gp,0xfc0
+  403890:	279c49c4 	addiu	gp,gp,18884
+  403894:	0399e021 	addu	gp,gp,t9
+  403898:	27bdffe0 	addiu	sp,sp,-32
+  40389c:	afbc0010 	sw	gp,16(sp)
+  4038a0:	8f8780e8 	lw	a3,-32536(gp)
+  4038a4:	00000000 	nop
+  4038a8:	8ce70000 	lw	a3,0(a3)
+  4038ac:	8f848018 	lw	a0,-32744(gp)
+  4038b0:	00000000 	nop
+  4038b4:	24840250 	addiu	a0,a0,592
+  4038b8:	24050001 	li	a1,1
+  4038bc:	24060022 	li	a2,34
+  4038c0:	afbf001c 	sw	ra,28(sp)
+  4038c4:	afbc0018 	sw	gp,24(sp)
+  4038c8:	8f9980c8 	lw	t9,-32568(gp)
+  4038cc:	00000000 	nop
+  4038d0:	0320f809 	jalr	t9
+  4038d4:	00000000 	nop
+  4038d8:	8fbc0010 	lw	gp,16(sp)
+  4038dc:	8fbf001c 	lw	ra,28(sp)
+  4038e0:	2402ffff 	li	v0,-1
+  4038e4:	03e00008 	jr	ra
+  4038e8:	27bd0020 	addiu	sp,sp,32
+
+004038ec <iw_in_key>:
+  4038ec:	3c1c0fc0 	lui	gp,0xfc0
+  4038f0:	279c4964 	addiu	gp,gp,18788
+  4038f4:	0399e021 	addu	gp,gp,t9
+  4038f8:	27bdffc0 	addiu	sp,sp,-64
+  4038fc:	afbc0010 	sw	gp,16(sp)
+  403900:	afb3002c 	sw	s3,44(sp)
+  403904:	afb10024 	sw	s1,36(sp)
+  403908:	afb00020 	sw	s0,32(sp)
+  40390c:	afbf003c 	sw	ra,60(sp)
+  403910:	afbc0038 	sw	gp,56(sp)
+  403914:	afb50034 	sw	s5,52(sp)
+  403918:	afb40030 	sw	s4,48(sp)
+  40391c:	afb20028 	sw	s2,40(sp)
+  403920:	00a09821 	move	s3,a1
+  403924:	24060002 	li	a2,2
+  403928:	8f858018 	lw	a1,-32744(gp)
+  40392c:	00000000 	nop
+  403930:	24a50274 	addiu	a1,a1,628
+  403934:	00808021 	move	s0,a0
+  403938:	8f99818c 	lw	t9,-32372(gp)
+  40393c:	00000000 	nop
+  403940:	0320f809 	jalr	t9
+  403944:	00000000 	nop
+  403948:	8fbc0010 	lw	gp,16(sp)
+  40394c:	10400080 	beqz	v0,403b50 <iw_in_key+0x264>
+  403950:	00008821 	move	s1,zero
+  403954:	8f858018 	lw	a1,-32744(gp)
+  403958:	00000000 	nop
+  40395c:	24a50278 	addiu	a1,a1,632
+  403960:	02002021 	move	a0,s0
+  403964:	24060002 	li	a2,2
+  403968:	8f99818c 	lw	t9,-32372(gp)
+  40396c:	00000000 	nop
+  403970:	0320f809 	jalr	t9
+  403974:	00000000 	nop
+  403978:	8fbc0010 	lw	gp,16(sp)
+  40397c:	1040006c 	beqz	v0,403b30 <iw_in_key+0x244>
+  403980:	26040002 	addiu	a0,s0,2
+  403984:	02002021 	move	a0,s0
+  403988:	8f998068 	lw	t9,-32664(gp)
+  40398c:	00000000 	nop
+  403990:	0320f809 	jalr	t9
+  403994:	00000000 	nop
+  403998:	8fbc0010 	lw	gp,16(sp)
+  40399c:	24420001 	addiu	v0,v0,1
+  4039a0:	00402021 	move	a0,v0
+  4039a4:	8f998230 	lw	t9,-32208(gp)
+  4039a8:	00000000 	nop
+  4039ac:	0320f809 	jalr	t9
+  4039b0:	00000000 	nop
+  4039b4:	8fbc0010 	lw	gp,16(sp)
+  4039b8:	00409021 	move	s2,v0
+  4039bc:	1240004d 	beqz	s2,403af4 <iw_in_key+0x208>
+  4039c0:	02002821 	move	a1,s0
+  4039c4:	02402021 	move	a0,s2
+  4039c8:	8f9982c4 	lw	t9,-32060(gp)
+  4039cc:	00000000 	nop
+  4039d0:	0320f809 	jalr	t9
+  4039d4:	00000000 	nop
+  4039d8:	8fbc0010 	lw	gp,16(sp)
+  4039dc:	00000000 	nop
+  4039e0:	8f858018 	lw	a1,-32744(gp)
+  4039e4:	00000000 	nop
+  4039e8:	24a5027c 	addiu	a1,a1,636
+  4039ec:	02402021 	move	a0,s2
+  4039f0:	8f998174 	lw	t9,-32396(gp)
+  4039f4:	00000000 	nop
+  4039f8:	0320f809 	jalr	t9
+  4039fc:	00000000 	nop
+  403a00:	8fbc0010 	lw	gp,16(sp)
+  403a04:	00408021 	move	s0,v0
+  403a08:	12000032 	beqz	s0,403ad4 <iw_in_key+0x1e8>
+  403a0c:	24150001 	li	s5,1
+  403a10:	27b40018 	addiu	s4,sp,24
+  403a14:	02002021 	move	a0,s0
+  403a18:	8f858018 	lw	a1,-32744(gp)
+  403a1c:	00000000 	nop
+  403a20:	24a50284 	addiu	a1,a1,644
+  403a24:	27a60018 	addiu	a2,sp,24
+  403a28:	8f998170 	lw	t9,-32400(gp)
+  403a2c:	00000000 	nop
+  403a30:	0320f809 	jalr	t9
+  403a34:	00000000 	nop
+  403a38:	8fbc0010 	lw	gp,16(sp)
+  403a3c:	02711821 	addu	v1,s3,s1
+  403a40:	1055000b 	beq	v0,s5,403a70 <iw_in_key+0x184>
+  403a44:	02002021 	move	a0,s0
+  403a48:	2402ffff 	li	v0,-1
+  403a4c:	8fbf003c 	lw	ra,60(sp)
+  403a50:	8fb50034 	lw	s5,52(sp)
+  403a54:	8fb40030 	lw	s4,48(sp)
+  403a58:	8fb3002c 	lw	s3,44(sp)
+  403a5c:	8fb20028 	lw	s2,40(sp)
+  403a60:	8fb10024 	lw	s1,36(sp)
+  403a64:	8fb00020 	lw	s0,32(sp)
+  403a68:	03e00008 	jr	ra
+  403a6c:	27bd0040 	addiu	sp,sp,64
+  403a70:	92820003 	lbu	v0,3(s4)
+  403a74:	26100002 	addiu	s0,s0,2
+  403a78:	a0620000 	sb	v0,0(v1)
+  403a7c:	8f998068 	lw	t9,-32664(gp)
+  403a80:	00000000 	nop
+  403a84:	0320f809 	jalr	t9
+  403a88:	00000000 	nop
+  403a8c:	8fbc0010 	lw	gp,16(sp)
+  403a90:	2c420003 	sltiu	v0,v0,3
+  403a94:	26310001 	addiu	s1,s1,1
+  403a98:	8f858018 	lw	a1,-32744(gp)
+  403a9c:	00000000 	nop
+  403aa0:	24a5027c 	addiu	a1,a1,636
+  403aa4:	10400007 	beqz	v0,403ac4 <iw_in_key+0x1d8>
+  403aa8:	00002021 	move	a0,zero
+  403aac:	8f998174 	lw	t9,-32396(gp)
+  403ab0:	00000000 	nop
+  403ab4:	0320f809 	jalr	t9
+  403ab8:	00000000 	nop
+  403abc:	8fbc0010 	lw	gp,16(sp)
+  403ac0:	00408021 	move	s0,v0
+  403ac4:	12000003 	beqz	s0,403ad4 <iw_in_key+0x1e8>
+  403ac8:	2a220020 	slti	v0,s1,32
+  403acc:	1440ffd1 	bnez	v0,403a14 <iw_in_key+0x128>
+  403ad0:	00000000 	nop
+  403ad4:	02402021 	move	a0,s2
+  403ad8:	8f998030 	lw	t9,-32720(gp)
+  403adc:	00000000 	nop
+  403ae0:	0320f809 	jalr	t9
+  403ae4:	00000000 	nop
+  403ae8:	8fbc0010 	lw	gp,16(sp)
+  403aec:	1000ffd7 	b	403a4c <iw_in_key+0x160>
+  403af0:	02201021 	move	v0,s1
+  403af4:	8f8780e8 	lw	a3,-32536(gp)
+  403af8:	00000000 	nop
+  403afc:	8ce70000 	lw	a3,0(a3)
+  403b00:	8f848018 	lw	a0,-32744(gp)
+  403b04:	00000000 	nop
+  403b08:	24840288 	addiu	a0,a0,648
+  403b0c:	24050001 	li	a1,1
+  403b10:	24060022 	li	a2,34
+  403b14:	8f9980c8 	lw	t9,-32568(gp)
+  403b18:	00000000 	nop
+  403b1c:	0320f809 	jalr	t9
+  403b20:	00000000 	nop
+  403b24:	8fbc0010 	lw	gp,16(sp)
+  403b28:	1000ffc8 	b	403a4c <iw_in_key+0x160>
+  403b2c:	2402ffff 	li	v0,-1
+  403b30:	02602821 	move	a1,s3
+  403b34:	8f99810c 	lw	t9,-32500(gp)
+  403b38:	00000000 	nop
+  403b3c:	0320f809 	jalr	t9
+  403b40:	00000000 	nop
+  403b44:	8fbc0010 	lw	gp,16(sp)
+  403b48:	1000ffc0 	b	403a4c <iw_in_key+0x160>
+  403b4c:	00000000 	nop
+  403b50:	26100002 	addiu	s0,s0,2
+  403b54:	02002021 	move	a0,s0
+  403b58:	8f998068 	lw	t9,-32664(gp)
+  403b5c:	00000000 	nop
+  403b60:	0320f809 	jalr	t9
+  403b64:	00000000 	nop
+  403b68:	8fbc0010 	lw	gp,16(sp)
+  403b6c:	00408821 	move	s1,v0
+  403b70:	2a220021 	slti	v0,s1,33
+  403b74:	14400002 	bnez	v0,403b80 <iw_in_key+0x294>
+  403b78:	00000000 	nop
+  403b7c:	24110020 	li	s1,32
+  403b80:	02602021 	move	a0,s3
+  403b84:	02002821 	move	a1,s0
+  403b88:	02203021 	move	a2,s1
+  403b8c:	8f998188 	lw	t9,-32376(gp)
+  403b90:	00000000 	nop
+  403b94:	0320f809 	jalr	t9
+  403b98:	00000000 	nop
+  403b9c:	8fbc0010 	lw	gp,16(sp)
+  403ba0:	1000ffaa 	b	403a4c <iw_in_key+0x160>
+  403ba4:	02201021 	move	v0,s1
+
+00403ba8 <iw_print_pm_value>:
+  403ba8:	3c1c0fc0 	lui	gp,0xfc0
+  403bac:	279c46a8 	addiu	gp,gp,18088
+  403bb0:	0399e021 	addu	gp,gp,t9
+  403bb4:	27bdffe0 	addiu	sp,sp,-32
+  403bb8:	afbc0010 	sw	gp,16(sp)
+  403bbc:	30c20001 	andi	v0,a2,0x1
+  403bc0:	afbf001c 	sw	ra,28(sp)
+  403bc4:	afbc0018 	sw	gp,24(sp)
+  403bc8:	10400010 	beqz	v0,403c0c <iw_print_pm_value+0x64>
+  403bcc:	00a01821 	move	v1,a1
+  403bd0:	8f888018 	lw	t0,-32744(gp)
+  403bd4:	00000000 	nop
+  403bd8:	250802ac 	addiu	t0,t0,684
+  403bdc:	00000000 	nop
+  403be0:	81020000 	lb	v0,0(t0)
+  403be4:	81050001 	lb	a1,1(t0)
+  403be8:	81070002 	lb	a3,2(t0)
+  403bec:	a0820000 	sb	v0,0(a0)
+  403bf0:	a0850001 	sb	a1,1(a0)
+  403bf4:	a0870002 	sb	a3,2(a0)
+  403bf8:	81020003 	lb	v0,3(t0)
+  403bfc:	81050004 	lb	a1,4(t0)
+  403c00:	a0820003 	sb	v0,3(a0)
+  403c04:	a0850004 	sb	a1,4(a0)
+  403c08:	24840004 	addiu	a0,a0,4
+  403c0c:	30c20002 	andi	v0,a2,0x2
+  403c10:	10400011 	beqz	v0,403c58 <iw_print_pm_value+0xb0>
+  403c14:	30c22000 	andi	v0,a2,0x2000
+  403c18:	8f888018 	lw	t0,-32744(gp)
+  403c1c:	00000000 	nop
+  403c20:	250802b4 	addiu	t0,t0,692
+  403c24:	00000000 	nop
+  403c28:	81020000 	lb	v0,0(t0)
+  403c2c:	81050001 	lb	a1,1(t0)
+  403c30:	81070002 	lb	a3,2(t0)
+  403c34:	a0820000 	sb	v0,0(a0)
+  403c38:	a0850001 	sb	a1,1(a0)
+  403c3c:	a0870002 	sb	a3,2(a0)
+  403c40:	81020003 	lb	v0,3(t0)
+  403c44:	81050004 	lb	a1,4(t0)
+  403c48:	a0820003 	sb	v0,3(a0)
+  403c4c:	a0850004 	sb	a1,4(a0)
+  403c50:	24840004 	addiu	a0,a0,4
+  403c54:	30c22000 	andi	v0,a2,0x2000
+  403c58:	1040005c 	beqz	v0,403dcc <iw_print_pm_value+0x224>
+  403c5c:	00000000 	nop
+  403c60:	8f888018 	lw	t0,-32744(gp)
+  403c64:	00000000 	nop
+  403c68:	250802bc 	addiu	t0,t0,700
+  403c6c:	00000000 	nop
+  403c70:	81020000 	lb	v0,0(t0)
+  403c74:	81050001 	lb	a1,1(t0)
+  403c78:	81070002 	lb	a3,2(t0)
+  403c7c:	a0820000 	sb	v0,0(a0)
+  403c80:	a0850001 	sb	a1,1(a0)
+  403c84:	a0870002 	sb	a3,2(a0)
+  403c88:	81020003 	lb	v0,3(t0)
+  403c8c:	81050004 	lb	a1,4(t0)
+  403c90:	81070005 	lb	a3,5(t0)
+  403c94:	a0820003 	sb	v0,3(a0)
+  403c98:	a0850004 	sb	a1,4(a0)
+  403c9c:	a0870005 	sb	a3,5(a0)
+  403ca0:	81020006 	lb	v0,6(t0)
+  403ca4:	81050007 	lb	a1,7(t0)
+  403ca8:	81070008 	lb	a3,8(t0)
+  403cac:	a0820006 	sb	v0,6(a0)
+  403cb0:	a0850007 	sb	a1,7(a0)
+  403cb4:	a0870008 	sb	a3,8(a0)
+  403cb8:	81020009 	lb	v0,9(t0)
+  403cbc:	00000000 	nop
+  403cc0:	a0820009 	sb	v0,9(a0)
+  403cc4:	24840009 	addiu	a0,a0,9
+  403cc8:	30c20004 	andi	v0,a2,0x4
+  403ccc:	10400017 	beqz	v0,403d2c <iw_print_pm_value+0x184>
+  403cd0:	3c02000f 	lui	v0,0xf
+  403cd4:	8f818018 	lw	at,-32744(gp)
+  403cd8:	00000000 	nop
+  403cdc:	c42102f0 	lwc1	$f1,752(at)
+  403ce0:	c42002f4 	lwc1	$f0,756(at)
+  403ce4:	44831000 	mtc1	v1,$f2
+  403ce8:	00000000 	nop
+  403cec:	468010a1 	cvt.d.w	$f2,$f2
+  403cf0:	46201083 	div.d	$f2,$f2,$f0
+  403cf4:	8f858018 	lw	a1,-32744(gp)
+  403cf8:	00000000 	nop
+  403cfc:	24a502c8 	addiu	a1,a1,712
+  403d00:	44071000 	mfc1	a3,$f2
+  403d04:	44061800 	mfc1	a2,$f3
+  403d08:	8f9980fc 	lw	t9,-32516(gp)
+  403d0c:	00000000 	nop
+  403d10:	0320f809 	jalr	t9
+  403d14:	00000000 	nop
+  403d18:	8fbc0010 	lw	gp,16(sp)
+  403d1c:	8fbf001c 	lw	ra,28(sp)
+  403d20:	00000000 	nop
+  403d24:	03e00008 	jr	ra
+  403d28:	27bd0020 	addiu	sp,sp,32
+  403d2c:	3442423f 	ori	v0,v0,0x423f
+  403d30:	0043102a 	slt	v0,v0,v1
+  403d34:	1040000d 	beqz	v0,403d6c <iw_print_pm_value+0x1c4>
+  403d38:	286203e8 	slti	v0,v1,1000
+  403d3c:	8f818018 	lw	at,-32744(gp)
+  403d40:	00000000 	nop
+  403d44:	c42102f8 	lwc1	$f1,760(at)
+  403d48:	c42002fc 	lwc1	$f0,764(at)
+  403d4c:	44831000 	mtc1	v1,$f2
+  403d50:	00000000 	nop
+  403d54:	468010a1 	cvt.d.w	$f2,$f2
+  403d58:	8f858018 	lw	a1,-32744(gp)
+  403d5c:	00000000 	nop
+  403d60:	24a502cc 	addiu	a1,a1,716
+  403d64:	1000ffe6 	b	403d00 <iw_print_pm_value+0x158>
+  403d68:	46201083 	div.d	$f2,$f2,$f0
+  403d6c:	1440000d 	bnez	v0,403da4 <iw_print_pm_value+0x1fc>
+  403d70:	00603021 	move	a2,v1
+  403d74:	8f818018 	lw	at,-32744(gp)
+  403d78:	00000000 	nop
+  403d7c:	c4210300 	lwc1	$f1,768(at)
+  403d80:	c4200304 	lwc1	$f0,772(at)
+  403d84:	44831000 	mtc1	v1,$f2
+  403d88:	00000000 	nop
+  403d8c:	468010a1 	cvt.d.w	$f2,$f2
+  403d90:	8f858018 	lw	a1,-32744(gp)
+  403d94:	00000000 	nop
+  403d98:	24a502d0 	addiu	a1,a1,720
+  403d9c:	1000ffd8 	b	403d00 <iw_print_pm_value+0x158>
+  403da0:	46201083 	div.d	$f2,$f2,$f0
+  403da4:	8f858018 	lw	a1,-32744(gp)
+  403da8:	00000000 	nop
+  403dac:	24a502d8 	addiu	a1,a1,728
+  403db0:	8f9980fc 	lw	t9,-32516(gp)
+  403db4:	00000000 	nop
+  403db8:	0320f809 	jalr	t9
+  403dbc:	00000000 	nop
+  403dc0:	8fbc0010 	lw	gp,16(sp)
+  403dc4:	1000ffd5 	b	403d1c <iw_print_pm_value+0x174>
+  403dc8:	00000000 	nop
+  403dcc:	8f888018 	lw	t0,-32744(gp)
+  403dd0:	00000000 	nop
+  403dd4:	250802e0 	addiu	t0,t0,736
+  403dd8:	00000000 	nop
+  403ddc:	81020000 	lb	v0,0(t0)
+  403de0:	81050001 	lb	a1,1(t0)
+  403de4:	81070002 	lb	a3,2(t0)
+  403de8:	a0820000 	sb	v0,0(a0)
+  403dec:	a0850001 	sb	a1,1(a0)
+  403df0:	a0870002 	sb	a3,2(a0)
+  403df4:	81020003 	lb	v0,3(t0)
+  403df8:	81050004 	lb	a1,4(t0)
+  403dfc:	81070005 	lb	a3,5(t0)
+  403e00:	a0820003 	sb	v0,3(a0)
+  403e04:	a0850004 	sb	a1,4(a0)
+  403e08:	a0870005 	sb	a3,5(a0)
+  403e0c:	81020006 	lb	v0,6(t0)
+  403e10:	81050007 	lb	a1,7(t0)
+  403e14:	81070008 	lb	a3,8(t0)
+  403e18:	a0820006 	sb	v0,6(a0)
+  403e1c:	a0850007 	sb	a1,7(a0)
+  403e20:	a0870008 	sb	a3,8(a0)
+  403e24:	1000ffa8 	b	403cc8 <iw_print_pm_value+0x120>
+  403e28:	24840008 	addiu	a0,a0,8
+
+00403e2c <iw_print_pm_mode>:
+  403e2c:	3c1c0fc0 	lui	gp,0xfc0
+  403e30:	279c4424 	addiu	gp,gp,17444
+  403e34:	0399e021 	addu	gp,gp,t9
+  403e38:	30a50f00 	andi	a1,a1,0xf00
+  403e3c:	24020300 	li	v0,768
+  403e40:	10a200e9 	beq	a1,v0,4041e8 <iw_print_pm_mode+0x3bc>
+  403e44:	28a20301 	slti	v0,a1,769
+  403e48:	10400082 	beqz	v0,404054 <iw_print_pm_mode+0x228>
+  403e4c:	24020400 	li	v0,1024
+  403e50:	24020100 	li	v0,256
+  403e54:	10a20044 	beq	a1,v0,403f68 <iw_print_pm_mode+0x13c>
+  403e58:	24020200 	li	v0,512
+  403e5c:	10a20003 	beq	a1,v0,403e6c <iw_print_pm_mode+0x40>
+  403e60:	00000000 	nop
+  403e64:	03e00008 	jr	ra
+  403e68:	00000000 	nop
+  403e6c:	8f868018 	lw	a2,-32744(gp)
+  403e70:	00000000 	nop
+  403e74:	24c60308 	addiu	a2,a2,776
+  403e78:	00000000 	nop
+  403e7c:	80c20000 	lb	v0,0(a2)
+  403e80:	80c30001 	lb	v1,1(a2)
+  403e84:	80c50002 	lb	a1,2(a2)
+  403e88:	a0820000 	sb	v0,0(a0)
+  403e8c:	a0830001 	sb	v1,1(a0)
+  403e90:	a0850002 	sb	a1,2(a0)
+  403e94:	80c20003 	lb	v0,3(a2)
+  403e98:	80c30004 	lb	v1,4(a2)
+  403e9c:	80c50005 	lb	a1,5(a2)
+  403ea0:	a0820003 	sb	v0,3(a0)
+  403ea4:	a0830004 	sb	v1,4(a0)
+  403ea8:	a0850005 	sb	a1,5(a0)
+  403eac:	80c20006 	lb	v0,6(a2)
+  403eb0:	80c30007 	lb	v1,7(a2)
+  403eb4:	80c50008 	lb	a1,8(a2)
+  403eb8:	a0820006 	sb	v0,6(a0)
+  403ebc:	a0830007 	sb	v1,7(a0)
+  403ec0:	a0850008 	sb	a1,8(a0)
+  403ec4:	80c20009 	lb	v0,9(a2)
+  403ec8:	80c3000a 	lb	v1,10(a2)
+  403ecc:	80c5000b 	lb	a1,11(a2)
+  403ed0:	a0820009 	sb	v0,9(a0)
+  403ed4:	a083000a 	sb	v1,10(a0)
+  403ed8:	a085000b 	sb	a1,11(a0)
+  403edc:	80c2000c 	lb	v0,12(a2)
+  403ee0:	80c3000d 	lb	v1,13(a2)
+  403ee4:	80c5000e 	lb	a1,14(a2)
+  403ee8:	a082000c 	sb	v0,12(a0)
+  403eec:	a083000d 	sb	v1,13(a0)
+  403ef0:	a085000e 	sb	a1,14(a0)
+  403ef4:	80c2000f 	lb	v0,15(a2)
+  403ef8:	80c30010 	lb	v1,16(a2)
+  403efc:	80c50011 	lb	a1,17(a2)
+  403f00:	a082000f 	sb	v0,15(a0)
+  403f04:	a0830010 	sb	v1,16(a0)
+  403f08:	a0850011 	sb	a1,17(a0)
+  403f0c:	80c20012 	lb	v0,18(a2)
+  403f10:	80c30013 	lb	v1,19(a2)
+  403f14:	80c50014 	lb	a1,20(a2)
+  403f18:	a0820012 	sb	v0,18(a0)
+  403f1c:	a0830013 	sb	v1,19(a0)
+  403f20:	a0850014 	sb	a1,20(a0)
+  403f24:	80c20015 	lb	v0,21(a2)
+  403f28:	80c30016 	lb	v1,22(a2)
+  403f2c:	80c50017 	lb	a1,23(a2)
+  403f30:	a0820015 	sb	v0,21(a0)
+  403f34:	a0830016 	sb	v1,22(a0)
+  403f38:	a0850017 	sb	a1,23(a0)
+  403f3c:	80c20018 	lb	v0,24(a2)
+  403f40:	80c30019 	lb	v1,25(a2)
+  403f44:	80c5001a 	lb	a1,26(a2)
+  403f48:	a0820018 	sb	v0,24(a0)
+  403f4c:	a0830019 	sb	v1,25(a0)
+  403f50:	a085001a 	sb	a1,26(a0)
+  403f54:	80c2001b 	lb	v0,27(a2)
+  403f58:	80c3001c 	lb	v1,28(a2)
+  403f5c:	a082001b 	sb	v0,27(a0)
+  403f60:	03e00008 	jr	ra
+  403f64:	a083001c 	sb	v1,28(a0)
+  403f68:	8f868018 	lw	a2,-32744(gp)
+  403f6c:	00000000 	nop
+  403f70:	24c60328 	addiu	a2,a2,808
+  403f74:	00000000 	nop
+  403f78:	80c20000 	lb	v0,0(a2)
+  403f7c:	80c30001 	lb	v1,1(a2)
+  403f80:	80c50002 	lb	a1,2(a2)
+  403f84:	a0820000 	sb	v0,0(a0)
+  403f88:	a0830001 	sb	v1,1(a0)
+  403f8c:	a0850002 	sb	a1,2(a0)
+  403f90:	80c20003 	lb	v0,3(a2)
+  403f94:	80c30004 	lb	v1,4(a2)
+  403f98:	80c50005 	lb	a1,5(a2)
+  403f9c:	a0820003 	sb	v0,3(a0)
+  403fa0:	a0830004 	sb	v1,4(a0)
+  403fa4:	a0850005 	sb	a1,5(a0)
+  403fa8:	80c20006 	lb	v0,6(a2)
+  403fac:	80c30007 	lb	v1,7(a2)
+  403fb0:	80c50008 	lb	a1,8(a2)
+  403fb4:	a0820006 	sb	v0,6(a0)
+  403fb8:	a0830007 	sb	v1,7(a0)
+  403fbc:	a0850008 	sb	a1,8(a0)
+  403fc0:	80c20009 	lb	v0,9(a2)
+  403fc4:	80c3000a 	lb	v1,10(a2)
+  403fc8:	80c5000b 	lb	a1,11(a2)
+  403fcc:	a0820009 	sb	v0,9(a0)
+  403fd0:	a083000a 	sb	v1,10(a0)
+  403fd4:	a085000b 	sb	a1,11(a0)
+  403fd8:	80c2000c 	lb	v0,12(a2)
+  403fdc:	80c3000d 	lb	v1,13(a2)
+  403fe0:	80c5000e 	lb	a1,14(a2)
+  403fe4:	a082000c 	sb	v0,12(a0)
+  403fe8:	a083000d 	sb	v1,13(a0)
+  403fec:	a085000e 	sb	a1,14(a0)
+  403ff0:	80c2000f 	lb	v0,15(a2)
+  403ff4:	80c30010 	lb	v1,16(a2)
+  403ff8:	80c50011 	lb	a1,17(a2)
+  403ffc:	a082000f 	sb	v0,15(a0)
+  404000:	a0830010 	sb	v1,16(a0)
+  404004:	a0850011 	sb	a1,17(a0)
+  404008:	80c20012 	lb	v0,18(a2)
+  40400c:	80c30013 	lb	v1,19(a2)
+  404010:	80c50014 	lb	a1,20(a2)
+  404014:	a0820012 	sb	v0,18(a0)
+  404018:	a0830013 	sb	v1,19(a0)
+  40401c:	a0850014 	sb	a1,20(a0)
+  404020:	80c20015 	lb	v0,21(a2)
+  404024:	80c30016 	lb	v1,22(a2)
+  404028:	80c50017 	lb	a1,23(a2)
+  40402c:	a0820015 	sb	v0,21(a0)
+  404030:	a0830016 	sb	v1,22(a0)
+  404034:	a0850017 	sb	a1,23(a0)
+  404038:	80c20018 	lb	v0,24(a2)
+  40403c:	80c30019 	lb	v1,25(a2)
+  404040:	80c5001a 	lb	a1,26(a2)
+  404044:	a0820018 	sb	v0,24(a0)
+  404048:	a0830019 	sb	v1,25(a0)
+  40404c:	03e00008 	jr	ra
+  404050:	a085001a 	sb	a1,26(a0)
+  404054:	10a20038 	beq	a1,v0,404138 <iw_print_pm_mode+0x30c>
+  404058:	24020800 	li	v0,2048
+  40405c:	10a20003 	beq	a1,v0,40406c <iw_print_pm_mode+0x240>
+  404060:	00000000 	nop
+  404064:	03e00008 	jr	ra
+  404068:	00000000 	nop
+  40406c:	8f868018 	lw	a2,-32744(gp)
+  404070:	00000000 	nop
+  404074:	24c60344 	addiu	a2,a2,836
+  404078:	00000000 	nop
+  40407c:	80c20000 	lb	v0,0(a2)
+  404080:	80c30001 	lb	v1,1(a2)
+  404084:	80c50002 	lb	a1,2(a2)
+  404088:	a0820000 	sb	v0,0(a0)
+  40408c:	a0830001 	sb	v1,1(a0)
+  404090:	a0850002 	sb	a1,2(a0)
+  404094:	80c20003 	lb	v0,3(a2)
+  404098:	80c30004 	lb	v1,4(a2)
+  40409c:	80c50005 	lb	a1,5(a2)
+  4040a0:	a0820003 	sb	v0,3(a0)
+  4040a4:	a0830004 	sb	v1,4(a0)
+  4040a8:	a0850005 	sb	a1,5(a0)
+  4040ac:	80c20006 	lb	v0,6(a2)
+  4040b0:	80c30007 	lb	v1,7(a2)
+  4040b4:	80c50008 	lb	a1,8(a2)
+  4040b8:	a0820006 	sb	v0,6(a0)
+  4040bc:	a0830007 	sb	v1,7(a0)
+  4040c0:	a0850008 	sb	a1,8(a0)
+  4040c4:	80c20009 	lb	v0,9(a2)
+  4040c8:	80c3000a 	lb	v1,10(a2)
+  4040cc:	80c5000b 	lb	a1,11(a2)
+  4040d0:	a0820009 	sb	v0,9(a0)
+  4040d4:	a083000a 	sb	v1,10(a0)
+  4040d8:	a085000b 	sb	a1,11(a0)
+  4040dc:	80c2000c 	lb	v0,12(a2)
+  4040e0:	80c3000d 	lb	v1,13(a2)
+  4040e4:	80c5000e 	lb	a1,14(a2)
+  4040e8:	a082000c 	sb	v0,12(a0)
+  4040ec:	a083000d 	sb	v1,13(a0)
+  4040f0:	a085000e 	sb	a1,14(a0)
+  4040f4:	80c2000f 	lb	v0,15(a2)
+  4040f8:	80c30010 	lb	v1,16(a2)
+  4040fc:	80c50011 	lb	a1,17(a2)
+  404100:	a082000f 	sb	v0,15(a0)
+  404104:	a0830010 	sb	v1,16(a0)
+  404108:	a0850011 	sb	a1,17(a0)
+  40410c:	80c20012 	lb	v0,18(a2)
+  404110:	80c30013 	lb	v1,19(a2)
+  404114:	80c50014 	lb	a1,20(a2)
+  404118:	a0820012 	sb	v0,18(a0)
+  40411c:	a0830013 	sb	v1,19(a0)
+  404120:	a0850014 	sb	a1,20(a0)
+  404124:	80c20015 	lb	v0,21(a2)
+  404128:	80c30016 	lb	v1,22(a2)
+  40412c:	a0820015 	sb	v0,21(a0)
+  404130:	03e00008 	jr	ra
+  404134:	a0830016 	sb	v1,22(a0)
+  404138:	8f868018 	lw	a2,-32744(gp)
+  40413c:	00000000 	nop
+  404140:	24c6035c 	addiu	a2,a2,860
+  404144:	00000000 	nop
+  404148:	80c20000 	lb	v0,0(a2)
+  40414c:	80c30001 	lb	v1,1(a2)
+  404150:	80c50002 	lb	a1,2(a2)
+  404154:	a0820000 	sb	v0,0(a0)
+  404158:	a0830001 	sb	v1,1(a0)
+  40415c:	a0850002 	sb	a1,2(a0)
+  404160:	80c20003 	lb	v0,3(a2)
+  404164:	80c30004 	lb	v1,4(a2)
+  404168:	80c50005 	lb	a1,5(a2)
+  40416c:	a0820003 	sb	v0,3(a0)
+  404170:	a0830004 	sb	v1,4(a0)
+  404174:	a0850005 	sb	a1,5(a0)
+  404178:	80c20006 	lb	v0,6(a2)
+  40417c:	80c30007 	lb	v1,7(a2)
+  404180:	80c50008 	lb	a1,8(a2)
+  404184:	a0820006 	sb	v0,6(a0)
+  404188:	a0830007 	sb	v1,7(a0)
+  40418c:	a0850008 	sb	a1,8(a0)
+  404190:	80c20009 	lb	v0,9(a2)
+  404194:	80c3000a 	lb	v1,10(a2)
+  404198:	80c5000b 	lb	a1,11(a2)
+  40419c:	a0820009 	sb	v0,9(a0)
+  4041a0:	a083000a 	sb	v1,10(a0)
+  4041a4:	a085000b 	sb	a1,11(a0)
+  4041a8:	80c2000c 	lb	v0,12(a2)
+  4041ac:	80c3000d 	lb	v1,13(a2)
+  4041b0:	80c5000e 	lb	a1,14(a2)
+  4041b4:	a082000c 	sb	v0,12(a0)
+  4041b8:	a083000d 	sb	v1,13(a0)
+  4041bc:	a085000e 	sb	a1,14(a0)
+  4041c0:	80c2000f 	lb	v0,15(a2)
+  4041c4:	80c30010 	lb	v1,16(a2)
+  4041c8:	80c50011 	lb	a1,17(a2)
+  4041cc:	a082000f 	sb	v0,15(a0)
+  4041d0:	a0830010 	sb	v1,16(a0)
+  4041d4:	a0850011 	sb	a1,17(a0)
+  4041d8:	80c20012 	lb	v0,18(a2)
+  4041dc:	00000000 	nop
+  4041e0:	03e00008 	jr	ra
+  4041e4:	a0820012 	sb	v0,18(a0)
+  4041e8:	8f868018 	lw	a2,-32744(gp)
+  4041ec:	00000000 	nop
+  4041f0:	24c60370 	addiu	a2,a2,880
+  4041f4:	00000000 	nop
+  4041f8:	80c20000 	lb	v0,0(a2)
+  4041fc:	80c30001 	lb	v1,1(a2)
+  404200:	80c50002 	lb	a1,2(a2)
+  404204:	a0820000 	sb	v0,0(a0)
+  404208:	a0830001 	sb	v1,1(a0)
+  40420c:	a0850002 	sb	a1,2(a0)
+  404210:	80c20003 	lb	v0,3(a2)
+  404214:	80c30004 	lb	v1,4(a2)
+  404218:	80c50005 	lb	a1,5(a2)
+  40421c:	a0820003 	sb	v0,3(a0)
+  404220:	a0830004 	sb	v1,4(a0)
+  404224:	a0850005 	sb	a1,5(a0)
+  404228:	80c20006 	lb	v0,6(a2)
+  40422c:	80c30007 	lb	v1,7(a2)
+  404230:	80c50008 	lb	a1,8(a2)
+  404234:	a0820006 	sb	v0,6(a0)
+  404238:	a0830007 	sb	v1,7(a0)
+  40423c:	a0850008 	sb	a1,8(a0)
+  404240:	80c20009 	lb	v0,9(a2)
+  404244:	80c3000a 	lb	v1,10(a2)
+  404248:	80c5000b 	lb	a1,11(a2)
+  40424c:	a0820009 	sb	v0,9(a0)
+  404250:	a083000a 	sb	v1,10(a0)
+  404254:	a085000b 	sb	a1,11(a0)
+  404258:	80c2000c 	lb	v0,12(a2)
+  40425c:	80c3000d 	lb	v1,13(a2)
+  404260:	80c5000e 	lb	a1,14(a2)
+  404264:	a082000c 	sb	v0,12(a0)
+  404268:	a083000d 	sb	v1,13(a0)
+  40426c:	a085000e 	sb	a1,14(a0)
+  404270:	80c2000f 	lb	v0,15(a2)
+  404274:	80c30010 	lb	v1,16(a2)
+  404278:	80c50011 	lb	a1,17(a2)
+  40427c:	a082000f 	sb	v0,15(a0)
+  404280:	a0830010 	sb	v1,16(a0)
+  404284:	a0850011 	sb	a1,17(a0)
+  404288:	80c20012 	lb	v0,18(a2)
+  40428c:	80c30013 	lb	v1,19(a2)
+  404290:	80c50014 	lb	a1,20(a2)
+  404294:	a0820012 	sb	v0,18(a0)
+  404298:	a0830013 	sb	v1,19(a0)
+  40429c:	a0850014 	sb	a1,20(a0)
+  4042a0:	80c20015 	lb	v0,21(a2)
+  4042a4:	80c30016 	lb	v1,22(a2)
+  4042a8:	80c50017 	lb	a1,23(a2)
+  4042ac:	a0820015 	sb	v0,21(a0)
+  4042b0:	a0830016 	sb	v1,22(a0)
+  4042b4:	a0850017 	sb	a1,23(a0)
+  4042b8:	80c20018 	lb	v0,24(a2)
+  4042bc:	80c30019 	lb	v1,25(a2)
+  4042c0:	a0820018 	sb	v0,24(a0)
+  4042c4:	03e00008 	jr	ra
+  4042c8:	a0830019 	sb	v1,25(a0)
+
+004042cc <iw_print_retry_value>:
+  4042cc:	3c1c0fc0 	lui	gp,0xfc0
+  4042d0:	279c3f84 	addiu	gp,gp,16260
+  4042d4:	0399e021 	addu	gp,gp,t9
+  4042d8:	27bdffe0 	addiu	sp,sp,-32
+  4042dc:	afbc0010 	sw	gp,16(sp)
+  4042e0:	30c20001 	andi	v0,a2,0x1
+  4042e4:	afbf001c 	sw	ra,28(sp)
+  4042e8:	afbc0018 	sw	gp,24(sp)
+  4042ec:	10400010 	beqz	v0,404330 <iw_print_retry_value+0x64>
+  4042f0:	00a01821 	move	v1,a1
+  4042f4:	8f888018 	lw	t0,-32744(gp)
+  4042f8:	00000000 	nop
+  4042fc:	250802ac 	addiu	t0,t0,684
+  404300:	00000000 	nop
+  404304:	81020000 	lb	v0,0(t0)
+  404308:	81050001 	lb	a1,1(t0)
+  40430c:	81070002 	lb	a3,2(t0)
+  404310:	a0820000 	sb	v0,0(a0)
+  404314:	a0850001 	sb	a1,1(a0)
+  404318:	a0870002 	sb	a3,2(a0)
+  40431c:	81020003 	lb	v0,3(t0)
+  404320:	81050004 	lb	a1,4(t0)
+  404324:	a0820003 	sb	v0,3(a0)
+  404328:	a0850004 	sb	a1,4(a0)
+  40432c:	24840004 	addiu	a0,a0,4
+  404330:	30c20002 	andi	v0,a2,0x2
+  404334:	10400011 	beqz	v0,40437c <iw_print_retry_value+0xb0>
+  404338:	30c22000 	andi	v0,a2,0x2000
+  40433c:	8f888018 	lw	t0,-32744(gp)
+  404340:	00000000 	nop
+  404344:	250802b4 	addiu	t0,t0,692
+  404348:	00000000 	nop
+  40434c:	81020000 	lb	v0,0(t0)
+  404350:	81050001 	lb	a1,1(t0)
+  404354:	81070002 	lb	a3,2(t0)
+  404358:	a0820000 	sb	v0,0(a0)
+  40435c:	a0850001 	sb	a1,1(a0)
+  404360:	a0870002 	sb	a3,2(a0)
+  404364:	81020003 	lb	v0,3(t0)
+  404368:	81050004 	lb	a1,4(t0)
+  40436c:	a0820003 	sb	v0,3(a0)
+  404370:	a0850004 	sb	a1,4(a0)
+  404374:	24840004 	addiu	a0,a0,4
+  404378:	30c22000 	andi	v0,a2,0x2000
+  40437c:	1040005c 	beqz	v0,4044f0 <iw_print_retry_value+0x224>
+  404380:	30c20004 	andi	v0,a2,0x4
+  404384:	8f888018 	lw	t0,-32744(gp)
+  404388:	00000000 	nop
+  40438c:	2508038c 	addiu	t0,t0,908
+  404390:	00000000 	nop
+  404394:	81050000 	lb	a1,0(t0)
+  404398:	81060001 	lb	a2,1(t0)
+  40439c:	81070002 	lb	a3,2(t0)
+  4043a0:	a0850000 	sb	a1,0(a0)
+  4043a4:	a0860001 	sb	a2,1(a0)
+  4043a8:	a0870002 	sb	a3,2(a0)
+  4043ac:	81050003 	lb	a1,3(t0)
+  4043b0:	81060004 	lb	a2,4(t0)
+  4043b4:	81070005 	lb	a3,5(t0)
+  4043b8:	a0850003 	sb	a1,3(a0)
+  4043bc:	a0860004 	sb	a2,4(a0)
+  4043c0:	a0870005 	sb	a3,5(a0)
+  4043c4:	81050006 	lb	a1,6(t0)
+  4043c8:	81060007 	lb	a2,7(t0)
+  4043cc:	81070008 	lb	a3,8(t0)
+  4043d0:	a0850006 	sb	a1,6(a0)
+  4043d4:	a0860007 	sb	a2,7(a0)
+  4043d8:	a0870008 	sb	a3,8(a0)
+  4043dc:	81050009 	lb	a1,9(t0)
+  4043e0:	8106000a 	lb	a2,10(t0)
+  4043e4:	a0850009 	sb	a1,9(a0)
+  4043e8:	a086000a 	sb	a2,10(a0)
+  4043ec:	10400017 	beqz	v0,40444c <iw_print_retry_value+0x180>
+  4043f0:	2484000a 	addiu	a0,a0,10
+  4043f4:	8f818018 	lw	at,-32744(gp)
+  4043f8:	00000000 	nop
+  4043fc:	c42103a8 	lwc1	$f1,936(at)
+  404400:	c42003ac 	lwc1	$f0,940(at)
+  404404:	44831000 	mtc1	v1,$f2
+  404408:	00000000 	nop
+  40440c:	468010a1 	cvt.d.w	$f2,$f2
+  404410:	46201083 	div.d	$f2,$f2,$f0
+  404414:	8f858018 	lw	a1,-32744(gp)
+  404418:	00000000 	nop
+  40441c:	24a502c8 	addiu	a1,a1,712
+  404420:	44071000 	mfc1	a3,$f2
+  404424:	44061800 	mfc1	a2,$f3
+  404428:	8f9980fc 	lw	t9,-32516(gp)
+  40442c:	00000000 	nop
+  404430:	0320f809 	jalr	t9
+  404434:	00000000 	nop
+  404438:	8fbc0010 	lw	gp,16(sp)
+  40443c:	8fbf001c 	lw	ra,28(sp)
+  404440:	00000000 	nop
+  404444:	03e00008 	jr	ra
+  404448:	27bd0020 	addiu	sp,sp,32
+  40444c:	3c02000f 	lui	v0,0xf
+  404450:	3442423f 	ori	v0,v0,0x423f
+  404454:	0043102a 	slt	v0,v0,v1
+  404458:	1040000d 	beqz	v0,404490 <iw_print_retry_value+0x1c4>
+  40445c:	286203e8 	slti	v0,v1,1000
+  404460:	8f818018 	lw	at,-32744(gp)
+  404464:	00000000 	nop
+  404468:	c42103b0 	lwc1	$f1,944(at)
+  40446c:	c42003b4 	lwc1	$f0,948(at)
+  404470:	44831000 	mtc1	v1,$f2
+  404474:	00000000 	nop
+  404478:	468010a1 	cvt.d.w	$f2,$f2
+  40447c:	8f858018 	lw	a1,-32744(gp)
+  404480:	00000000 	nop
+  404484:	24a502cc 	addiu	a1,a1,716
+  404488:	1000ffe5 	b	404420 <iw_print_retry_value+0x154>
+  40448c:	46201083 	div.d	$f2,$f2,$f0
+  404490:	1440000d 	bnez	v0,4044c8 <iw_print_retry_value+0x1fc>
+  404494:	00603021 	move	a2,v1
+  404498:	8f818018 	lw	at,-32744(gp)
+  40449c:	00000000 	nop
+  4044a0:	c42103b8 	lwc1	$f1,952(at)
+  4044a4:	c42003bc 	lwc1	$f0,956(at)
+  4044a8:	44831000 	mtc1	v1,$f2
+  4044ac:	00000000 	nop
+  4044b0:	468010a1 	cvt.d.w	$f2,$f2
+  4044b4:	8f858018 	lw	a1,-32744(gp)
+  4044b8:	00000000 	nop
+  4044bc:	24a502d0 	addiu	a1,a1,720
+  4044c0:	1000ffd7 	b	404420 <iw_print_retry_value+0x154>
+  4044c4:	46201083 	div.d	$f2,$f2,$f0
+  4044c8:	8f858018 	lw	a1,-32744(gp)
+  4044cc:	00000000 	nop
+  4044d0:	24a502d8 	addiu	a1,a1,728
+  4044d4:	8f9980fc 	lw	t9,-32516(gp)
+  4044d8:	00000000 	nop
+  4044dc:	0320f809 	jalr	t9
+  4044e0:	00000000 	nop
+  4044e4:	8fbc0010 	lw	gp,16(sp)
+  4044e8:	1000ffd4 	b	40443c <iw_print_retry_value+0x170>
+  4044ec:	00000000 	nop
+  4044f0:	8f858018 	lw	a1,-32744(gp)
+  4044f4:	00000000 	nop
+  4044f8:	24a50398 	addiu	a1,a1,920
+  4044fc:	00603021 	move	a2,v1
+  404500:	8f9980fc 	lw	t9,-32516(gp)
+  404504:	00000000 	nop
+  404508:	0320f809 	jalr	t9
+  40450c:	00000000 	nop
+  404510:	8fbc0010 	lw	gp,16(sp)
+  404514:	1000ffc9 	b	40443c <iw_print_retry_value+0x170>
+  404518:	00000000 	nop
+
+0040451c <iw_print_timeval>:
+  40451c:	3c1c0fc0 	lui	gp,0xfc0
+  404520:	279c3d34 	addiu	gp,gp,15668
+  404524:	0399e021 	addu	gp,gp,t9
+  404528:	27bdffd8 	addiu	sp,sp,-40
+  40452c:	afbc0018 	sw	gp,24(sp)
+  404530:	afbf0024 	sw	ra,36(sp)
+  404534:	afbc0020 	sw	gp,32(sp)
+  404538:	8ca90000 	lw	t1,0(a1)
+  40453c:	3c02c22e 	lui	v0,0xc22e
+  404540:	34424507 	ori	v0,v0,0x4507
+  404544:	01220018 	mult	t1,v0
+  404548:	8ca30004 	lw	v1,4(a1)
+  40454c:	000947c3 	sra	t0,t1,0x1f
+  404550:	afa30014 	sw	v1,20(sp)
+  404554:	3c0691a2 	lui	a2,0x91a2
+  404558:	34c6b3c5 	ori	a2,a2,0xb3c5
+  40455c:	3c078888 	lui	a3,0x8888
+  404560:	34e78889 	ori	a3,a3,0x8889
+  404564:	8f858018 	lw	a1,-32744(gp)
+  404568:	00000000 	nop
+  40456c:	24a503c0 	addiu	a1,a1,960
+  404570:	00001010 	mfhi	v0
+  404574:	00491021 	addu	v0,v0,t1
+  404578:	00021403 	sra	v0,v0,0x10
+  40457c:	00485823 	subu	t3,v0,t0
+  404580:	000b1840 	sll	v1,t3,0x1
+  404584:	006b1821 	addu	v1,v1,t3
+  404588:	00034100 	sll	t0,v1,0x4
+  40458c:	01034023 	subu	t0,t0,v1
+  404590:	00081100 	sll	v0,t0,0x4
+  404594:	00481023 	subu	v0,v0,t0
+  404598:	000211c0 	sll	v0,v0,0x7
+  40459c:	01225823 	subu	t3,t1,v0
+  4045a0:	01660018 	mult	t3,a2
+  4045a4:	000b4fc3 	sra	t1,t3,0x1f
+  4045a8:	00003010 	mfhi	a2
+  4045ac:	00cb3021 	addu	a2,a2,t3
+  4045b0:	000632c3 	sra	a2,a2,0xb
+  4045b4:	01670018 	mult	t3,a3
+  4045b8:	00c93023 	subu	a2,a2,t1
+  4045bc:	000640c0 	sll	t0,a2,0x3
+  4045c0:	01064023 	subu	t0,t0,a2
+  4045c4:	00084140 	sll	t0,t0,0x5
+  4045c8:	01064021 	addu	t0,t0,a2
+  4045cc:	00084100 	sll	t0,t0,0x4
+  4045d0:	01684023 	subu	t0,t3,t0
+  4045d4:	000857c3 	sra	t2,t0,0x1f
+  4045d8:	00001810 	mfhi	v1
+  4045dc:	006b1821 	addu	v1,v1,t3
+  4045e0:	00031943 	sra	v1,v1,0x5
+  4045e4:	01070018 	mult	t0,a3
+  4045e8:	00691823 	subu	v1,v1,t1
+  4045ec:	00031100 	sll	v0,v1,0x4
+  4045f0:	00431023 	subu	v0,v0,v1
+  4045f4:	00021080 	sll	v0,v0,0x2
+  4045f8:	01621023 	subu	v0,t3,v0
+  4045fc:	afa20010 	sw	v0,16(sp)
+  404600:	00003810 	mfhi	a3
+  404604:	00e83821 	addu	a3,a3,t0
+  404608:	00073943 	sra	a3,a3,0x5
+  40460c:	00ea3823 	subu	a3,a3,t2
+  404610:	8f9980fc 	lw	t9,-32516(gp)
+  404614:	00000000 	nop
+  404618:	0320f809 	jalr	t9
+  40461c:	00000000 	nop
+  404620:	8fbc0018 	lw	gp,24(sp)
+  404624:	8fbf0024 	lw	ra,36(sp)
+  404628:	00000000 	nop
+  40462c:	03e00008 	jr	ra
+  404630:	27bd0028 	addiu	sp,sp,40
+
+00404634 <iw_check_mac_addr_type>:
+  404634:	3c1c0fc0 	lui	gp,0xfc0
+  404638:	279c3c1c 	addiu	gp,gp,15388
+  40463c:	0399e021 	addu	gp,gp,t9
+  404640:	27bdffb8 	addiu	sp,sp,-72
+  404644:	afbc0010 	sw	gp,16(sp)
+  404648:	afb00038 	sw	s0,56(sp)
+  40464c:	24060010 	li	a2,16
+  404650:	00808021 	move	s0,a0
+  404654:	27a40018 	addiu	a0,sp,24
+  404658:	afb1003c 	sw	s1,60(sp)
+  40465c:	afbf0044 	sw	ra,68(sp)
+  404660:	00a08821 	move	s1,a1
+  404664:	afbc0040 	sw	gp,64(sp)
+  404668:	8f998188 	lw	t9,-32376(gp)
+  40466c:	00000000 	nop
+  404670:	0320f809 	jalr	t9
+  404674:	00000000 	nop
+  404678:	8fbc0010 	lw	gp,16(sp)
+  40467c:	27a60018 	addiu	a2,sp,24
+  404680:	34058927 	li	a1,0x8927
+  404684:	02002021 	move	a0,s0
+  404688:	8f9982b8 	lw	t9,-32072(gp)
+  40468c:	00000000 	nop
+  404690:	0320f809 	jalr	t9
+  404694:	00000000 	nop
+  404698:	8fbc0010 	lw	gp,16(sp)
+  40469c:	00000000 	nop
+  4046a0:	8f858018 	lw	a1,-32744(gp)
+  4046a4:	00000000 	nop
+  4046a8:	24a503d8 	addiu	a1,a1,984
+  4046ac:	04400005 	bltz	v0,4046c4 <iw_check_mac_addr_type+0x90>
+  4046b0:	02203021 	move	a2,s1
+  4046b4:	97a40028 	lhu	a0,40(sp)
+  4046b8:	24030001 	li	v1,1
+  4046bc:	1083000a 	beq	a0,v1,4046e8 <iw_check_mac_addr_type+0xb4>
+  4046c0:	00001021 	move	v0,zero
+  4046c4:	8f8480e8 	lw	a0,-32536(gp)
+  4046c8:	00000000 	nop
+  4046cc:	8c840000 	lw	a0,0(a0)
+  4046d0:	8f9981c4 	lw	t9,-32316(gp)
+  4046d4:	00000000 	nop
+  4046d8:	0320f809 	jalr	t9
+  4046dc:	00000000 	nop
+  4046e0:	8fbc0010 	lw	gp,16(sp)
+  4046e4:	2402ffff 	li	v0,-1
+  4046e8:	8fbf0044 	lw	ra,68(sp)
+  4046ec:	8fb1003c 	lw	s1,60(sp)
+  4046f0:	8fb00038 	lw	s0,56(sp)
+  4046f4:	03e00008 	jr	ra
+  4046f8:	27bd0048 	addiu	sp,sp,72
+
+004046fc <iw_check_if_addr_type>:
+  4046fc:	3c1c0fc0 	lui	gp,0xfc0
+  404700:	279c3b54 	addiu	gp,gp,15188
+  404704:	0399e021 	addu	gp,gp,t9
+  404708:	27bdffb8 	addiu	sp,sp,-72
+  40470c:	afbc0010 	sw	gp,16(sp)
+  404710:	afb00038 	sw	s0,56(sp)
+  404714:	24060010 	li	a2,16
+  404718:	00808021 	move	s0,a0
+  40471c:	27a40018 	addiu	a0,sp,24
+  404720:	afb1003c 	sw	s1,60(sp)
+  404724:	afbf0044 	sw	ra,68(sp)
+  404728:	00a08821 	move	s1,a1
+  40472c:	afbc0040 	sw	gp,64(sp)
+  404730:	8f998188 	lw	t9,-32376(gp)
+  404734:	00000000 	nop
+  404738:	0320f809 	jalr	t9
+  40473c:	00000000 	nop
+  404740:	8fbc0010 	lw	gp,16(sp)
+  404744:	27a60018 	addiu	a2,sp,24
+  404748:	34058915 	li	a1,0x8915
+  40474c:	02002021 	move	a0,s0
+  404750:	8f9982b8 	lw	t9,-32072(gp)
+  404754:	00000000 	nop
+  404758:	0320f809 	jalr	t9
+  40475c:	00000000 	nop
+  404760:	8fbc0010 	lw	gp,16(sp)
+  404764:	00000000 	nop
+  404768:	8f858018 	lw	a1,-32744(gp)
+  40476c:	00000000 	nop
+  404770:	24a50404 	addiu	a1,a1,1028
+  404774:	04400005 	bltz	v0,40478c <iw_check_if_addr_type+0x90>
+  404778:	02203021 	move	a2,s1
+  40477c:	97a40028 	lhu	a0,40(sp)
+  404780:	24030002 	li	v1,2
+  404784:	1083000a 	beq	a0,v1,4047b0 <iw_check_if_addr_type+0xb4>
+  404788:	00001021 	move	v0,zero
+  40478c:	8f8480e8 	lw	a0,-32536(gp)
+  404790:	00000000 	nop
+  404794:	8c840000 	lw	a0,0(a0)
+  404798:	8f9981c4 	lw	t9,-32316(gp)
+  40479c:	00000000 	nop
+  4047a0:	0320f809 	jalr	t9
+  4047a4:	00000000 	nop
+  4047a8:	8fbc0010 	lw	gp,16(sp)
+  4047ac:	2402ffff 	li	v0,-1
+  4047b0:	8fbf0044 	lw	ra,68(sp)
+  4047b4:	8fb1003c 	lw	s1,60(sp)
+  4047b8:	8fb00038 	lw	s0,56(sp)
+  4047bc:	03e00008 	jr	ra
+  4047c0:	27bd0048 	addiu	sp,sp,72
+
+004047c4 <iw_ether_ntop>:
+  4047c4:	3c1c0fc0 	lui	gp,0xfc0
+  4047c8:	279c3a8c 	addiu	gp,gp,14988
+  4047cc:	0399e021 	addu	gp,gp,t9
+  4047d0:	27bdffd0 	addiu	sp,sp,-48
+  4047d4:	afbc0020 	sw	gp,32(sp)
+  4047d8:	afbf002c 	sw	ra,44(sp)
+  4047dc:	afbc0028 	sw	gp,40(sp)
+  4047e0:	90860000 	lbu	a2,0(a0)
+  4047e4:	90870001 	lbu	a3,1(a0)
+  4047e8:	90890005 	lbu	t1,5(a0)
+  4047ec:	90830003 	lbu	v1,3(a0)
+  4047f0:	90880004 	lbu	t0,4(a0)
+  4047f4:	90820002 	lbu	v0,2(a0)
+  4047f8:	00a02021 	move	a0,a1
+  4047fc:	8f858018 	lw	a1,-32744(gp)
+  404800:	00000000 	nop
+  404804:	24a50430 	addiu	a1,a1,1072
+  404808:	afa20010 	sw	v0,16(sp)
+  40480c:	afa30014 	sw	v1,20(sp)
+  404810:	afa80018 	sw	t0,24(sp)
+  404814:	afa9001c 	sw	t1,28(sp)
+  404818:	8f9980fc 	lw	t9,-32516(gp)
+  40481c:	00000000 	nop
+  404820:	0320f809 	jalr	t9
+  404824:	00000000 	nop
+  404828:	8fbc0020 	lw	gp,32(sp)
+  40482c:	8fbf002c 	lw	ra,44(sp)
+  404830:	00000000 	nop
+  404834:	03e00008 	jr	ra
+  404838:	27bd0030 	addiu	sp,sp,48
+
+0040483c <iw_ether_ntoa>:
+  40483c:	3c1c0fc0 	lui	gp,0xfc0
+  404840:	279c3a14 	addiu	gp,gp,14868
+  404844:	0399e021 	addu	gp,gp,t9
+  404848:	27bdffd8 	addiu	sp,sp,-40
+  40484c:	afbc0010 	sw	gp,16(sp)
+  404850:	afb00018 	sw	s0,24(sp)
+  404854:	8f90801c 	lw	s0,-32740(gp)
+  404858:	00000000 	nop
+  40485c:	26100530 	addiu	s0,s0,1328
+  404860:	00000000 	nop
+  404864:	02002821 	move	a1,s0
+  404868:	afbf0020 	sw	ra,32(sp)
+  40486c:	afbc001c 	sw	gp,28(sp)
+  404870:	8f99819c 	lw	t9,-32356(gp)
+  404874:	00000000 	nop
+  404878:	0320f809 	jalr	t9
+  40487c:	00000000 	nop
+  404880:	8fbc0010 	lw	gp,16(sp)
+  404884:	8fbf0020 	lw	ra,32(sp)
+  404888:	02001021 	move	v0,s0
+  40488c:	8fb00018 	lw	s0,24(sp)
+  404890:	03e00008 	jr	ra
+  404894:	27bd0028 	addiu	sp,sp,40
+
+00404898 <iw_ether_aton>:
+  404898:	3c1c0fc0 	lui	gp,0xfc0
+  40489c:	279c39b8 	addiu	gp,gp,14776
+  4048a0:	0399e021 	addu	gp,gp,t9
+  4048a4:	27bdffc0 	addiu	sp,sp,-64
+  4048a8:	afbc0010 	sw	gp,16(sp)
+  4048ac:	afb60030 	sw	s6,48(sp)
+  4048b0:	afb5002c 	sw	s5,44(sp)
+  4048b4:	afb40028 	sw	s4,40(sp)
+  4048b8:	afb30024 	sw	s3,36(sp)
+  4048bc:	afb20020 	sw	s2,32(sp)
+  4048c0:	00a0b021 	move	s6,a1
+  4048c4:	00809021 	move	s2,a0
+  4048c8:	00009821 	move	s3,zero
+  4048cc:	24150006 	li	s5,6
+  4048d0:	2414003a 	li	s4,58
+  4048d4:	afbf0038 	sw	ra,56(sp)
+  4048d8:	afbc0034 	sw	gp,52(sp)
+  4048dc:	afb1001c 	sw	s1,28(sp)
+  4048e0:	afb00018 	sw	s0,24(sp)
+  4048e4:	82420000 	lb	v0,0(s2)
+  4048e8:	00000000 	nop
+  4048ec:	10400020 	beqz	v0,404970 <iw_ether_aton+0xd8>
+  4048f0:	00000000 	nop
+  4048f4:	92500000 	lbu	s0,0(s2)
+  4048f8:	26520001 	addiu	s2,s2,1
+  4048fc:	02002021 	move	a0,s0
+  404900:	8f9980cc 	lw	t9,-32564(gp)
+  404904:	00000000 	nop
+  404908:	0320f809 	jalr	t9
+  40490c:	00000000 	nop
+  404910:	8fbc0010 	lw	gp,16(sp)
+  404914:	10400034 	beqz	v0,4049e8 <iw_ether_aton+0x150>
+  404918:	2611ffd0 	addiu	s1,s0,-48
+  40491c:	92500000 	lbu	s0,0(s2)
+  404920:	00118900 	sll	s1,s1,0x4
+  404924:	02002021 	move	a0,s0
+  404928:	8f9980cc 	lw	t9,-32564(gp)
+  40492c:	00000000 	nop
+  404930:	0320f809 	jalr	t9
+  404934:	00000000 	nop
+  404938:	8fbc0010 	lw	gp,16(sp)
+  40493c:	1040001e 	beqz	v0,4049b8 <iw_ether_aton+0x120>
+  404940:	26520001 	addiu	s2,s2,1
+  404944:	2602ffd0 	addiu	v0,s0,-48
+  404948:	02228825 	or	s1,s1,v0
+  40494c:	02d31021 	addu	v0,s6,s3
+  404950:	26730001 	addiu	s3,s3,1
+  404954:	a0510000 	sb	s1,0(v0)
+  404958:	1275000d 	beq	s3,s5,404990 <iw_ether_aton+0xf8>
+  40495c:	24020001 	li	v0,1
+  404960:	82420000 	lb	v0,0(s2)
+  404964:	00000000 	nop
+  404968:	1054ffde 	beq	v0,s4,4048e4 <iw_ether_aton+0x4c>
+  40496c:	26520001 	addiu	s2,s2,1
+  404970:	8f9980a0 	lw	t9,-32608(gp)
+  404974:	00000000 	nop
+  404978:	0320f809 	jalr	t9
+  40497c:	00000000 	nop
+  404980:	8fbc0010 	lw	gp,16(sp)
+  404984:	24030016 	li	v1,22
+  404988:	ac430000 	sw	v1,0(v0)
+  40498c:	00001021 	move	v0,zero
+  404990:	8fbf0038 	lw	ra,56(sp)
+  404994:	8fb60030 	lw	s6,48(sp)
+  404998:	8fb5002c 	lw	s5,44(sp)
+  40499c:	8fb40028 	lw	s4,40(sp)
+  4049a0:	8fb30024 	lw	s3,36(sp)
+  4049a4:	8fb20020 	lw	s2,32(sp)
+  4049a8:	8fb1001c 	lw	s1,28(sp)
+  4049ac:	8fb00018 	lw	s0,24(sp)
+  4049b0:	03e00008 	jr	ra
+  4049b4:	27bd0040 	addiu	sp,sp,64
+  4049b8:	2602009f 	addiu	v0,s0,159
+  4049bc:	304200ff 	andi	v0,v0,0xff
+  4049c0:	2c420006 	sltiu	v0,v0,6
+  4049c4:	1440ffe0 	bnez	v0,404948 <iw_ether_aton+0xb0>
+  4049c8:	2602ffa9 	addiu	v0,s0,-87
+  4049cc:	260200bf 	addiu	v0,s0,191
+  4049d0:	304200ff 	andi	v0,v0,0xff
+  4049d4:	2c420006 	sltiu	v0,v0,6
+  4049d8:	1040ffe5 	beqz	v0,404970 <iw_ether_aton+0xd8>
+  4049dc:	2602ffc9 	addiu	v0,s0,-55
+  4049e0:	1000ffda 	b	40494c <iw_ether_aton+0xb4>
+  4049e4:	02228825 	or	s1,s1,v0
+  4049e8:	2602009f 	addiu	v0,s0,159
+  4049ec:	304200ff 	andi	v0,v0,0xff
+  4049f0:	2c420006 	sltiu	v0,v0,6
+  4049f4:	1440ffc9 	bnez	v0,40491c <iw_ether_aton+0x84>
+  4049f8:	2611ffa9 	addiu	s1,s0,-87
+  4049fc:	260200bf 	addiu	v0,s0,191
+  404a00:	304200ff 	andi	v0,v0,0xff
+  404a04:	2c420006 	sltiu	v0,v0,6
+  404a08:	1440ffc4 	bnez	v0,40491c <iw_ether_aton+0x84>
+  404a0c:	2611ffc9 	addiu	s1,s0,-55
+  404a10:	1000ffd7 	b	404970 <iw_ether_aton+0xd8>
+  404a14:	00000000 	nop
+
+00404a18 <iw_in_inet>:
+  404a18:	3c1c0fc0 	lui	gp,0xfc0
+  404a1c:	279c3838 	addiu	gp,gp,14392
+  404a20:	0399e021 	addu	gp,gp,t9
+  404a24:	27bdffd0 	addiu	sp,sp,-48
+  404a28:	afbc0010 	sw	gp,16(sp)
+  404a2c:	afb1001c 	sw	s1,28(sp)
+  404a30:	24020002 	li	v0,2
+  404a34:	00a08821 	move	s1,a1
+  404a38:	afb20020 	sw	s2,32(sp)
+  404a3c:	afbf0028 	sw	ra,40(sp)
+  404a40:	afbc0024 	sw	gp,36(sp)
+  404a44:	afb00018 	sw	s0,24(sp)
+  404a48:	a6220000 	sh	v0,0(s1)
+  404a4c:	8f858018 	lw	a1,-32744(gp)
+  404a50:	00000000 	nop
+  404a54:	24a50450 	addiu	a1,a1,1104
+  404a58:	a6200002 	sh	zero,2(s1)
+  404a5c:	00809021 	move	s2,a0
+  404a60:	8f998120 	lw	t9,-32480(gp)
+  404a64:	00000000 	nop
+  404a68:	0320f809 	jalr	t9
+  404a6c:	00000000 	nop
+  404a70:	8fbc0010 	lw	gp,16(sp)
+  404a74:	00401821 	move	v1,v0
+  404a78:	02402021 	move	a0,s2
+  404a7c:	10600041 	beqz	v1,404b84 <iw_in_inet+0x16c>
+  404a80:	24020001 	li	v0,1
+  404a84:	8f9980a4 	lw	t9,-32604(gp)
+  404a88:	00000000 	nop
+  404a8c:	0320f809 	jalr	t9
+  404a90:	00000000 	nop
+  404a94:	8fbc0010 	lw	gp,16(sp)
+  404a98:	00402821 	move	a1,v0
+  404a9c:	10a00011 	beqz	a1,404ae4 <iw_in_inet+0xcc>
+  404aa0:	02402021 	move	a0,s2
+  404aa4:	8ca2000c 	lw	v0,12(a1)
+  404aa8:	00000000 	nop
+  404aac:	ae220004 	sw	v0,4(s1)
+  404ab0:	8ca50000 	lw	a1,0(a1)
+  404ab4:	8f9982c4 	lw	t9,-32060(gp)
+  404ab8:	00000000 	nop
+  404abc:	0320f809 	jalr	t9
+  404ac0:	00000000 	nop
+  404ac4:	8fbc0010 	lw	gp,16(sp)
+  404ac8:	24020001 	li	v0,1
+  404acc:	8fbf0028 	lw	ra,40(sp)
+  404ad0:	8fb20020 	lw	s2,32(sp)
+  404ad4:	8fb1001c 	lw	s1,28(sp)
+  404ad8:	8fb00018 	lw	s0,24(sp)
+  404adc:	03e00008 	jr	ra
+  404ae0:	27bd0030 	addiu	sp,sp,48
+  404ae4:	8f998108 	lw	t9,-32504(gp)
+  404ae8:	00000000 	nop
+  404aec:	0320f809 	jalr	t9
+  404af0:	00000000 	nop
+  404af4:	8fbc0010 	lw	gp,16(sp)
+  404af8:	00408021 	move	s0,v0
+  404afc:	12000012 	beqz	s0,404b48 <iw_in_inet+0x130>
+  404b00:	26240004 	addiu	a0,s1,4
+  404b04:	8e020010 	lw	v0,16(s0)
+  404b08:	8e06000c 	lw	a2,12(s0)
+  404b0c:	8c450000 	lw	a1,0(v0)
+  404b10:	8f998254 	lw	t9,-32172(gp)
+  404b14:	00000000 	nop
+  404b18:	0320f809 	jalr	t9
+  404b1c:	00000000 	nop
+  404b20:	8fbc0010 	lw	gp,16(sp)
+  404b24:	8e050000 	lw	a1,0(s0)
+  404b28:	02402021 	move	a0,s2
+  404b2c:	8f9982c4 	lw	t9,-32060(gp)
+  404b30:	00000000 	nop
+  404b34:	0320f809 	jalr	t9
+  404b38:	00000000 	nop
+  404b3c:	8fbc0010 	lw	gp,16(sp)
+  404b40:	1000ffe2 	b	404acc <iw_in_inet+0xb4>
+  404b44:	00001021 	move	v0,zero
+  404b48:	8f9980a0 	lw	t9,-32608(gp)
+  404b4c:	00000000 	nop
+  404b50:	0320f809 	jalr	t9
+  404b54:	00000000 	nop
+  404b58:	8fbc0010 	lw	gp,16(sp)
+  404b5c:	00408021 	move	s0,v0
+  404b60:	8f998110 	lw	t9,-32496(gp)
+  404b64:	00000000 	nop
+  404b68:	0320f809 	jalr	t9
+  404b6c:	00000000 	nop
+  404b70:	8fbc0010 	lw	gp,16(sp)
+  404b74:	8c430000 	lw	v1,0(v0)
+  404b78:	2402ffff 	li	v0,-1
+  404b7c:	1000ffd3 	b	404acc <iw_in_inet+0xb4>
+  404b80:	ae030000 	sw	v1,0(s0)
+  404b84:	1000ffd1 	b	404acc <iw_in_inet+0xb4>
+  404b88:	ae200004 	sw	zero,4(s1)
+
+00404b8c <iw_in_addr>:
+  404b8c:	3c1c0fc0 	lui	gp,0xfc0
+  404b90:	279c36c4 	addiu	gp,gp,14020
+  404b94:	0399e021 	addu	gp,gp,t9
+  404b98:	27bdff70 	addiu	sp,sp,-144
+  404b9c:	afbc0018 	sw	gp,24(sp)
+  404ba0:	afb20080 	sw	s2,128(sp)
+  404ba4:	00c09021 	move	s2,a2
+  404ba8:	afb30084 	sw	s3,132(sp)
+  404bac:	afb1007c 	sw	s1,124(sp)
+  404bb0:	afb00078 	sw	s0,120(sp)
+  404bb4:	00a08821 	move	s1,a1
+  404bb8:	00808021 	move	s0,a0
+  404bbc:	afbf008c 	sw	ra,140(sp)
+  404bc0:	afbc0088 	sw	gp,136(sp)
+  404bc4:	02402021 	move	a0,s2
+  404bc8:	2405003a 	li	a1,58
+  404bcc:	00e09821 	move	s3,a3
+  404bd0:	8f998144 	lw	t9,-32444(gp)
+  404bd4:	00000000 	nop
+  404bd8:	0320f809 	jalr	t9
+  404bdc:	00000000 	nop
+  404be0:	8fbc0018 	lw	gp,24(sp)
+  404be4:	1040002c 	beqz	v0,404c98 <iw_in_addr+0x10c>
+  404be8:	02002021 	move	a0,s0
+  404bec:	02202821 	move	a1,s1
+  404bf0:	8f998094 	lw	t9,-32620(gp)
+  404bf4:	00000000 	nop
+  404bf8:	0320f809 	jalr	t9
+  404bfc:	00000000 	nop
+  404c00:	8fbc0018 	lw	gp,24(sp)
+  404c04:	0440001c 	bltz	v0,404c78 <iw_in_addr+0xec>
+  404c08:	00000000 	nop
+  404c0c:	24020001 	li	v0,1
+  404c10:	26650002 	addiu	a1,s3,2
+  404c14:	a6620000 	sh	v0,0(s3)
+  404c18:	02402021 	move	a0,s2
+  404c1c:	8f998180 	lw	t9,-32384(gp)
+  404c20:	00000000 	nop
+  404c24:	0320f809 	jalr	t9
+  404c28:	00000000 	nop
+  404c2c:	8fbc0018 	lw	gp,24(sp)
+  404c30:	10400009 	beqz	v0,404c58 <iw_in_addr+0xcc>
+  404c34:	00000000 	nop
+  404c38:	00001021 	move	v0,zero
+  404c3c:	8fbf008c 	lw	ra,140(sp)
+  404c40:	8fb30084 	lw	s3,132(sp)
+  404c44:	8fb20080 	lw	s2,128(sp)
+  404c48:	8fb1007c 	lw	s1,124(sp)
+  404c4c:	8fb00078 	lw	s0,120(sp)
+  404c50:	03e00008 	jr	ra
+  404c54:	27bd0090 	addiu	sp,sp,144
+  404c58:	8f8480e8 	lw	a0,-32536(gp)
+  404c5c:	00000000 	nop
+  404c60:	8c840000 	lw	a0,0(a0)
+  404c64:	8f858018 	lw	a1,-32744(gp)
+  404c68:	00000000 	nop
+  404c6c:	24a50458 	addiu	a1,a1,1112
+  404c70:	10000071 	b	404e38 <iw_in_addr+0x2ac>
+  404c74:	02403021 	move	a2,s2
+  404c78:	8f8480e8 	lw	a0,-32536(gp)
+  404c7c:	00000000 	nop
+  404c80:	8c840000 	lw	a0,0(a0)
+  404c84:	8f858018 	lw	a1,-32744(gp)
+  404c88:	00000000 	nop
+  404c8c:	24a50478 	addiu	a1,a1,1144
+  404c90:	10000069 	b	404e38 <iw_in_addr+0x2ac>
+  404c94:	02203021 	move	a2,s1
+  404c98:	02202821 	move	a1,s1
+  404c9c:	8f99804c 	lw	t9,-32692(gp)
+  404ca0:	00000000 	nop
+  404ca4:	0320f809 	jalr	t9
+  404ca8:	00000000 	nop
+  404cac:	8fbc0018 	lw	gp,24(sp)
+  404cb0:	0440005a 	bltz	v0,404e1c <iw_in_addr+0x290>
+  404cb4:	02402021 	move	a0,s2
+  404cb8:	27a50020 	addiu	a1,sp,32
+  404cbc:	8f9980f4 	lw	t9,-32524(gp)
+  404cc0:	00000000 	nop
+  404cc4:	0320f809 	jalr	t9
+  404cc8:	00000000 	nop
+  404ccc:	8fbc0018 	lw	gp,24(sp)
+  404cd0:	0440004a 	bltz	v0,404dfc <iw_in_addr+0x270>
+  404cd4:	00000000 	nop
+  404cd8:	8fa20020 	lw	v0,32(sp)
+  404cdc:	8fa30024 	lw	v1,36(sp)
+  404ce0:	afa20030 	sw	v0,48(sp)
+  404ce4:	afa30034 	sw	v1,52(sp)
+  404ce8:	8fa20028 	lw	v0,40(sp)
+  404cec:	8fa3002c 	lw	v1,44(sp)
+  404cf0:	27a40064 	addiu	a0,sp,100
+  404cf4:	02202821 	move	a1,s1
+  404cf8:	24060010 	li	a2,16
+  404cfc:	afa20038 	sw	v0,56(sp)
+  404d00:	afa3003c 	sw	v1,60(sp)
+  404d04:	a7a00040 	sh	zero,64(sp)
+  404d08:	afa00050 	sw	zero,80(sp)
+  404d0c:	8f998188 	lw	t9,-32376(gp)
+  404d10:	00000000 	nop
+  404d14:	0320f809 	jalr	t9
+  404d18:	00000000 	nop
+  404d1c:	8fbc0018 	lw	gp,24(sp)
+  404d20:	27a60030 	addiu	a2,sp,48
+  404d24:	02002021 	move	a0,s0
+  404d28:	34058954 	li	a1,0x8954
+  404d2c:	8f9982b8 	lw	t9,-32072(gp)
+  404d30:	00000000 	nop
+  404d34:	0320f809 	jalr	t9
+  404d38:	00000000 	nop
+  404d3c:	8fbc0018 	lw	gp,24(sp)
+  404d40:	04400018 	bltz	v0,404da4 <iw_in_addr+0x218>
+  404d44:	00000000 	nop
+  404d48:	8fa20050 	lw	v0,80(sp)
+  404d4c:	00000000 	nop
+  404d50:	30420002 	andi	v0,v0,0x2
+  404d54:	10400013 	beqz	v0,404da4 <iw_in_addr+0x218>
+  404d58:	00000000 	nop
+  404d5c:	87a20040 	lh	v0,64(sp)
+  404d60:	87a30042 	lh	v1,66(sp)
+  404d64:	87a40044 	lh	a0,68(sp)
+  404d68:	87a50046 	lh	a1,70(sp)
+  404d6c:	a6620000 	sh	v0,0(s3)
+  404d70:	a6630002 	sh	v1,2(s3)
+  404d74:	a6640004 	sh	a0,4(s3)
+  404d78:	a6650006 	sh	a1,6(s3)
+  404d7c:	87a20048 	lh	v0,72(sp)
+  404d80:	87a3004a 	lh	v1,74(sp)
+  404d84:	87a4004c 	lh	a0,76(sp)
+  404d88:	87a5004e 	lh	a1,78(sp)
+  404d8c:	a6620008 	sh	v0,8(s3)
+  404d90:	a663000a 	sh	v1,10(s3)
+  404d94:	a664000c 	sh	a0,12(s3)
+  404d98:	a665000e 	sh	a1,14(s3)
+  404d9c:	1000ffa7 	b	404c3c <iw_in_addr+0xb0>
+  404da0:	00001021 	move	v0,zero
+  404da4:	8f9980a0 	lw	t9,-32608(gp)
+  404da8:	00000000 	nop
+  404dac:	0320f809 	jalr	t9
+  404db0:	00000000 	nop
+  404db4:	8fbc0018 	lw	gp,24(sp)
+  404db8:	8c430000 	lw	v1,0(v0)
+  404dbc:	8f8480e8 	lw	a0,-32536(gp)
+  404dc0:	00000000 	nop
+  404dc4:	8c840000 	lw	a0,0(a0)
+  404dc8:	8f858018 	lw	a1,-32744(gp)
+  404dcc:	00000000 	nop
+  404dd0:	24a504ac 	addiu	a1,a1,1196
+  404dd4:	02403021 	move	a2,s2
+  404dd8:	02203821 	move	a3,s1
+  404ddc:	afa30010 	sw	v1,16(sp)
+  404de0:	8f9981c4 	lw	t9,-32316(gp)
+  404de4:	00000000 	nop
+  404de8:	0320f809 	jalr	t9
+  404dec:	00000000 	nop
+  404df0:	8fbc0018 	lw	gp,24(sp)
+  404df4:	1000ff91 	b	404c3c <iw_in_addr+0xb0>
+  404df8:	2402ffff 	li	v0,-1
+  404dfc:	8f8480e8 	lw	a0,-32536(gp)
+  404e00:	00000000 	nop
+  404e04:	8c840000 	lw	a0,0(a0)
+  404e08:	8f858018 	lw	a1,-32744(gp)
+  404e0c:	00000000 	nop
+  404e10:	24a504f8 	addiu	a1,a1,1272
+  404e14:	10000008 	b	404e38 <iw_in_addr+0x2ac>
+  404e18:	02403021 	move	a2,s2
+  404e1c:	8f8480e8 	lw	a0,-32536(gp)
+  404e20:	00000000 	nop
+  404e24:	8c840000 	lw	a0,0(a0)
+  404e28:	8f858018 	lw	a1,-32744(gp)
+  404e2c:	00000000 	nop
+  404e30:	24a50518 	addiu	a1,a1,1304
+  404e34:	02203021 	move	a2,s1
+  404e38:	8f9981c4 	lw	t9,-32316(gp)
+  404e3c:	00000000 	nop
+  404e40:	0320f809 	jalr	t9
+  404e44:	00000000 	nop
+  404e48:	8fbc0018 	lw	gp,24(sp)
+  404e4c:	1000ff7b 	b	404c3c <iw_in_addr+0xb0>
+  404e50:	2402ffff 	li	v0,-1
+
+00404e54 <iw_get_priv_size>:
+  404e54:	3c1c0fc0 	lui	gp,0xfc0
+  404e58:	279c33fc 	addiu	gp,gp,13308
+  404e5c:	0399e021 	addu	gp,gp,t9
+  404e60:	00801021 	move	v0,a0
+  404e64:	30437000 	andi	v1,v0,0x7000
+  404e68:	00031a82 	srl	v1,v1,0xa
+  404e6c:	8f848018 	lw	a0,-32744(gp)
+  404e70:	00000000 	nop
+  404e74:	24840548 	addiu	a0,a0,1352
+  404e78:	00832021 	addu	a0,a0,v1
+  404e7c:	8c840000 	lw	a0,0(a0)
+  404e80:	304207ff 	andi	v0,v0,0x7ff
+  404e84:	00440018 	mult	v0,a0
+  404e88:	00001012 	mflo	v0
+  404e8c:	03e00008 	jr	ra
+  404e90:	00000000 	nop
+	...
+
+00404ea0 <isdigit>:
+  404ea0:	3c1c0fc0 	lui	gp,0xfc0
+  404ea4:	279c33b0 	addiu	gp,gp,13232
+  404ea8:	0399e021 	addu	gp,gp,t9
+  404eac:	00801021 	move	v0,a0
+  404eb0:	2442ffd0 	addiu	v0,v0,-48
+  404eb4:	03e00008 	jr	ra
+  404eb8:	2c42000a 	sltiu	v0,v0,10
+  404ebc:	00000000 	nop
+
+00404ec0 <isspace>:
+  404ec0:	3c1c0fc0 	lui	gp,0xfc0
+  404ec4:	279c3390 	addiu	gp,gp,13200
+  404ec8:	0399e021 	addu	gp,gp,t9
+  404ecc:	2482fff7 	addiu	v0,a0,-9
+  404ed0:	2c430005 	sltiu	v1,v0,5
+  404ed4:	24020020 	li	v0,32
+  404ed8:	10820003 	beq	a0,v0,404ee8 <isspace+0x28>
+  404edc:	00002821 	move	a1,zero
+  404ee0:	10600002 	beqz	v1,404eec <isspace+0x2c>
+  404ee4:	00000000 	nop
+  404ee8:	24050001 	li	a1,1
+  404eec:	03e00008 	jr	ra
+  404ef0:	00a01021 	move	v0,a1
+	...
+
+00404f00 <__uClibc_main>:
+  404f00:	3c1c0fc0 	lui	gp,0xfc0
+  404f04:	279c3350 	addiu	gp,gp,13136
+  404f08:	0399e021 	addu	gp,gp,t9
+  404f0c:	27bdffd0 	addiu	sp,sp,-48
+  404f10:	afbc0010 	sw	gp,16(sp)
+  404f14:	8f8281f4 	lw	v0,-32268(gp)
+  404f18:	00000000 	nop
+  404f1c:	8c420000 	lw	v0,0(v0)
+  404f20:	afb20020 	sw	s2,32(sp)
+  404f24:	afb1001c 	sw	s1,28(sp)
+  404f28:	afb00018 	sw	s0,24(sp)
+  404f2c:	afbf0028 	sw	ra,40(sp)
+  404f30:	afbc0024 	sw	gp,36(sp)
+  404f34:	00808821 	move	s1,a0
+  404f38:	00a09021 	move	s2,a1
+  404f3c:	10400046 	beqz	v0,405058 <__uClibc_main+0x158>
+  404f40:	00c08021 	move	s0,a2
+  404f44:	8f828098 	lw	v0,-32616(gp)
+  404f48:	00000000 	nop
+  404f4c:	10400006 	beqz	v0,404f68 <__uClibc_main+0x68>
+  404f50:	00000000 	nop
+  404f54:	0040c821 	move	t9,v0
+  404f58:	0320f809 	jalr	t9
+  404f5c:	00000000 	nop
+  404f60:	8fbc0010 	lw	gp,16(sp)
+  404f64:	00000000 	nop
+  404f68:	8f828100 	lw	v0,-32512(gp)
+  404f6c:	00000000 	nop
+  404f70:	10400006 	beqz	v0,404f8c <__uClibc_main+0x8c>
+  404f74:	00001821 	move	v1,zero
+  404f78:	8f8280f8 	lw	v0,-32520(gp)
+  404f7c:	00000000 	nop
+  404f80:	10400002 	beqz	v0,404f8c <__uClibc_main+0x8c>
+  404f84:	00000000 	nop
+  404f88:	24030001 	li	v1,1
+  404f8c:	10600008 	beqz	v1,404fb0 <__uClibc_main+0xb0>
+  404f90:	00000000 	nop
+  404f94:	8f848100 	lw	a0,-32512(gp)
+  404f98:	8f9980f8 	lw	t9,-32520(gp)
+  404f9c:	00000000 	nop
+  404fa0:	0320f809 	jalr	t9
+  404fa4:	00000000 	nop
+  404fa8:	8fbc0010 	lw	gp,16(sp)
+  404fac:	00000000 	nop
+  404fb0:	8f8281e0 	lw	v0,-32288(gp)
+  404fb4:	00000000 	nop
+  404fb8:	10400006 	beqz	v0,404fd4 <__uClibc_main+0xd4>
+  404fbc:	00000000 	nop
+  404fc0:	0040c821 	move	t9,v0
+  404fc4:	0320f809 	jalr	t9
+  404fc8:	00000000 	nop
+  404fcc:	8fbc0010 	lw	gp,16(sp)
+  404fd0:	00000000 	nop
+  404fd4:	8f8280a0 	lw	v0,-32608(gp)
+  404fd8:	00000000 	nop
+  404fdc:	10400006 	beqz	v0,404ff8 <__uClibc_main+0xf8>
+  404fe0:	00000000 	nop
+  404fe4:	0040c821 	move	t9,v0
+  404fe8:	0320f809 	jalr	t9
+  404fec:	00000000 	nop
+  404ff0:	8fbc0010 	lw	gp,16(sp)
+  404ff4:	ac400000 	sw	zero,0(v0)
+  404ff8:	8f828110 	lw	v0,-32496(gp)
+  404ffc:	00000000 	nop
+  405000:	10400007 	beqz	v0,405020 <__uClibc_main+0x120>
+  405004:	02202021 	move	a0,s1
+  405008:	0040c821 	move	t9,v0
+  40500c:	0320f809 	jalr	t9
+  405010:	00000000 	nop
+  405014:	8fbc0010 	lw	gp,16(sp)
+  405018:	ac400000 	sw	zero,0(v0)
+  40501c:	02202021 	move	a0,s1
+  405020:	02402821 	move	a1,s2
+  405024:	02003021 	move	a2,s0
+  405028:	8f998138 	lw	t9,-32456(gp)
+  40502c:	00000000 	nop
+  405030:	0320f809 	jalr	t9
+  405034:	00000000 	nop
+  405038:	8fbc0010 	lw	gp,16(sp)
+  40503c:	00402021 	move	a0,v0
+  405040:	8f99809c 	lw	t9,-32612(gp)
+  405044:	00000000 	nop
+  405048:	0320f809 	jalr	t9
+  40504c:	00000000 	nop
+  405050:	8fbc0010 	lw	gp,16(sp)
+  405054:	00000000 	nop
+  405058:	8f8181f4 	lw	at,-32268(gp)
+  40505c:	00000000 	nop
+  405060:	1000ffb8 	b	404f44 <__uClibc_main+0x44>
+  405064:	ac300000 	sw	s0,0(at)
+	...
+
+00405070 <__errno_location>:
+  405070:	3c1c0fc0 	lui	gp,0xfc0
+  405074:	279c31e0 	addiu	gp,gp,12768
+  405078:	0399e021 	addu	gp,gp,t9
+  40507c:	8f828274 	lw	v0,-32140(gp)
+  405080:	03e00008 	jr	ra
+  405084:	00000000 	nop
+	...
+
+00405090 <__h_errno_location>:
+  405090:	3c1c0fc0 	lui	gp,0xfc0
+  405094:	279c31c0 	addiu	gp,gp,12736
+  405098:	0399e021 	addu	gp,gp,t9
+  40509c:	8f8281d0 	lw	v0,-32304(gp)
+  4050a0:	03e00008 	jr	ra
+  4050a4:	00000000 	nop
+	...
+
+004050b0 <fclose>:
+  4050b0:	3c1c0fc0 	lui	gp,0xfc0
+  4050b4:	279c31a0 	addiu	gp,gp,12704
+  4050b8:	0399e021 	addu	gp,gp,t9
+  4050bc:	27bdffd8 	addiu	sp,sp,-40
+  4050c0:	afbc0010 	sw	gp,16(sp)
+  4050c4:	afb1001c 	sw	s1,28(sp)
+  4050c8:	afb00018 	sw	s0,24(sp)
+  4050cc:	afbf0024 	sw	ra,36(sp)
+  4050d0:	afbc0020 	sw	gp,32(sp)
+  4050d4:	00808021 	move	s0,a0
+  4050d8:	00008821 	move	s1,zero
+  4050dc:	8e020038 	lw	v0,56(s0)
+  4050e0:	00000000 	nop
+  4050e4:	10400087 	beqz	v0,405304 <fclose+0x254>
+  4050e8:	2604003c 	addiu	a0,s0,60
+  4050ec:	8f848080 	lw	a0,-32640(gp)
+  4050f0:	8f998084 	lw	t9,-32636(gp)
+  4050f4:	00000000 	nop
+  4050f8:	0320f809 	jalr	t9
+  4050fc:	00000000 	nop
+  405100:	8fbc0010 	lw	gp,16(sp)
+  405104:	10400014 	beqz	v0,405158 <fclose+0xa8>
+  405108:	2604003c 	addiu	a0,s0,60
+  40510c:	8e020038 	lw	v0,56(s0)
+  405110:	00000000 	nop
+  405114:	10400009 	beqz	v0,40513c <fclose+0x8c>
+  405118:	00000000 	nop
+  40511c:	24042710 	li	a0,10000
+  405120:	8f998270 	lw	t9,-32144(gp)
+  405124:	00000000 	nop
+  405128:	0320f809 	jalr	t9
+  40512c:	00000000 	nop
+  405130:	8fbc0010 	lw	gp,16(sp)
+  405134:	1000ffe9 	b	4050dc <fclose+0x2c>
+  405138:	00000000 	nop
+  40513c:	8f99811c 	lw	t9,-32484(gp)
+  405140:	00000000 	nop
+  405144:	0320f809 	jalr	t9
+  405148:	00000000 	nop
+  40514c:	8fbc0010 	lw	gp,16(sp)
+  405150:	1000fff3 	b	405120 <fclose+0x70>
+  405154:	24042710 	li	a0,10000
+  405158:	96020000 	lhu	v0,0(s0)
+  40515c:	00000000 	nop
+  405160:	30422000 	andi	v0,v0,0x2000
+  405164:	10400007 	beqz	v0,405184 <fclose+0xd4>
+  405168:	02002021 	move	a0,s0
+  40516c:	8f9980d8 	lw	t9,-32552(gp)
+  405170:	00000000 	nop
+  405174:	0320f809 	jalr	t9
+  405178:	00000000 	nop
+  40517c:	8fbc0010 	lw	gp,16(sp)
+  405180:	00408821 	move	s1,v0
+  405184:	8e02000c 	lw	v0,12(s0)
+  405188:	00000000 	nop
+  40518c:	ae02001c 	sw	v0,28(s0)
+  405190:	8f8381b8 	lw	v1,-32328(gp)
+  405194:	00000000 	nop
+  405198:	8c630000 	lw	v1,0(v1)
+  40519c:	00000000 	nop
+  4051a0:	10700053 	beq	v1,s0,4052f0 <fclose+0x240>
+  4051a4:	00000000 	nop
+  4051a8:	10000003 	b	4051b8 <fclose+0x108>
+  4051ac:	00000000 	nop
+  4051b0:	8c630008 	lw	v1,8(v1)
+  4051b4:	00000000 	nop
+  4051b8:	10600008 	beqz	v1,4051dc <fclose+0x12c>
+  4051bc:	00000000 	nop
+  4051c0:	8c620008 	lw	v0,8(v1)
+  4051c4:	00000000 	nop
+  4051c8:	1450fff9 	bne	v0,s0,4051b0 <fclose+0x100>
+  4051cc:	00000000 	nop
+  4051d0:	8e020008 	lw	v0,8(s0)
+  4051d4:	00000000 	nop
+  4051d8:	ac620008 	sw	v0,8(v1)
+  4051dc:	8f848080 	lw	a0,-32640(gp)
+  4051e0:	8f99811c 	lw	t9,-32484(gp)
+  4051e4:	00000000 	nop
+  4051e8:	0320f809 	jalr	t9
+  4051ec:	00000000 	nop
+  4051f0:	8fbc0010 	lw	gp,16(sp)
+  4051f4:	8e020034 	lw	v0,52(s0)
+  4051f8:	00000000 	nop
+  4051fc:	10400008 	beqz	v0,405220 <fclose+0x170>
+  405200:	00000000 	nop
+  405204:	8e040024 	lw	a0,36(s0)
+  405208:	0040c821 	move	t9,v0
+  40520c:	0320f809 	jalr	t9
+  405210:	00000000 	nop
+  405214:	8fbc0010 	lw	gp,16(sp)
+  405218:	04400033 	bltz	v0,4052e8 <fclose+0x238>
+  40521c:	00000000 	nop
+  405220:	26020004 	addiu	v0,s0,4
+  405224:	ae020024 	sw	v0,36(s0)
+  405228:	8f8280e4 	lw	v0,-32540(gp)
+  40522c:	96030000 	lhu	v1,0(s0)
+  405230:	ae020028 	sw	v0,40(s0)
+  405234:	8f8280ac 	lw	v0,-32596(gp)
+  405238:	00000000 	nop
+  40523c:	ae02002c 	sw	v0,44(s0)
+  405240:	8f828220 	lw	v0,-32224(gp)
+  405244:	00000000 	nop
+  405248:	ae020034 	sw	v0,52(s0)
+  40524c:	30634000 	andi	v1,v1,0x4000
+  405250:	2402ffff 	li	v0,-1
+  405254:	ae020004 	sw	v0,4(s0)
+  405258:	10600007 	beqz	v1,405278 <fclose+0x1c8>
+  40525c:	ae000030 	sw	zero,48(s0)
+  405260:	8e04000c 	lw	a0,12(s0)
+  405264:	8f998030 	lw	t9,-32720(gp)
+  405268:	00000000 	nop
+  40526c:	0320f809 	jalr	t9
+  405270:	00000000 	nop
+  405274:	8fbc0010 	lw	gp,16(sp)
+  405278:	8e020038 	lw	v0,56(s0)
+  40527c:	00000000 	nop
+  405280:	10400012 	beqz	v0,4052cc <fclose+0x21c>
+  405284:	2604003c 	addiu	a0,s0,60
+  405288:	96020000 	lhu	v0,0(s0)
+  40528c:	00000000 	nop
+  405290:	30420040 	andi	v0,v0,0x40
+  405294:	10400007 	beqz	v0,4052b4 <fclose+0x204>
+  405298:	02002021 	move	a0,s0
+  40529c:	ae000024 	sw	zero,36(s0)
+  4052a0:	8f998030 	lw	t9,-32720(gp)
+  4052a4:	00000000 	nop
+  4052a8:	0320f809 	jalr	t9
+  4052ac:	00000000 	nop
+  4052b0:	8fbc0010 	lw	gp,16(sp)
+  4052b4:	02201021 	move	v0,s1
+  4052b8:	8fbf0024 	lw	ra,36(sp)
+  4052bc:	8fb1001c 	lw	s1,28(sp)
+  4052c0:	8fb00018 	lw	s0,24(sp)
+  4052c4:	03e00008 	jr	ra
+  4052c8:	27bd0028 	addiu	sp,sp,40
+  4052cc:	8f99811c 	lw	t9,-32484(gp)
+  4052d0:	00000000 	nop
+  4052d4:	0320f809 	jalr	t9
+  4052d8:	00000000 	nop
+  4052dc:	8fbc0010 	lw	gp,16(sp)
+  4052e0:	1000ffe9 	b	405288 <fclose+0x1d8>
+  4052e4:	00000000 	nop
+  4052e8:	1000ffcd 	b	405220 <fclose+0x170>
+  4052ec:	2411ffff 	li	s1,-1
+  4052f0:	8e020008 	lw	v0,8(s0)
+  4052f4:	8f8181b8 	lw	at,-32328(gp)
+  4052f8:	00000000 	nop
+  4052fc:	1000ffb7 	b	4051dc <fclose+0x12c>
+  405300:	ac220000 	sw	v0,0(at)
+  405304:	8f9980a8 	lw	t9,-32600(gp)
+  405308:	00000000 	nop
+  40530c:	0320f809 	jalr	t9
+  405310:	00000000 	nop
+  405314:	8fbc0010 	lw	gp,16(sp)
+  405318:	1000ff74 	b	4050ec <fclose+0x3c>
+  40531c:	00000000 	nop
+
+00405320 <fflush>:
+  405320:	3c1c0fc0 	lui	gp,0xfc0
+  405324:	279c2f30 	addiu	gp,gp,12080
+  405328:	0399e021 	addu	gp,gp,t9
+  40532c:	27bdffd8 	addiu	sp,sp,-40
+  405330:	afbc0010 	sw	gp,16(sp)
+  405334:	afb00018 	sw	s0,24(sp)
+  405338:	00808021 	move	s0,a0
+  40533c:	afbf0024 	sw	ra,36(sp)
+  405340:	afbc0020 	sw	gp,32(sp)
+  405344:	12000028 	beqz	s0,4053e8 <fflush+0xc8>
+  405348:	afb1001c 	sw	s1,28(sp)
+  40534c:	8f8281b8 	lw	v0,-32328(gp)
+  405350:	00000000 	nop
+  405354:	12020024 	beq	s0,v0,4053e8 <fflush+0xc8>
+  405358:	00000000 	nop
+  40535c:	8e020038 	lw	v0,56(s0)
+  405360:	00000000 	nop
+  405364:	10400019 	beqz	v0,4053cc <fflush+0xac>
+  405368:	2604003c 	addiu	a0,s0,60
+  40536c:	02002021 	move	a0,s0
+  405370:	8f9980d8 	lw	t9,-32552(gp)
+  405374:	00000000 	nop
+  405378:	0320f809 	jalr	t9
+  40537c:	00000000 	nop
+  405380:	8fbc0010 	lw	gp,16(sp)
+  405384:	00408821 	move	s1,v0
+  405388:	8e020038 	lw	v0,56(s0)
+  40538c:	00000000 	nop
+  405390:	10400007 	beqz	v0,4053b0 <fflush+0x90>
+  405394:	2604003c 	addiu	a0,s0,60
+  405398:	02201021 	move	v0,s1
+  40539c:	8fbf0024 	lw	ra,36(sp)
+  4053a0:	8fb1001c 	lw	s1,28(sp)
+  4053a4:	8fb00018 	lw	s0,24(sp)
+  4053a8:	03e00008 	jr	ra
+  4053ac:	27bd0028 	addiu	sp,sp,40
+  4053b0:	8f99811c 	lw	t9,-32484(gp)
+  4053b4:	00000000 	nop
+  4053b8:	0320f809 	jalr	t9
+  4053bc:	00000000 	nop
+  4053c0:	8fbc0010 	lw	gp,16(sp)
+  4053c4:	1000fff5 	b	40539c <fflush+0x7c>
+  4053c8:	02201021 	move	v0,s1
+  4053cc:	8f9980a8 	lw	t9,-32600(gp)
+  4053d0:	00000000 	nop
+  4053d4:	0320f809 	jalr	t9
+  4053d8:	00000000 	nop
+  4053dc:	8fbc0010 	lw	gp,16(sp)
+  4053e0:	1000ffe3 	b	405370 <fflush+0x50>
+  4053e4:	02002021 	move	a0,s0
+  4053e8:	8f9980d8 	lw	t9,-32552(gp)
+  4053ec:	00000000 	nop
+  4053f0:	0320f809 	jalr	t9
+  4053f4:	00000000 	nop
+  4053f8:	8fbc0010 	lw	gp,16(sp)
+  4053fc:	1000ffe6 	b	405398 <fflush+0x78>
+  405400:	00408821 	move	s1,v0
+
+00405404 <fflush_unlocked>:
+  405404:	3c1c0fc0 	lui	gp,0xfc0
+  405408:	279c2e4c 	addiu	gp,gp,11852
+  40540c:	0399e021 	addu	gp,gp,t9
+  405410:	27bdffd0 	addiu	sp,sp,-48
+  405414:	afbc0010 	sw	gp,16(sp)
+  405418:	afb00018 	sw	s0,24(sp)
+  40541c:	8f8281b8 	lw	v0,-32328(gp)
+  405420:	00808021 	move	s0,a0
+  405424:	afb20020 	sw	s2,32(sp)
+  405428:	afb1001c 	sw	s1,28(sp)
+  40542c:	afbf0028 	sw	ra,40(sp)
+  405430:	afbc0024 	sw	gp,36(sp)
+  405434:	00008821 	move	s1,zero
+  405438:	1202004e 	beq	s0,v0,405574 <fflush_unlocked+0x170>
+  40543c:	24120300 	li	s2,768
+  405440:	12000023 	beqz	s0,4054d0 <fflush_unlocked+0xcc>
+  405444:	00000000 	nop
+  405448:	96030000 	lhu	v1,0(s0)
+  40544c:	00000000 	nop
+  405450:	30622000 	andi	v0,v1,0x2000
+  405454:	10400012 	beqz	v0,4054a0 <fflush_unlocked+0x9c>
+  405458:	02003021 	move	a2,s0
+  40545c:	00002021 	move	a0,zero
+  405460:	00002821 	move	a1,zero
+  405464:	8f9982a4 	lw	t9,-32092(gp)
+  405468:	00000000 	nop
+  40546c:	0320f809 	jalr	t9
+  405470:	00000000 	nop
+  405474:	8fbc0010 	lw	gp,16(sp)
+  405478:	10400003 	beqz	v0,405488 <fflush_unlocked+0x84>
+  40547c:	02201021 	move	v0,s1
+  405480:	2411ffff 	li	s1,-1
+  405484:	02201021 	move	v0,s1
+  405488:	8fbf0028 	lw	ra,40(sp)
+  40548c:	8fb20020 	lw	s2,32(sp)
+  405490:	8fb1001c 	lw	s1,28(sp)
+  405494:	8fb00018 	lw	s0,24(sp)
+  405498:	03e00008 	jr	ra
+  40549c:	27bd0030 	addiu	sp,sp,48
+  4054a0:	30620020 	andi	v0,v1,0x20
+  4054a4:	1040fff7 	beqz	v0,405484 <fflush_unlocked+0x80>
+  4054a8:	34620008 	ori	v0,v1,0x8
+  4054ac:	a6020000 	sh	v0,0(s0)
+  4054b0:	8f9980a0 	lw	t9,-32608(gp)
+  4054b4:	00000000 	nop
+  4054b8:	0320f809 	jalr	t9
+  4054bc:	00000000 	nop
+  4054c0:	8fbc0010 	lw	gp,16(sp)
+  4054c4:	24030009 	li	v1,9
+  4054c8:	1000ffed 	b	405480 <fflush_unlocked+0x7c>
+  4054cc:	ac430000 	sw	v1,0(v0)
+  4054d0:	8f848080 	lw	a0,-32640(gp)
+  4054d4:	8f9980a8 	lw	t9,-32600(gp)
+  4054d8:	00000000 	nop
+  4054dc:	0320f809 	jalr	t9
+  4054e0:	00000000 	nop
+  4054e4:	8fbc0010 	lw	gp,16(sp)
+  4054e8:	00000000 	nop
+  4054ec:	8f9081b8 	lw	s0,-32328(gp)
+  4054f0:	00000000 	nop
+  4054f4:	8e100000 	lw	s0,0(s0)
+  4054f8:	00000000 	nop
+  4054fc:	12000015 	beqz	s0,405554 <fflush_unlocked+0x150>
+  405500:	00000000 	nop
+  405504:	96030000 	lhu	v1,0(s0)
+  405508:	00000000 	nop
+  40550c:	38620200 	xori	v0,v1,0x200
+  405510:	02421024 	and	v0,s2,v0
+  405514:	1040000b 	beqz	v0,405544 <fflush_unlocked+0x140>
+  405518:	30632000 	andi	v1,v1,0x2000
+  40551c:	10600009 	beqz	v1,405544 <fflush_unlocked+0x140>
+  405520:	02002021 	move	a0,s0
+  405524:	8f998204 	lw	t9,-32252(gp)
+  405528:	00000000 	nop
+  40552c:	0320f809 	jalr	t9
+  405530:	00000000 	nop
+  405534:	8fbc0010 	lw	gp,16(sp)
+  405538:	10400002 	beqz	v0,405544 <fflush_unlocked+0x140>
+  40553c:	00000000 	nop
+  405540:	2411ffff 	li	s1,-1
+  405544:	8e100008 	lw	s0,8(s0)
+  405548:	00000000 	nop
+  40554c:	1600ffed 	bnez	s0,405504 <fflush_unlocked+0x100>
+  405550:	00000000 	nop
+  405554:	8f848080 	lw	a0,-32640(gp)
+  405558:	8f99811c 	lw	t9,-32484(gp)
+  40555c:	00000000 	nop
+  405560:	0320f809 	jalr	t9
+  405564:	00000000 	nop
+  405568:	8fbc0010 	lw	gp,16(sp)
+  40556c:	1000ffc6 	b	405488 <fflush_unlocked+0x84>
+  405570:	02201021 	move	v0,s1
+  405574:	00008021 	move	s0,zero
+  405578:	1000ffb1 	b	405440 <fflush_unlocked+0x3c>
+  40557c:	24120100 	li	s2,256
+
+00405580 <fopen>:
+  405580:	3c1c0fc0 	lui	gp,0xfc0
+  405584:	279c2cd0 	addiu	gp,gp,11472
+  405588:	0399e021 	addu	gp,gp,t9
+  40558c:	27bdffe0 	addiu	sp,sp,-32
+  405590:	afbc0010 	sw	gp,16(sp)
+  405594:	00003021 	move	a2,zero
+  405598:	2407ffff 	li	a3,-1
+  40559c:	afbf001c 	sw	ra,28(sp)
+  4055a0:	afbc0018 	sw	gp,24(sp)
+  4055a4:	8f998104 	lw	t9,-32508(gp)
+  4055a8:	00000000 	nop
+  4055ac:	0320f809 	jalr	t9
+  4055b0:	00000000 	nop
+  4055b4:	8fbc0010 	lw	gp,16(sp)
+  4055b8:	8fbf001c 	lw	ra,28(sp)
+  4055bc:	00000000 	nop
+  4055c0:	03e00008 	jr	ra
+  4055c4:	27bd0020 	addiu	sp,sp,32
+	...
+
+004055d0 <perror>:
+  4055d0:	3c1c0fc0 	lui	gp,0xfc0
+  4055d4:	279c2c80 	addiu	gp,gp,11392
+  4055d8:	0399e021 	addu	gp,gp,t9
+  4055dc:	27bdffe0 	addiu	sp,sp,-32
+  4055e0:	afbc0010 	sw	gp,16(sp)
+  4055e4:	00803021 	move	a2,a0
+  4055e8:	afbf001c 	sw	ra,28(sp)
+  4055ec:	afbc0018 	sw	gp,24(sp)
+  4055f0:	8f858018 	lw	a1,-32744(gp)
+  4055f4:	00000000 	nop
+  4055f8:	24a50570 	addiu	a1,a1,1392
+  4055fc:	8f8480e8 	lw	a0,-32536(gp)
+  405600:	00000000 	nop
+  405604:	8c840000 	lw	a0,0(a0)
+  405608:	8f878018 	lw	a3,-32744(gp)
+  40560c:	00000000 	nop
+  405610:	24e70578 	addiu	a3,a3,1400
+  405614:	10c0000e 	beqz	a2,405650 <perror+0x80>
+  405618:	00000000 	nop
+  40561c:	80c20000 	lb	v0,0(a2)
+  405620:	00000000 	nop
+  405624:	1040000a 	beqz	v0,405650 <perror+0x80>
+  405628:	00000000 	nop
+  40562c:	8f9981c4 	lw	t9,-32316(gp)
+  405630:	00000000 	nop
+  405634:	0320f809 	jalr	t9
+  405638:	00000000 	nop
+  40563c:	8fbc0010 	lw	gp,16(sp)
+  405640:	8fbf001c 	lw	ra,28(sp)
+  405644:	00000000 	nop
+  405648:	03e00008 	jr	ra
+  40564c:	27bd0020 	addiu	sp,sp,32
+  405650:	24e70002 	addiu	a3,a3,2
+  405654:	1000fff5 	b	40562c <perror+0x5c>
+  405658:	00e03021 	move	a2,a3
+  40565c:	00000000 	nop
+
+00405660 <fgets>:
+  405660:	3c1c0fc0 	lui	gp,0xfc0
+  405664:	279c2bf0 	addiu	gp,gp,11248
+  405668:	0399e021 	addu	gp,gp,t9
+  40566c:	27bdffd0 	addiu	sp,sp,-48
+  405670:	afbc0010 	sw	gp,16(sp)
+  405674:	afb20020 	sw	s2,32(sp)
+  405678:	afb1001c 	sw	s1,28(sp)
+  40567c:	afb00018 	sw	s0,24(sp)
+  405680:	afbf0028 	sw	ra,40(sp)
+  405684:	00c08021 	move	s0,a2
+  405688:	afbc0024 	sw	gp,36(sp)
+  40568c:	8e030038 	lw	v1,56(s0)
+  405690:	2602003c 	addiu	v0,s0,60
+  405694:	00809021 	move	s2,a0
+  405698:	00a08821 	move	s1,a1
+  40569c:	1060001c 	beqz	v1,405710 <fgets+0xb0>
+  4056a0:	00402021 	move	a0,v0
+  4056a4:	02402021 	move	a0,s2
+  4056a8:	02202821 	move	a1,s1
+  4056ac:	02003021 	move	a2,s0
+  4056b0:	8f998078 	lw	t9,-32648(gp)
+  4056b4:	00000000 	nop
+  4056b8:	0320f809 	jalr	t9
+  4056bc:	00000000 	nop
+  4056c0:	8fbc0010 	lw	gp,16(sp)
+  4056c4:	00408821 	move	s1,v0
+  4056c8:	8e020038 	lw	v0,56(s0)
+  4056cc:	00000000 	nop
+  4056d0:	10400008 	beqz	v0,4056f4 <fgets+0x94>
+  4056d4:	2604003c 	addiu	a0,s0,60
+  4056d8:	02201021 	move	v0,s1
+  4056dc:	8fbf0028 	lw	ra,40(sp)
+  4056e0:	8fb20020 	lw	s2,32(sp)
+  4056e4:	8fb1001c 	lw	s1,28(sp)
+  4056e8:	8fb00018 	lw	s0,24(sp)
+  4056ec:	03e00008 	jr	ra
+  4056f0:	27bd0030 	addiu	sp,sp,48
+  4056f4:	8f99811c 	lw	t9,-32484(gp)
+  4056f8:	00000000 	nop
+  4056fc:	0320f809 	jalr	t9
+  405700:	00000000 	nop
+  405704:	8fbc0010 	lw	gp,16(sp)
+  405708:	1000fff4 	b	4056dc <fgets+0x7c>
+  40570c:	02201021 	move	v0,s1
+  405710:	8f9980a8 	lw	t9,-32600(gp)
+  405714:	00000000 	nop
+  405718:	0320f809 	jalr	t9
+  40571c:	00000000 	nop
+  405720:	8fbc0010 	lw	gp,16(sp)
+  405724:	1000ffe0 	b	4056a8 <fgets+0x48>
+  405728:	02402021 	move	a0,s2
+
+0040572c <fgets_unlocked>:
+  40572c:	3c1c0fc0 	lui	gp,0xfc0
+  405730:	279c2b24 	addiu	gp,gp,11044
+  405734:	0399e021 	addu	gp,gp,t9
+  405738:	27bdffd0 	addiu	sp,sp,-48
+  40573c:	afbc0010 	sw	gp,16(sp)
+  405740:	afb30024 	sw	s3,36(sp)
+  405744:	00809821 	move	s3,a0
+  405748:	afb20020 	sw	s2,32(sp)
+  40574c:	afb1001c 	sw	s1,28(sp)
+  405750:	afb00018 	sw	s0,24(sp)
+  405754:	afbf002c 	sw	ra,44(sp)
+  405758:	afbc0028 	sw	gp,40(sp)
+  40575c:	00a08821 	move	s1,a1
+  405760:	00c09021 	move	s2,a2
+  405764:	02608021 	move	s0,s3
+  405768:	2a220002 	slti	v0,s1,2
+  40576c:	14400012 	bnez	v0,4057b8 <fgets_unlocked+0x8c>
+  405770:	02402021 	move	a0,s2
+  405774:	8e430014 	lw	v1,20(s2)
+  405778:	8e42001c 	lw	v0,28(s2)
+  40577c:	00000000 	nop
+  405780:	0062102b 	sltu	v0,v1,v0
+  405784:	10400017 	beqz	v0,4057e4 <fgets_unlocked+0xb8>
+  405788:	24650001 	addiu	a1,v1,1
+  40578c:	90630000 	lbu	v1,0(v1)
+  405790:	ae450014 	sw	a1,20(s2)
+  405794:	00031600 	sll	v0,v1,0x18
+  405798:	00022603 	sra	a0,v0,0x18
+  40579c:	2402ffff 	li	v0,-1
+  4057a0:	10620005 	beq	v1,v0,4057b8 <fgets_unlocked+0x8c>
+  4057a4:	2631ffff 	addiu	s1,s1,-1
+  4057a8:	2402000a 	li	v0,10
+  4057ac:	a2030000 	sb	v1,0(s0)
+  4057b0:	1482ffed 	bne	a0,v0,405768 <fgets_unlocked+0x3c>
+  4057b4:	26100001 	addiu	s0,s0,1
+  4057b8:	12130003 	beq	s0,s3,4057c8 <fgets_unlocked+0x9c>
+  4057bc:	00001021 	move	v0,zero
+  4057c0:	a2000000 	sb	zero,0(s0)
+  4057c4:	02601021 	move	v0,s3
+  4057c8:	8fbf002c 	lw	ra,44(sp)
+  4057cc:	8fb30024 	lw	s3,36(sp)
+  4057d0:	8fb20020 	lw	s2,32(sp)
+  4057d4:	8fb1001c 	lw	s1,28(sp)
+  4057d8:	8fb00018 	lw	s0,24(sp)
+  4057dc:	03e00008 	jr	ra
+  4057e0:	27bd0030 	addiu	sp,sp,48
+  4057e4:	8f9980b0 	lw	t9,-32592(gp)
+  4057e8:	00000000 	nop
+  4057ec:	0320f809 	jalr	t9
+  4057f0:	00000000 	nop
+  4057f4:	8fbc0010 	lw	gp,16(sp)
+  4057f8:	1000ffe6 	b	405794 <fgets_unlocked+0x68>
+  4057fc:	00401821 	move	v1,v0
+
+00405800 <putchar>:
+  405800:	3c1c0fc0 	lui	gp,0xfc0
+  405804:	279c2a50 	addiu	gp,gp,10832
+  405808:	0399e021 	addu	gp,gp,t9
+  40580c:	27bdffd8 	addiu	sp,sp,-40
+  405810:	afbc0010 	sw	gp,16(sp)
+  405814:	8f8282ac 	lw	v0,-32084(gp)
+  405818:	00000000 	nop
+  40581c:	8c420000 	lw	v0,0(v0)
+  405820:	afb00018 	sw	s0,24(sp)
+  405824:	afbf0020 	sw	ra,32(sp)
+  405828:	afbc001c 	sw	gp,28(sp)
+  40582c:	00808021 	move	s0,a0
+  405830:	2444003c 	addiu	a0,v0,60
+  405834:	8c420038 	lw	v0,56(v0)
+  405838:	00000000 	nop
+  40583c:	1040001d 	beqz	v0,4058b4 <putchar+0xb4>
+  405840:	00000000 	nop
+  405844:	02002021 	move	a0,s0
+  405848:	8f9980dc 	lw	t9,-32548(gp)
+  40584c:	00000000 	nop
+  405850:	0320f809 	jalr	t9
+  405854:	00000000 	nop
+  405858:	8fbc0010 	lw	gp,16(sp)
+  40585c:	00408021 	move	s0,v0
+  405860:	8f8282ac 	lw	v0,-32084(gp)
+  405864:	00000000 	nop
+  405868:	8c420000 	lw	v0,0(v0)
+  40586c:	00000000 	nop
+  405870:	2444003c 	addiu	a0,v0,60
+  405874:	8c420038 	lw	v0,56(v0)
+  405878:	00000000 	nop
+  40587c:	10400006 	beqz	v0,405898 <putchar+0x98>
+  405880:	00000000 	nop
+  405884:	02001021 	move	v0,s0
+  405888:	8fbf0020 	lw	ra,32(sp)
+  40588c:	8fb00018 	lw	s0,24(sp)
+  405890:	03e00008 	jr	ra
+  405894:	27bd0028 	addiu	sp,sp,40
+  405898:	8f99811c 	lw	t9,-32484(gp)
+  40589c:	00000000 	nop
+  4058a0:	0320f809 	jalr	t9
+  4058a4:	00000000 	nop
+  4058a8:	8fbc0010 	lw	gp,16(sp)
+  4058ac:	1000fff6 	b	405888 <putchar+0x88>
+  4058b0:	02001021 	move	v0,s0
+  4058b4:	8f9980a8 	lw	t9,-32600(gp)
+  4058b8:	00000000 	nop
+  4058bc:	0320f809 	jalr	t9
+  4058c0:	00000000 	nop
+  4058c4:	8fbc0010 	lw	gp,16(sp)
+  4058c8:	1000ffdf 	b	405848 <putchar+0x48>
+  4058cc:	02002021 	move	a0,s0
+
+004058d0 <putchar_unlocked>:
+  4058d0:	3c1c0fc0 	lui	gp,0xfc0
+  4058d4:	279c2980 	addiu	gp,gp,10624
+  4058d8:	0399e021 	addu	gp,gp,t9
+  4058dc:	27bdffe0 	addiu	sp,sp,-32
+  4058e0:	afbc0010 	sw	gp,16(sp)
+  4058e4:	8f8782ac 	lw	a3,-32084(gp)
+  4058e8:	00000000 	nop
+  4058ec:	8ce70000 	lw	a3,0(a3)
+  4058f0:	afbf001c 	sw	ra,28(sp)
+  4058f4:	afbc0018 	sw	gp,24(sp)
+  4058f8:	8ce60014 	lw	a2,20(a3)
+  4058fc:	8ce30020 	lw	v1,32(a3)
+  405900:	00804821 	move	t1,a0
+  405904:	00c3182b 	sltu	v1,a2,v1
+  405908:	312200ff 	andi	v0,t1,0xff
+  40590c:	00e02821 	move	a1,a3
+  405910:	10600007 	beqz	v1,405930 <putchar_unlocked+0x60>
+  405914:	24c80001 	addiu	t0,a2,1
+  405918:	a0c90000 	sb	t1,0(a2)
+  40591c:	ace80014 	sw	t0,20(a3)
+  405920:	8fbf001c 	lw	ra,28(sp)
+  405924:	00000000 	nop
+  405928:	03e00008 	jr	ra
+  40592c:	27bd0020 	addiu	sp,sp,32
+  405930:	8f998044 	lw	t9,-32700(gp)
+  405934:	00000000 	nop
+  405938:	0320f809 	jalr	t9
+  40593c:	00000000 	nop
+  405940:	8fbc0010 	lw	gp,16(sp)
+  405944:	1000fff6 	b	405920 <putchar_unlocked+0x50>
+  405948:	00000000 	nop
+  40594c:	00000000 	nop
+
+00405950 <puts>:
+  405950:	3c1c0fc0 	lui	gp,0xfc0
+  405954:	279c2900 	addiu	gp,gp,10496
+  405958:	0399e021 	addu	gp,gp,t9
+  40595c:	27bdffd8 	addiu	sp,sp,-40
+  405960:	afbc0010 	sw	gp,16(sp)
+  405964:	afb00018 	sw	s0,24(sp)
+  405968:	8f9082ac 	lw	s0,-32084(gp)
+  40596c:	00000000 	nop
+  405970:	8e100000 	lw	s0,0(s0)
+  405974:	afb1001c 	sw	s1,28(sp)
+  405978:	afbf0024 	sw	ra,36(sp)
+  40597c:	afbc0020 	sw	gp,32(sp)
+  405980:	8e020038 	lw	v0,56(s0)
+  405984:	00808821 	move	s1,a0
+  405988:	10400026 	beqz	v0,405a24 <puts+0xd4>
+  40598c:	2604003c 	addiu	a0,s0,60
+  405990:	02202021 	move	a0,s1
+  405994:	02002821 	move	a1,s0
+  405998:	8f9981bc 	lw	t9,-32324(gp)
+  40599c:	00000000 	nop
+  4059a0:	0320f809 	jalr	t9
+  4059a4:	00000000 	nop
+  4059a8:	8fbc0010 	lw	gp,16(sp)
+  4059ac:	2404000a 	li	a0,10
+  4059b0:	02002821 	move	a1,s0
+  4059b4:	24510001 	addiu	s1,v0,1
+  4059b8:	8f998044 	lw	t9,-32700(gp)
+  4059bc:	00000000 	nop
+  4059c0:	0320f809 	jalr	t9
+  4059c4:	00000000 	nop
+  4059c8:	8fbc0010 	lw	gp,16(sp)
+  4059cc:	2403ffff 	li	v1,-1
+  4059d0:	10430012 	beq	v0,v1,405a1c <puts+0xcc>
+  4059d4:	2604003c 	addiu	a0,s0,60
+  4059d8:	8e020038 	lw	v0,56(s0)
+  4059dc:	00000000 	nop
+  4059e0:	10400007 	beqz	v0,405a00 <puts+0xb0>
+  4059e4:	00000000 	nop
+  4059e8:	02201021 	move	v0,s1
+  4059ec:	8fbf0024 	lw	ra,36(sp)
+  4059f0:	8fb1001c 	lw	s1,28(sp)
+  4059f4:	8fb00018 	lw	s0,24(sp)
+  4059f8:	03e00008 	jr	ra
+  4059fc:	27bd0028 	addiu	sp,sp,40
+  405a00:	8f99811c 	lw	t9,-32484(gp)
+  405a04:	00000000 	nop
+  405a08:	0320f809 	jalr	t9
+  405a0c:	00000000 	nop
+  405a10:	8fbc0010 	lw	gp,16(sp)
+  405a14:	1000fff5 	b	4059ec <puts+0x9c>
+  405a18:	02201021 	move	v0,s1
+  405a1c:	1000ffee 	b	4059d8 <puts+0x88>
+  405a20:	2411ffff 	li	s1,-1
+  405a24:	8f9980a8 	lw	t9,-32600(gp)
+  405a28:	00000000 	nop
+  405a2c:	0320f809 	jalr	t9
+  405a30:	00000000 	nop
+  405a34:	8fbc0010 	lw	gp,16(sp)
+  405a38:	1000ffd6 	b	405994 <puts+0x44>
+  405a3c:	02202021 	move	a0,s1
+
+00405a40 <fwrite>:
+  405a40:	3c1c0fc0 	lui	gp,0xfc0
+  405a44:	279c2810 	addiu	gp,gp,10256
+  405a48:	0399e021 	addu	gp,gp,t9
+  405a4c:	27bdffd0 	addiu	sp,sp,-48
+  405a50:	afbc0010 	sw	gp,16(sp)
+  405a54:	afb30024 	sw	s3,36(sp)
+  405a58:	afb20020 	sw	s2,32(sp)
+  405a5c:	afb1001c 	sw	s1,28(sp)
+  405a60:	afb00018 	sw	s0,24(sp)
+  405a64:	afbf002c 	sw	ra,44(sp)
+  405a68:	00e08021 	move	s0,a3
+  405a6c:	afbc0028 	sw	gp,40(sp)
+  405a70:	8e030038 	lw	v1,56(s0)
+  405a74:	2602003c 	addiu	v0,s0,60
+  405a78:	00809821 	move	s3,a0
+  405a7c:	00a08821 	move	s1,a1
+  405a80:	00402021 	move	a0,v0
+  405a84:	1060001e 	beqz	v1,405b00 <fwrite+0xc0>
+  405a88:	00c09021 	move	s2,a2
+  405a8c:	02602021 	move	a0,s3
+  405a90:	02202821 	move	a1,s1
+  405a94:	02403021 	move	a2,s2
+  405a98:	02003821 	move	a3,s0
+  405a9c:	8f9980d0 	lw	t9,-32560(gp)
+  405aa0:	00000000 	nop
+  405aa4:	0320f809 	jalr	t9
+  405aa8:	00000000 	nop
+  405aac:	8fbc0010 	lw	gp,16(sp)
+  405ab0:	00408821 	move	s1,v0
+  405ab4:	8e020038 	lw	v0,56(s0)
+  405ab8:	00000000 	nop
+  405abc:	10400009 	beqz	v0,405ae4 <fwrite+0xa4>
+  405ac0:	2604003c 	addiu	a0,s0,60
+  405ac4:	02201021 	move	v0,s1
+  405ac8:	8fbf002c 	lw	ra,44(sp)
+  405acc:	8fb30024 	lw	s3,36(sp)
+  405ad0:	8fb20020 	lw	s2,32(sp)
+  405ad4:	8fb1001c 	lw	s1,28(sp)
+  405ad8:	8fb00018 	lw	s0,24(sp)
+  405adc:	03e00008 	jr	ra
+  405ae0:	27bd0030 	addiu	sp,sp,48
+  405ae4:	8f99811c 	lw	t9,-32484(gp)
+  405ae8:	00000000 	nop
+  405aec:	0320f809 	jalr	t9
+  405af0:	00000000 	nop
+  405af4:	8fbc0010 	lw	gp,16(sp)
+  405af8:	1000fff3 	b	405ac8 <fwrite+0x88>
+  405afc:	02201021 	move	v0,s1
+  405b00:	8f9980a8 	lw	t9,-32600(gp)
+  405b04:	00000000 	nop
+  405b08:	0320f809 	jalr	t9
+  405b0c:	00000000 	nop
+  405b10:	8fbc0010 	lw	gp,16(sp)
+  405b14:	1000ffde 	b	405a90 <fwrite+0x50>
+  405b18:	02602021 	move	a0,s3
+
+00405b1c <fwrite_unlocked>:
+  405b1c:	3c1c0fc0 	lui	gp,0xfc0
+  405b20:	279c2734 	addiu	gp,gp,10036
+  405b24:	0399e021 	addu	gp,gp,t9
+  405b28:	27bdffd8 	addiu	sp,sp,-40
+  405b2c:	afbc0010 	sw	gp,16(sp)
+  405b30:	afb00018 	sw	s0,24(sp)
+  405b34:	00a08021 	move	s0,a1
+  405b38:	afbf0020 	sw	ra,32(sp)
+  405b3c:	00c02821 	move	a1,a2
+  405b40:	afbc001c 	sw	gp,28(sp)
+  405b44:	12000011 	beqz	s0,405b8c <fwrite_unlocked+0x70>
+  405b48:	00e03021 	move	a2,a3
+  405b4c:	00b00018 	mult	a1,s0
+  405b50:	00002812 	mflo	a1
+  405b54:	8f9982a4 	lw	t9,-32092(gp)
+  405b58:	00000000 	nop
+  405b5c:	0320f809 	jalr	t9
+  405b60:	00000000 	nop
+  405b64:	8fbc0010 	lw	gp,16(sp)
+  405b68:	16000002 	bnez	s0,405b74 <fwrite_unlocked+0x58>
+  405b6c:	00000000 	nop
+  405b70:	0007000d 	break	0x7
+  405b74:	0050001b 	divu	zero,v0,s0
+  405b78:	00001012 	mflo	v0
+  405b7c:	8fbf0020 	lw	ra,32(sp)
+  405b80:	8fb00018 	lw	s0,24(sp)
+  405b84:	03e00008 	jr	ra
+  405b88:	27bd0028 	addiu	sp,sp,40
+  405b8c:	1000fffb 	b	405b7c <fwrite_unlocked+0x60>
+  405b90:	00001021 	move	v0,zero
+	...
+
+00405ba0 <_stdio_fopen>:
+  405ba0:	3c1c0fc0 	lui	gp,0xfc0
+  405ba4:	279c26b0 	addiu	gp,gp,9904
+  405ba8:	0399e021 	addu	gp,gp,t9
+  405bac:	27bdffd0 	addiu	sp,sp,-48
+  405bb0:	afbc0010 	sw	gp,16(sp)
+  405bb4:	afb30024 	sw	s3,36(sp)
+  405bb8:	afb20020 	sw	s2,32(sp)
+  405bbc:	afb1001c 	sw	s1,28(sp)
+  405bc0:	afb00018 	sw	s0,24(sp)
+  405bc4:	afbf002c 	sw	ra,44(sp)
+  405bc8:	afbc0028 	sw	gp,40(sp)
+  405bcc:	80a30000 	lb	v1,0(a1)
+  405bd0:	24020072 	li	v0,114
+  405bd4:	00809821 	move	s3,a0
+  405bd8:	00c08821 	move	s1,a2
+  405bdc:	00e09021 	move	s2,a3
+  405be0:	1062002c 	beq	v1,v0,405c94 <_stdio_fopen+0xf4>
+  405be4:	00008021 	move	s0,zero
+  405be8:	24020077 	li	v0,119
+  405bec:	10620029 	beq	v1,v0,405c94 <_stdio_fopen+0xf4>
+  405bf0:	24100301 	li	s0,769
+  405bf4:	24020061 	li	v0,97
+  405bf8:	10620026 	beq	v1,v0,405c94 <_stdio_fopen+0xf4>
+  405bfc:	24100109 	li	s0,265
+  405c00:	8f9980a0 	lw	t9,-32608(gp)
+  405c04:	00000000 	nop
+  405c08:	0320f809 	jalr	t9
+  405c0c:	00000000 	nop
+  405c10:	8fbc0010 	lw	gp,16(sp)
+  405c14:	24030016 	li	v1,22
+  405c18:	12200016 	beqz	s1,405c74 <_stdio_fopen+0xd4>
+  405c1c:	ac430000 	sw	v1,0(v0)
+  405c20:	96220000 	lhu	v0,0(s1)
+  405c24:	00000000 	nop
+  405c28:	30424000 	andi	v0,v0,0x4000
+  405c2c:	10400007 	beqz	v0,405c4c <_stdio_fopen+0xac>
+  405c30:	00000000 	nop
+  405c34:	8e24000c 	lw	a0,12(s1)
+  405c38:	8f998030 	lw	t9,-32720(gp)
+  405c3c:	00000000 	nop
+  405c40:	0320f809 	jalr	t9
+  405c44:	00000000 	nop
+  405c48:	8fbc0010 	lw	gp,16(sp)
+  405c4c:	96220000 	lhu	v0,0(s1)
+  405c50:	00000000 	nop
+  405c54:	30420040 	andi	v0,v0,0x40
+  405c58:	10400006 	beqz	v0,405c74 <_stdio_fopen+0xd4>
+  405c5c:	02202021 	move	a0,s1
+  405c60:	8f998030 	lw	t9,-32720(gp)
+  405c64:	00000000 	nop
+  405c68:	0320f809 	jalr	t9
+  405c6c:	00000000 	nop
+  405c70:	8fbc0010 	lw	gp,16(sp)
+  405c74:	00001021 	move	v0,zero
+  405c78:	8fbf002c 	lw	ra,44(sp)
+  405c7c:	8fb30024 	lw	s3,36(sp)
+  405c80:	8fb20020 	lw	s2,32(sp)
+  405c84:	8fb1001c 	lw	s1,28(sp)
+  405c88:	8fb00018 	lw	s0,24(sp)
+  405c8c:	03e00008 	jr	ra
+  405c90:	27bd0030 	addiu	sp,sp,48
+  405c94:	24a50001 	addiu	a1,a1,1
+  405c98:	80a30000 	lb	v1,0(a1)
+  405c9c:	24020062 	li	v0,98
+  405ca0:	10620081 	beq	v1,v0,405ea8 <_stdio_fopen+0x308>
+  405ca4:	00000000 	nop
+  405ca8:	80a30000 	lb	v1,0(a1)
+  405cac:	2402002b 	li	v0,43
+  405cb0:	1062007a 	beq	v1,v0,405e9c <_stdio_fopen+0x2fc>
+  405cb4:	2402fffe 	li	v0,-2
+  405cb8:	1220005d 	beqz	s1,405e30 <_stdio_fopen+0x290>
+  405cbc:	24040054 	li	a0,84
+  405cc0:	06400051 	bltz	s2,405e08 <_stdio_fopen+0x268>
+  405cc4:	3203000b 	andi	v1,s0,0xb
+  405cc8:	24630001 	addiu	v1,v1,1
+  405ccc:	26620001 	addiu	v0,s3,1
+  405cd0:	00621024 	and	v0,v1,v0
+  405cd4:	10430009 	beq	v0,v1,405cfc <_stdio_fopen+0x15c>
+  405cd8:	00000000 	nop
+  405cdc:	8f9980a0 	lw	t9,-32608(gp)
+  405ce0:	00000000 	nop
+  405ce4:	0320f809 	jalr	t9
+  405ce8:	00000000 	nop
+  405cec:	8fbc0010 	lw	gp,16(sp)
+  405cf0:	24030016 	li	v1,22
+  405cf4:	ac430000 	sw	v1,0(v0)
+  405cf8:	2412ffff 	li	s2,-1
+  405cfc:	ae320004 	sw	s2,4(s1)
+  405d00:	8e240004 	lw	a0,4(s1)
+  405d04:	00000000 	nop
+  405d08:	0480ffc5 	bltz	a0,405c20 <_stdio_fopen+0x80>
+  405d0c:	00000000 	nop
+  405d10:	8f99822c 	lw	t9,-32212(gp)
+  405d14:	00000000 	nop
+  405d18:	0320f809 	jalr	t9
+  405d1c:	00000000 	nop
+  405d20:	8fbc0010 	lw	gp,16(sp)
+  405d24:	32030003 	andi	v1,s0,0x3
+  405d28:	24630001 	addiu	v1,v1,1
+  405d2c:	38630003 	xori	v1,v1,0x3
+  405d30:	00031900 	sll	v1,v1,0x4
+  405d34:	00021200 	sll	v0,v0,0x8
+  405d38:	96240000 	lhu	a0,0(s1)
+  405d3c:	00431025 	or	v0,v0,v1
+  405d40:	32030008 	andi	v1,s0,0x8
+  405d44:	10600002 	beqz	v1,405d50 <_stdio_fopen+0x1b0>
+  405d48:	00823025 	or	a2,a0,v0
+  405d4c:	34c60400 	ori	a2,a2,0x400
+  405d50:	26220004 	addiu	v0,s1,4
+  405d54:	ae220024 	sw	v0,36(s1)
+  405d58:	8f8280e4 	lw	v0,-32540(gp)
+  405d5c:	8e23000c 	lw	v1,12(s1)
+  405d60:	ae220028 	sw	v0,40(s1)
+  405d64:	8f8280ac 	lw	v0,-32596(gp)
+  405d68:	00000000 	nop
+  405d6c:	ae22002c 	sw	v0,44(s1)
+  405d70:	8f828220 	lw	v0,-32224(gp)
+  405d74:	a6260000 	sh	a2,0(s1)
+  405d78:	ae23001c 	sw	v1,28(s1)
+  405d7c:	ae230018 	sw	v1,24(s1)
+  405d80:	ae230014 	sw	v1,20(s1)
+  405d84:	ae230020 	sw	v1,32(s1)
+  405d88:	2624003c 	addiu	a0,s1,60
+  405d8c:	ae220034 	sw	v0,52(s1)
+  405d90:	8f908080 	lw	s0,-32640(gp)
+  405d94:	ae200030 	sw	zero,48(s1)
+  405d98:	ae200038 	sw	zero,56(s1)
+  405d9c:	8f998128 	lw	t9,-32472(gp)
+  405da0:	00000000 	nop
+  405da4:	0320f809 	jalr	t9
+  405da8:	00000000 	nop
+  405dac:	8fbc0010 	lw	gp,16(sp)
+  405db0:	02002021 	move	a0,s0
+  405db4:	8f9980a8 	lw	t9,-32600(gp)
+  405db8:	00000000 	nop
+  405dbc:	0320f809 	jalr	t9
+  405dc0:	00000000 	nop
+  405dc4:	8fbc0010 	lw	gp,16(sp)
+  405dc8:	00000000 	nop
+  405dcc:	8f8281b8 	lw	v0,-32328(gp)
+  405dd0:	00000000 	nop
+  405dd4:	8c420000 	lw	v0,0(v0)
+  405dd8:	02002021 	move	a0,s0
+  405ddc:	ae220008 	sw	v0,8(s1)
+  405de0:	8f8181b8 	lw	at,-32328(gp)
+  405de4:	00000000 	nop
+  405de8:	ac310000 	sw	s1,0(at)
+  405dec:	8f99811c 	lw	t9,-32484(gp)
+  405df0:	00000000 	nop
+  405df4:	0320f809 	jalr	t9
+  405df8:	00000000 	nop
+  405dfc:	8fbc0010 	lw	gp,16(sp)
+  405e00:	1000ff9d 	b	405c78 <_stdio_fopen+0xd8>
+  405e04:	02201021 	move	v0,s1
+  405e08:	02602021 	move	a0,s3
+  405e0c:	02002821 	move	a1,s0
+  405e10:	240601b6 	li	a2,438
+  405e14:	8f998064 	lw	t9,-32668(gp)
+  405e18:	00000000 	nop
+  405e1c:	0320f809 	jalr	t9
+  405e20:	00000000 	nop
+  405e24:	8fbc0010 	lw	gp,16(sp)
+  405e28:	1000ffb5 	b	405d00 <_stdio_fopen+0x160>
+  405e2c:	ae220004 	sw	v0,4(s1)
+  405e30:	8f998230 	lw	t9,-32208(gp)
+  405e34:	00000000 	nop
+  405e38:	0320f809 	jalr	t9
+  405e3c:	00000000 	nop
+  405e40:	8fbc0010 	lw	gp,16(sp)
+  405e44:	00408821 	move	s1,v0
+  405e48:	1220ff8b 	beqz	s1,405c78 <_stdio_fopen+0xd8>
+  405e4c:	24040100 	li	a0,256
+  405e50:	24020040 	li	v0,64
+  405e54:	a6220000 	sh	v0,0(s1)
+  405e58:	8f998230 	lw	t9,-32208(gp)
+  405e5c:	00000000 	nop
+  405e60:	0320f809 	jalr	t9
+  405e64:	00000000 	nop
+  405e68:	8fbc0010 	lw	gp,16(sp)
+  405e6c:	00401821 	move	v1,v0
+  405e70:	10600007 	beqz	v1,405e90 <_stdio_fopen+0x2f0>
+  405e74:	ae23000c 	sw	v1,12(s1)
+  405e78:	96220000 	lhu	v0,0(s1)
+  405e7c:	24630100 	addiu	v1,v1,256
+  405e80:	34424000 	ori	v0,v0,0x4000
+  405e84:	ae230010 	sw	v1,16(s1)
+  405e88:	1000ff8d 	b	405cc0 <_stdio_fopen+0x120>
+  405e8c:	a6220000 	sh	v0,0(s1)
+  405e90:	ae200010 	sw	zero,16(s1)
+  405e94:	1000ff8a 	b	405cc0 <_stdio_fopen+0x120>
+  405e98:	ae20000c 	sw	zero,12(s1)
+  405e9c:	02028024 	and	s0,s0,v0
+  405ea0:	1000ff85 	b	405cb8 <_stdio_fopen+0x118>
+  405ea4:	36100002 	ori	s0,s0,0x2
+  405ea8:	1000ff7f 	b	405ca8 <_stdio_fopen+0x108>
+  405eac:	24a50001 	addiu	a1,a1,1
+  405eb0:	3c1c0fc0 	lui	gp,0xfc0
+  405eb4:	279c23a0 	addiu	gp,gp,9120
+  405eb8:	0399e021 	addu	gp,gp,t9
+  405ebc:	27bdffc8 	addiu	sp,sp,-56
+  405ec0:	afbc0010 	sw	gp,16(sp)
+  405ec4:	afb40028 	sw	s4,40(sp)
+  405ec8:	00c0a021 	move	s4,a2
+  405ecc:	afb30024 	sw	s3,36(sp)
+  405ed0:	afb20020 	sw	s2,32(sp)
+  405ed4:	afb1001c 	sw	s1,28(sp)
+  405ed8:	afbf0030 	sw	ra,48(sp)
+  405edc:	afbc002c 	sw	gp,44(sp)
+  405ee0:	afb00018 	sw	s0,24(sp)
+  405ee4:	00809821 	move	s3,a0
+  405ee8:	00a09021 	move	s2,a1
+  405eec:	02808821 	move	s1,s4
+  405ef0:	12200018 	beqz	s1,405f54 <_stdio_fopen+0x3b4>
+  405ef4:	02402821 	move	a1,s2
+  405ef8:	06200021 	bltz	s1,405f80 <_stdio_fopen+0x3e0>
+  405efc:	02208021 	move	s0,s1
+  405f00:	8e62002c 	lw	v0,44(s3)
+  405f04:	00000000 	nop
+  405f08:	1040001b 	beqz	v0,405f78 <_stdio_fopen+0x3d8>
+  405f0c:	02003021 	move	a2,s0
+  405f10:	8e640024 	lw	a0,36(s3)
+  405f14:	0040c821 	move	t9,v0
+  405f18:	0320f809 	jalr	t9
+  405f1c:	00000000 	nop
+  405f20:	8fbc0010 	lw	gp,16(sp)
+  405f24:	04400007 	bltz	v0,405f44 <_stdio_fopen+0x3a4>
+  405f28:	0202182a 	slt	v1,s0,v0
+  405f2c:	10600002 	beqz	v1,405f38 <_stdio_fopen+0x398>
+  405f30:	00000000 	nop
+  405f34:	02001021 	move	v0,s0
+  405f38:	02429021 	addu	s2,s2,v0
+  405f3c:	1000ffec 	b	405ef0 <_stdio_fopen+0x350>
+  405f40:	02228823 	subu	s1,s1,v0
+  405f44:	96620000 	lhu	v0,0(s3)
+  405f48:	00000000 	nop
+  405f4c:	34420008 	ori	v0,v0,0x8
+  405f50:	a6620000 	sh	v0,0(s3)
+  405f54:	02911023 	subu	v0,s4,s1
+  405f58:	8fbf0030 	lw	ra,48(sp)
+  405f5c:	8fb40028 	lw	s4,40(sp)
+  405f60:	8fb30024 	lw	s3,36(sp)
+  405f64:	8fb20020 	lw	s2,32(sp)
+  405f68:	8fb1001c 	lw	s1,28(sp)
+  405f6c:	8fb00018 	lw	s0,24(sp)
+  405f70:	03e00008 	jr	ra
+  405f74:	27bd0038 	addiu	sp,sp,56
+  405f78:	1000ffea 	b	405f24 <_stdio_fopen+0x384>
+  405f7c:	2402ffff 	li	v0,-1
+  405f80:	3c107fff 	lui	s0,0x7fff
+  405f84:	1000ffde 	b	405f00 <_stdio_fopen+0x360>
+  405f88:	3610ffff 	ori	s0,s0,0xffff
+
+00405f8c <_stdio_fwrite>:
+  405f8c:	3c1c0fc0 	lui	gp,0xfc0
+  405f90:	279c22c4 	addiu	gp,gp,8900
+  405f94:	0399e021 	addu	gp,gp,t9
+  405f98:	27bdffc8 	addiu	sp,sp,-56
+  405f9c:	afbc0010 	sw	gp,16(sp)
+  405fa0:	afb40028 	sw	s4,40(sp)
+  405fa4:	afb30024 	sw	s3,36(sp)
+  405fa8:	afb1001c 	sw	s1,28(sp)
+  405fac:	afbf0034 	sw	ra,52(sp)
+  405fb0:	afbc0030 	sw	gp,48(sp)
+  405fb4:	afb5002c 	sw	s5,44(sp)
+  405fb8:	afb20020 	sw	s2,32(sp)
+  405fbc:	afb00018 	sw	s0,24(sp)
+  405fc0:	00c08821 	move	s1,a2
+  405fc4:	96260000 	lhu	a2,0(s1)
+  405fc8:	00809821 	move	s3,a0
+  405fcc:	30c20020 	andi	v0,a2,0x20
+  405fd0:	10400015 	beqz	v0,406028 <_stdio_fwrite+0x9c>
+  405fd4:	00a0a021 	move	s4,a1
+  405fd8:	34c20008 	ori	v0,a2,0x8
+  405fdc:	a6220000 	sh	v0,0(s1)
+  405fe0:	8f9980a0 	lw	t9,-32608(gp)
+  405fe4:	00000000 	nop
+  405fe8:	0320f809 	jalr	t9
+  405fec:	00000000 	nop
+  405ff0:	8fbc0010 	lw	gp,16(sp)
+  405ff4:	00402021 	move	a0,v0
+  405ff8:	24030009 	li	v1,9
+  405ffc:	00001021 	move	v0,zero
+  406000:	ac830000 	sw	v1,0(a0)
+  406004:	8fbf0034 	lw	ra,52(sp)
+  406008:	8fb5002c 	lw	s5,44(sp)
+  40600c:	8fb40028 	lw	s4,40(sp)
+  406010:	8fb30024 	lw	s3,36(sp)
+  406014:	8fb20020 	lw	s2,32(sp)
+  406018:	8fb1001c 	lw	s1,28(sp)
+  40601c:	8fb00018 	lw	s0,24(sp)
+  406020:	03e00008 	jr	ra
+  406024:	27bd0038 	addiu	sp,sp,56
+  406028:	30c21000 	andi	v0,a2,0x1000
+  40602c:	10400020 	beqz	v0,4060b0 <_stdio_fwrite+0x124>
+  406030:	00000000 	nop
+  406034:	8e220014 	lw	v0,20(s1)
+  406038:	8e230018 	lw	v1,24(s1)
+  40603c:	00000000 	nop
+  406040:	0043102b 	sltu	v0,v0,v1
+  406044:	14400003 	bnez	v0,406054 <_stdio_fwrite+0xc8>
+  406048:	30c20003 	andi	v0,a2,0x3
+  40604c:	10400013 	beqz	v0,40609c <_stdio_fwrite+0x110>
+  406050:	00000000 	nop
+  406054:	30c60400 	andi	a2,a2,0x400
+  406058:	2cc60001 	sltiu	a2,a2,1
+  40605c:	24020002 	li	v0,2
+  406060:	00463023 	subu	a2,v0,a2
+  406064:	02202021 	move	a0,s1
+  406068:	00002821 	move	a1,zero
+  40606c:	8f9981a8 	lw	t9,-32344(gp)
+  406070:	00000000 	nop
+  406074:	0320f809 	jalr	t9
+  406078:	00000000 	nop
+  40607c:	8fbc0010 	lw	gp,16(sp)
+  406080:	10400006 	beqz	v0,40609c <_stdio_fwrite+0x110>
+  406084:	00001021 	move	v0,zero
+  406088:	96230000 	lhu	v1,0(s1)
+  40608c:	00000000 	nop
+  406090:	34630008 	ori	v1,v1,0x8
+  406094:	1000ffdb 	b	406004 <_stdio_fwrite+0x78>
+  406098:	a6230000 	sh	v1,0(s1)
+  40609c:	8e22000c 	lw	v0,12(s1)
+  4060a0:	00000000 	nop
+  4060a4:	ae22001c 	sw	v0,28(s1)
+  4060a8:	ae220018 	sw	v0,24(s1)
+  4060ac:	ae220014 	sw	v0,20(s1)
+  4060b0:	96220000 	lhu	v0,0(s1)
+  4060b4:	8e23000c 	lw	v1,12(s1)
+  4060b8:	3042cfff 	andi	v0,v0,0xcfff
+  4060bc:	ae230020 	sw	v1,32(s1)
+  4060c0:	a6220000 	sh	v0,0(s1)
+  4060c4:	0260a821 	move	s5,s3
+  4060c8:	1260001b 	beqz	s3,406138 <_stdio_fwrite+0x1ac>
+  4060cc:	24050001 	li	a1,1
+  4060d0:	8e240014 	lw	a0,20(s1)
+  4060d4:	8e22000c 	lw	v0,12(s1)
+  4060d8:	00000000 	nop
+  4060dc:	10820060 	beq	a0,v0,406260 <_stdio_fwrite+0x2d4>
+  4060e0:	00000000 	nop
+  4060e4:	8e220010 	lw	v0,16(s1)
+  4060e8:	00000000 	nop
+  4060ec:	00442023 	subu	a0,v0,a0
+  4060f0:	0284102b 	sltu	v0,s4,a0
+  4060f4:	10400002 	beqz	v0,406100 <_stdio_fwrite+0x174>
+  4060f8:	02609021 	move	s2,s3
+  4060fc:	02802021 	move	a0,s4
+  406100:	10800009 	beqz	a0,406128 <_stdio_fwrite+0x19c>
+  406104:	0284a023 	subu	s4,s4,a0
+  406108:	8e220014 	lw	v0,20(s1)
+  40610c:	92630000 	lbu	v1,0(s3)
+  406110:	2484ffff 	addiu	a0,a0,-1
+  406114:	a0430000 	sb	v1,0(v0)
+  406118:	24420001 	addiu	v0,v0,1
+  40611c:	ae220014 	sw	v0,20(s1)
+  406120:	1480fff9 	bnez	a0,406108 <_stdio_fwrite+0x17c>
+  406124:	26730001 	addiu	s3,s3,1
+  406128:	10a00040 	beqz	a1,40622c <_stdio_fwrite+0x2a0>
+  40612c:	00000000 	nop
+  406130:	12800030 	beqz	s4,4061f4 <_stdio_fwrite+0x268>
+  406134:	00000000 	nop
+  406138:	8e23000c 	lw	v1,12(s1)
+  40613c:	8e220014 	lw	v0,20(s1)
+  406140:	8e240004 	lw	a0,4(s1)
+  406144:	00438023 	subu	s0,v0,v1
+  406148:	2402fffe 	li	v0,-2
+  40614c:	1082001f 	beq	a0,v0,4061cc <_stdio_fwrite+0x240>
+  406150:	00609021 	move	s2,v1
+  406154:	02402821 	move	a1,s2
+  406158:	02003021 	move	a2,s0
+  40615c:	02202021 	move	a0,s1
+  406160:	8f998020 	lw	t9,-32736(gp)
+  406164:	00000000 	nop
+  406168:	27395eb0 	addiu	t9,t9,24240
+  40616c:	00000000 	nop
+  406170:	0320f809 	jalr	t9
+  406174:	00000000 	nop
+  406178:	8fbc0010 	lw	gp,16(sp)
+  40617c:	00402821 	move	a1,v0
+  406180:	8e22000c 	lw	v0,12(s1)
+  406184:	02058023 	subu	s0,s0,a1
+  406188:	ae220014 	sw	v0,20(s1)
+  40618c:	12000009 	beqz	s0,4061b4 <_stdio_fwrite+0x228>
+  406190:	02459021 	addu	s2,s2,a1
+  406194:	8e220014 	lw	v0,20(s1)
+  406198:	92430000 	lbu	v1,0(s2)
+  40619c:	2610ffff 	addiu	s0,s0,-1
+  4061a0:	a0430000 	sb	v1,0(v0)
+  4061a4:	24420001 	addiu	v0,v0,1
+  4061a8:	ae220014 	sw	v0,20(s1)
+  4061ac:	1600fff9 	bnez	s0,406194 <_stdio_fwrite+0x208>
+  4061b0:	26520001 	addiu	s2,s2,1
+  4061b4:	1660ffc6 	bnez	s3,4060d0 <_stdio_fwrite+0x144>
+  4061b8:	00000000 	nop
+  4061bc:	8e23000c 	lw	v1,12(s1)
+  4061c0:	8e220014 	lw	v0,20(s1)
+  4061c4:	1000ff8f 	b	406004 <_stdio_fwrite+0x78>
+  4061c8:	00431023 	subu	v0,v0,v1
+  4061cc:	96220000 	lhu	v0,0(s1)
+  4061d0:	00000000 	nop
+  4061d4:	34422000 	ori	v0,v0,0x2000
+  4061d8:	12600004 	beqz	s3,4061ec <_stdio_fwrite+0x260>
+  4061dc:	a6220000 	sh	v0,0(s1)
+  4061e0:	02751023 	subu	v0,s3,s5
+  4061e4:	1000ff87 	b	406004 <_stdio_fwrite+0x78>
+  4061e8:	00541021 	addu	v0,v0,s4
+  4061ec:	1000ff85 	b	406004 <_stdio_fwrite+0x78>
+  4061f0:	00001021 	move	v0,zero
+  4061f4:	96220000 	lhu	v0,0(s1)
+  4061f8:	00000000 	nop
+  4061fc:	30420100 	andi	v0,v0,0x100
+  406200:	1040000a 	beqz	v0,40622c <_stdio_fwrite+0x2a0>
+  406204:	0253102b 	sltu	v0,s2,s3
+  406208:	10400008 	beqz	v0,40622c <_stdio_fwrite+0x2a0>
+  40620c:	00000000 	nop
+  406210:	92430000 	lbu	v1,0(s2)
+  406214:	2402000a 	li	v0,10
+  406218:	26520001 	addiu	s2,s2,1
+  40621c:	1062ffc6 	beq	v1,v0,406138 <_stdio_fwrite+0x1ac>
+  406220:	0253202b 	sltu	a0,s2,s3
+  406224:	1480fffa 	bnez	a0,406210 <_stdio_fwrite+0x284>
+  406228:	00000000 	nop
+  40622c:	96220000 	lhu	v0,0(s1)
+  406230:	00000000 	nop
+  406234:	30420b08 	andi	v0,v0,0xb08
+  406238:	10400006 	beqz	v0,406254 <_stdio_fwrite+0x2c8>
+  40623c:	00000000 	nop
+  406240:	96230000 	lhu	v1,0(s1)
+  406244:	02751023 	subu	v0,s3,s5
+  406248:	34632000 	ori	v1,v1,0x2000
+  40624c:	1000ff6d 	b	406004 <_stdio_fwrite+0x78>
+  406250:	a6230000 	sh	v1,0(s1)
+  406254:	8e220010 	lw	v0,16(s1)
+  406258:	1000fff9 	b	406240 <_stdio_fwrite+0x2b4>
+  40625c:	ae220020 	sw	v0,32(s1)
+  406260:	8e220010 	lw	v0,16(s1)
+  406264:	00000000 	nop
+  406268:	00441023 	subu	v0,v0,a0
+  40626c:	0282102b 	sltu	v0,s4,v0
+  406270:	1440ff9c 	bnez	v0,4060e4 <_stdio_fwrite+0x158>
+  406274:	2402fffe 	li	v0,-2
+  406278:	8e230004 	lw	v1,4(s1)
+  40627c:	00000000 	nop
+  406280:	1062ff98 	beq	v1,v0,4060e4 <_stdio_fwrite+0x158>
+  406284:	02803021 	move	a2,s4
+  406288:	02602821 	move	a1,s3
+  40628c:	02202021 	move	a0,s1
+  406290:	8f998020 	lw	t9,-32736(gp)
+  406294:	00000000 	nop
+  406298:	27395eb0 	addiu	t9,t9,24240
+  40629c:	00000000 	nop
+  4062a0:	0320f809 	jalr	t9
+  4062a4:	00000000 	nop
+  4062a8:	8fbc0010 	lw	gp,16(sp)
+  4062ac:	1000ffdf 	b	40622c <_stdio_fwrite+0x2a0>
+  4062b0:	02629821 	addu	s3,s3,v0
+	...
+
+004062c0 <_cs_read>:
+  4062c0:	3c1c0fc0 	lui	gp,0xfc0
+  4062c4:	279c1f90 	addiu	gp,gp,8080
+  4062c8:	0399e021 	addu	gp,gp,t9
+  4062cc:	27bdffe0 	addiu	sp,sp,-32
+  4062d0:	afbc0010 	sw	gp,16(sp)
+  4062d4:	afbf001c 	sw	ra,28(sp)
+  4062d8:	afbc0018 	sw	gp,24(sp)
+  4062dc:	8c840000 	lw	a0,0(a0)
+  4062e0:	8f998198 	lw	t9,-32360(gp)
+  4062e4:	00000000 	nop
+  4062e8:	0320f809 	jalr	t9
+  4062ec:	00000000 	nop
+  4062f0:	8fbc0010 	lw	gp,16(sp)
+  4062f4:	8fbf001c 	lw	ra,28(sp)
+  4062f8:	00000000 	nop
+  4062fc:	03e00008 	jr	ra
+  406300:	27bd0020 	addiu	sp,sp,32
+
+00406304 <_cs_write>:
+  406304:	3c1c0fc0 	lui	gp,0xfc0
+  406308:	279c1f4c 	addiu	gp,gp,8012
+  40630c:	0399e021 	addu	gp,gp,t9
+  406310:	27bdffe0 	addiu	sp,sp,-32
+  406314:	afbc0010 	sw	gp,16(sp)
+  406318:	afbf001c 	sw	ra,28(sp)
+  40631c:	afbc0018 	sw	gp,24(sp)
+  406320:	8c840000 	lw	a0,0(a0)
+  406324:	8f9981c8 	lw	t9,-32312(gp)
+  406328:	00000000 	nop
+  40632c:	0320f809 	jalr	t9
+  406330:	00000000 	nop
+  406334:	8fbc0010 	lw	gp,16(sp)
+  406338:	8fbf001c 	lw	ra,28(sp)
+  40633c:	00000000 	nop
+  406340:	03e00008 	jr	ra
+  406344:	27bd0020 	addiu	sp,sp,32
+
+00406348 <_cs_close>:
+  406348:	3c1c0fc0 	lui	gp,0xfc0
+  40634c:	279c1f08 	addiu	gp,gp,7944
+  406350:	0399e021 	addu	gp,gp,t9
+  406354:	27bdffe0 	addiu	sp,sp,-32
+  406358:	afbc0010 	sw	gp,16(sp)
+  40635c:	afbf001c 	sw	ra,28(sp)
+  406360:	afbc0018 	sw	gp,24(sp)
+  406364:	8c840000 	lw	a0,0(a0)
+  406368:	8f998040 	lw	t9,-32704(gp)
+  40636c:	00000000 	nop
+  406370:	0320f809 	jalr	t9
+  406374:	00000000 	nop
+  406378:	8fbc0010 	lw	gp,16(sp)
+  40637c:	8fbf001c 	lw	ra,28(sp)
+  406380:	00000000 	nop
+  406384:	03e00008 	jr	ra
+  406388:	27bd0020 	addiu	sp,sp,32
+
+0040638c <__stdio_init_mutex>:
+  40638c:	3c1c0fc0 	lui	gp,0xfc0
+  406390:	279c1ec4 	addiu	gp,gp,7876
+  406394:	0399e021 	addu	gp,gp,t9
+  406398:	27bdffe0 	addiu	sp,sp,-32
+  40639c:	afbc0010 	sw	gp,16(sp)
+  4063a0:	8f858018 	lw	a1,-32744(gp)
+  4063a4:	00000000 	nop
+  4063a8:	24a50580 	addiu	a1,a1,1408
+  4063ac:	24060018 	li	a2,24
+  4063b0:	afbf001c 	sw	ra,28(sp)
+  4063b4:	afbc0018 	sw	gp,24(sp)
+  4063b8:	8f998254 	lw	t9,-32172(gp)
+  4063bc:	00000000 	nop
+  4063c0:	0320f809 	jalr	t9
+  4063c4:	00000000 	nop
+  4063c8:	8fbc0010 	lw	gp,16(sp)
+  4063cc:	8fbf001c 	lw	ra,28(sp)
+  4063d0:	00000000 	nop
+  4063d4:	03e00008 	jr	ra
+  4063d8:	27bd0020 	addiu	sp,sp,32
+
+004063dc <_stdio_term>:
+  4063dc:	3c1c0fc0 	lui	gp,0xfc0
+  4063e0:	279c1e74 	addiu	gp,gp,7796
+  4063e4:	0399e021 	addu	gp,gp,t9
+  4063e8:	27bdffd8 	addiu	sp,sp,-40
+  4063ec:	afbc0010 	sw	gp,16(sp)
+  4063f0:	8f848080 	lw	a0,-32640(gp)
+  4063f4:	afb00018 	sw	s0,24(sp)
+  4063f8:	afbf0020 	sw	ra,32(sp)
+  4063fc:	afbc001c 	sw	gp,28(sp)
+  406400:	8f998128 	lw	t9,-32472(gp)
+  406404:	00000000 	nop
+  406408:	0320f809 	jalr	t9
+  40640c:	00000000 	nop
+  406410:	8fbc0010 	lw	gp,16(sp)
+  406414:	00000000 	nop
+  406418:	8f9081b8 	lw	s0,-32328(gp)
+  40641c:	00000000 	nop
+  406420:	8e100000 	lw	s0,0(s0)
+  406424:	00000000 	nop
+  406428:	1200000e 	beqz	s0,406464 <_stdio_term+0x88>
+  40642c:	00002021 	move	a0,zero
+  406430:	24020001 	li	v0,1
+  406434:	2604003c 	addiu	a0,s0,60
+  406438:	ae020038 	sw	v0,56(s0)
+  40643c:	8f998128 	lw	t9,-32472(gp)
+  406440:	00000000 	nop
+  406444:	0320f809 	jalr	t9
+  406448:	00000000 	nop
+  40644c:	8fbc0010 	lw	gp,16(sp)
+  406450:	8e100008 	lw	s0,8(s0)
+  406454:	00000000 	nop
+  406458:	1600fff6 	bnez	s0,406434 <_stdio_term+0x58>
+  40645c:	24020001 	li	v0,1
+  406460:	00002021 	move	a0,zero
+  406464:	8f9980d8 	lw	t9,-32552(gp)
+  406468:	00000000 	nop
+  40646c:	0320f809 	jalr	t9
+  406470:	00000000 	nop
+  406474:	8fbc0010 	lw	gp,16(sp)
+  406478:	00000000 	nop
+  40647c:	8f9081b8 	lw	s0,-32328(gp)
+  406480:	00000000 	nop
+  406484:	8e100000 	lw	s0,0(s0)
+  406488:	00000000 	nop
+  40648c:	12000012 	beqz	s0,4064d8 <_stdio_term+0xfc>
+  406490:	00000000 	nop
+  406494:	8e040024 	lw	a0,36(s0)
+  406498:	26020004 	addiu	v0,s0,4
+  40649c:	1082000a 	beq	a0,v0,4064c8 <_stdio_term+0xec>
+  4064a0:	00000000 	nop
+  4064a4:	8e020034 	lw	v0,52(s0)
+  4064a8:	00000000 	nop
+  4064ac:	10400005 	beqz	v0,4064c4 <_stdio_term+0xe8>
+  4064b0:	00000000 	nop
+  4064b4:	0040c821 	move	t9,v0
+  4064b8:	0320f809 	jalr	t9
+  4064bc:	00000000 	nop
+  4064c0:	8fbc0010 	lw	gp,16(sp)
+  4064c4:	ae000024 	sw	zero,36(s0)
+  4064c8:	8e100008 	lw	s0,8(s0)
+  4064cc:	00000000 	nop
+  4064d0:	1600fff0 	bnez	s0,406494 <_stdio_term+0xb8>
+  4064d4:	00000000 	nop
+  4064d8:	8fbf0020 	lw	ra,32(sp)
+  4064dc:	8fb00018 	lw	s0,24(sp)
+  4064e0:	03e00008 	jr	ra
+  4064e4:	27bd0028 	addiu	sp,sp,40
+
+004064e8 <_stdio_init>:
+  4064e8:	3c1c0fc0 	lui	gp,0xfc0
+  4064ec:	279c1d68 	addiu	gp,gp,7528
+  4064f0:	0399e021 	addu	gp,gp,t9
+  4064f4:	27bdffd8 	addiu	sp,sp,-40
+  4064f8:	afbc0010 	sw	gp,16(sp)
+  4064fc:	00002021 	move	a0,zero
+  406500:	afbf0024 	sw	ra,36(sp)
+  406504:	afb1001c 	sw	s1,28(sp)
+  406508:	afb00018 	sw	s0,24(sp)
+  40650c:	8f91801c 	lw	s1,-32740(gp)
+  406510:	00000000 	nop
+  406514:	26310060 	addiu	s1,s1,96
+  406518:	afbc0020 	sw	gp,32(sp)
+  40651c:	24100001 	li	s0,1
+  406520:	8f99822c 	lw	t9,-32212(gp)
+  406524:	00000000 	nop
+  406528:	0320f809 	jalr	t9
+  40652c:	00000000 	nop
+  406530:	8fbc0010 	lw	gp,16(sp)
+  406534:	02021023 	subu	v0,s0,v0
+  406538:	96230000 	lhu	v1,0(s1)
+  40653c:	00021200 	sll	v0,v0,0x8
+  406540:	00621826 	xor	v1,v1,v0
+  406544:	24040001 	li	a0,1
+  406548:	a6230000 	sh	v1,0(s1)
+  40654c:	8f99822c 	lw	t9,-32212(gp)
+  406550:	00000000 	nop
+  406554:	0320f809 	jalr	t9
+  406558:	00000000 	nop
+  40655c:	8fbc0010 	lw	gp,16(sp)
+  406560:	02028023 	subu	s0,s0,v0
+  406564:	96220054 	lhu	v0,84(s1)
+  406568:	00108200 	sll	s0,s0,0x8
+  40656c:	00501026 	xor	v0,v0,s0
+  406570:	a6220054 	sh	v0,84(s1)
+  406574:	8fbf0024 	lw	ra,36(sp)
+  406578:	8fb1001c 	lw	s1,28(sp)
+  40657c:	8fb00018 	lw	s0,24(sp)
+  406580:	03e00008 	jr	ra
+  406584:	27bd0028 	addiu	sp,sp,40
+	...
+
+00406590 <fprintf>:
+  406590:	3c1c0fc0 	lui	gp,0xfc0
+  406594:	279c1cc0 	addiu	gp,gp,7360
+  406598:	0399e021 	addu	gp,gp,t9
+  40659c:	27bdffe0 	addiu	sp,sp,-32
+  4065a0:	afbc0010 	sw	gp,16(sp)
+  4065a4:	afa60028 	sw	a2,40(sp)
+  4065a8:	27a60028 	addiu	a2,sp,40
+  4065ac:	afbf001c 	sw	ra,28(sp)
+  4065b0:	afa50024 	sw	a1,36(sp)
+  4065b4:	afa7002c 	sw	a3,44(sp)
+  4065b8:	afbc0018 	sw	gp,24(sp)
+  4065bc:	8f99803c 	lw	t9,-32708(gp)
+  4065c0:	00000000 	nop
+  4065c4:	0320f809 	jalr	t9
+  4065c8:	00000000 	nop
+  4065cc:	8fbc0010 	lw	gp,16(sp)
+  4065d0:	8fbf001c 	lw	ra,28(sp)
+  4065d4:	00000000 	nop
+  4065d8:	03e00008 	jr	ra
+  4065dc:	27bd0020 	addiu	sp,sp,32
+
+004065e0 <printf>:
+  4065e0:	3c1c0fc0 	lui	gp,0xfc0
+  4065e4:	279c1c70 	addiu	gp,gp,7280
+  4065e8:	0399e021 	addu	gp,gp,t9
+  4065ec:	27bdffe0 	addiu	sp,sp,-32
+  4065f0:	afbc0010 	sw	gp,16(sp)
+  4065f4:	afa40020 	sw	a0,32(sp)
+  4065f8:	afa50024 	sw	a1,36(sp)
+  4065fc:	00802821 	move	a1,a0
+  406600:	8f8482ac 	lw	a0,-32084(gp)
+  406604:	00000000 	nop
+  406608:	8c840000 	lw	a0,0(a0)
+  40660c:	afa60028 	sw	a2,40(sp)
+  406610:	27a60024 	addiu	a2,sp,36
+  406614:	afbf001c 	sw	ra,28(sp)
+  406618:	afa7002c 	sw	a3,44(sp)
+  40661c:	afbc0018 	sw	gp,24(sp)
+  406620:	8f99803c 	lw	t9,-32708(gp)
+  406624:	00000000 	nop
+  406628:	0320f809 	jalr	t9
+  40662c:	00000000 	nop
+  406630:	8fbc0010 	lw	gp,16(sp)
+  406634:	8fbf001c 	lw	ra,28(sp)
+  406638:	00000000 	nop
+  40663c:	03e00008 	jr	ra
+  406640:	27bd0020 	addiu	sp,sp,32
+	...
+
+00406650 <sprintf>:
+  406650:	3c1c0fc0 	lui	gp,0xfc0
+  406654:	279c1c00 	addiu	gp,gp,7168
+  406658:	0399e021 	addu	gp,gp,t9
+  40665c:	27bdffe0 	addiu	sp,sp,-32
+  406660:	afbc0010 	sw	gp,16(sp)
+  406664:	afa50024 	sw	a1,36(sp)
+  406668:	afa60028 	sw	a2,40(sp)
+  40666c:	afa7002c 	sw	a3,44(sp)
+  406670:	00a03021 	move	a2,a1
+  406674:	27a70028 	addiu	a3,sp,40
+  406678:	2405ffff 	li	a1,-1
+  40667c:	afbf001c 	sw	ra,28(sp)
+  406680:	afbc0018 	sw	gp,24(sp)
+  406684:	8f998228 	lw	t9,-32216(gp)
+  406688:	00000000 	nop
+  40668c:	0320f809 	jalr	t9
+  406690:	00000000 	nop
+  406694:	8fbc0010 	lw	gp,16(sp)
+  406698:	8fbf001c 	lw	ra,28(sp)
+  40669c:	00000000 	nop
+  4066a0:	03e00008 	jr	ra
+  4066a4:	27bd0020 	addiu	sp,sp,32
+	...
+
+004066b0 <vfprintf>:
+  4066b0:	3c1c0fc0 	lui	gp,0xfc0
+  4066b4:	279c1ba0 	addiu	gp,gp,7072
+  4066b8:	0399e021 	addu	gp,gp,t9
+  4066bc:	27bdff20 	addiu	sp,sp,-224
+  4066c0:	afbc0010 	sw	gp,16(sp)
+  4066c4:	afb300d4 	sw	s3,212(sp)
+  4066c8:	afb200d0 	sw	s2,208(sp)
+  4066cc:	afb000c8 	sw	s0,200(sp)
+  4066d0:	afbf00dc 	sw	ra,220(sp)
+  4066d4:	afbc00d8 	sw	gp,216(sp)
+  4066d8:	afb100cc 	sw	s1,204(sp)
+  4066dc:	00809021 	move	s2,a0
+  4066e0:	8e420038 	lw	v0,56(s2)
+  4066e4:	00a08021 	move	s0,a1
+  4066e8:	10400069 	beqz	v0,406890 <vfprintf+0x1e0>
+  4066ec:	00c09821 	move	s3,a2
+  4066f0:	27a40018 	addiu	a0,sp,24
+  4066f4:	02002821 	move	a1,s0
+  4066f8:	afa000c0 	sw	zero,192(sp)
+  4066fc:	8f998244 	lw	t9,-32188(gp)
+  406700:	00000000 	nop
+  406704:	0320f809 	jalr	t9
+  406708:	00000000 	nop
+  40670c:	8fbc0010 	lw	gp,16(sp)
+  406710:	0440004f 	bltz	v0,406850 <vfprintf+0x1a0>
+  406714:	02008821 	move	s1,s0
+  406718:	02602821 	move	a1,s3
+  40671c:	27a40018 	addiu	a0,sp,24
+  406720:	8f9980b4 	lw	t9,-32588(gp)
+  406724:	00000000 	nop
+  406728:	0320f809 	jalr	t9
+  40672c:	00000000 	nop
+  406730:	8fbc0010 	lw	gp,16(sp)
+  406734:	10000002 	b	406740 <vfprintf+0x90>
+  406738:	00000000 	nop
+  40673c:	26100001 	addiu	s0,s0,1
+  406740:	82030000 	lb	v1,0(s0)
+  406744:	00000000 	nop
+  406748:	10600003 	beqz	v1,406758 <vfprintf+0xa8>
+  40674c:	24020025 	li	v0,37
+  406750:	1462fffa 	bne	v1,v0,40673c <vfprintf+0x8c>
+  406754:	00000000 	nop
+  406758:	1211000f 	beq	s0,s1,406798 <vfprintf+0xe8>
+  40675c:	02112823 	subu	a1,s0,s1
+  406760:	02202021 	move	a0,s1
+  406764:	02403021 	move	a2,s2
+  406768:	8f9982a4 	lw	t9,-32092(gp)
+  40676c:	00000000 	nop
+  406770:	0320f809 	jalr	t9
+  406774:	00000000 	nop
+  406778:	8fbc0010 	lw	gp,16(sp)
+  40677c:	00401821 	move	v1,v0
+  406780:	0460001f 	bltz	v1,406800 <vfprintf+0x150>
+  406784:	2402ffff 	li	v0,-1
+  406788:	8fa200c0 	lw	v0,192(sp)
+  40678c:	00000000 	nop
+  406790:	00431021 	addu	v0,v0,v1
+  406794:	afa200c0 	sw	v0,192(sp)
+  406798:	82020000 	lb	v0,0(s0)
+  40679c:	00000000 	nop
+  4067a0:	10400018 	beqz	v0,406804 <vfprintf+0x154>
+  4067a4:	24020025 	li	v0,37
+  4067a8:	82030001 	lb	v1,1(s0)
+  4067ac:	00000000 	nop
+  4067b0:	14620004 	bne	v1,v0,4067c4 <vfprintf+0x114>
+  4067b4:	02402021 	move	a0,s2
+  4067b8:	26100001 	addiu	s0,s0,1
+  4067bc:	1000ffdf 	b	40673c <vfprintf+0x8c>
+  4067c0:	02008821 	move	s1,s0
+  4067c4:	26100001 	addiu	s0,s0,1
+  4067c8:	27a50018 	addiu	a1,sp,24
+  4067cc:	27a600c0 	addiu	a2,sp,192
+  4067d0:	afb00018 	sw	s0,24(sp)
+  4067d4:	8f99808c 	lw	t9,-32628(gp)
+  4067d8:	00000000 	nop
+  4067dc:	0320f809 	jalr	t9
+  4067e0:	00000000 	nop
+  4067e4:	8fbc0010 	lw	gp,16(sp)
+  4067e8:	00401821 	move	v1,v0
+  4067ec:	04600004 	bltz	v1,406800 <vfprintf+0x150>
+  4067f0:	2402ffff 	li	v0,-1
+  4067f4:	8fb00018 	lw	s0,24(sp)
+  4067f8:	1000ffd1 	b	406740 <vfprintf+0x90>
+  4067fc:	02008821 	move	s1,s0
+  406800:	afa200c0 	sw	v0,192(sp)
+  406804:	8e420038 	lw	v0,56(s2)
+  406808:	00000000 	nop
+  40680c:	10400009 	beqz	v0,406834 <vfprintf+0x184>
+  406810:	2644003c 	addiu	a0,s2,60
+  406814:	8fa200c0 	lw	v0,192(sp)
+  406818:	8fbf00dc 	lw	ra,220(sp)
+  40681c:	8fb300d4 	lw	s3,212(sp)
+  406820:	8fb200d0 	lw	s2,208(sp)
+  406824:	8fb100cc 	lw	s1,204(sp)
+  406828:	8fb000c8 	lw	s0,200(sp)
+  40682c:	03e00008 	jr	ra
+  406830:	27bd00e0 	addiu	sp,sp,224
+  406834:	8f99811c 	lw	t9,-32484(gp)
+  406838:	00000000 	nop
+  40683c:	0320f809 	jalr	t9
+  406840:	00000000 	nop
+  406844:	8fbc0010 	lw	gp,16(sp)
+  406848:	1000fff2 	b	406814 <vfprintf+0x164>
+  40684c:	00000000 	nop
+  406850:	02002021 	move	a0,s0
+  406854:	8f998068 	lw	t9,-32664(gp)
+  406858:	00000000 	nop
+  40685c:	0320f809 	jalr	t9
+  406860:	00000000 	nop
+  406864:	8fbc0010 	lw	gp,16(sp)
+  406868:	00402821 	move	a1,v0
+  40686c:	02002021 	move	a0,s0
+  406870:	02403021 	move	a2,s2
+  406874:	8f9982a4 	lw	t9,-32092(gp)
+  406878:	00000000 	nop
+  40687c:	0320f809 	jalr	t9
+  406880:	00000000 	nop
+  406884:	8fbc0010 	lw	gp,16(sp)
+  406888:	1000ffdd 	b	406800 <vfprintf+0x150>
+  40688c:	2402ffff 	li	v0,-1
+  406890:	2644003c 	addiu	a0,s2,60
+  406894:	8f9980a8 	lw	t9,-32600(gp)
+  406898:	00000000 	nop
+  40689c:	0320f809 	jalr	t9
+  4068a0:	00000000 	nop
+  4068a4:	8fbc0010 	lw	gp,16(sp)
+  4068a8:	1000ff92 	b	4066f4 <vfprintf+0x44>
+  4068ac:	27a40018 	addiu	a0,sp,24
+
+004068b0 <sscanf>:
+  4068b0:	3c1c0fc0 	lui	gp,0xfc0
+  4068b4:	279c19a0 	addiu	gp,gp,6560
+  4068b8:	0399e021 	addu	gp,gp,t9
+  4068bc:	27bdffe0 	addiu	sp,sp,-32
+  4068c0:	afbc0010 	sw	gp,16(sp)
+  4068c4:	afa60028 	sw	a2,40(sp)
+  4068c8:	27a60028 	addiu	a2,sp,40
+  4068cc:	afbf001c 	sw	ra,28(sp)
+  4068d0:	afa50024 	sw	a1,36(sp)
+  4068d4:	afa7002c 	sw	a3,44(sp)
+  4068d8:	afbc0018 	sw	gp,24(sp)
+  4068dc:	8f99826c 	lw	t9,-32148(gp)
+  4068e0:	00000000 	nop
+  4068e4:	0320f809 	jalr	t9
+  4068e8:	00000000 	nop
+  4068ec:	8fbc0010 	lw	gp,16(sp)
+  4068f0:	8fbf001c 	lw	ra,28(sp)
+  4068f4:	00000000 	nop
+  4068f8:	03e00008 	jr	ra
+  4068fc:	27bd0020 	addiu	sp,sp,32
+
+00406900 <vsscanf>:
+  406900:	3c1c0fc0 	lui	gp,0xfc0
+  406904:	279c1950 	addiu	gp,gp,6480
+  406908:	0399e021 	addu	gp,gp,t9
+  40690c:	27bdff80 	addiu	sp,sp,-128
+  406910:	afbc0010 	sw	gp,16(sp)
+  406914:	2402fffe 	li	v0,-2
+  406918:	afa2001c 	sw	v0,28(sp)
+  40691c:	240200a0 	li	v0,160
+  406920:	00801821 	move	v1,a0
+  406924:	a7a20018 	sh	v0,24(sp)
+  406928:	27a40054 	addiu	a0,sp,84
+  40692c:	2402ffff 	li	v0,-1
+  406930:	afbf007c 	sw	ra,124(sp)
+  406934:	afb10074 	sw	s1,116(sp)
+  406938:	afb00070 	sw	s0,112(sp)
+  40693c:	afbc0078 	sw	gp,120(sp)
+  406940:	afa30024 	sw	v1,36(sp)
+  406944:	afa20034 	sw	v0,52(sp)
+  406948:	00a08021 	move	s0,a1
+  40694c:	00c08821 	move	s1,a2
+  406950:	afa3002c 	sw	v1,44(sp)
+  406954:	afa00050 	sw	zero,80(sp)
+  406958:	8f998128 	lw	t9,-32472(gp)
+  40695c:	00000000 	nop
+  406960:	0320f809 	jalr	t9
+  406964:	00000000 	nop
+  406968:	8fbc0010 	lw	gp,16(sp)
+  40696c:	27a40018 	addiu	a0,sp,24
+  406970:	02002821 	move	a1,s0
+  406974:	02203021 	move	a2,s1
+  406978:	8f9980bc 	lw	t9,-32580(gp)
+  40697c:	00000000 	nop
+  406980:	0320f809 	jalr	t9
+  406984:	00000000 	nop
+  406988:	8fbc0010 	lw	gp,16(sp)
+  40698c:	8fbf007c 	lw	ra,124(sp)
+  406990:	8fb10074 	lw	s1,116(sp)
+  406994:	8fb00070 	lw	s0,112(sp)
+  406998:	03e00008 	jr	ra
+  40699c:	27bd0080 	addiu	sp,sp,128
+  4069a0:	3c1c0fc0 	lui	gp,0xfc0
+  4069a4:	279c18b0 	addiu	gp,gp,6320
+  4069a8:	0399e021 	addu	gp,gp,t9
+  4069ac:	27bdffe0 	addiu	sp,sp,-32
+  4069b0:	afbc0010 	sw	gp,16(sp)
+  4069b4:	00042600 	sll	a0,a0,0x18
+  4069b8:	00041e03 	sra	v1,a0,0x18
+  4069bc:	2462ffd0 	addiu	v0,v1,-48
+  4069c0:	00052e00 	sll	a1,a1,0x18
+  4069c4:	2c46000a 	sltiu	a2,v0,10
+  4069c8:	00052e03 	sra	a1,a1,0x18
+  4069cc:	24020010 	li	v0,16
+  4069d0:	afbf001c 	sw	ra,28(sp)
+  4069d4:	afbc0018 	sw	gp,24(sp)
+  4069d8:	10a2000d 	beq	a1,v0,406a10 <vsscanf+0x110>
+  4069dc:	00602021 	move	a0,v1
+  4069e0:	24a20030 	addiu	v0,a1,48
+  4069e4:	00002021 	move	a0,zero
+  4069e8:	10c00004 	beqz	a2,4069fc <vsscanf+0xfc>
+  4069ec:	0062102a 	slt	v0,v1,v0
+  4069f0:	10400003 	beqz	v0,406a00 <vsscanf+0x100>
+  4069f4:	00801021 	move	v0,a0
+  4069f8:	24040001 	li	a0,1
+  4069fc:	00801021 	move	v0,a0
+  406a00:	8fbf001c 	lw	ra,28(sp)
+  406a04:	00000000 	nop
+  406a08:	03e00008 	jr	ra
+  406a0c:	27bd0020 	addiu	sp,sp,32
+  406a10:	8f9981e4 	lw	t9,-32284(gp)
+  406a14:	00000000 	nop
+  406a18:	0320f809 	jalr	t9
+  406a1c:	00000000 	nop
+  406a20:	8fbc0010 	lw	gp,16(sp)
+  406a24:	1000fff6 	b	406a00 <vsscanf+0x100>
+  406a28:	00000000 	nop
+  406a2c:	3c1c0fc0 	lui	gp,0xfc0
+  406a30:	279c1824 	addiu	gp,gp,6180
+  406a34:	0399e021 	addu	gp,gp,t9
+  406a38:	ac850000 	sw	a1,0(a0)
+  406a3c:	ac800004 	sw	zero,4(a0)
+  406a40:	ac80000c 	sw	zero,12(a0)
+  406a44:	ac800014 	sw	zero,20(a0)
+  406a48:	94a20000 	lhu	v0,0(a1)
+  406a4c:	00000000 	nop
+  406a50:	30420003 	andi	v0,v0,0x3
+  406a54:	10400002 	beqz	v0,406a60 <vsscanf+0x160>
+  406a58:	00001821 	move	v1,zero
+  406a5c:	90a30003 	lbu	v1,3(a1)
+  406a60:	03e00008 	jr	ra
+  406a64:	ac830018 	sw	v1,24(a0)
+  406a68:	3c1c0fc0 	lui	gp,0xfc0
+  406a6c:	279c17e8 	addiu	gp,gp,6120
+  406a70:	0399e021 	addu	gp,gp,t9
+  406a74:	27bdffd8 	addiu	sp,sp,-40
+  406a78:	afbc0010 	sw	gp,16(sp)
+  406a7c:	afb00018 	sw	s0,24(sp)
+  406a80:	afbf0020 	sw	ra,32(sp)
+  406a84:	afbc001c 	sw	gp,28(sp)
+  406a88:	00808021 	move	s0,a0
+  406a8c:	8e020014 	lw	v0,20(s0)
+  406a90:	00000000 	nop
+  406a94:	10400010 	beqz	v0,406ad8 <vsscanf+0x1d8>
+  406a98:	00000000 	nop
+  406a9c:	ae000014 	sw	zero,20(s0)
+  406aa0:	8e020010 	lw	v0,16(s0)
+  406aa4:	00000000 	nop
+  406aa8:	18400006 	blez	v0,406ac4 <vsscanf+0x1c4>
+  406aac:	00000000 	nop
+  406ab0:	8e020004 	lw	v0,4(s0)
+  406ab4:	00000000 	nop
+  406ab8:	24420001 	addiu	v0,v0,1
+  406abc:	ae020004 	sw	v0,4(s0)
+  406ac0:	8e020010 	lw	v0,16(s0)
+  406ac4:	ae00000c 	sw	zero,12(s0)
+  406ac8:	8fbf0020 	lw	ra,32(sp)
+  406acc:	8fb00018 	lw	s0,24(sp)
+  406ad0:	03e00008 	jr	ra
+  406ad4:	27bd0028 	addiu	sp,sp,40
+  406ad8:	8e050000 	lw	a1,0(s0)
+  406adc:	00000000 	nop
+  406ae0:	8ca30014 	lw	v1,20(a1)
+  406ae4:	8ca2001c 	lw	v0,28(a1)
+  406ae8:	00a02021 	move	a0,a1
+  406aec:	0062102b 	sltu	v0,v1,v0
+  406af0:	10400005 	beqz	v0,406b08 <vsscanf+0x208>
+  406af4:	24660001 	addiu	a2,v1,1
+  406af8:	90620000 	lbu	v0,0(v1)
+  406afc:	aca60014 	sw	a2,20(a1)
+  406b00:	1000ffe7 	b	406aa0 <vsscanf+0x1a0>
+  406b04:	ae020010 	sw	v0,16(s0)
+  406b08:	8f9980b0 	lw	t9,-32592(gp)
+  406b0c:	00000000 	nop
+  406b10:	0320f809 	jalr	t9
+  406b14:	00000000 	nop
+  406b18:	8fbc0010 	lw	gp,16(sp)
+  406b1c:	1000ffe0 	b	406aa0 <vsscanf+0x1a0>
+  406b20:	ae020010 	sw	v0,16(s0)
+  406b24:	3c1c0fc0 	lui	gp,0xfc0
+  406b28:	279c172c 	addiu	gp,gp,5932
+  406b2c:	0399e021 	addu	gp,gp,t9
+  406b30:	27bdffd8 	addiu	sp,sp,-40
+  406b34:	afbc0010 	sw	gp,16(sp)
+  406b38:	afb00018 	sw	s0,24(sp)
+  406b3c:	afbf0020 	sw	ra,32(sp)
+  406b40:	afbc001c 	sw	gp,28(sp)
+  406b44:	00808021 	move	s0,a0
+  406b48:	8e020014 	lw	v0,20(s0)
+  406b4c:	00000000 	nop
+  406b50:	10400017 	beqz	v0,406bb0 <vsscanf+0x2b0>
+  406b54:	00000000 	nop
+  406b58:	8e020008 	lw	v0,8(s0)
+  406b5c:	24030001 	li	v1,1
+  406b60:	2442ffff 	addiu	v0,v0,-1
+  406b64:	ae03000c 	sw	v1,12(s0)
+  406b68:	0440000e 	bltz	v0,406ba4 <vsscanf+0x2a4>
+  406b6c:	ae020008 	sw	v0,8(s0)
+  406b70:	8e020010 	lw	v0,16(s0)
+  406b74:	00000000 	nop
+  406b78:	18400005 	blez	v0,406b90 <vsscanf+0x290>
+  406b7c:	ae000014 	sw	zero,20(s0)
+  406b80:	8e020004 	lw	v0,4(s0)
+  406b84:	00000000 	nop
+  406b88:	24420001 	addiu	v0,v0,1
+  406b8c:	ae020004 	sw	v0,4(s0)
+  406b90:	8e020010 	lw	v0,16(s0)
+  406b94:	8fbf0020 	lw	ra,32(sp)
+  406b98:	8fb00018 	lw	s0,24(sp)
+  406b9c:	03e00008 	jr	ra
+  406ba0:	27bd0028 	addiu	sp,sp,40
+  406ba4:	00001021 	move	v0,zero
+  406ba8:	1000fffa 	b	406b94 <vsscanf+0x294>
+  406bac:	ae030014 	sw	v1,20(s0)
+  406bb0:	8e040000 	lw	a0,0(s0)
+  406bb4:	00000000 	nop
+  406bb8:	8c830014 	lw	v1,20(a0)
+  406bbc:	8c82001c 	lw	v0,28(a0)
+  406bc0:	00000000 	nop
+  406bc4:	0062102b 	sltu	v0,v1,v0
+  406bc8:	10400005 	beqz	v0,406be0 <vsscanf+0x2e0>
+  406bcc:	24620001 	addiu	v0,v1,1
+  406bd0:	90650000 	lbu	a1,0(v1)
+  406bd4:	ac820014 	sw	v0,20(a0)
+  406bd8:	1000ffdf 	b	406b58 <vsscanf+0x258>
+  406bdc:	ae050010 	sw	a1,16(s0)
+  406be0:	8f9980b0 	lw	t9,-32592(gp)
+  406be4:	00000000 	nop
+  406be8:	0320f809 	jalr	t9
+  406bec:	00000000 	nop
+  406bf0:	8fbc0010 	lw	gp,16(sp)
+  406bf4:	1000fff8 	b	406bd8 <vsscanf+0x2d8>
+  406bf8:	00402821 	move	a1,v0
+  406bfc:	3c1c0fc0 	lui	gp,0xfc0
+  406c00:	279c1654 	addiu	gp,gp,5716
+  406c04:	0399e021 	addu	gp,gp,t9
+  406c08:	8c820014 	lw	v0,20(a0)
+  406c0c:	00000000 	nop
+  406c10:	10400003 	beqz	v0,406c20 <vsscanf+0x320>
+  406c14:	00000000 	nop
+  406c18:	03e00008 	jr	ra
+  406c1c:	00000000 	nop
+  406c20:	8c82000c 	lw	v0,12(a0)
+  406c24:	00000000 	nop
+  406c28:	10400005 	beqz	v0,406c40 <vsscanf+0x340>
+  406c2c:	00000000 	nop
+  406c30:	8c820008 	lw	v0,8(a0)
+  406c34:	00000000 	nop
+  406c38:	24420001 	addiu	v0,v0,1
+  406c3c:	ac820008 	sw	v0,8(a0)
+  406c40:	8c830010 	lw	v1,16(a0)
+  406c44:	24020001 	li	v0,1
+  406c48:	1860fff3 	blez	v1,406c18 <vsscanf+0x318>
+  406c4c:	ac820014 	sw	v0,20(a0)
+  406c50:	8c820004 	lw	v0,4(a0)
+  406c54:	00000000 	nop
+  406c58:	2442ffff 	addiu	v0,v0,-1
+  406c5c:	03e00008 	jr	ra
+  406c60:	ac820004 	sw	v0,4(a0)
+  406c64:	3c1c0fc0 	lui	gp,0xfc0
+  406c68:	279c15ec 	addiu	gp,gp,5612
+  406c6c:	0399e021 	addu	gp,gp,t9
+  406c70:	27bdffd8 	addiu	sp,sp,-40
+  406c74:	afbc0010 	sw	gp,16(sp)
+  406c78:	afb00018 	sw	s0,24(sp)
+  406c7c:	afbf0020 	sw	ra,32(sp)
+  406c80:	afbc001c 	sw	gp,28(sp)
+  406c84:	00808021 	move	s0,a0
+  406c88:	8e020014 	lw	v0,20(s0)
+  406c8c:	00000000 	nop
+  406c90:	1040000c 	beqz	v0,406cc4 <vsscanf+0x3c4>
+  406c94:	00000000 	nop
+  406c98:	8e040010 	lw	a0,16(s0)
+  406c9c:	8e050000 	lw	a1,0(s0)
+  406ca0:	8f998294 	lw	t9,-32108(gp)
+  406ca4:	00000000 	nop
+  406ca8:	0320f809 	jalr	t9
+  406cac:	00000000 	nop
+  406cb0:	8fbc0010 	lw	gp,16(sp)
+  406cb4:	8e020004 	lw	v0,4(s0)
+  406cb8:	00000000 	nop
+  406cbc:	10400005 	beqz	v0,406cd4 <vsscanf+0x3d4>
+  406cc0:	00000000 	nop
+  406cc4:	8fbf0020 	lw	ra,32(sp)
+  406cc8:	8fb00018 	lw	s0,24(sp)
+  406ccc:	03e00008 	jr	ra
+  406cd0:	27bd0028 	addiu	sp,sp,40
+  406cd4:	9203001b 	lbu	v1,27(s0)
+  406cd8:	8e020000 	lw	v0,0(s0)
+  406cdc:	1000fff9 	b	406cc4 <vsscanf+0x3c4>
+  406ce0:	a0430003 	sb	v1,3(v0)
+
+00406ce4 <vfscanf>:
+  406ce4:	3c1c0fc0 	lui	gp,0xfc0
+  406ce8:	279c156c 	addiu	gp,gp,5484
+  406cec:	0399e021 	addu	gp,gp,t9
+  406cf0:	27bdfe50 	addiu	sp,sp,-432
+  406cf4:	afbc0010 	sw	gp,16(sp)
+  406cf8:	afb40190 	sw	s4,400(sp)
+  406cfc:	afb00180 	sw	s0,384(sp)
+  406d00:	afbf01a8 	sw	ra,424(sp)
+  406d04:	afbe01a4 	sw	s8,420(sp)
+  406d08:	afbc01a0 	sw	gp,416(sp)
+  406d0c:	afb7019c 	sw	s7,412(sp)
+  406d10:	afb60198 	sw	s6,408(sp)
+  406d14:	afb50194 	sw	s5,404(sp)
+  406d18:	afb3018c 	sw	s3,396(sp)
+  406d1c:	afb20188 	sw	s2,392(sp)
+  406d20:	afb10184 	sw	s1,388(sp)
+  406d24:	afa401b0 	sw	a0,432(sp)
+  406d28:	8c820038 	lw	v0,56(a0)
+  406d2c:	00a08021 	move	s0,a1
+  406d30:	104002d2 	beqz	v0,40787c <vfscanf+0xb98>
+  406d34:	00c0a021 	move	s4,a2
+  406d38:	8fa501b0 	lw	a1,432(sp)
+  406d3c:	02009021 	move	s2,s0
+  406d40:	27a40018 	addiu	a0,sp,24
+  406d44:	8f998020 	lw	t9,-32736(gp)
+  406d48:	00000000 	nop
+  406d4c:	27396a2c 	addiu	t9,t9,27180
+  406d50:	00000000 	nop
+  406d54:	0320f809 	jalr	t9
+  406d58:	00000000 	nop
+  406d5c:	8fbc0010 	lw	gp,16(sp)
+  406d60:	92430000 	lbu	v1,0(s2)
+  406d64:	00000000 	nop
+  406d68:	1060002b 	beqz	v1,406e18 <vfscanf+0x134>
+  406d6c:	0000b821 	move	s7,zero
+  406d70:	3c027fff 	lui	v0,0x7fff
+  406d74:	3442ffff 	ori	v0,v0,0xffff
+  406d78:	afa20020 	sw	v0,32(sp)
+  406d7c:	24020025 	li	v0,37
+  406d80:	241e0001 	li	s8,1
+  406d84:	10620066 	beq	v1,v0,406f20 <vfscanf+0x23c>
+  406d88:	0000b021 	move	s6,zero
+  406d8c:	92430000 	lbu	v1,0(s2)
+  406d90:	24020020 	li	v0,32
+  406d94:	10620004 	beq	v1,v0,406da8 <vfscanf+0xc4>
+  406d98:	2462fff7 	addiu	v0,v1,-9
+  406d9c:	2c420005 	sltiu	v0,v0,5
+  406da0:	1040004b 	beqz	v0,406ed0 <vfscanf+0x1ec>
+  406da4:	27a40018 	addiu	a0,sp,24
+  406da8:	27a40018 	addiu	a0,sp,24
+  406dac:	8f998020 	lw	t9,-32736(gp)
+  406db0:	00000000 	nop
+  406db4:	27396a68 	addiu	t9,t9,27240
+  406db8:	00000000 	nop
+  406dbc:	0320f809 	jalr	t9
+  406dc0:	00000000 	nop
+  406dc4:	8fbc0010 	lw	gp,16(sp)
+  406dc8:	00402821 	move	a1,v0
+  406dcc:	24020020 	li	v0,32
+  406dd0:	10a2fff5 	beq	a1,v0,406da8 <vfscanf+0xc4>
+  406dd4:	24a2fff7 	addiu	v0,a1,-9
+  406dd8:	2c420005 	sltiu	v0,v0,5
+  406ddc:	1440fff3 	bnez	v0,406dac <vfscanf+0xc8>
+  406de0:	27a40018 	addiu	a0,sp,24
+  406de4:	27a40018 	addiu	a0,sp,24
+  406de8:	26520001 	addiu	s2,s2,1
+  406dec:	8f998020 	lw	t9,-32736(gp)
+  406df0:	00000000 	nop
+  406df4:	27396bfc 	addiu	t9,t9,27644
+  406df8:	00000000 	nop
+  406dfc:	0320f809 	jalr	t9
+  406e00:	00000000 	nop
+  406e04:	8fbc0010 	lw	gp,16(sp)
+  406e08:	92430000 	lbu	v1,0(s2)
+  406e0c:	00000000 	nop
+  406e10:	1460ffd8 	bnez	v1,406d74 <vfscanf+0x90>
+  406e14:	3c027fff 	lui	v0,0x7fff
+  406e18:	27a40018 	addiu	a0,sp,24
+  406e1c:	8f998020 	lw	t9,-32736(gp)
+  406e20:	00000000 	nop
+  406e24:	27396c64 	addiu	t9,t9,27748
+  406e28:	00000000 	nop
+  406e2c:	0320f809 	jalr	t9
+  406e30:	00000000 	nop
+  406e34:	8fbc0010 	lw	gp,16(sp)
+  406e38:	8fa20028 	lw	v0,40(sp)
+  406e3c:	00000000 	nop
+  406e40:	1840001b 	blez	v0,406eb0 <vfscanf+0x1cc>
+  406e44:	00000000 	nop
+  406e48:	8fa301b0 	lw	v1,432(sp)
+  406e4c:	00000000 	nop
+  406e50:	8c620038 	lw	v0,56(v1)
+  406e54:	00000000 	nop
+  406e58:	1040000e 	beqz	v0,406e94 <vfscanf+0x1b0>
+  406e5c:	2464003c 	addiu	a0,v1,60
+  406e60:	02e01021 	move	v0,s7
+  406e64:	8fbf01a8 	lw	ra,424(sp)
+  406e68:	8fbe01a4 	lw	s8,420(sp)
+  406e6c:	8fb7019c 	lw	s7,412(sp)
+  406e70:	8fb60198 	lw	s6,408(sp)
+  406e74:	8fb50194 	lw	s5,404(sp)
+  406e78:	8fb40190 	lw	s4,400(sp)
+  406e7c:	8fb3018c 	lw	s3,396(sp)
+  406e80:	8fb20188 	lw	s2,392(sp)
+  406e84:	8fb10184 	lw	s1,388(sp)
+  406e88:	8fb00180 	lw	s0,384(sp)
+  406e8c:	03e00008 	jr	ra
+  406e90:	27bd01b0 	addiu	sp,sp,432
+  406e94:	8f99811c 	lw	t9,-32484(gp)
+  406e98:	00000000 	nop
+  406e9c:	0320f809 	jalr	t9
+  406ea0:	00000000 	nop
+  406ea4:	8fbc0010 	lw	gp,16(sp)
+  406ea8:	1000ffee 	b	406e64 <vfscanf+0x180>
+  406eac:	02e01021 	move	v0,s7
+  406eb0:	16e0ffe5 	bnez	s7,406e48 <vfscanf+0x164>
+  406eb4:	00000000 	nop
+  406eb8:	92420000 	lbu	v0,0(s2)
+  406ebc:	00000000 	nop
+  406ec0:	1040ffe1 	beqz	v0,406e48 <vfscanf+0x164>
+  406ec4:	00000000 	nop
+  406ec8:	1000ffdf 	b	406e48 <vfscanf+0x164>
+  406ecc:	2417ffff 	li	s7,-1
+  406ed0:	8f998020 	lw	t9,-32736(gp)
+  406ed4:	00000000 	nop
+  406ed8:	27396a68 	addiu	t9,t9,27240
+  406edc:	00000000 	nop
+  406ee0:	0320f809 	jalr	t9
+  406ee4:	00000000 	nop
+  406ee8:	8fbc0010 	lw	gp,16(sp)
+  406eec:	92430000 	lbu	v1,0(s2)
+  406ef0:	00000000 	nop
+  406ef4:	1443ffc8 	bne	v0,v1,406e18 <vfscanf+0x134>
+  406ef8:	27a40018 	addiu	a0,sp,24
+  406efc:	8f998020 	lw	t9,-32736(gp)
+  406f00:	00000000 	nop
+  406f04:	27396a68 	addiu	t9,t9,27240
+  406f08:	00000000 	nop
+  406f0c:	0320f809 	jalr	t9
+  406f10:	00000000 	nop
+  406f14:	8fbc0010 	lw	gp,16(sp)
+  406f18:	1000ffb3 	b	406de8 <vfscanf+0x104>
+  406f1c:	27a40018 	addiu	a0,sp,24
+  406f20:	26520001 	addiu	s2,s2,1
+  406f24:	92430000 	lbu	v1,0(s2)
+  406f28:	2402002a 	li	v0,42
+  406f2c:	10620250 	beq	v1,v0,407870 <vfscanf+0xb8c>
+  406f30:	00000000 	nop
+  406f34:	92420000 	lbu	v0,0(s2)
+  406f38:	00000000 	nop
+  406f3c:	2442ffd0 	addiu	v0,v0,-48
+  406f40:	2c42000a 	sltiu	v0,v0,10
+  406f44:	1040000d 	beqz	v0,406f7c <vfscanf+0x298>
+  406f48:	00002821 	move	a1,zero
+  406f4c:	92420000 	lbu	v0,0(s2)
+  406f50:	26520001 	addiu	s2,s2,1
+  406f54:	00051880 	sll	v1,a1,0x2
+  406f58:	92440000 	lbu	a0,0(s2)
+  406f5c:	00651821 	addu	v1,v1,a1
+  406f60:	00031840 	sll	v1,v1,0x1
+  406f64:	2484ffd0 	addiu	a0,a0,-48
+  406f68:	00621821 	addu	v1,v1,v0
+  406f6c:	2c84000a 	sltiu	a0,a0,10
+  406f70:	1480fff6 	bnez	a0,406f4c <vfscanf+0x268>
+  406f74:	2465ffd0 	addiu	a1,v1,-48
+  406f78:	afa50020 	sw	a1,32(sp)
+  406f7c:	00002821 	move	a1,zero
+  406f80:	8f838018 	lw	v1,-32744(gp)
+  406f84:	00000000 	nop
+  406f88:	246305a0 	addiu	v1,v1,1440
+  406f8c:	00651821 	addu	v1,v1,a1
+  406f90:	80630000 	lb	v1,0(v1)
+  406f94:	92420000 	lbu	v0,0(s2)
+  406f98:	00000000 	nop
+  406f9c:	10620220 	beq	v1,v0,407820 <vfscanf+0xb3c>
+  406fa0:	28a20002 	slti	v0,a1,2
+  406fa4:	24a50001 	addiu	a1,a1,1
+  406fa8:	2ca20005 	sltiu	v0,a1,5
+  406fac:	1440fff4 	bnez	v0,406f80 <vfscanf+0x29c>
+  406fb0:	00000000 	nop
+  406fb4:	8f938018 	lw	s3,-32744(gp)
+  406fb8:	00000000 	nop
+  406fbc:	267305ac 	addiu	s3,s3,1452
+  406fc0:	00000000 	nop
+  406fc4:	82620000 	lb	v0,0(s3)
+  406fc8:	00000000 	nop
+  406fcc:	1040ff9e 	beqz	v0,406e48 <vfscanf+0x164>
+  406fd0:	02608021 	move	s0,s3
+  406fd4:	92430000 	lbu	v1,0(s2)
+  406fd8:	82620000 	lb	v0,0(s3)
+  406fdc:	00000000 	nop
+  406fe0:	10620008 	beq	v1,v0,407004 <vfscanf+0x320>
+  406fe4:	02701823 	subu	v1,s3,s0
+  406fe8:	26730001 	addiu	s3,s3,1
+  406fec:	82620000 	lb	v0,0(s3)
+  406ff0:	00000000 	nop
+  406ff4:	1440fff7 	bnez	v0,406fd4 <vfscanf+0x2f0>
+  406ff8:	00000000 	nop
+  406ffc:	1000ff92 	b	406e48 <vfscanf+0x164>
+  407000:	00000000 	nop
+  407004:	1860ffb2 	blez	v1,406ed0 <vfscanf+0x1ec>
+  407008:	27a40018 	addiu	a0,sp,24
+  40700c:	28620002 	slti	v0,v1,2
+  407010:	144001f3 	bnez	v0,4077e0 <vfscanf+0xafc>
+  407014:	2402fffc 	li	v0,-4
+  407018:	28620004 	slti	v0,v1,4
+  40701c:	14400018 	bnez	v0,407080 <vfscanf+0x39c>
+  407020:	02702023 	subu	a0,s3,s0
+  407024:	27a40018 	addiu	a0,sp,24
+  407028:	8f998020 	lw	t9,-32736(gp)
+  40702c:	00000000 	nop
+  407030:	27396a68 	addiu	t9,t9,27240
+  407034:	00000000 	nop
+  407038:	0320f809 	jalr	t9
+  40703c:	00000000 	nop
+  407040:	8fbc0010 	lw	gp,16(sp)
+  407044:	00402821 	move	a1,v0
+  407048:	24020020 	li	v0,32
+  40704c:	10a2fff5 	beq	a1,v0,407024 <vfscanf+0x340>
+  407050:	24a2fff7 	addiu	v0,a1,-9
+  407054:	2c420005 	sltiu	v0,v0,5
+  407058:	1440fff3 	bnez	v0,407028 <vfscanf+0x344>
+  40705c:	27a40018 	addiu	a0,sp,24
+  407060:	8f998020 	lw	t9,-32736(gp)
+  407064:	00000000 	nop
+  407068:	27396bfc 	addiu	t9,t9,27644
+  40706c:	00000000 	nop
+  407070:	0320f809 	jalr	t9
+  407074:	00000000 	nop
+  407078:	8fbc0010 	lw	gp,16(sp)
+  40707c:	02702023 	subu	a0,s3,s0
+  407080:	28820005 	slti	v0,a0,5
+  407084:	104000a1 	beqz	v0,40730c <vfscanf+0x628>
+  407088:	2882000c 	slti	v0,a0,12
+  40708c:	82630000 	lb	v1,0(s3)
+  407090:	24020063 	li	v0,99
+  407094:	10620096 	beq	v1,v0,4072f0 <vfscanf+0x60c>
+  407098:	0000b021 	move	s6,zero
+  40709c:	00002821 	move	a1,zero
+  4070a0:	27a30080 	addiu	v1,sp,128
+  4070a4:	82620000 	lb	v0,0(s3)
+  4070a8:	00652021 	addu	a0,v1,a1
+  4070ac:	24030073 	li	v1,115
+  4070b0:	10430086 	beq	v0,v1,4072cc <vfscanf+0x5e8>
+  4070b4:	24020020 	li	v0,32
+  4070b8:	00001821 	move	v1,zero
+  4070bc:	24a50001 	addiu	a1,a1,1
+  4070c0:	28a20100 	slti	v0,a1,256
+  4070c4:	1440fff6 	bnez	v0,4070a0 <vfscanf+0x3bc>
+  4070c8:	a0830000 	sb	v1,0(a0)
+  4070cc:	82630000 	lb	v1,0(s3)
+  4070d0:	2402005b 	li	v0,91
+  4070d4:	1062003a 	beq	v1,v0,4071c0 <vfscanf+0x4dc>
+  4070d8:	2402005e 	li	v0,94
+  4070dc:	8fa20020 	lw	v0,32(sp)
+  4070e0:	00000000 	nop
+  4070e4:	1840ff4d 	blez	v0,406e1c <vfscanf+0x138>
+  4070e8:	27a40018 	addiu	a0,sp,24
+  4070ec:	13c00032 	beqz	s8,4071b8 <vfscanf+0x4d4>
+  4070f0:	26820003 	addiu	v0,s4,3
+  4070f4:	2403fffc 	li	v1,-4
+  4070f8:	0043a024 	and	s4,v0,v1
+  4070fc:	02801021 	move	v0,s4
+  407100:	8c510000 	lw	s1,0(v0)
+  407104:	26940004 	addiu	s4,s4,4
+  407108:	27a40018 	addiu	a0,sp,24
+  40710c:	8f998020 	lw	t9,-32736(gp)
+  407110:	00000000 	nop
+  407114:	27396b24 	addiu	t9,t9,27428
+  407118:	00000000 	nop
+  40711c:	0320f809 	jalr	t9
+  407120:	00000000 	nop
+  407124:	8fbc0010 	lw	gp,16(sp)
+  407128:	00408021 	move	s0,v0
+  40712c:	1a0000bf 	blez	s0,40742c <vfscanf+0x748>
+  407130:	27a40018 	addiu	a0,sp,24
+  407134:	27b50080 	addiu	s5,sp,128
+  407138:	02b01021 	addu	v0,s5,s0
+  40713c:	90420000 	lbu	v0,0(v0)
+  407140:	00000000 	nop
+  407144:	10560013 	beq	v0,s6,407194 <vfscanf+0x4b0>
+  407148:	00002821 	move	a1,zero
+  40714c:	a2300000 	sb	s0,0(s1)
+  407150:	27a40018 	addiu	a0,sp,24
+  407154:	8f998020 	lw	t9,-32736(gp)
+  407158:	00000000 	nop
+  40715c:	27396b24 	addiu	t9,t9,27428
+  407160:	00000000 	nop
+  407164:	0320f809 	jalr	t9
+  407168:	00000000 	nop
+  40716c:	8fbc0010 	lw	gp,16(sp)
+  407170:	00408021 	move	s0,v0
+  407174:	24050001 	li	a1,1
+  407178:	1a000006 	blez	s0,407194 <vfscanf+0x4b0>
+  40717c:	023e8821 	addu	s1,s1,s8
+  407180:	02b01021 	addu	v0,s5,s0
+  407184:	90420000 	lbu	v0,0(v0)
+  407188:	00000000 	nop
+  40718c:	1456ffef 	bne	v0,s6,40714c <vfscanf+0x468>
+  407190:	00000000 	nop
+  407194:	10a000a4 	beqz	a1,407428 <vfscanf+0x744>
+  407198:	24020063 	li	v0,99
+  40719c:	82630000 	lb	v1,0(s3)
+  4071a0:	00000000 	nop
+  4071a4:	10620002 	beq	v1,v0,4071b0 <vfscanf+0x4cc>
+  4071a8:	00000000 	nop
+  4071ac:	a2200000 	sb	zero,0(s1)
+  4071b0:	1000ff0c 	b	406de4 <vfscanf+0x100>
+  4071b4:	02feb821 	addu	s7,s7,s8
+  4071b8:	1000ffd3 	b	407108 <vfscanf+0x424>
+  4071bc:	27b10038 	addiu	s1,sp,56
+  4071c0:	26520001 	addiu	s2,s2,1
+  4071c4:	92430000 	lbu	v1,0(s2)
+  4071c8:	00000000 	nop
+  4071cc:	1062003c 	beq	v1,v0,4072c0 <vfscanf+0x5dc>
+  4071d0:	00000000 	nop
+  4071d4:	92420000 	lbu	v0,0(s2)
+  4071d8:	2404005d 	li	a0,93
+  4071dc:	10440035 	beq	v0,a0,4072b4 <vfscanf+0x5d0>
+  4071e0:	24020001 	li	v0,1
+  4071e4:	92430000 	lbu	v1,0(s2)
+  4071e8:	00000000 	nop
+  4071ec:	306200ff 	andi	v0,v1,0xff
+  4071f0:	1040ff09 	beqz	v0,406e18 <vfscanf+0x134>
+  4071f4:	00002821 	move	a1,zero
+  4071f8:	1044000f 	beq	v0,a0,407238 <vfscanf+0x554>
+  4071fc:	2402002d 	li	v0,45
+  407200:	10620013 	beq	v1,v0,407250 <vfscanf+0x56c>
+  407204:	00000000 	nop
+  407208:	92450000 	lbu	a1,0(s2)
+  40720c:	24020001 	li	v0,1
+  407210:	03a51821 	addu	v1,sp,a1
+  407214:	a0620080 	sb	v0,128(v1)
+  407218:	26520001 	addiu	s2,s2,1
+  40721c:	92430000 	lbu	v1,0(s2)
+  407220:	00000000 	nop
+  407224:	306400ff 	andi	a0,v1,0xff
+  407228:	1080fefb 	beqz	a0,406e18 <vfscanf+0x134>
+  40722c:	2402005d 	li	v0,93
+  407230:	1482fff3 	bne	a0,v0,407200 <vfscanf+0x51c>
+  407234:	2402002d 	li	v0,45
+  407238:	92420000 	lbu	v0,0(s2)
+  40723c:	00000000 	nop
+  407240:	1440ffa6 	bnez	v0,4070dc <vfscanf+0x3f8>
+  407244:	27a40018 	addiu	a0,sp,24
+  407248:	1000fef4 	b	406e1c <vfscanf+0x138>
+  40724c:	00000000 	nop
+  407250:	10a0ffed 	beqz	a1,407208 <vfscanf+0x524>
+  407254:	2402005d 	li	v0,93
+  407258:	92430001 	lbu	v1,1(s2)
+  40725c:	00000000 	nop
+  407260:	1062ffe9 	beq	v1,v0,407208 <vfscanf+0x524>
+  407264:	00601021 	move	v0,v1
+  407268:	0045102b 	sltu	v0,v0,a1
+  40726c:	1040000e 	beqz	v0,4072a8 <vfscanf+0x5c4>
+  407270:	26520001 	addiu	s2,s2,1
+  407274:	00a03021 	move	a2,a1
+  407278:	00602821 	move	a1,v1
+  40727c:	00c5102a 	slt	v0,a2,a1
+  407280:	14400007 	bnez	v0,4072a0 <vfscanf+0x5bc>
+  407284:	00000000 	nop
+  407288:	03a52021 	addu	a0,sp,a1
+  40728c:	24a50001 	addiu	a1,a1,1
+  407290:	24020001 	li	v0,1
+  407294:	00c5182a 	slt	v1,a2,a1
+  407298:	1060fffb 	beqz	v1,407288 <vfscanf+0x5a4>
+  40729c:	a0820080 	sb	v0,128(a0)
+  4072a0:	1000ffdd 	b	407218 <vfscanf+0x534>
+  4072a4:	00002821 	move	a1,zero
+  4072a8:	92460000 	lbu	a2,0(s2)
+  4072ac:	1000fff4 	b	407280 <vfscanf+0x59c>
+  4072b0:	00c5102a 	slt	v0,a2,a1
+  4072b4:	a3a200dd 	sb	v0,221(sp)
+  4072b8:	1000ffca 	b	4071e4 <vfscanf+0x500>
+  4072bc:	26520001 	addiu	s2,s2,1
+  4072c0:	24160001 	li	s6,1
+  4072c4:	1000ffc3 	b	4071d4 <vfscanf+0x4f0>
+  4072c8:	26520001 	addiu	s2,s2,1
+  4072cc:	10a20005 	beq	a1,v0,4072e4 <vfscanf+0x600>
+  4072d0:	00001821 	move	v1,zero
+  4072d4:	24a2fff7 	addiu	v0,a1,-9
+  4072d8:	2c420005 	sltiu	v0,v0,5
+  4072dc:	10400002 	beqz	v0,4072e8 <vfscanf+0x604>
+  4072e0:	00000000 	nop
+  4072e4:	24030001 	li	v1,1
+  4072e8:	1000ff74 	b	4070bc <vfscanf+0x3d8>
+  4072ec:	38630001 	xori	v1,v1,0x1
+  4072f0:	3c027fff 	lui	v0,0x7fff
+  4072f4:	8fa30020 	lw	v1,32(sp)
+  4072f8:	3442ffff 	ori	v0,v0,0xffff
+  4072fc:	1462ff67 	bne	v1,v0,40709c <vfscanf+0x3b8>
+  407300:	24160001 	li	s6,1
+  407304:	1000ff65 	b	40709c <vfscanf+0x3b8>
+  407308:	afb60020 	sw	s6,32(sp)
+  40730c:	1040fec2 	beqz	v0,406e18 <vfscanf+0x134>
+  407310:	24020070 	li	v0,112
+  407314:	82630000 	lb	v1,0(s3)
+  407318:	00000000 	nop
+  40731c:	1062012e 	beq	v1,v0,4077d8 <vfscanf+0xaf4>
+  407320:	00000000 	nop
+  407324:	2402fffb 	li	v0,-5
+  407328:	00501023 	subu	v0,v0,s0
+  40732c:	02621021 	addu	v0,s3,v0
+  407330:	8f938018 	lw	s3,-32744(gp)
+  407334:	00000000 	nop
+  407338:	267305bc 	addiu	s3,s3,1468
+  40733c:	02629821 	addu	s3,s3,v0
+  407340:	92730000 	lbu	s3,0(s3)
+  407344:	8fa20020 	lw	v0,32(sp)
+  407348:	27b10038 	addiu	s1,sp,56
+  40734c:	1840feb2 	blez	v0,406e18 <vfscanf+0x134>
+  407350:	2895000a 	slti	s5,a0,10
+  407354:	27a40018 	addiu	a0,sp,24
+  407358:	8f998020 	lw	t9,-32736(gp)
+  40735c:	00000000 	nop
+  407360:	27396b24 	addiu	t9,t9,27428
+  407364:	00000000 	nop
+  407368:	0320f809 	jalr	t9
+  40736c:	00000000 	nop
+  407370:	8fbc0010 	lw	gp,16(sp)
+  407374:	00408021 	move	s0,v0
+  407378:	2402002b 	li	v0,43
+  40737c:	1202010a 	beq	s0,v0,4077a8 <vfscanf+0xac4>
+  407380:	2402002d 	li	v0,45
+  407384:	12020109 	beq	s0,v0,4077ac <vfscanf+0xac8>
+  407388:	27a40018 	addiu	a0,sp,24
+  40738c:	24020030 	li	v0,48
+  407390:	120200dd 	beq	s0,v0,407708 <vfscanf+0xa24>
+  407394:	00000000 	nop
+  407398:	126000d9 	beqz	s3,407700 <vfscanf+0xa1c>
+  40739c:	00000000 	nop
+  4073a0:	24020030 	li	v0,48
+  4073a4:	120200c6 	beq	s0,v0,4076c0 <vfscanf+0x9dc>
+  4073a8:	00000000 	nop
+  4073ac:	00102600 	sll	a0,s0,0x18
+  4073b0:	00132e00 	sll	a1,s3,0x18
+  4073b4:	00042603 	sra	a0,a0,0x18
+  4073b8:	00052e03 	sra	a1,a1,0x18
+  4073bc:	8f998020 	lw	t9,-32736(gp)
+  4073c0:	00000000 	nop
+  4073c4:	273969a0 	addiu	t9,t9,27040
+  4073c8:	00000000 	nop
+  4073cc:	0320f809 	jalr	t9
+  4073d0:	00000000 	nop
+  4073d4:	8fbc0010 	lw	gp,16(sp)
+  4073d8:	10400010 	beqz	v0,40741c <vfscanf+0x738>
+  4073dc:	27a30038 	addiu	v1,sp,56
+  4073e0:	02231023 	subu	v0,s1,v1
+  4073e4:	28420040 	slti	v0,v0,64
+  4073e8:	10400003 	beqz	v0,4073f8 <vfscanf+0x714>
+  4073ec:	27a40018 	addiu	a0,sp,24
+  4073f0:	a2300000 	sb	s0,0(s1)
+  4073f4:	26310001 	addiu	s1,s1,1
+  4073f8:	8f998020 	lw	t9,-32736(gp)
+  4073fc:	00000000 	nop
+  407400:	27396b24 	addiu	t9,t9,27428
+  407404:	00000000 	nop
+  407408:	0320f809 	jalr	t9
+  40740c:	00000000 	nop
+  407410:	8fbc0010 	lw	gp,16(sp)
+  407414:	1000ffe5 	b	4073ac <vfscanf+0x6c8>
+  407418:	00408021 	move	s0,v0
+  40741c:	27a40038 	addiu	a0,sp,56
+  407420:	1624000b 	bne	s1,a0,407450 <vfscanf+0x76c>
+  407424:	a2200000 	sb	zero,0(s1)
+  407428:	27a40018 	addiu	a0,sp,24
+  40742c:	8f998020 	lw	t9,-32736(gp)
+  407430:	00000000 	nop
+  407434:	27396bfc 	addiu	t9,t9,27644
+  407438:	00000000 	nop
+  40743c:	0320f809 	jalr	t9
+  407440:	00000000 	nop
+  407444:	8fbc0010 	lw	gp,16(sp)
+  407448:	1000fe74 	b	406e1c <vfscanf+0x138>
+  40744c:	27a40018 	addiu	a0,sp,24
+  407450:	9223ffff 	lbu	v1,-1(s1)
+  407454:	2402002b 	li	v0,43
+  407458:	1062fff3 	beq	v1,v0,407428 <vfscanf+0x744>
+  40745c:	2405002d 	li	a1,45
+  407460:	1065fff1 	beq	v1,a1,407428 <vfscanf+0x744>
+  407464:	00000000 	nop
+  407468:	13c0fe5e 	beqz	s8,406de4 <vfscanf+0x100>
+  40746c:	00000000 	nop
+  407470:	93a20038 	lbu	v0,56(sp)
+  407474:	00000000 	nop
+  407478:	1045008f 	beq	v0,a1,4076b8 <vfscanf+0x9d4>
+  40747c:	00000000 	nop
+  407480:	24070001 	li	a3,1
+  407484:	00002821 	move	a1,zero
+  407488:	00f53823 	subu	a3,a3,s5
+  40748c:	02603021 	move	a2,s3
+  407490:	8f9981ac 	lw	t9,-32340(gp)
+  407494:	00000000 	nop
+  407498:	0320f809 	jalr	t9
+  40749c:	00000000 	nop
+  4074a0:	8fbc0010 	lw	gp,16(sp)
+  4074a4:	00404021 	move	t0,v0
+  4074a8:	00604821 	move	t1,v1
+  4074ac:	2402fffc 	li	v0,-4
+  4074b0:	26830003 	addiu	v1,s4,3
+  4074b4:	26c40002 	addiu	a0,s6,2
+  4074b8:	0062a024 	and	s4,v1,v0
+  4074bc:	308400ff 	andi	a0,a0,0xff
+  4074c0:	02801021 	move	v0,s4
+  4074c4:	2c830005 	sltiu	v1,a0,5
+  4074c8:	8c450000 	lw	a1,0(v0)
+  4074cc:	1060000d 	beqz	v1,407504 <vfscanf+0x820>
+  4074d0:	26940004 	addiu	s4,s4,4
+  4074d4:	00041080 	sll	v0,a0,0x2
+  4074d8:	8f818018 	lw	at,-32744(gp)
+  4074dc:	00000000 	nop
+  4074e0:	242105c8 	addiu	at,at,1480
+  4074e4:	00220821 	addu	at,at,v0
+  4074e8:	8c220000 	lw	v0,0(at)
+  4074ec:	00000000 	nop
+  4074f0:	005c1021 	addu	v0,v0,gp
+  4074f4:	00400008 	jr	v0
+  4074f8:	00000000 	nop
+  4074fc:	aca80000 	sw	t0,0(a1)
+  407500:	aca90004 	sw	t1,4(a1)
+  407504:	1000fe37 	b	406de4 <vfscanf+0x100>
+  407508:	26f70001 	addiu	s7,s7,1
+  40750c:	12a0000d 	beqz	s5,407544 <vfscanf+0x860>
+  407510:	00000000 	nop
+  407514:	15000007 	bnez	t0,407534 <vfscanf+0x850>
+  407518:	00000000 	nop
+  40751c:	11000003 	beqz	t0,40752c <vfscanf+0x848>
+  407520:	2d220100 	sltiu	v0,t1,256
+  407524:	1000fff7 	b	407504 <vfscanf+0x820>
+  407528:	a0a90000 	sb	t1,0(a1)
+  40752c:	1440fffd 	bnez	v0,407524 <vfscanf+0x840>
+  407530:	00000000 	nop
+  407534:	24080000 	li	t0,0
+  407538:	240900ff 	li	t1,255
+  40753c:	1000fff1 	b	407504 <vfscanf+0x820>
+  407540:	a0a90000 	sb	t1,0(a1)
+  407544:	19000005 	blez	t0,40755c <vfscanf+0x878>
+  407548:	00000000 	nop
+  40754c:	24080000 	li	t0,0
+  407550:	2409007f 	li	t1,127
+  407554:	1000ffeb 	b	407504 <vfscanf+0x820>
+  407558:	a0a90000 	sb	t1,0(a1)
+  40755c:	1100000c 	beqz	t0,407590 <vfscanf+0x8ac>
+  407560:	2d220080 	sltiu	v0,t1,128
+  407564:	2902ffff 	slti	v0,t0,-1
+  407568:	14400005 	bnez	v0,407580 <vfscanf+0x89c>
+  40756c:	2402ffff 	li	v0,-1
+  407570:	1502ffec 	bne	t0,v0,407524 <vfscanf+0x840>
+  407574:	2d22ff80 	sltiu	v0,t1,-128
+  407578:	1040ffea 	beqz	v0,407524 <vfscanf+0x840>
+  40757c:	00000000 	nop
+  407580:	2408ffff 	li	t0,-1
+  407584:	2409ff80 	li	t1,-128
+  407588:	1000ffde 	b	407504 <vfscanf+0x820>
+  40758c:	a0a90000 	sb	t1,0(a1)
+  407590:	1440fff5 	bnez	v0,407568 <vfscanf+0x884>
+  407594:	2902ffff 	slti	v0,t0,-1
+  407598:	1000ffec 	b	40754c <vfscanf+0x868>
+  40759c:	00000000 	nop
+  4075a0:	12a0000e 	beqz	s5,4075dc <vfscanf+0x8f8>
+  4075a4:	00000000 	nop
+  4075a8:	15000008 	bnez	t0,4075cc <vfscanf+0x8e8>
+  4075ac:	00000000 	nop
+  4075b0:	11000003 	beqz	t0,4075c0 <vfscanf+0x8dc>
+  4075b4:	3402ffff 	li	v0,0xffff
+  4075b8:	1000ffd2 	b	407504 <vfscanf+0x820>
+  4075bc:	a4a90000 	sh	t1,0(a1)
+  4075c0:	0049102b 	sltu	v0,v0,t1
+  4075c4:	1040fffc 	beqz	v0,4075b8 <vfscanf+0x8d4>
+  4075c8:	00000000 	nop
+  4075cc:	24080000 	li	t0,0
+  4075d0:	3409ffff 	li	t1,0xffff
+  4075d4:	1000ffcb 	b	407504 <vfscanf+0x820>
+  4075d8:	a4a90000 	sh	t1,0(a1)
+  4075dc:	19000005 	blez	t0,4075f4 <vfscanf+0x910>
+  4075e0:	00000000 	nop
+  4075e4:	24080000 	li	t0,0
+  4075e8:	24097fff 	li	t1,32767
+  4075ec:	1000ffc5 	b	407504 <vfscanf+0x820>
+  4075f0:	a4a90000 	sh	t1,0(a1)
+  4075f4:	1100000c 	beqz	t0,407628 <vfscanf+0x944>
+  4075f8:	24027fff 	li	v0,32767
+  4075fc:	2902ffff 	slti	v0,t0,-1
+  407600:	14400005 	bnez	v0,407618 <vfscanf+0x934>
+  407604:	2402ffff 	li	v0,-1
+  407608:	1502ffeb 	bne	t0,v0,4075b8 <vfscanf+0x8d4>
+  40760c:	2d228000 	sltiu	v0,t1,-32768
+  407610:	1040ffe9 	beqz	v0,4075b8 <vfscanf+0x8d4>
+  407614:	00000000 	nop
+  407618:	2408ffff 	li	t0,-1
+  40761c:	24098000 	li	t1,-32768
+  407620:	1000ffb8 	b	407504 <vfscanf+0x820>
+  407624:	a4a90000 	sh	t1,0(a1)
+  407628:	0049102b 	sltu	v0,v0,t1
+  40762c:	1040fff4 	beqz	v0,407600 <vfscanf+0x91c>
+  407630:	2902ffff 	slti	v0,t0,-1
+  407634:	1000ffeb 	b	4075e4 <vfscanf+0x900>
+  407638:	00000000 	nop
+  40763c:	12a00007 	beqz	s5,40765c <vfscanf+0x978>
+  407640:	00000000 	nop
+  407644:	11000003 	beqz	t0,407654 <vfscanf+0x970>
+  407648:	00000000 	nop
+  40764c:	24080000 	li	t0,0
+  407650:	2409ffff 	li	t1,-1
+  407654:	1000ffab 	b	407504 <vfscanf+0x820>
+  407658:	aca90000 	sw	t1,0(a1)
+  40765c:	19000006 	blez	t0,407678 <vfscanf+0x994>
+  407660:	00000000 	nop
+  407664:	24080000 	li	t0,0
+  407668:	3c097fff 	lui	t1,0x7fff
+  40766c:	3529ffff 	ori	t1,t1,0xffff
+  407670:	1000ffa4 	b	407504 <vfscanf+0x820>
+  407674:	aca90000 	sw	t1,0(a1)
+  407678:	1100000b 	beqz	t0,4076a8 <vfscanf+0x9c4>
+  40767c:	2902ffff 	slti	v0,t0,-1
+  407680:	14400005 	bnez	v0,407698 <vfscanf+0x9b4>
+  407684:	2402ffff 	li	v0,-1
+  407688:	1502fff2 	bne	t0,v0,407654 <vfscanf+0x970>
+  40768c:	00000000 	nop
+  407690:	0520fff0 	bltz	t1,407654 <vfscanf+0x970>
+  407694:	00000000 	nop
+  407698:	2408ffff 	li	t0,-1
+  40769c:	3c098000 	lui	t1,0x8000
+  4076a0:	1000ff98 	b	407504 <vfscanf+0x820>
+  4076a4:	aca90000 	sw	t1,0(a1)
+  4076a8:	0521fff5 	bgez	t1,407680 <vfscanf+0x99c>
+  4076ac:	00000000 	nop
+  4076b0:	1000ffec 	b	407664 <vfscanf+0x980>
+  4076b4:	00000000 	nop
+  4076b8:	1000ff71 	b	407480 <vfscanf+0x79c>
+  4076bc:	0000a821 	move	s5,zero
+  4076c0:	a2300000 	sb	s0,0(s1)
+  4076c4:	26310001 	addiu	s1,s1,1
+  4076c8:	27a40018 	addiu	a0,sp,24
+  4076cc:	8f998020 	lw	t9,-32736(gp)
+  4076d0:	00000000 	nop
+  4076d4:	27396b24 	addiu	t9,t9,27428
+  4076d8:	00000000 	nop
+  4076dc:	0320f809 	jalr	t9
+  4076e0:	00000000 	nop
+  4076e4:	8fbc0010 	lw	gp,16(sp)
+  4076e8:	00408021 	move	s0,v0
+  4076ec:	24020030 	li	v0,48
+  4076f0:	1202fff5 	beq	s0,v0,4076c8 <vfscanf+0x9e4>
+  4076f4:	00102600 	sll	a0,s0,0x18
+  4076f8:	1000ff2e 	b	4073b4 <vfscanf+0x6d0>
+  4076fc:	00132e00 	sll	a1,s3,0x18
+  407700:	1000ff27 	b	4073a0 <vfscanf+0x6bc>
+  407704:	2413000a 	li	s3,10
+  407708:	12600003 	beqz	s3,407718 <vfscanf+0xa34>
+  40770c:	24020010 	li	v0,16
+  407710:	1662ff21 	bne	s3,v0,407398 <vfscanf+0x6b4>
+  407714:	00000000 	nop
+  407718:	27a40018 	addiu	a0,sp,24
+  40771c:	8f998020 	lw	t9,-32736(gp)
+  407720:	00000000 	nop
+  407724:	27396b24 	addiu	t9,t9,27428
+  407728:	00000000 	nop
+  40772c:	0320f809 	jalr	t9
+  407730:	00000000 	nop
+  407734:	8fbc0010 	lw	gp,16(sp)
+  407738:	00408021 	move	s0,v0
+  40773c:	24020078 	li	v0,120
+  407740:	1202000e 	beq	s0,v0,40777c <vfscanf+0xa98>
+  407744:	24020058 	li	v0,88
+  407748:	1202000c 	beq	s0,v0,40777c <vfscanf+0xa98>
+  40774c:	27a40018 	addiu	a0,sp,24
+  407750:	8f998020 	lw	t9,-32736(gp)
+  407754:	00000000 	nop
+  407758:	27396bfc 	addiu	t9,t9,27644
+  40775c:	00000000 	nop
+  407760:	0320f809 	jalr	t9
+  407764:	00000000 	nop
+  407768:	8fbc0010 	lw	gp,16(sp)
+  40776c:	1660ff0c 	bnez	s3,4073a0 <vfscanf+0x6bc>
+  407770:	24100030 	li	s0,48
+  407774:	1000ff08 	b	407398 <vfscanf+0x6b4>
+  407778:	24130008 	li	s3,8
+  40777c:	27a40018 	addiu	a0,sp,24
+  407780:	8f998020 	lw	t9,-32736(gp)
+  407784:	00000000 	nop
+  407788:	27396b24 	addiu	t9,t9,27428
+  40778c:	00000000 	nop
+  407790:	0320f809 	jalr	t9
+  407794:	00000000 	nop
+  407798:	8fbc0010 	lw	gp,16(sp)
+  40779c:	00408021 	move	s0,v0
+  4077a0:	1000fefd 	b	407398 <vfscanf+0x6b4>
+  4077a4:	24130010 	li	s3,16
+  4077a8:	27a40018 	addiu	a0,sp,24
+  4077ac:	a3b00038 	sb	s0,56(sp)
+  4077b0:	27b10039 	addiu	s1,sp,57
+  4077b4:	8f998020 	lw	t9,-32736(gp)
+  4077b8:	00000000 	nop
+  4077bc:	27396b24 	addiu	t9,t9,27428
+  4077c0:	00000000 	nop
+  4077c4:	0320f809 	jalr	t9
+  4077c8:	00000000 	nop
+  4077cc:	8fbc0010 	lw	gp,16(sp)
+  4077d0:	1000feee 	b	40738c <vfscanf+0x6a8>
+  4077d4:	00408021 	move	s0,v0
+  4077d8:	1000fed2 	b	407324 <vfscanf+0x640>
+  4077dc:	24160001 	li	s6,1
+  4077e0:	26830003 	addiu	v1,s4,3
+  4077e4:	0062a024 	and	s4,v1,v0
+  4077e8:	02801021 	move	v0,s4
+  4077ec:	8c430000 	lw	v1,0(v0)
+  4077f0:	8fa2001c 	lw	v0,28(sp)
+  4077f4:	27a40018 	addiu	a0,sp,24
+  4077f8:	ac620000 	sw	v0,0(v1)
+  4077fc:	8f998020 	lw	t9,-32736(gp)
+  407800:	00000000 	nop
+  407804:	27396a68 	addiu	t9,t9,27240
+  407808:	00000000 	nop
+  40780c:	0320f809 	jalr	t9
+  407810:	00000000 	nop
+  407814:	8fbc0010 	lw	gp,16(sp)
+  407818:	1000fd72 	b	406de4 <vfscanf+0x100>
+  40781c:	26940004 	addiu	s4,s4,4
+  407820:	8f848018 	lw	a0,-32744(gp)
+  407824:	00000000 	nop
+  407828:	248405a8 	addiu	a0,a0,1448
+  40782c:	00852021 	addu	a0,a0,a1
+  407830:	90840000 	lbu	a0,0(a0)
+  407834:	8f968018 	lw	s6,-32744(gp)
+  407838:	00000000 	nop
+  40783c:	26d605a8 	addiu	s6,s6,1448
+  407840:	02c5b021 	addu	s6,s6,a1
+  407844:	82d60000 	lb	s6,0(s6)
+  407848:	1040fdda 	beqz	v0,406fb4 <vfscanf+0x2d0>
+  40784c:	26520001 	addiu	s2,s2,1
+  407850:	92420000 	lbu	v0,0(s2)
+  407854:	00000000 	nop
+  407858:	1462fdd6 	bne	v1,v0,406fb4 <vfscanf+0x2d0>
+  40785c:	02c41021 	addu	v0,s6,a0
+  407860:	00021600 	sll	v0,v0,0x18
+  407864:	0002b603 	sra	s6,v0,0x18
+  407868:	1000fdd2 	b	406fb4 <vfscanf+0x2d0>
+  40786c:	26520001 	addiu	s2,s2,1
+  407870:	0000f021 	move	s8,zero
+  407874:	1000fdaf 	b	406f34 <vfscanf+0x250>
+  407878:	26520001 	addiu	s2,s2,1
+  40787c:	2484003c 	addiu	a0,a0,60
+  407880:	8f9980a8 	lw	t9,-32600(gp)
+  407884:	00000000 	nop
+  407888:	0320f809 	jalr	t9
+  40788c:	00000000 	nop
+  407890:	8fbc0010 	lw	gp,16(sp)
+  407894:	1000fd28 	b	406d38 <vfscanf+0x54>
+  407898:	00000000 	nop
+  40789c:	00000000 	nop
+
+004078a0 <memcpy>:
+  4078a0:	3c1c0fc0 	lui	gp,0xfc0
+  4078a4:	279c09b0 	addiu	gp,gp,2480
+  4078a8:	0399e021 	addu	gp,gp,t9
+  4078ac:	10c00007 	beqz	a2,4078cc <memcpy+0x2c>
+  4078b0:	00801821 	move	v1,a0
+  4078b4:	90a20000 	lbu	v0,0(a1)
+  4078b8:	24c6ffff 	addiu	a2,a2,-1
+  4078bc:	a0620000 	sb	v0,0(v1)
+  4078c0:	24a50001 	addiu	a1,a1,1
+  4078c4:	14c0fffb 	bnez	a2,4078b4 <memcpy+0x14>
+  4078c8:	24630001 	addiu	v1,v1,1
+  4078cc:	03e00008 	jr	ra
+  4078d0:	00801021 	move	v0,a0
+	...
+
+004078e0 <memset>:
+  4078e0:	3c1c0fc0 	lui	gp,0xfc0
+  4078e4:	279c0970 	addiu	gp,gp,2416
+  4078e8:	0399e021 	addu	gp,gp,t9
+  4078ec:	00801021 	move	v0,a0
+  4078f0:	10c00005 	beqz	a2,407908 <memset+0x28>
+  4078f4:	00401821 	move	v1,v0
+  4078f8:	24c6ffff 	addiu	a2,a2,-1
+  4078fc:	a0650000 	sb	a1,0(v1)
+  407900:	14c0fffd 	bnez	a2,4078f8 <memset+0x18>
+  407904:	24630001 	addiu	v1,v1,1
+  407908:	03e00008 	jr	ra
+  40790c:	00000000 	nop
+
+00407910 <strcasecmp>:
+  407910:	3c1c0fc0 	lui	gp,0xfc0
+  407914:	279c0940 	addiu	gp,gp,2368
+  407918:	0399e021 	addu	gp,gp,t9
+  40791c:	27bdffd0 	addiu	sp,sp,-48
+  407920:	afbc0010 	sw	gp,16(sp)
+  407924:	afb20020 	sw	s2,32(sp)
+  407928:	afb1001c 	sw	s1,28(sp)
+  40792c:	afb00018 	sw	s0,24(sp)
+  407930:	afbf0028 	sw	ra,40(sp)
+  407934:	afbc0024 	sw	gp,36(sp)
+  407938:	00808821 	move	s1,a0
+  40793c:	00a09021 	move	s2,a1
+  407940:	00008021 	move	s0,zero
+  407944:	12320017 	beq	s1,s2,4079a4 <strcasecmp+0x94>
+  407948:	00000000 	nop
+  40794c:	92240000 	lbu	a0,0(s1)
+  407950:	8f998238 	lw	t9,-32200(gp)
+  407954:	00000000 	nop
+  407958:	0320f809 	jalr	t9
+  40795c:	00000000 	nop
+  407960:	8fbc0010 	lw	gp,16(sp)
+  407964:	92440000 	lbu	a0,0(s2)
+  407968:	00408021 	move	s0,v0
+  40796c:	8f998238 	lw	t9,-32200(gp)
+  407970:	00000000 	nop
+  407974:	0320f809 	jalr	t9
+  407978:	00000000 	nop
+  40797c:	8fbc0010 	lw	gp,16(sp)
+  407980:	02028023 	subu	s0,s0,v0
+  407984:	12000007 	beqz	s0,4079a4 <strcasecmp+0x94>
+  407988:	02001021 	move	v0,s0
+  40798c:	8fbf0028 	lw	ra,40(sp)
+  407990:	8fb20020 	lw	s2,32(sp)
+  407994:	8fb1001c 	lw	s1,28(sp)
+  407998:	8fb00018 	lw	s0,24(sp)
+  40799c:	03e00008 	jr	ra
+  4079a0:	27bd0030 	addiu	sp,sp,48
+  4079a4:	92220000 	lbu	v0,0(s1)
+  4079a8:	26520001 	addiu	s2,s2,1
+  4079ac:	1440ffe5 	bnez	v0,407944 <strcasecmp+0x34>
+  4079b0:	26310001 	addiu	s1,s1,1
+  4079b4:	1000fff5 	b	40798c <strcasecmp+0x7c>
+  4079b8:	02001021 	move	v0,s0
+  4079bc:	00000000 	nop
+
+004079c0 <strchr>:
+  4079c0:	3c1c0fc0 	lui	gp,0xfc0
+  4079c4:	279c0890 	addiu	gp,gp,2192
+  4079c8:	0399e021 	addu	gp,gp,t9
+  4079cc:	80860000 	lb	a2,0(a0)
+  4079d0:	00051e00 	sll	v1,a1,0x18
+  4079d4:	00031e03 	sra	v1,v1,0x18
+  4079d8:	00801021 	move	v0,a0
+  4079dc:	10c30003 	beq	a2,v1,4079ec <strchr+0x2c>
+  4079e0:	24840001 	addiu	a0,a0,1
+  4079e4:	14c0fff9 	bnez	a2,4079cc <strchr+0xc>
+  4079e8:	00001021 	move	v0,zero
+  4079ec:	03e00008 	jr	ra
+  4079f0:	00000000 	nop
+	...
+
+00407a00 <strcmp>:
+  407a00:	3c1c0fc0 	lui	gp,0xfc0
+  407a04:	279c0850 	addiu	gp,gp,2128
+  407a08:	0399e021 	addu	gp,gp,t9
+  407a0c:	90830000 	lbu	v1,0(a0)
+  407a10:	90a20000 	lbu	v0,0(a1)
+  407a14:	24840001 	addiu	a0,a0,1
+  407a18:	00621023 	subu	v0,v1,v0
+  407a1c:	14400003 	bnez	v0,407a2c <strcmp+0x2c>
+  407a20:	24a50001 	addiu	a1,a1,1
+  407a24:	1460fff9 	bnez	v1,407a0c <strcmp+0xc>
+  407a28:	00000000 	nop
+  407a2c:	03e00008 	jr	ra
+  407a30:	00000000 	nop
+	...
+
+00407a40 <strcpy>:
+  407a40:	3c1c0fc0 	lui	gp,0xfc0
+  407a44:	279c0810 	addiu	gp,gp,2064
+  407a48:	0399e021 	addu	gp,gp,t9
+  407a4c:	00803021 	move	a2,a0
+  407a50:	90a20000 	lbu	v0,0(a1)
+  407a54:	24a50001 	addiu	a1,a1,1
+  407a58:	00021e00 	sll	v1,v0,0x18
+  407a5c:	a0c20000 	sb	v0,0(a2)
+  407a60:	1460fffb 	bnez	v1,407a50 <strcpy+0x10>
+  407a64:	24c60001 	addiu	a2,a2,1
+  407a68:	03e00008 	jr	ra
+  407a6c:	00801021 	move	v0,a0
+
+00407a70 <strlen>:
+  407a70:	3c1c0fc0 	lui	gp,0xfc0
+  407a74:	279c07e0 	addiu	gp,gp,2016
+  407a78:	0399e021 	addu	gp,gp,t9
+  407a7c:	80820000 	lb	v0,0(a0)
+  407a80:	00000000 	nop
+  407a84:	10400006 	beqz	v0,407aa0 <strlen+0x30>
+  407a88:	00801821 	move	v1,a0
+  407a8c:	24630001 	addiu	v1,v1,1
+  407a90:	80620000 	lb	v0,0(v1)
+  407a94:	00000000 	nop
+  407a98:	1440fffc 	bnez	v0,407a8c <strlen+0x1c>
+  407a9c:	00000000 	nop
+  407aa0:	03e00008 	jr	ra
+  407aa4:	00641023 	subu	v0,v1,a0
+	...
+
+00407ab0 <strncasecmp>:
+  407ab0:	3c1c0fc0 	lui	gp,0xfc0
+  407ab4:	279c07a0 	addiu	gp,gp,1952
+  407ab8:	0399e021 	addu	gp,gp,t9
+  407abc:	27bdffd0 	addiu	sp,sp,-48
+  407ac0:	afbc0010 	sw	gp,16(sp)
+  407ac4:	afb30024 	sw	s3,36(sp)
+  407ac8:	afb20020 	sw	s2,32(sp)
+  407acc:	afb1001c 	sw	s1,28(sp)
+  407ad0:	afb00018 	sw	s0,24(sp)
+  407ad4:	afbf002c 	sw	ra,44(sp)
+  407ad8:	afbc0028 	sw	gp,40(sp)
+  407adc:	00808821 	move	s1,a0
+  407ae0:	00a09021 	move	s2,a1
+  407ae4:	00c09821 	move	s3,a2
+  407ae8:	00008021 	move	s0,zero
+  407aec:	12600013 	beqz	s3,407b3c <strncasecmp+0x8c>
+  407af0:	02001021 	move	v0,s0
+  407af4:	12320018 	beq	s1,s2,407b58 <strncasecmp+0xa8>
+  407af8:	2673ffff 	addiu	s3,s3,-1
+  407afc:	92240000 	lbu	a0,0(s1)
+  407b00:	8f998238 	lw	t9,-32200(gp)
+  407b04:	00000000 	nop
+  407b08:	0320f809 	jalr	t9
+  407b0c:	00000000 	nop
+  407b10:	8fbc0010 	lw	gp,16(sp)
+  407b14:	92440000 	lbu	a0,0(s2)
+  407b18:	00408021 	move	s0,v0
+  407b1c:	8f998238 	lw	t9,-32200(gp)
+  407b20:	00000000 	nop
+  407b24:	0320f809 	jalr	t9
+  407b28:	00000000 	nop
+  407b2c:	8fbc0010 	lw	gp,16(sp)
+  407b30:	02028023 	subu	s0,s0,v0
+  407b34:	12000008 	beqz	s0,407b58 <strncasecmp+0xa8>
+  407b38:	02001021 	move	v0,s0
+  407b3c:	8fbf002c 	lw	ra,44(sp)
+  407b40:	8fb30024 	lw	s3,36(sp)
+  407b44:	8fb20020 	lw	s2,32(sp)
+  407b48:	8fb1001c 	lw	s1,28(sp)
+  407b4c:	8fb00018 	lw	s0,24(sp)
+  407b50:	03e00008 	jr	ra
+  407b54:	27bd0030 	addiu	sp,sp,48
+  407b58:	92220000 	lbu	v0,0(s1)
+  407b5c:	26520001 	addiu	s2,s2,1
+  407b60:	1440ffe2 	bnez	v0,407aec <strncasecmp+0x3c>
+  407b64:	26310001 	addiu	s1,s1,1
+  407b68:	1000fff4 	b	407b3c <strncasecmp+0x8c>
+  407b6c:	02001021 	move	v0,s0
+
+00407b70 <strncmp>:
+  407b70:	3c1c0fc0 	lui	gp,0xfc0
+  407b74:	279c06e0 	addiu	gp,gp,1760
+  407b78:	0399e021 	addu	gp,gp,t9
+  407b7c:	00001821 	move	v1,zero
+  407b80:	24c6ffff 	addiu	a2,a2,-1
+  407b84:	2402ffff 	li	v0,-1
+  407b88:	10c20007 	beq	a2,v0,407ba8 <strncmp+0x38>
+  407b8c:	00000000 	nop
+  407b90:	90870000 	lbu	a3,0(a0)
+  407b94:	90a20000 	lbu	v0,0(a1)
+  407b98:	24840001 	addiu	a0,a0,1
+  407b9c:	00e21823 	subu	v1,a3,v0
+  407ba0:	10600003 	beqz	v1,407bb0 <strncmp+0x40>
+  407ba4:	24a50001 	addiu	a1,a1,1
+  407ba8:	03e00008 	jr	ra
+  407bac:	00601021 	move	v0,v1
+  407bb0:	14e0fff3 	bnez	a3,407b80 <strncmp+0x10>
+  407bb4:	00000000 	nop
+  407bb8:	1000fffb 	b	407ba8 <strncmp+0x38>
+  407bbc:	00000000 	nop
+
+00407bc0 <strncpy>:
+  407bc0:	3c1c0fc0 	lui	gp,0xfc0
+  407bc4:	279c0690 	addiu	gp,gp,1680
+  407bc8:	0399e021 	addu	gp,gp,t9
+  407bcc:	10c0000a 	beqz	a2,407bf8 <strncpy+0x38>
+  407bd0:	00803821 	move	a3,a0
+  407bd4:	90a20000 	lbu	v0,0(a1)
+  407bd8:	24c6ffff 	addiu	a2,a2,-1
+  407bdc:	00021e00 	sll	v1,v0,0x18
+  407be0:	a0e20000 	sb	v0,0(a3)
+  407be4:	10600002 	beqz	v1,407bf0 <strncpy+0x30>
+  407be8:	24e70001 	addiu	a3,a3,1
+  407bec:	24a50001 	addiu	a1,a1,1
+  407bf0:	14c0fff8 	bnez	a2,407bd4 <strncpy+0x14>
+  407bf4:	00000000 	nop
+  407bf8:	03e00008 	jr	ra
+  407bfc:	00801021 	move	v0,a0
+
+00407c00 <strrchr>:
+  407c00:	3c1c0fc0 	lui	gp,0xfc0
+  407c04:	279c0650 	addiu	gp,gp,1616
+  407c08:	0399e021 	addu	gp,gp,t9
+  407c0c:	00003021 	move	a2,zero
+  407c10:	00051600 	sll	v0,a1,0x18
+  407c14:	80830000 	lb	v1,0(a0)
+  407c18:	00021603 	sra	v0,v0,0x18
+  407c1c:	10620005 	beq	v1,v0,407c34 <strrchr+0x34>
+  407c20:	00000000 	nop
+  407c24:	1460fffa 	bnez	v1,407c10 <strrchr+0x10>
+  407c28:	24840001 	addiu	a0,a0,1
+  407c2c:	03e00008 	jr	ra
+  407c30:	00c01021 	move	v0,a2
+  407c34:	1000fffb 	b	407c24 <strrchr+0x24>
+  407c38:	00803021 	move	a2,a0
+  407c3c:	00000000 	nop
+
+00407c40 <strtok>:
+  407c40:	3c1c0fc0 	lui	gp,0xfc0
+  407c44:	279c0610 	addiu	gp,gp,1552
+  407c48:	0399e021 	addu	gp,gp,t9
+  407c4c:	27bdffe0 	addiu	sp,sp,-32
+  407c50:	afbc0010 	sw	gp,16(sp)
+  407c54:	8f86801c 	lw	a2,-32740(gp)
+  407c58:	00000000 	nop
+  407c5c:	24c60750 	addiu	a2,a2,1872
+  407c60:	afbf001c 	sw	ra,28(sp)
+  407c64:	afbc0018 	sw	gp,24(sp)
+  407c68:	8f9982b4 	lw	t9,-32076(gp)
+  407c6c:	00000000 	nop
+  407c70:	0320f809 	jalr	t9
+  407c74:	00000000 	nop
+  407c78:	8fbc0010 	lw	gp,16(sp)
+  407c7c:	8fbf001c 	lw	ra,28(sp)
+  407c80:	00000000 	nop
+  407c84:	03e00008 	jr	ra
+  407c88:	27bd0020 	addiu	sp,sp,32
+  407c8c:	00000000 	nop
+
+00407c90 <strtok_r>:
+  407c90:	3c1c0fc0 	lui	gp,0xfc0
+  407c94:	279c05c0 	addiu	gp,gp,1472
+  407c98:	0399e021 	addu	gp,gp,t9
+  407c9c:	27bdffd0 	addiu	sp,sp,-48
+  407ca0:	afbc0010 	sw	gp,16(sp)
+  407ca4:	afb00018 	sw	s0,24(sp)
+  407ca8:	00808021 	move	s0,a0
+  407cac:	afb20020 	sw	s2,32(sp)
+  407cb0:	afb1001c 	sw	s1,28(sp)
+  407cb4:	afbf0028 	sw	ra,40(sp)
+  407cb8:	afbc0024 	sw	gp,36(sp)
+  407cbc:	00c09021 	move	s2,a2
+  407cc0:	12000020 	beqz	s0,407d44 <strtok_r+0xb4>
+  407cc4:	00a08821 	move	s1,a1
+  407cc8:	02002021 	move	a0,s0
+  407ccc:	8f99806c 	lw	t9,-32660(gp)
+  407cd0:	00000000 	nop
+  407cd4:	0320f809 	jalr	t9
+  407cd8:	00000000 	nop
+  407cdc:	8fbc0010 	lw	gp,16(sp)
+  407ce0:	02028021 	addu	s0,s0,v0
+  407ce4:	82020000 	lb	v0,0(s0)
+  407ce8:	02202821 	move	a1,s1
+  407cec:	10400012 	beqz	v0,407d38 <strtok_r+0xa8>
+  407cf0:	02002021 	move	a0,s0
+  407cf4:	8f998038 	lw	t9,-32712(gp)
+  407cf8:	00000000 	nop
+  407cfc:	0320f809 	jalr	t9
+  407d00:	00000000 	nop
+  407d04:	8fbc0010 	lw	gp,16(sp)
+  407d08:	10400003 	beqz	v0,407d18 <strtok_r+0x88>
+  407d0c:	00000000 	nop
+  407d10:	a0400000 	sb	zero,0(v0)
+  407d14:	24420001 	addiu	v0,v0,1
+  407d18:	ae420000 	sw	v0,0(s2)
+  407d1c:	02001021 	move	v0,s0
+  407d20:	8fbf0028 	lw	ra,40(sp)
+  407d24:	8fb20020 	lw	s2,32(sp)
+  407d28:	8fb1001c 	lw	s1,28(sp)
+  407d2c:	8fb00018 	lw	s0,24(sp)
+  407d30:	03e00008 	jr	ra
+  407d34:	27bd0030 	addiu	sp,sp,48
+  407d38:	00008021 	move	s0,zero
+  407d3c:	1000fff6 	b	407d18 <strtok_r+0x88>
+  407d40:	00001021 	move	v0,zero
+  407d44:	8e500000 	lw	s0,0(s2)
+  407d48:	00000000 	nop
+  407d4c:	1600ffdf 	bnez	s0,407ccc <strtok_r+0x3c>
+  407d50:	02002021 	move	a0,s0
+  407d54:	1000fff2 	b	407d20 <strtok_r+0x90>
+  407d58:	02001021 	move	v0,s0
+  407d5c:	00000000 	nop
+
+00407d60 <strerror>:
+  407d60:	3c1c0fc0 	lui	gp,0xfc0
+  407d64:	279c04f0 	addiu	gp,gp,1264
+  407d68:	0399e021 	addu	gp,gp,t9
+  407d6c:	27bdffd8 	addiu	sp,sp,-40
+  407d70:	afbc0010 	sw	gp,16(sp)
+  407d74:	afb00018 	sw	s0,24(sp)
+  407d78:	8f90801c 	lw	s0,-32740(gp)
+  407d7c:	00000000 	nop
+  407d80:	26100760 	addiu	s0,s0,1888
+  407d84:	00000000 	nop
+  407d88:	02002821 	move	a1,s0
+  407d8c:	24060032 	li	a2,50
+  407d90:	afbf0020 	sw	ra,32(sp)
+  407d94:	afbc001c 	sw	gp,28(sp)
+  407d98:	8f998124 	lw	t9,-32476(gp)
+  407d9c:	00000000 	nop
+  407da0:	0320f809 	jalr	t9
+  407da4:	00000000 	nop
+  407da8:	8fbc0010 	lw	gp,16(sp)
+  407dac:	8fbf0020 	lw	ra,32(sp)
+  407db0:	02001021 	move	v0,s0
+  407db4:	8fb00018 	lw	s0,24(sp)
+  407db8:	03e00008 	jr	ra
+  407dbc:	27bd0028 	addiu	sp,sp,40
+
+00407dc0 <_susv3_strerror_r>:
+  407dc0:	3c1c0fc0 	lui	gp,0xfc0
+  407dc4:	279c0490 	addiu	gp,gp,1168
+  407dc8:	0399e021 	addu	gp,gp,t9
+  407dcc:	27bdff88 	addiu	sp,sp,-120
+  407dd0:	afbc0018 	sw	gp,24(sp)
+  407dd4:	afb40068 	sw	s4,104(sp)
+  407dd8:	afb30064 	sw	s3,100(sp)
+  407ddc:	afb20060 	sw	s2,96(sp)
+  407de0:	afb00058 	sw	s0,88(sp)
+  407de4:	afbf0070 	sw	ra,112(sp)
+  407de8:	afbc006c 	sw	gp,108(sp)
+  407dec:	afb1005c 	sw	s1,92(sp)
+  407df0:	00a0a021 	move	s4,a1
+  407df4:	00c09021 	move	s2,a2
+  407df8:	24130016 	li	s3,22
+  407dfc:	00008021 	move	s0,zero
+  407e00:	8f828018 	lw	v0,-32744(gp)
+  407e04:	00000000 	nop
+  407e08:	244205e0 	addiu	v0,v0,1504
+  407e0c:	00501021 	addu	v0,v0,s0
+  407e10:	90420000 	lbu	v0,0(v0)
+  407e14:	00000000 	nop
+  407e18:	10440009 	beq	v0,a0,407e40 <_susv3_strerror_r+0x80>
+  407e1c:	2e02007e 	sltiu	v0,s0,126
+  407e20:	26100001 	addiu	s0,s0,1
+  407e24:	2e02007e 	sltiu	v0,s0,126
+  407e28:	1440fff5 	bnez	v0,407e00 <_susv3_strerror_r+0x40>
+  407e2c:	2402046d 	li	v0,1133
+  407e30:	3c107fff 	lui	s0,0x7fff
+  407e34:	10820057 	beq	a0,v0,407f94 <_susv3_strerror_r+0x1d4>
+  407e38:	3610ffff 	ori	s0,s0,0xffff
+  407e3c:	2e02007e 	sltiu	v0,s0,126
+  407e40:	1040003b 	beqz	v0,407f30 <_susv3_strerror_r+0x170>
+  407e44:	000437c3 	sra	a2,a0,0x1f
+  407e48:	8f918200 	lw	s1,-32256(gp)
+  407e4c:	12000007 	beqz	s0,407e6c <_susv3_strerror_r+0xac>
+  407e50:	00000000 	nop
+  407e54:	82220000 	lb	v0,0(s1)
+  407e58:	00000000 	nop
+  407e5c:	1040004b 	beqz	v0,407f8c <_susv3_strerror_r+0x1cc>
+  407e60:	26310001 	addiu	s1,s1,1
+  407e64:	1600fffb 	bnez	s0,407e54 <_susv3_strerror_r+0x94>
+  407e68:	00000000 	nop
+  407e6c:	82220000 	lb	v0,0(s1)
+  407e70:	00000000 	nop
+  407e74:	1040002e 	beqz	v0,407f30 <_susv3_strerror_r+0x170>
+  407e78:	000437c3 	sra	a2,a0,0x1f
+  407e7c:	00009821 	move	s3,zero
+  407e80:	12800029 	beqz	s4,407f28 <_susv3_strerror_r+0x168>
+  407e84:	00000000 	nop
+  407e88:	02202021 	move	a0,s1
+  407e8c:	8f998068 	lw	t9,-32664(gp)
+  407e90:	00000000 	nop
+  407e94:	0320f809 	jalr	t9
+  407e98:	00000000 	nop
+  407e9c:	8fbc0018 	lw	gp,24(sp)
+  407ea0:	24500001 	addiu	s0,v0,1
+  407ea4:	0250102b 	sltu	v0,s2,s0
+  407ea8:	10400003 	beqz	v0,407eb8 <_susv3_strerror_r+0xf8>
+  407eac:	00000000 	nop
+  407eb0:	02408021 	move	s0,s2
+  407eb4:	24130022 	li	s3,34
+  407eb8:	1200000a 	beqz	s0,407ee4 <_susv3_strerror_r+0x124>
+  407ebc:	02202821 	move	a1,s1
+  407ec0:	02802021 	move	a0,s4
+  407ec4:	02003021 	move	a2,s0
+  407ec8:	8f998254 	lw	t9,-32172(gp)
+  407ecc:	00000000 	nop
+  407ed0:	0320f809 	jalr	t9
+  407ed4:	00000000 	nop
+  407ed8:	8fbc0018 	lw	gp,24(sp)
+  407edc:	02901021 	addu	v0,s4,s0
+  407ee0:	a040ffff 	sb	zero,-1(v0)
+  407ee4:	12600008 	beqz	s3,407f08 <_susv3_strerror_r+0x148>
+  407ee8:	02601021 	move	v0,s3
+  407eec:	8f9980a0 	lw	t9,-32608(gp)
+  407ef0:	00000000 	nop
+  407ef4:	0320f809 	jalr	t9
+  407ef8:	00000000 	nop
+  407efc:	8fbc0018 	lw	gp,24(sp)
+  407f00:	ac530000 	sw	s3,0(v0)
+  407f04:	02601021 	move	v0,s3
+  407f08:	8fbf0070 	lw	ra,112(sp)
+  407f0c:	8fb40068 	lw	s4,104(sp)
+  407f10:	8fb30064 	lw	s3,100(sp)
+  407f14:	8fb20060 	lw	s2,96(sp)
+  407f18:	8fb1005c 	lw	s1,92(sp)
+  407f1c:	8fb00058 	lw	s0,88(sp)
+  407f20:	03e00008 	jr	ra
+  407f24:	27bd0078 	addiu	sp,sp,120
+  407f28:	1000ffd7 	b	407e88 <_susv3_strerror_r+0xc8>
+  407f2c:	00009021 	move	s2,zero
+  407f30:	00803821 	move	a3,a0
+  407f34:	2402fff6 	li	v0,-10
+  407f38:	27a40051 	addiu	a0,sp,81
+  407f3c:	afa20010 	sw	v0,16(sp)
+  407f40:	afa00014 	sw	zero,20(sp)
+  407f44:	8f998278 	lw	t9,-32136(gp)
+  407f48:	00000000 	nop
+  407f4c:	0320f809 	jalr	t9
+  407f50:	00000000 	nop
+  407f54:	8fbc0018 	lw	gp,24(sp)
+  407f58:	2451fff2 	addiu	s1,v0,-14
+  407f5c:	8f858018 	lw	a1,-32744(gp)
+  407f60:	00000000 	nop
+  407f64:	24a50660 	addiu	a1,a1,1632
+  407f68:	02202021 	move	a0,s1
+  407f6c:	2406000e 	li	a2,14
+  407f70:	8f998254 	lw	t9,-32172(gp)
+  407f74:	00000000 	nop
+  407f78:	0320f809 	jalr	t9
+  407f7c:	00000000 	nop
+  407f80:	8fbc0018 	lw	gp,24(sp)
+  407f84:	1000ffbe 	b	407e80 <_susv3_strerror_r+0xc0>
+  407f88:	00000000 	nop
+  407f8c:	1000ffb5 	b	407e64 <_susv3_strerror_r+0xa4>
+  407f90:	2610ffff 	addiu	s0,s0,-1
+  407f94:	1000ffa9 	b	407e3c <_susv3_strerror_r+0x7c>
+  407f98:	2410007a 	li	s0,122
+  407f9c:	00000000 	nop
+
+00407fa0 <isatty>:
+  407fa0:	3c1c0fc0 	lui	gp,0xfc0
+  407fa4:	279c02b0 	addiu	gp,gp,688
+  407fa8:	0399e021 	addu	gp,gp,t9
+  407fac:	27bdffa8 	addiu	sp,sp,-88
+  407fb0:	afbc0010 	sw	gp,16(sp)
+  407fb4:	27a50018 	addiu	a1,sp,24
+  407fb8:	afbf0054 	sw	ra,84(sp)
+  407fbc:	afbc0050 	sw	gp,80(sp)
+  407fc0:	8f998130 	lw	t9,-32464(gp)
+  407fc4:	00000000 	nop
+  407fc8:	0320f809 	jalr	t9
+  407fcc:	00000000 	nop
+  407fd0:	8fbc0010 	lw	gp,16(sp)
+  407fd4:	8fbf0054 	lw	ra,84(sp)
+  407fd8:	2c420001 	sltiu	v0,v0,1
+  407fdc:	03e00008 	jr	ra
+  407fe0:	27bd0058 	addiu	sp,sp,88
+	...
+
+00407ff0 <tcgetattr>:
+  407ff0:	3c1c0fc0 	lui	gp,0xfc0
+  407ff4:	279c0260 	addiu	gp,gp,608
+  407ff8:	0399e021 	addu	gp,gp,t9
+  407ffc:	27bdffb0 	addiu	sp,sp,-80
+  408000:	afbc0010 	sw	gp,16(sp)
+  408004:	afb00040 	sw	s0,64(sp)
+  408008:	27a60018 	addiu	a2,sp,24
+  40800c:	00a08021 	move	s0,a1
+  408010:	2405540d 	li	a1,21517
+  408014:	afb10044 	sw	s1,68(sp)
+  408018:	afbf004c 	sw	ra,76(sp)
+  40801c:	afbc0048 	sw	gp,72(sp)
+  408020:	8f9982b8 	lw	t9,-32072(gp)
+  408024:	00000000 	nop
+  408028:	0320f809 	jalr	t9
+  40802c:	00000000 	nop
+  408030:	8fbc0010 	lw	gp,16(sp)
+  408034:	8fa50020 	lw	a1,32(sp)
+  408038:	8fa60024 	lw	a2,36(sp)
+  40803c:	8fa3001c 	lw	v1,28(sp)
+  408040:	93a70028 	lbu	a3,40(sp)
+  408044:	00408821 	move	s1,v0
+  408048:	8fa20018 	lw	v0,24(sp)
+  40804c:	26040011 	addiu	a0,s0,17
+  408050:	ae030004 	sw	v1,4(s0)
+  408054:	ae050008 	sw	a1,8(s0)
+  408058:	ae06000c 	sw	a2,12(s0)
+  40805c:	27a50029 	addiu	a1,sp,41
+  408060:	a2070010 	sb	a3,16(s0)
+  408064:	ae020000 	sw	v0,0(s0)
+  408068:	24060017 	li	a2,23
+  40806c:	8f998208 	lw	t9,-32248(gp)
+  408070:	00000000 	nop
+  408074:	0320f809 	jalr	t9
+  408078:	00000000 	nop
+  40807c:	8fbc0010 	lw	gp,16(sp)
+  408080:	00402021 	move	a0,v0
+  408084:	00002821 	move	a1,zero
+  408088:	24060009 	li	a2,9
+  40808c:	8f99813c 	lw	t9,-32452(gp)
+  408090:	00000000 	nop
+  408094:	0320f809 	jalr	t9
+  408098:	00000000 	nop
+  40809c:	8fbc0010 	lw	gp,16(sp)
+  4080a0:	02201021 	move	v0,s1
+  4080a4:	8fbf004c 	lw	ra,76(sp)
+  4080a8:	8fb10044 	lw	s1,68(sp)
+  4080ac:	8fb00040 	lw	s0,64(sp)
+  4080b0:	03e00008 	jr	ra
+  4080b4:	27bd0050 	addiu	sp,sp,80
+	...
+
+004080c0 <gethostbyname>:
+  4080c0:	3c1c0fc0 	lui	gp,0xfc0
+  4080c4:	279c0190 	addiu	gp,gp,400
+  4080c8:	0399e021 	addu	gp,gp,t9
+  4080cc:	27bdffc8 	addiu	sp,sp,-56
+  4080d0:	afbc0018 	sw	gp,24(sp)
+  4080d4:	afbf0030 	sw	ra,48(sp)
+  4080d8:	afb00028 	sw	s0,40(sp)
+  4080dc:	afbc002c 	sw	gp,44(sp)
+  4080e0:	00808021 	move	s0,a0
+  4080e4:	8f998110 	lw	t9,-32496(gp)
+  4080e8:	00000000 	nop
+  4080ec:	0320f809 	jalr	t9
+  4080f0:	00000000 	nop
+  4080f4:	8fbc0018 	lw	gp,24(sp)
+  4080f8:	27a30020 	addiu	v1,sp,32
+  4080fc:	02002021 	move	a0,s0
+  408100:	8f85801c 	lw	a1,-32740(gp)
+  408104:	00000000 	nop
+  408108:	24a507a0 	addiu	a1,a1,1952
+  40810c:	8f86801c 	lw	a2,-32740(gp)
+  408110:	00000000 	nop
+  408114:	24c607b4 	addiu	a2,a2,1972
+  408118:	2407014c 	li	a3,332
+  40811c:	afa30010 	sw	v1,16(sp)
+  408120:	afa20014 	sw	v0,20(sp)
+  408124:	8f99821c 	lw	t9,-32228(gp)
+  408128:	00000000 	nop
+  40812c:	0320f809 	jalr	t9
+  408130:	00000000 	nop
+  408134:	8fbc0018 	lw	gp,24(sp)
+  408138:	8fa20020 	lw	v0,32(sp)
+  40813c:	8fbf0030 	lw	ra,48(sp)
+  408140:	8fb00028 	lw	s0,40(sp)
+  408144:	03e00008 	jr	ra
+  408148:	27bd0038 	addiu	sp,sp,56
+  40814c:	00000000 	nop
+
+00408150 <gethostbyname_r>:
+  408150:	3c1c0fc0 	lui	gp,0xfc0
+  408154:	279c0100 	addiu	gp,gp,256
+  408158:	0399e021 	addu	gp,gp,t9
+  40815c:	27bdff80 	addiu	sp,sp,-128
+  408160:	afbc0020 	sw	gp,32(sp)
+  408164:	afbe0074 	sw	s8,116(sp)
+  408168:	afb7006c 	sw	s7,108(sp)
+  40816c:	afb60068 	sw	s6,104(sp)
+  408170:	afb40060 	sw	s4,96(sp)
+  408174:	afb20058 	sw	s2,88(sp)
+  408178:	afb10054 	sw	s1,84(sp)
+  40817c:	afbf0078 	sw	ra,120(sp)
+  408180:	afbc0070 	sw	gp,112(sp)
+  408184:	afb50064 	sw	s5,100(sp)
+  408188:	afb3005c 	sw	s3,92(sp)
+  40818c:	afb00050 	sw	s0,80(sp)
+  408190:	0080b821 	move	s7,a0
+  408194:	00a0a021 	move	s4,a1
+  408198:	00c09021 	move	s2,a2
+  40819c:	00e08821 	move	s1,a3
+  4081a0:	8fb60094 	lw	s6,148(sp)
+  4081a4:	8f9982bc 	lw	t9,-32068(gp)
+  4081a8:	00000000 	nop
+  4081ac:	0320f809 	jalr	t9
+  4081b0:	00000000 	nop
+  4081b4:	8fbc0020 	lw	gp,32(sp)
+  4081b8:	8fa20090 	lw	v0,144(sp)
+  4081bc:	0000f021 	move	s8,zero
+  4081c0:	ac400000 	sw	zero,0(v0)
+  4081c4:	12e0001c 	beqz	s7,408238 <gethostbyname_r+0xe8>
+  4081c8:	24020016 	li	v0,22
+  4081cc:	8fa30090 	lw	v1,144(sp)
+  4081d0:	02e02021 	move	a0,s7
+  4081d4:	24050002 	li	a1,2
+  4081d8:	02803021 	move	a2,s4
+  4081dc:	02403821 	move	a3,s2
+  4081e0:	afb10010 	sw	s1,16(sp)
+  4081e4:	afa30014 	sw	v1,20(sp)
+  4081e8:	afb60018 	sw	s6,24(sp)
+  4081ec:	8f99812c 	lw	t9,-32468(gp)
+  4081f0:	00000000 	nop
+  4081f4:	0320f809 	jalr	t9
+  4081f8:	00000000 	nop
+  4081fc:	8fbc0020 	lw	gp,32(sp)
+  408200:	00408021 	move	s0,v0
+  408204:	1200000c 	beqz	s0,408238 <gethostbyname_r+0xe8>
+  408208:	00000000 	nop
+  40820c:	8ec30000 	lw	v1,0(s6)
+  408210:	24020001 	li	v0,1
+  408214:	1062001e 	beq	v1,v0,408290 <gethostbyname_r+0x140>
+  408218:	2402ffff 	li	v0,-1
+  40821c:	28620002 	slti	v0,v1,2
+  408220:	104000b8 	beqz	v0,408504 <gethostbyname_r+0x3b4>
+  408224:	24020004 	li	v0,4
+  408228:	2402ffff 	li	v0,-1
+  40822c:	1062000e 	beq	v1,v0,408268 <gethostbyname_r+0x118>
+  408230:	00000000 	nop
+  408234:	02001021 	move	v0,s0
+  408238:	8fbf0078 	lw	ra,120(sp)
+  40823c:	8fbe0074 	lw	s8,116(sp)
+  408240:	8fb7006c 	lw	s7,108(sp)
+  408244:	8fb60068 	lw	s6,104(sp)
+  408248:	8fb50064 	lw	s5,100(sp)
+  40824c:	8fb40060 	lw	s4,96(sp)
+  408250:	8fb3005c 	lw	s3,92(sp)
+  408254:	8fb20058 	lw	s2,88(sp)
+  408258:	8fb10054 	lw	s1,84(sp)
+  40825c:	8fb00050 	lw	s0,80(sp)
+  408260:	03e00008 	jr	ra
+  408264:	27bd0080 	addiu	sp,sp,128
+  408268:	8f9980a0 	lw	t9,-32608(gp)
+  40826c:	00000000 	nop
+  408270:	0320f809 	jalr	t9
+  408274:	00000000 	nop
+  408278:	8fbc0020 	lw	gp,32(sp)
+  40827c:	8c430000 	lw	v1,0(v0)
+  408280:	24020002 	li	v0,2
+  408284:	1462ffeb 	bne	v1,v0,408234 <gethostbyname_r+0xe4>
+  408288:	00000000 	nop
+  40828c:	2402ffff 	li	v0,-1
+  408290:	2e230004 	sltiu	v1,s1,4
+  408294:	aec20000 	sw	v0,0(s6)
+  408298:	1460ffe7 	bnez	v1,408238 <gethostbyname_r+0xe8>
+  40829c:	24020022 	li	v0,34
+  4082a0:	2631fffc 	addiu	s1,s1,-4
+  4082a4:	2e230008 	sltiu	v1,s1,8
+  4082a8:	0240a821 	move	s5,s2
+  4082ac:	1460ffe2 	bnez	v1,408238 <gethostbyname_r+0xe8>
+  4082b0:	26520004 	addiu	s2,s2,4
+  4082b4:	2631fff8 	addiu	s1,s1,-8
+  4082b8:	02409821 	move	s3,s2
+  4082bc:	2e230100 	sltiu	v1,s1,256
+  4082c0:	ae750000 	sw	s5,0(s3)
+  4082c4:	ae600004 	sw	zero,4(s3)
+  4082c8:	1460ffdb 	bnez	v1,408238 <gethostbyname_r+0xe8>
+  4082cc:	26720008 	addiu	s2,s3,8
+  4082d0:	02402021 	move	a0,s2
+  4082d4:	02e02821 	move	a1,s7
+  4082d8:	02203021 	move	a2,s1
+  4082dc:	8f998188 	lw	t9,-32376(gp)
+  4082e0:	00000000 	nop
+  4082e4:	0320f809 	jalr	t9
+  4082e8:	00000000 	nop
+  4082ec:	8fbc0020 	lw	gp,32(sp)
+  4082f0:	02e02021 	move	a0,s7
+  4082f4:	02a02821 	move	a1,s5
+  4082f8:	8f998148 	lw	t9,-32440(gp)
+  4082fc:	00000000 	nop
+  408300:	0320f809 	jalr	t9
+  408304:	00000000 	nop
+  408308:	8fbc0020 	lw	gp,32(sp)
+  40830c:	1040000b 	beqz	v0,40833c <gethostbyname_r+0x1ec>
+  408310:	24030002 	li	v1,2
+  408314:	ae830008 	sw	v1,8(s4)
+  408318:	24030004 	li	v1,4
+  40831c:	ae920000 	sw	s2,0(s4)
+  408320:	ae83000c 	sw	v1,12(s4)
+  408324:	ae930010 	sw	s3,16(s4)
+  408328:	8fa30090 	lw	v1,144(sp)
+  40832c:	00001021 	move	v0,zero
+  408330:	ac740000 	sw	s4,0(v1)
+  408334:	1000ffc0 	b	408238 <gethostbyname_r+0xe8>
+  408338:	aec00000 	sw	zero,0(s6)
+  40833c:	8f9081c0 	lw	s0,-32320(gp)
+  408340:	00000000 	nop
+  408344:	02002021 	move	a0,s0
+  408348:	8f9980a8 	lw	t9,-32600(gp)
+  40834c:	00000000 	nop
+  408350:	0320f809 	jalr	t9
+  408354:	00000000 	nop
+  408358:	8fbc0020 	lw	gp,32(sp)
+  40835c:	02002021 	move	a0,s0
+  408360:	8f9080d4 	lw	s0,-32556(gp)
+  408364:	00000000 	nop
+  408368:	8e100000 	lw	s0,0(s0)
+  40836c:	8f99811c 	lw	t9,-32484(gp)
+  408370:	00000000 	nop
+  408374:	0320f809 	jalr	t9
+  408378:	00000000 	nop
+  40837c:	8fbc0020 	lw	gp,32(sp)
+  408380:	27a20048 	addiu	v0,sp,72
+  408384:	02003021 	move	a2,s0
+  408388:	02402021 	move	a0,s2
+  40838c:	afa20010 	sw	v0,16(sp)
+  408390:	8f878114 	lw	a3,-32492(gp)
+  408394:	27a20028 	addiu	v0,sp,40
+  408398:	24050001 	li	a1,1
+  40839c:	afa20014 	sw	v0,20(sp)
+  4083a0:	8f998224 	lw	t9,-32220(gp)
+  4083a4:	00000000 	nop
+  4083a8:	0320f809 	jalr	t9
+  4083ac:	00000000 	nop
+  4083b0:	8fbc0020 	lw	gp,32(sp)
+  4083b4:	00408021 	move	s0,v0
+  4083b8:	27de0001 	addiu	s8,s8,1
+  4083bc:	02203021 	move	a2,s1
+  4083c0:	0600004c 	bltz	s0,4084f4 <gethostbyname_r+0x3a4>
+  4083c4:	02402021 	move	a0,s2
+  4083c8:	8fa50028 	lw	a1,40(sp)
+  4083cc:	8f998188 	lw	t9,-32376(gp)
+  4083d0:	00000000 	nop
+  4083d4:	0320f809 	jalr	t9
+  4083d8:	00000000 	nop
+  4083dc:	8fbc0020 	lw	gp,32(sp)
+  4083e0:	8fa40028 	lw	a0,40(sp)
+  4083e4:	8f998030 	lw	t9,-32720(gp)
+  4083e8:	00000000 	nop
+  4083ec:	0320f809 	jalr	t9
+  4083f0:	00000000 	nop
+  4083f4:	8fbc0020 	lw	gp,32(sp)
+  4083f8:	8fa3002c 	lw	v1,44(sp)
+  4083fc:	24020005 	li	v0,5
+  408400:	02403021 	move	a2,s2
+  408404:	10620025 	beq	v1,v0,40849c <gethostbyname_r+0x34c>
+  408408:	02203821 	move	a3,s1
+  40840c:	24100001 	li	s0,1
+  408410:	1070000a 	beq	v1,s0,40843c <gethostbyname_r+0x2ec>
+  408414:	02a02021 	move	a0,s5
+  408418:	8fa40048 	lw	a0,72(sp)
+  40841c:	8f998030 	lw	t9,-32720(gp)
+  408420:	00000000 	nop
+  408424:	0320f809 	jalr	t9
+  408428:	00000000 	nop
+  40842c:	8fbc0020 	lw	gp,32(sp)
+  408430:	24020002 	li	v0,2
+  408434:	1000ff80 	b	408238 <gethostbyname_r+0xe8>
+  408438:	aed00000 	sw	s0,0(s6)
+  40843c:	8fa5003c 	lw	a1,60(sp)
+  408440:	24060004 	li	a2,4
+  408444:	8f998254 	lw	t9,-32172(gp)
+  408448:	00000000 	nop
+  40844c:	0320f809 	jalr	t9
+  408450:	00000000 	nop
+  408454:	8fbc0020 	lw	gp,32(sp)
+  408458:	24020002 	li	v0,2
+  40845c:	8fa40048 	lw	a0,72(sp)
+  408460:	ae820008 	sw	v0,8(s4)
+  408464:	24020004 	li	v0,4
+  408468:	ae920000 	sw	s2,0(s4)
+  40846c:	ae82000c 	sw	v0,12(s4)
+  408470:	ae930010 	sw	s3,16(s4)
+  408474:	8f998030 	lw	t9,-32720(gp)
+  408478:	00000000 	nop
+  40847c:	0320f809 	jalr	t9
+  408480:	00000000 	nop
+  408484:	8fbc0020 	lw	gp,32(sp)
+  408488:	8fa20090 	lw	v0,144(sp)
+  40848c:	00000000 	nop
+  408490:	ac540000 	sw	s4,0(v0)
+  408494:	1000ff68 	b	408238 <gethostbyname_r+0xe8>
+  408498:	00001021 	move	v0,zero
+  40849c:	8fa40048 	lw	a0,72(sp)
+  4084a0:	8fa50040 	lw	a1,64(sp)
+  4084a4:	8f9981a4 	lw	t9,-32348(gp)
+  4084a8:	00000000 	nop
+  4084ac:	0320f809 	jalr	t9
+  4084b0:	00000000 	nop
+  4084b4:	8fbc0020 	lw	gp,32(sp)
+  4084b8:	8fa40048 	lw	a0,72(sp)
+  4084bc:	00408021 	move	s0,v0
+  4084c0:	8f998030 	lw	t9,-32720(gp)
+  4084c4:	00000000 	nop
+  4084c8:	0320f809 	jalr	t9
+  4084cc:	00000000 	nop
+  4084d0:	8fbc0020 	lw	gp,32(sp)
+  4084d4:	06000003 	bltz	s0,4084e4 <gethostbyname_r+0x394>
+  4084d8:	2bc20006 	slti	v0,s8,6
+  4084dc:	1440ff97 	bnez	v0,40833c <gethostbyname_r+0x1ec>
+  4084e0:	00000000 	nop
+  4084e4:	24030003 	li	v1,3
+  4084e8:	2402ffff 	li	v0,-1
+  4084ec:	1000ff52 	b	408238 <gethostbyname_r+0xe8>
+  4084f0:	aec30000 	sw	v1,0(s6)
+  4084f4:	24030001 	li	v1,1
+  4084f8:	24020002 	li	v0,2
+  4084fc:	1000ff4e 	b	408238 <gethostbyname_r+0xe8>
+  408500:	aec30000 	sw	v1,0(s6)
+  408504:	1062ff61 	beq	v1,v0,40828c <gethostbyname_r+0x13c>
+  408508:	00000000 	nop
+  40850c:	1000ff4a 	b	408238 <gethostbyname_r+0xe8>
+  408510:	02001021 	move	v0,s0
+	...
+
+00408520 <socket>:
+  408520:	3c1c0fc0 	lui	gp,0xfc0
+  408524:	279cfd30 	addiu	gp,gp,-720
+  408528:	0399e021 	addu	gp,gp,t9
+  40852c:	27bdffd8 	addiu	sp,sp,-40
+  408530:	afbc0010 	sw	gp,16(sp)
+  408534:	afb1001c 	sw	s1,28(sp)
+  408538:	afb00018 	sw	s0,24(sp)
+  40853c:	afbf0024 	sw	ra,36(sp)
+  408540:	afbc0020 	sw	gp,32(sp)
+  408544:	00808821 	move	s1,a0
+  408548:	00a08021 	move	s0,a1
+  40854c:	00c01821 	move	v1,a2
+  408550:	02202021 	move	a0,s1
+  408554:	02002821 	move	a1,s0
+  408558:	00603021 	move	a2,v1
+  40855c:	24021057 	li	v0,4183
+  408560:	0000000c 	syscall
+  408564:	00408021 	move	s0,v0
+  408568:	00e01821 	move	v1,a3
+  40856c:	10600009 	beqz	v1,408594 <socket+0x74>
+  408570:	02001021 	move	v0,s0
+  408574:	8f9980a0 	lw	t9,-32608(gp)
+  408578:	00000000 	nop
+  40857c:	0320f809 	jalr	t9
+  408580:	00000000 	nop
+  408584:	8fbc0010 	lw	gp,16(sp)
+  408588:	00401821 	move	v1,v0
+  40858c:	ac700000 	sw	s0,0(v1)
+  408590:	2402ffff 	li	v0,-1
+  408594:	8fbf0024 	lw	ra,36(sp)
+  408598:	8fb1001c 	lw	s1,28(sp)
+  40859c:	8fb00018 	lw	s0,24(sp)
+  4085a0:	03e00008 	jr	ra
+  4085a4:	27bd0028 	addiu	sp,sp,40
+	...
+
+004085b0 <getnetbyname>:
+  4085b0:	3c1c0fc0 	lui	gp,0xfc0
+  4085b4:	279cfca0 	addiu	gp,gp,-864
+  4085b8:	0399e021 	addu	gp,gp,t9
+  4085bc:	27bdffd0 	addiu	sp,sp,-48
+  4085c0:	afbc0010 	sw	gp,16(sp)
+  4085c4:	afb20020 	sw	s2,32(sp)
+  4085c8:	00809021 	move	s2,a0
+  4085cc:	8f84827c 	lw	a0,-32132(gp)
+  4085d0:	00000000 	nop
+  4085d4:	8c840000 	lw	a0,0(a0)
+  4085d8:	afbf0028 	sw	ra,40(sp)
+  4085dc:	afbc0024 	sw	gp,36(sp)
+  4085e0:	afb1001c 	sw	s1,28(sp)
+  4085e4:	afb00018 	sw	s0,24(sp)
+  4085e8:	8f998050 	lw	t9,-32688(gp)
+  4085ec:	00000000 	nop
+  4085f0:	0320f809 	jalr	t9
+  4085f4:	00000000 	nop
+  4085f8:	8fbc0010 	lw	gp,16(sp)
+  4085fc:	00000000 	nop
+  408600:	8f998264 	lw	t9,-32156(gp)
+  408604:	00000000 	nop
+  408608:	0320f809 	jalr	t9
+  40860c:	00000000 	nop
+  408610:	8fbc0010 	lw	gp,16(sp)
+  408614:	00408821 	move	s1,v0
+  408618:	1220001e 	beqz	s1,408694 <getnetbyname+0xe4>
+  40861c:	02402821 	move	a1,s2
+  408620:	8e240000 	lw	a0,0(s1)
+  408624:	8f998120 	lw	t9,-32480(gp)
+  408628:	00000000 	nop
+  40862c:	0320f809 	jalr	t9
+  408630:	00000000 	nop
+  408634:	8fbc0010 	lw	gp,16(sp)
+  408638:	10400016 	beqz	v0,408694 <getnetbyname+0xe4>
+  40863c:	00000000 	nop
+  408640:	8e300004 	lw	s0,4(s1)
+  408644:	00000000 	nop
+  408648:	8e020000 	lw	v0,0(s0)
+  40864c:	00000000 	nop
+  408650:	1040ffeb 	beqz	v0,408600 <getnetbyname+0x50>
+  408654:	00000000 	nop
+  408658:	8e040000 	lw	a0,0(s0)
+  40865c:	02402821 	move	a1,s2
+  408660:	8f998120 	lw	t9,-32480(gp)
+  408664:	00000000 	nop
+  408668:	0320f809 	jalr	t9
+  40866c:	00000000 	nop
+  408670:	8fbc0010 	lw	gp,16(sp)
+  408674:	10400007 	beqz	v0,408694 <getnetbyname+0xe4>
+  408678:	26100004 	addiu	s0,s0,4
+  40867c:	8e020000 	lw	v0,0(s0)
+  408680:	00000000 	nop
+  408684:	1440fff4 	bnez	v0,408658 <getnetbyname+0xa8>
+  408688:	00000000 	nop
+  40868c:	1000ffdc 	b	408600 <getnetbyname+0x50>
+  408690:	00000000 	nop
+  408694:	8f82827c 	lw	v0,-32132(gp)
+  408698:	00000000 	nop
+  40869c:	8c420000 	lw	v0,0(v0)
+  4086a0:	00000000 	nop
+  4086a4:	10400008 	beqz	v0,4086c8 <getnetbyname+0x118>
+  4086a8:	00000000 	nop
+  4086ac:	02201021 	move	v0,s1
+  4086b0:	8fbf0028 	lw	ra,40(sp)
+  4086b4:	8fb20020 	lw	s2,32(sp)
+  4086b8:	8fb1001c 	lw	s1,28(sp)
+  4086bc:	8fb00018 	lw	s0,24(sp)
+  4086c0:	03e00008 	jr	ra
+  4086c4:	27bd0030 	addiu	sp,sp,48
+  4086c8:	8f998280 	lw	t9,-32128(gp)
+  4086cc:	00000000 	nop
+  4086d0:	0320f809 	jalr	t9
+  4086d4:	00000000 	nop
+  4086d8:	8fbc0010 	lw	gp,16(sp)
+  4086dc:	1000fff4 	b	4086b0 <getnetbyname+0x100>
+  4086e0:	02201021 	move	v0,s1
+	...
+
+004086f0 <_stdlib_strto_ll>:
+  4086f0:	3c1c0fc0 	lui	gp,0xfc0
+  4086f4:	279cfb60 	addiu	gp,gp,-1184
+  4086f8:	0399e021 	addu	gp,gp,t9
+  4086fc:	27bdffc0 	addiu	sp,sp,-64
+  408700:	afbc0010 	sw	gp,16(sp)
+  408704:	afb30024 	sw	s3,36(sp)
+  408708:	00809821 	move	s3,a0
+  40870c:	afb70034 	sw	s7,52(sp)
+  408710:	afb60030 	sw	s6,48(sp)
+  408714:	afb40028 	sw	s4,40(sp)
+  408718:	afb20020 	sw	s2,32(sp)
+  40871c:	00a0b021 	move	s6,a1
+  408720:	00c09021 	move	s2,a2
+  408724:	00e0b821 	move	s7,a3
+  408728:	0260a021 	move	s4,s3
+  40872c:	afbf003c 	sw	ra,60(sp)
+  408730:	afbc0038 	sw	gp,56(sp)
+  408734:	afb5002c 	sw	s5,44(sp)
+  408738:	afb1001c 	sw	s1,28(sp)
+  40873c:	afb00018 	sw	s0,24(sp)
+  408740:	82640000 	lb	a0,0(s3)
+  408744:	8f998210 	lw	t9,-32240(gp)
+  408748:	00000000 	nop
+  40874c:	0320f809 	jalr	t9
+  408750:	00000000 	nop
+  408754:	8fbc0010 	lw	gp,16(sp)
+  408758:	10400003 	beqz	v0,408768 <_stdlib_strto_ll+0x78>
+  40875c:	2402002b 	li	v0,43
+  408760:	1000fff7 	b	408740 <_stdlib_strto_ll+0x50>
+  408764:	26730001 	addiu	s3,s3,1
+  408768:	82630000 	lb	v1,0(s3)
+  40876c:	00000000 	nop
+  408770:	106200b4 	beq	v1,v0,408a44 <_stdlib_strto_ll+0x354>
+  408774:	0000a821 	move	s5,zero
+  408778:	2402002d 	li	v0,45
+  40877c:	106200b0 	beq	v1,v0,408a40 <_stdlib_strto_ll+0x350>
+  408780:	00000000 	nop
+  408784:	2402ffef 	li	v0,-17
+  408788:	02421024 	and	v0,s2,v0
+  40878c:	10400097 	beqz	v0,4089ec <_stdlib_strto_ll+0x2fc>
+  408790:	24020030 	li	v0,48
+  408794:	2642fffe 	addiu	v0,s2,-2
+  408798:	2c420023 	sltiu	v0,v0,35
+  40879c:	00008021 	move	s0,zero
+  4087a0:	10400022 	beqz	v0,40882c <_stdlib_strto_ll+0x13c>
+  4087a4:	00008821 	move	s1,zero
+  4087a8:	92640000 	lbu	a0,0(s3)
+  4087ac:	00000000 	nop
+  4087b0:	2482ffd0 	addiu	v0,a0,-48
+  4087b4:	00041e00 	sll	v1,a0,0x18
+  4087b8:	304200ff 	andi	v0,v0,0xff
+  4087bc:	00031e03 	sra	v1,v1,0x18
+  4087c0:	28650041 	slti	a1,v1,65
+  4087c4:	2c43000a 	sltiu	v1,v0,10
+  4087c8:	14600006 	bnez	v1,4087e4 <_stdlib_strto_ll+0xf4>
+  4087cc:	0040c021 	move	t8,v0
+  4087d0:	34820020 	ori	v0,a0,0x20
+  4087d4:	2442ffa9 	addiu	v0,v0,-87
+  4087d8:	10a00002 	beqz	a1,4087e4 <_stdlib_strto_ll+0xf4>
+  4087dc:	305800ff 	andi	t8,v0,0xff
+  4087e0:	24180028 	li	t8,40
+  4087e4:	00101600 	sll	v0,s0,0x18
+  4087e8:	00117a02 	srl	t7,s1,0x8
+  4087ec:	01e27825 	or	t7,t7,v0
+  4087f0:	3c0203ff 	lui	v0,0x3ff
+  4087f4:	3442ffff 	ori	v0,v0,0xffff
+  4087f8:	3c1900ff 	lui	t9,0xff
+  4087fc:	001257c3 	sra	t2,s2,0x1f
+  408800:	0050202b 	sltu	a0,v0,s0
+  408804:	0312102a 	slt	v0,t8,s2
+  408808:	322300ff 	andi	v1,s1,0xff
+  40880c:	00107202 	srl	t6,s0,0x8
+  408810:	3739ffff 	ori	t9,t9,0xffff
+  408814:	02405821 	move	t3,s2
+  408818:	02403821 	move	a3,s2
+  40881c:	01403021 	move	a2,t2
+  408820:	03004821 	move	t1,t8
+  408824:	14400032 	bnez	v0,4088f0 <_stdlib_strto_ll+0x200>
+  408828:	00004021 	move	t0,zero
+  40882c:	12c00002 	beqz	s6,408838 <_stdlib_strto_ll+0x148>
+  408830:	00000000 	nop
+  408834:	aed40000 	sw	s4,0(s6)
+  408838:	3c048000 	lui	a0,0x8000
+  40883c:	12a00028 	beqz	s5,4088e0 <_stdlib_strto_ll+0x1f0>
+  408840:	24050000 	li	a1,0
+  408844:	12e00005 	beqz	s7,40885c <_stdlib_strto_ll+0x16c>
+  408848:	0090102b 	sltu	v0,a0,s0
+  40884c:	1440001a 	bnez	v0,4088b8 <_stdlib_strto_ll+0x1c8>
+  408850:	00000000 	nop
+  408854:	12040016 	beq	s0,a0,4088b0 <_stdlib_strto_ll+0x1c0>
+  408858:	00b1102b 	sltu	v0,a1,s1
+  40885c:	00112823 	negu	a1,s1
+  408860:	00102023 	negu	a0,s0
+  408864:	0005102b 	sltu	v0,zero,a1
+  408868:	12a0000e 	beqz	s5,4088a4 <_stdlib_strto_ll+0x1b4>
+  40886c:	00822023 	subu	a0,a0,v0
+  408870:	8fbf003c 	lw	ra,60(sp)
+  408874:	8fb70034 	lw	s7,52(sp)
+  408878:	8fb60030 	lw	s6,48(sp)
+  40887c:	8fb5002c 	lw	s5,44(sp)
+  408880:	8fb40028 	lw	s4,40(sp)
+  408884:	8fb30024 	lw	s3,36(sp)
+  408888:	8fb20020 	lw	s2,32(sp)
+  40888c:	8fb1001c 	lw	s1,28(sp)
+  408890:	8fb00018 	lw	s0,24(sp)
+  408894:	00801021 	move	v0,a0
+  408898:	00a01821 	move	v1,a1
+  40889c:	03e00008 	jr	ra
+  4088a0:	27bd0040 	addiu	sp,sp,64
+  4088a4:	02002021 	move	a0,s0
+  4088a8:	1000fff1 	b	408870 <_stdlib_strto_ll+0x180>
+  4088ac:	02202821 	move	a1,s1
+  4088b0:	1040ffea 	beqz	v0,40885c <_stdlib_strto_ll+0x16c>
+  4088b4:	00000000 	nop
+  4088b8:	00808021 	move	s0,a0
+  4088bc:	00a08821 	move	s1,a1
+  4088c0:	8f9980a0 	lw	t9,-32608(gp)
+  4088c4:	00000000 	nop
+  4088c8:	0320f809 	jalr	t9
+  4088cc:	00000000 	nop
+  4088d0:	8fbc0010 	lw	gp,16(sp)
+  4088d4:	24030022 	li	v1,34
+  4088d8:	1000ffe0 	b	40885c <_stdlib_strto_ll+0x16c>
+  4088dc:	ac430000 	sw	v1,0(v0)
+  4088e0:	3c047fff 	lui	a0,0x7fff
+  4088e4:	3484ffff 	ori	a0,a0,0xffff
+  4088e8:	1000ffd6 	b	408844 <_stdlib_strto_ll+0x154>
+  4088ec:	2405ffff 	li	a1,-1
+  4088f0:	26740001 	addiu	s4,s3,1
+  4088f4:	1080002d 	beqz	a0,4089ac <_stdlib_strto_ll+0x2bc>
+  4088f8:	02809821 	move	s3,s4
+  4088fc:	00720018 	mult	v1,s2
+  408900:	00006021 	move	t4,zero
+  408904:	00002021 	move	a0,zero
+  408908:	00001812 	mflo	v1
+  40890c:	00781821 	addu	v1,v1,t8
+  408910:	00031202 	srl	v0,v1,0x8
+  408914:	01ea0018 	mult	t7,t2
+  408918:	00406821 	move	t5,v0
+  40891c:	00602821 	move	a1,v1
+  408920:	00003012 	mflo	a2
+	...
+  40892c:	01eb0019 	multu	t7,t3
+  408930:	00008010 	mfhi	s0
+  408934:	00008812 	mflo	s1
+  408938:	02068021 	addu	s0,s0,a2
+  40893c:	022d1821 	addu	v1,s1,t5
+  408940:	016e0018 	mult	t3,t6
+  408944:	006d402b 	sltu	t0,v1,t5
+  408948:	00113a00 	sll	a3,s1,0x8
+  40894c:	00001012 	mflo	v0
+  408950:	02028021 	addu	s0,s0,v0
+  408954:	00103200 	sll	a2,s0,0x8
+  408958:	00111602 	srl	v0,s1,0x18
+  40895c:	00c23025 	or	a2,a2,v0
+  408960:	020c1021 	addu	v0,s0,t4
+  408964:	00481021 	addu	v0,v0,t0
+  408968:	00e58821 	addu	s1,a3,a1
+  40896c:	0225402b 	sltu	t0,s1,a1
+  408970:	00c48021 	addu	s0,a2,a0
+  408974:	0322102b 	sltu	v0,t9,v0
+  408978:	1040ff8b 	beqz	v0,4087a8 <_stdlib_strto_ll+0xb8>
+  40897c:	02088021 	addu	s0,s0,t0
+  408980:	8f9980a0 	lw	t9,-32608(gp)
+  408984:	00000000 	nop
+  408988:	0320f809 	jalr	t9
+  40898c:	00000000 	nop
+  408990:	8fbc0010 	lw	gp,16(sp)
+  408994:	24030022 	li	v1,34
+  408998:	2410ffff 	li	s0,-1
+  40899c:	2411ffff 	li	s1,-1
+  4089a0:	02b7a824 	and	s5,s5,s7
+  4089a4:	1000ff80 	b	4087a8 <_stdlib_strto_ll+0xb8>
+  4089a8:	ac430000 	sw	v1,0(v0)
+  4089ac:	02260018 	mult	s1,a2
+  4089b0:	00002812 	mflo	a1
+	...
+  4089bc:	02270019 	multu	s1,a3
+  4089c0:	00001010 	mfhi	v0
+  4089c4:	00001812 	mflo	v1
+  4089c8:	00451021 	addu	v0,v0,a1
+  4089cc:	00698821 	addu	s1,v1,t1
+  4089d0:	00f00018 	mult	a3,s0
+  4089d4:	00002012 	mflo	a0
+  4089d8:	00441021 	addu	v0,v0,a0
+  4089dc:	00488021 	addu	s0,v0,t0
+  4089e0:	0229202b 	sltu	a0,s1,t1
+  4089e4:	1000ff70 	b	4087a8 <_stdlib_strto_ll+0xb8>
+  4089e8:	02048021 	addu	s0,s0,a0
+  4089ec:	82630000 	lb	v1,0(s3)
+  4089f0:	00000000 	nop
+  4089f4:	10620006 	beq	v1,v0,408a10 <_stdlib_strto_ll+0x320>
+  4089f8:	2652000a 	addiu	s2,s2,10
+  4089fc:	2a420011 	slti	v0,s2,17
+  408a00:	1440ff65 	bnez	v0,408798 <_stdlib_strto_ll+0xa8>
+  408a04:	2642fffe 	addiu	v0,s2,-2
+  408a08:	1000ff62 	b	408794 <_stdlib_strto_ll+0xa4>
+  408a0c:	24120010 	li	s2,16
+  408a10:	26740001 	addiu	s4,s3,1
+  408a14:	92820000 	lbu	v0,0(s4)
+  408a18:	24030078 	li	v1,120
+  408a1c:	34420020 	ori	v0,v0,0x20
+  408a20:	00021600 	sll	v0,v0,0x18
+  408a24:	00021603 	sra	v0,v0,0x18
+  408a28:	02809821 	move	s3,s4
+  408a2c:	1443fff3 	bne	v0,v1,4089fc <_stdlib_strto_ll+0x30c>
+  408a30:	2652fffe 	addiu	s2,s2,-2
+  408a34:	26930001 	addiu	s3,s4,1
+  408a38:	1000fff0 	b	4089fc <_stdlib_strto_ll+0x30c>
+  408a3c:	00129040 	sll	s2,s2,0x1
+  408a40:	24150001 	li	s5,1
+  408a44:	1000ff4f 	b	408784 <_stdlib_strto_ll+0x94>
+  408a48:	26730001 	addiu	s3,s3,1
+  408a4c:	00000000 	nop
+
+00408a50 <exit>:
+  408a50:	3c1c0fc0 	lui	gp,0xfc0
+  408a54:	279cf800 	addiu	gp,gp,-2048
+  408a58:	0399e021 	addu	gp,gp,t9
+  408a5c:	27bdffd8 	addiu	sp,sp,-40
+  408a60:	afbc0010 	sw	gp,16(sp)
+  408a64:	afb00018 	sw	s0,24(sp)
+  408a68:	8f90817c 	lw	s0,-32388(gp)
+  408a6c:	afb1001c 	sw	s1,28(sp)
+  408a70:	00808821 	move	s1,a0
+  408a74:	02002021 	move	a0,s0
+  408a78:	afbf0024 	sw	ra,36(sp)
+  408a7c:	afbc0020 	sw	gp,32(sp)
+  408a80:	8f9980a8 	lw	t9,-32600(gp)
+  408a84:	00000000 	nop
+  408a88:	0320f809 	jalr	t9
+  408a8c:	00000000 	nop
+  408a90:	8fbc0010 	lw	gp,16(sp)
+  408a94:	00000000 	nop
+  408a98:	8f8281cc 	lw	v0,-32308(gp)
+  408a9c:	00000000 	nop
+  408aa0:	8c420000 	lw	v0,0(v0)
+  408aa4:	00000000 	nop
+  408aa8:	10400005 	beqz	v0,408ac0 <exit+0x70>
+  408aac:	02202021 	move	a0,s1
+  408ab0:	0040c821 	move	t9,v0
+  408ab4:	0320f809 	jalr	t9
+  408ab8:	00000000 	nop
+  408abc:	8fbc0010 	lw	gp,16(sp)
+  408ac0:	02002021 	move	a0,s0
+  408ac4:	8f99811c 	lw	t9,-32484(gp)
+  408ac8:	00000000 	nop
+  408acc:	0320f809 	jalr	t9
+  408ad0:	00000000 	nop
+  408ad4:	8fbc0010 	lw	gp,16(sp)
+  408ad8:	00000000 	nop
+  408adc:	8f8280f0 	lw	v0,-32528(gp)
+  408ae0:	00000000 	nop
+  408ae4:	10400006 	beqz	v0,408b00 <exit+0xb0>
+  408ae8:	02202021 	move	a0,s1
+  408aec:	0040c821 	move	t9,v0
+  408af0:	0320f809 	jalr	t9
+  408af4:	00000000 	nop
+  408af8:	8fbc0010 	lw	gp,16(sp)
+  408afc:	02202021 	move	a0,s1
+  408b00:	8f998070 	lw	t9,-32656(gp)
+  408b04:	00000000 	nop
+  408b08:	0320f809 	jalr	t9
+  408b0c:	00000000 	nop
+  408b10:	8fbc0010 	lw	gp,16(sp)
+	...
+  408b20:	3c1c0fc0 	lui	gp,0xfc0
+  408b24:	279cf730 	addiu	gp,gp,-2256
+  408b28:	0399e021 	addu	gp,gp,t9
+  408b2c:	27bdffd8 	addiu	sp,sp,-40
+  408b30:	afbc0010 	sw	gp,16(sp)
+  408b34:	afb1001c 	sw	s1,28(sp)
+  408b38:	afb00018 	sw	s0,24(sp)
+  408b3c:	afbf0024 	sw	ra,36(sp)
+  408b40:	afbc0020 	sw	gp,32(sp)
+  408b44:	8f998018 	lw	t9,-32744(gp)
+  408b48:	00000000 	nop
+  408b4c:	27398fd8 	addiu	t9,t9,-28712
+  408b50:	00000000 	nop
+  408b54:	0320f809 	jalr	t9
+  408b58:	00000000 	nop
+  408b5c:	8fbc0010 	lw	gp,16(sp)
+  408b60:	00408021 	move	s0,v0
+  408b64:	32030fff 	andi	v1,s0,0xfff
+  408b68:	24021000 	li	v0,4096
+  408b6c:	00438823 	subu	s1,v0,v1
+  408b70:	10600009 	beqz	v1,408b98 <exit+0x148>
+  408b74:	02202021 	move	a0,s1
+  408b78:	8f998018 	lw	t9,-32744(gp)
+  408b7c:	00000000 	nop
+  408b80:	27398fd8 	addiu	t9,t9,-28712
+  408b84:	00000000 	nop
+  408b88:	0320f809 	jalr	t9
+  408b8c:	00000000 	nop
+  408b90:	8fbc0010 	lw	gp,16(sp)
+  408b94:	02118021 	addu	s0,s0,s1
+  408b98:	02001021 	move	v0,s0
+  408b9c:	8fbf0024 	lw	ra,36(sp)
+  408ba0:	8fb1001c 	lw	s1,28(sp)
+  408ba4:	8fb00018 	lw	s0,24(sp)
+  408ba8:	03e00008 	jr	ra
+  408bac:	27bd0028 	addiu	sp,sp,40
+  408bb0:	3c1c0fc0 	lui	gp,0xfc0
+  408bb4:	279cf6a0 	addiu	gp,gp,-2400
+  408bb8:	0399e021 	addu	gp,gp,t9
+  408bbc:	27bdffe0 	addiu	sp,sp,-32
+  408bc0:	afbc0010 	sw	gp,16(sp)
+  408bc4:	24043000 	li	a0,12288
+  408bc8:	24020400 	li	v0,1024
+  408bcc:	afbf001c 	sw	ra,28(sp)
+  408bd0:	afbc0018 	sw	gp,24(sp)
+  408bd4:	8f81801c 	lw	at,-32740(gp)
+  408bd8:	00000000 	nop
+  408bdc:	24210908 	addiu	at,at,2312
+  408be0:	ac220000 	sw	v0,0(at)
+  408be4:	8f998018 	lw	t9,-32744(gp)
+  408be8:	00000000 	nop
+  408bec:	27398b20 	addiu	t9,t9,-29920
+  408bf0:	00000000 	nop
+  408bf4:	0320f809 	jalr	t9
+  408bf8:	00000000 	nop
+  408bfc:	8fbc0010 	lw	gp,16(sp)
+  408c00:	00401821 	move	v1,v0
+  408c04:	00602021 	move	a0,v1
+  408c08:	8f81801c 	lw	at,-32740(gp)
+  408c0c:	00000000 	nop
+  408c10:	24210904 	addiu	at,at,2308
+  408c14:	ac230000 	sw	v1,0(at)
+  408c18:	1060002d 	beqz	v1,408cd0 <exit+0x280>
+  408c1c:	00002821 	move	a1,zero
+  408c20:	8f82801c 	lw	v0,-32740(gp)
+  408c24:	00000000 	nop
+  408c28:	24420908 	addiu	v0,v0,2312
+  408c2c:	8c420000 	lw	v0,0(v0)
+  408c30:	00000000 	nop
+  408c34:	00023040 	sll	a2,v0,0x1
+  408c38:	00c23021 	addu	a2,a2,v0
+  408c3c:	00063080 	sll	a2,a2,0x2
+  408c40:	8f99813c 	lw	t9,-32452(gp)
+  408c44:	00000000 	nop
+  408c48:	0320f809 	jalr	t9
+  408c4c:	00000000 	nop
+  408c50:	8fbc0010 	lw	gp,16(sp)
+  408c54:	00000000 	nop
+  408c58:	8f82801c 	lw	v0,-32740(gp)
+  408c5c:	00000000 	nop
+  408c60:	24420904 	addiu	v0,v0,2308
+  408c64:	8c420000 	lw	v0,0(v0)
+  408c68:	00000000 	nop
+  408c6c:	ac400000 	sw	zero,0(v0)
+  408c70:	8f83801c 	lw	v1,-32740(gp)
+  408c74:	00000000 	nop
+  408c78:	24630904 	addiu	v1,v1,2308
+  408c7c:	8c630000 	lw	v1,0(v1)
+  408c80:	24020001 	li	v0,1
+  408c84:	ac600004 	sw	zero,4(v1)
+  408c88:	ac600008 	sw	zero,8(v1)
+  408c8c:	24030001 	li	v1,1
+  408c90:	8f81801c 	lw	at,-32740(gp)
+  408c94:	00000000 	nop
+  408c98:	242109a4 	addiu	at,at,2468
+  408c9c:	ac230000 	sw	v1,0(at)
+  408ca0:	8f83801c 	lw	v1,-32740(gp)
+  408ca4:	00000000 	nop
+  408ca8:	24630904 	addiu	v1,v1,2308
+  408cac:	8c630000 	lw	v1,0(v1)
+  408cb0:	8f81801c 	lw	at,-32740(gp)
+  408cb4:	00000000 	nop
+  408cb8:	2421090c 	addiu	at,at,2316
+  408cbc:	ac200000 	sw	zero,0(at)
+  408cc0:	8f81801c 	lw	at,-32740(gp)
+  408cc4:	00000000 	nop
+  408cc8:	24210900 	addiu	at,at,2304
+  408ccc:	ac230000 	sw	v1,0(at)
+  408cd0:	8fbf001c 	lw	ra,28(sp)
+  408cd4:	00000000 	nop
+  408cd8:	03e00008 	jr	ra
+  408cdc:	27bd0020 	addiu	sp,sp,32
+  408ce0:	3c1c0fc0 	lui	gp,0xfc0
+  408ce4:	279cf570 	addiu	gp,gp,-2704
+  408ce8:	0399e021 	addu	gp,gp,t9
+  408cec:	27bdffc8 	addiu	sp,sp,-56
+  408cf0:	afbc0010 	sw	gp,16(sp)
+  408cf4:	afb40028 	sw	s4,40(sp)
+  408cf8:	afb30024 	sw	s3,36(sp)
+  408cfc:	afbf0030 	sw	ra,48(sp)
+  408d00:	afbc002c 	sw	gp,44(sp)
+  408d04:	afb20020 	sw	s2,32(sp)
+  408d08:	afb1001c 	sw	s1,28(sp)
+  408d0c:	afb00018 	sw	s0,24(sp)
+  408d10:	0080a021 	move	s4,a0
+  408d14:	8f998018 	lw	t9,-32744(gp)
+  408d18:	00000000 	nop
+  408d1c:	27398b20 	addiu	t9,t9,-29920
+  408d20:	00000000 	nop
+  408d24:	0320f809 	jalr	t9
+  408d28:	00000000 	nop
+  408d2c:	8fbc0010 	lw	gp,16(sp)
+  408d30:	00409821 	move	s3,v0
+  408d34:	1260008a 	beqz	s3,408f60 <exit+0x510>
+  408d38:	02742021 	addu	a0,s3,s4
+  408d3c:	8f85801c 	lw	a1,-32740(gp)
+  408d40:	00000000 	nop
+  408d44:	24a50900 	addiu	a1,a1,2304
+  408d48:	8ca50000 	lw	a1,0(a1)
+  408d4c:	00000000 	nop
+  408d50:	00851023 	subu	v0,a0,a1
+  408d54:	0440009e 	bltz	v0,408fd0 <exit+0x580>
+  408d58:	00000000 	nop
+  408d5c:	00021303 	sra	v0,v0,0xc
+  408d60:	8f83801c 	lw	v1,-32740(gp)
+  408d64:	00000000 	nop
+  408d68:	24630908 	addiu	v1,v1,2312
+  408d6c:	8c630000 	lw	v1,0(v1)
+  408d70:	24420001 	addiu	v0,v0,1
+  408d74:	0062102b 	sltu	v0,v1,v0
+  408d78:	1040006a 	beqz	v0,408f24 <exit+0x4d4>
+  408d7c:	00609021 	move	s2,v1
+  408d80:	00851023 	subu	v0,a0,a1
+  408d84:	04400090 	bltz	v0,408fc8 <exit+0x578>
+  408d88:	00000000 	nop
+  408d8c:	00021303 	sra	v0,v0,0xc
+  408d90:	24420001 	addiu	v0,v0,1
+  408d94:	0242102b 	sltu	v0,s2,v0
+  408d98:	14400089 	bnez	v0,408fc0 <exit+0x570>
+  408d9c:	00121040 	sll	v0,s2,0x1
+  408da0:	00521021 	addu	v0,v0,s2
+  408da4:	00028080 	sll	s0,v0,0x2
+  408da8:	02002021 	move	a0,s0
+  408dac:	8f998018 	lw	t9,-32744(gp)
+  408db0:	00000000 	nop
+  408db4:	27398b20 	addiu	t9,t9,-29920
+  408db8:	00000000 	nop
+  408dbc:	0320f809 	jalr	t9
+  408dc0:	00000000 	nop
+  408dc4:	8fbc0010 	lw	gp,16(sp)
+  408dc8:	00408821 	move	s1,v0
+  408dcc:	12200072 	beqz	s1,408f98 <exit+0x548>
+  408dd0:	02003021 	move	a2,s0
+  408dd4:	02202021 	move	a0,s1
+  408dd8:	00002821 	move	a1,zero
+  408ddc:	8f99813c 	lw	t9,-32452(gp)
+  408de0:	00000000 	nop
+  408de4:	0320f809 	jalr	t9
+  408de8:	00000000 	nop
+  408dec:	8fbc0010 	lw	gp,16(sp)
+  408df0:	00000000 	nop
+  408df4:	8f82801c 	lw	v0,-32740(gp)
+  408df8:	00000000 	nop
+  408dfc:	24420908 	addiu	v0,v0,2312
+  408e00:	8c420000 	lw	v0,0(v0)
+  408e04:	8f85801c 	lw	a1,-32740(gp)
+  408e08:	00000000 	nop
+  408e0c:	24a50904 	addiu	a1,a1,2308
+  408e10:	8ca50000 	lw	a1,0(a1)
+  408e14:	00023040 	sll	a2,v0,0x1
+  408e18:	00c23021 	addu	a2,a2,v0
+  408e1c:	00063080 	sll	a2,a2,0x2
+  408e20:	02202021 	move	a0,s1
+  408e24:	8f998254 	lw	t9,-32172(gp)
+  408e28:	00000000 	nop
+  408e2c:	0320f809 	jalr	t9
+  408e30:	00000000 	nop
+  408e34:	8fbc0010 	lw	gp,16(sp)
+  408e38:	00000000 	nop
+  408e3c:	8f85801c 	lw	a1,-32740(gp)
+  408e40:	00000000 	nop
+  408e44:	24a50904 	addiu	a1,a1,2308
+  408e48:	8ca50000 	lw	a1,0(a1)
+  408e4c:	8f82801c 	lw	v0,-32740(gp)
+  408e50:	00000000 	nop
+  408e54:	24420900 	addiu	v0,v0,2304
+  408e58:	8c420000 	lw	v0,0(v0)
+  408e5c:	00000000 	nop
+  408e60:	00a21023 	subu	v0,a1,v0
+  408e64:	0440004a 	bltz	v0,408f90 <exit+0x540>
+  408e68:	00000000 	nop
+  408e6c:	00021303 	sra	v0,v0,0xc
+  408e70:	00021840 	sll	v1,v0,0x1
+  408e74:	00621821 	addu	v1,v1,v0
+  408e78:	00031880 	sll	v1,v1,0x2
+  408e7c:	00711821 	addu	v1,v1,s1
+  408e80:	ac60000c 	sw	zero,12(v1)
+  408e84:	8f82801c 	lw	v0,-32740(gp)
+  408e88:	00000000 	nop
+  408e8c:	24420900 	addiu	v0,v0,2304
+  408e90:	8c420000 	lw	v0,0(v0)
+  408e94:	00000000 	nop
+  408e98:	00a22023 	subu	a0,a1,v0
+  408e9c:	0480003a 	bltz	a0,408f88 <exit+0x538>
+  408ea0:	00000000 	nop
+  408ea4:	8f82801c 	lw	v0,-32740(gp)
+  408ea8:	00000000 	nop
+  408eac:	24420908 	addiu	v0,v0,2312
+  408eb0:	8c420000 	lw	v0,0(v0)
+  408eb4:	00042303 	sra	a0,a0,0xc
+  408eb8:	00021840 	sll	v1,v0,0x1
+  408ebc:	00621821 	addu	v1,v1,v0
+  408ec0:	00041040 	sll	v0,a0,0x1
+  408ec4:	00441021 	addu	v0,v0,a0
+  408ec8:	00031880 	sll	v1,v1,0x2
+  408ecc:	00021080 	sll	v0,v0,0x2
+  408ed0:	24630fff 	addiu	v1,v1,4095
+  408ed4:	00511021 	addu	v0,v0,s1
+  408ed8:	00031b02 	srl	v1,v1,0xc
+  408edc:	ac430010 	sw	v1,16(v0)
+  408ee0:	00a02021 	move	a0,a1
+  408ee4:	8f81801c 	lw	at,-32740(gp)
+  408ee8:	00000000 	nop
+  408eec:	24210904 	addiu	at,at,2308
+  408ef0:	ac310000 	sw	s1,0(at)
+  408ef4:	8f998018 	lw	t9,-32744(gp)
+  408ef8:	00000000 	nop
+  408efc:	2739981c 	addiu	t9,t9,-26596
+  408f00:	00000000 	nop
+  408f04:	0320f809 	jalr	t9
+  408f08:	00000000 	nop
+  408f0c:	8fbc0010 	lw	gp,16(sp)
+  408f10:	00000000 	nop
+  408f14:	8f81801c 	lw	at,-32740(gp)
+  408f18:	00000000 	nop
+  408f1c:	24210908 	addiu	at,at,2312
+  408f20:	ac320000 	sw	s2,0(at)
+  408f24:	8f82801c 	lw	v0,-32740(gp)
+  408f28:	00000000 	nop
+  408f2c:	24420900 	addiu	v0,v0,2304
+  408f30:	8c420000 	lw	v0,0(v0)
+  408f34:	02741821 	addu	v1,s3,s4
+  408f38:	00621023 	subu	v0,v1,v0
+  408f3c:	04400010 	bltz	v0,408f80 <exit+0x530>
+  408f40:	00000000 	nop
+  408f44:	00021303 	sra	v0,v0,0xc
+  408f48:	24420001 	addiu	v0,v0,1
+  408f4c:	8f81801c 	lw	at,-32740(gp)
+  408f50:	00000000 	nop
+  408f54:	24210910 	addiu	at,at,2320
+  408f58:	ac220000 	sw	v0,0(at)
+  408f5c:	02601021 	move	v0,s3
+  408f60:	8fbf0030 	lw	ra,48(sp)
+  408f64:	8fb40028 	lw	s4,40(sp)
+  408f68:	8fb30024 	lw	s3,36(sp)
+  408f6c:	8fb20020 	lw	s2,32(sp)
+  408f70:	8fb1001c 	lw	s1,28(sp)
+  408f74:	8fb00018 	lw	s0,24(sp)
+  408f78:	03e00008 	jr	ra
+  408f7c:	27bd0038 	addiu	sp,sp,56
+  408f80:	1000fff0 	b	408f44 <exit+0x4f4>
+  408f84:	24420fff 	addiu	v0,v0,4095
+  408f88:	1000ffc6 	b	408ea4 <exit+0x454>
+  408f8c:	24840fff 	addiu	a0,a0,4095
+  408f90:	1000ffb6 	b	408e6c <exit+0x41c>
+  408f94:	24420fff 	addiu	v0,v0,4095
+  408f98:	00142023 	negu	a0,s4
+  408f9c:	8f998018 	lw	t9,-32744(gp)
+  408fa0:	00000000 	nop
+  408fa4:	27398fd8 	addiu	t9,t9,-28712
+  408fa8:	00000000 	nop
+  408fac:	0320f809 	jalr	t9
+  408fb0:	00000000 	nop
+  408fb4:	8fbc0010 	lw	gp,16(sp)
+  408fb8:	1000ffe9 	b	408f60 <exit+0x510>
+  408fbc:	00001021 	move	v0,zero
+  408fc0:	1000ff6f 	b	408d80 <exit+0x330>
+  408fc4:	00129040 	sll	s2,s2,0x1
+  408fc8:	1000ff70 	b	408d8c <exit+0x33c>
+  408fcc:	24420fff 	addiu	v0,v0,4095
+  408fd0:	1000ff62 	b	408d5c <exit+0x30c>
+  408fd4:	24420fff 	addiu	v0,v0,4095
+  408fd8:	3c1c0fc0 	lui	gp,0xfc0
+  408fdc:	279cf278 	addiu	gp,gp,-3464
+  408fe0:	0399e021 	addu	gp,gp,t9
+  408fe4:	27bdffe0 	addiu	sp,sp,-32
+  408fe8:	afbc0010 	sw	gp,16(sp)
+  408fec:	afbf001c 	sw	ra,28(sp)
+  408ff0:	afbc0018 	sw	gp,24(sp)
+  408ff4:	8f998150 	lw	t9,-32432(gp)
+  408ff8:	00000000 	nop
+  408ffc:	0320f809 	jalr	t9
+  409000:	00000000 	nop
+  409004:	8fbc0010 	lw	gp,16(sp)
+  409008:	00402021 	move	a0,v0
+  40900c:	2403ffff 	li	v1,-1
+  409010:	10830005 	beq	a0,v1,409028 <exit+0x5d8>
+  409014:	00000000 	nop
+  409018:	8fbf001c 	lw	ra,28(sp)
+  40901c:	00000000 	nop
+  409020:	03e00008 	jr	ra
+  409024:	27bd0020 	addiu	sp,sp,32
+  409028:	1000fffb 	b	409018 <exit+0x5c8>
+  40902c:	00001021 	move	v0,zero
+
+00409030 <malloc>:
+  409030:	3c1c0fc0 	lui	gp,0xfc0
+  409034:	279cf220 	addiu	gp,gp,-3552
+  409038:	0399e021 	addu	gp,gp,t9
+  40903c:	27bdffd8 	addiu	sp,sp,-40
+  409040:	afbc0010 	sw	gp,16(sp)
+  409044:	afb00018 	sw	s0,24(sp)
+  409048:	8f90801c 	lw	s0,-32740(gp)
+  40904c:	00000000 	nop
+  409050:	261001b0 	addiu	s0,s0,432
+  409054:	afb1001c 	sw	s1,28(sp)
+  409058:	00808821 	move	s1,a0
+  40905c:	02002021 	move	a0,s0
+  409060:	afbf0024 	sw	ra,36(sp)
+  409064:	afbc0020 	sw	gp,32(sp)
+  409068:	8f9980a8 	lw	t9,-32600(gp)
+  40906c:	00000000 	nop
+  409070:	0320f809 	jalr	t9
+  409074:	00000000 	nop
+  409078:	8fbc0010 	lw	gp,16(sp)
+  40907c:	02202021 	move	a0,s1
+  409080:	8f998018 	lw	t9,-32744(gp)
+  409084:	00000000 	nop
+  409088:	273990d0 	addiu	t9,t9,-28464
+  40908c:	00000000 	nop
+  409090:	0320f809 	jalr	t9
+  409094:	00000000 	nop
+  409098:	8fbc0010 	lw	gp,16(sp)
+  40909c:	02002021 	move	a0,s0
+  4090a0:	00408821 	move	s1,v0
+  4090a4:	8f99811c 	lw	t9,-32484(gp)
+  4090a8:	00000000 	nop
+  4090ac:	0320f809 	jalr	t9
+  4090b0:	00000000 	nop
+  4090b4:	8fbc0010 	lw	gp,16(sp)
+  4090b8:	8fbf0024 	lw	ra,36(sp)
+  4090bc:	02201021 	move	v0,s1
+  4090c0:	8fb00018 	lw	s0,24(sp)
+  4090c4:	8fb1001c 	lw	s1,28(sp)
+  4090c8:	03e00008 	jr	ra
+  4090cc:	27bd0028 	addiu	sp,sp,40
+  4090d0:	3c1c0fc0 	lui	gp,0xfc0
+  4090d4:	279cf180 	addiu	gp,gp,-3712
+  4090d8:	0399e021 	addu	gp,gp,t9
+  4090dc:	27bdffd0 	addiu	sp,sp,-48
+  4090e0:	afbc0010 	sw	gp,16(sp)
+  4090e4:	afb00018 	sw	s0,24(sp)
+  4090e8:	00808021 	move	s0,a0
+  4090ec:	afbf002c 	sw	ra,44(sp)
+  4090f0:	afbc0028 	sw	gp,40(sp)
+  4090f4:	afb30024 	sw	s3,36(sp)
+  4090f8:	afb20020 	sw	s2,32(sp)
+  4090fc:	afb1001c 	sw	s1,28(sp)
+  409100:	1200004b 	beqz	s0,409230 <malloc+0x200>
+  409104:	00001021 	move	v0,zero
+  409108:	2e020008 	sltiu	v0,s0,8
+  40910c:	10400002 	beqz	v0,409118 <malloc+0xe8>
+  409110:	00000000 	nop
+  409114:	24100008 	li	s0,8
+  409118:	8f82801c 	lw	v0,-32740(gp)
+  40911c:	00000000 	nop
+  409120:	244209a4 	addiu	v0,v0,2468
+  409124:	8c420000 	lw	v0,0(v0)
+  409128:	00000000 	nop
+  40912c:	10400189 	beqz	v0,409754 <malloc+0x724>
+  409130:	00000000 	nop
+  409134:	2e020801 	sltiu	v0,s0,2049
+  409138:	10400098 	beqz	v0,40939c <malloc+0x36c>
+  40913c:	26030fff 	addiu	v1,s0,4095
+  409140:	2610ffff 	addiu	s0,s0,-1
+  409144:	00108042 	srl	s0,s0,0x1
+  409148:	12000004 	beqz	s0,40915c <malloc+0x12c>
+  40914c:	24110001 	li	s1,1
+  409150:	00108042 	srl	s0,s0,0x1
+  409154:	1600fffe 	bnez	s0,409150 <malloc+0x120>
+  409158:	26310001 	addiu	s1,s1,1
+  40915c:	001190c0 	sll	s2,s1,0x3
+  409160:	8f90801c 	lw	s0,-32740(gp)
+  409164:	00000000 	nop
+  409168:	26100944 	addiu	s0,s0,2372
+  40916c:	02128021 	addu	s0,s0,s2
+  409170:	8e060000 	lw	a2,0(s0)
+  409174:	00000000 	nop
+  409178:	10c00036 	beqz	a2,409254 <malloc+0x224>
+  40917c:	00c04821 	move	t1,a2
+  409180:	8d230004 	lw	v1,4(t1)
+  409184:	8d220000 	lw	v0,0(t1)
+  409188:	00000000 	nop
+  40918c:	ac620000 	sw	v0,0(v1)
+  409190:	8d230000 	lw	v1,0(t1)
+  409194:	00000000 	nop
+  409198:	10600004 	beqz	v1,4091ac <malloc+0x17c>
+  40919c:	00000000 	nop
+  4091a0:	8d220004 	lw	v0,4(t1)
+  4091a4:	00000000 	nop
+  4091a8:	ac620004 	sw	v0,4(v1)
+  4091ac:	8f82801c 	lw	v0,-32740(gp)
+  4091b0:	00000000 	nop
+  4091b4:	24420900 	addiu	v0,v0,2304
+  4091b8:	8c420000 	lw	v0,0(v0)
+  4091bc:	00000000 	nop
+  4091c0:	01221023 	subu	v0,t1,v0
+  4091c4:	04400021 	bltz	v0,40924c <malloc+0x21c>
+  4091c8:	00000000 	nop
+  4091cc:	00021303 	sra	v0,v0,0xc
+  4091d0:	24480001 	addiu	t0,v0,1
+  4091d4:	00081040 	sll	v0,t0,0x1
+  4091d8:	00481021 	addu	v0,v0,t0
+  4091dc:	8f83801c 	lw	v1,-32740(gp)
+  4091e0:	00000000 	nop
+  4091e4:	24630904 	addiu	v1,v1,2308
+  4091e8:	8c630000 	lw	v1,0(v1)
+  4091ec:	00022080 	sll	a0,v0,0x2
+  4091f0:	00831821 	addu	v1,a0,v1
+  4091f4:	8c620004 	lw	v0,4(v1)
+  4091f8:	00000000 	nop
+  4091fc:	2442ffff 	addiu	v0,v0,-1
+  409200:	1040000a 	beqz	v0,40922c <malloc+0x1fc>
+  409204:	ac620004 	sw	v0,4(v1)
+  409208:	8d230000 	lw	v1,0(t1)
+  40920c:	8f82801c 	lw	v0,-32740(gp)
+  409210:	00000000 	nop
+  409214:	24420904 	addiu	v0,v0,2308
+  409218:	8c420000 	lw	v0,0(v0)
+  40921c:	30630fff 	andi	v1,v1,0xfff
+  409220:	00821021 	addu	v0,a0,v0
+  409224:	02231806 	srlv	v1,v1,s1
+  409228:	ac430008 	sw	v1,8(v0)
+  40922c:	01201021 	move	v0,t1
+  409230:	8fbf002c 	lw	ra,44(sp)
+  409234:	8fb30024 	lw	s3,36(sp)
+  409238:	8fb20020 	lw	s2,32(sp)
+  40923c:	8fb1001c 	lw	s1,28(sp)
+  409240:	8fb00018 	lw	s0,24(sp)
+  409244:	03e00008 	jr	ra
+  409248:	27bd0030 	addiu	sp,sp,48
+  40924c:	1000ffdf 	b	4091cc <malloc+0x19c>
+  409250:	24420fff 	addiu	v0,v0,4095
+  409254:	24041000 	li	a0,4096
+  409258:	8f998018 	lw	t9,-32744(gp)
+  40925c:	00000000 	nop
+  409260:	273990d0 	addiu	t9,t9,-28464
+  409264:	00000000 	nop
+  409268:	0320f809 	jalr	t9
+  40926c:	00000000 	nop
+  409270:	8fbc0010 	lw	gp,16(sp)
+  409274:	00404821 	move	t1,v0
+  409278:	1120ffed 	beqz	t1,409230 <malloc+0x200>
+  40927c:	00112080 	sll	a0,s1,0x2
+  409280:	8f81801c 	lw	at,-32740(gp)
+  409284:	00000000 	nop
+  409288:	24210914 	addiu	at,at,2324
+  40928c:	00242021 	addu	a0,at,a0
+  409290:	8c850000 	lw	a1,0(a0)
+  409294:	24020001 	li	v0,1
+  409298:	24031000 	li	v1,4096
+  40929c:	02221004 	sllv	v0,v0,s1
+  4092a0:	02231807 	srav	v1,v1,s1
+  4092a4:	24070002 	li	a3,2
+  4092a8:	01223021 	addu	a2,t1,v0
+  4092ac:	24a50001 	addiu	a1,a1,1
+  4092b0:	00e3182b 	sltu	v1,a3,v1
+  4092b4:	ac850000 	sw	a1,0(a0)
+  4092b8:	acc00000 	sw	zero,0(a2)
+  4092bc:	acd00004 	sw	s0,4(a2)
+  4092c0:	10600012 	beqz	v1,40930c <malloc+0x2dc>
+  4092c4:	ae060000 	sw	a2,0(s0)
+  4092c8:	8f83801c 	lw	v1,-32740(gp)
+  4092cc:	00000000 	nop
+  4092d0:	24630944 	addiu	v1,v1,2372
+  4092d4:	00721821 	addu	v1,v1,s2
+  4092d8:	8c640000 	lw	a0,0(v1)
+  4092dc:	02271004 	sllv	v0,a3,s1
+  4092e0:	01223021 	addu	a2,t1,v0
+  4092e4:	acc40000 	sw	a0,0(a2)
+  4092e8:	acc30004 	sw	v1,4(a2)
+  4092ec:	24021000 	li	v0,4096
+  4092f0:	ac660000 	sw	a2,0(v1)
+  4092f4:	02221007 	srav	v0,v0,s1
+  4092f8:	8cc30000 	lw	v1,0(a2)
+  4092fc:	24e70001 	addiu	a3,a3,1
+  409300:	00e2102b 	sltu	v0,a3,v0
+  409304:	1440fff0 	bnez	v0,4092c8 <malloc+0x298>
+  409308:	ac660004 	sw	a2,4(v1)
+  40930c:	8f82801c 	lw	v0,-32740(gp)
+  409310:	00000000 	nop
+  409314:	24420900 	addiu	v0,v0,2304
+  409318:	8c420000 	lw	v0,0(v0)
+  40931c:	00000000 	nop
+  409320:	01221023 	subu	v0,t1,v0
+  409324:	0440001b 	bltz	v0,409394 <malloc+0x364>
+  409328:	00000000 	nop
+  40932c:	00021303 	sra	v0,v0,0xc
+  409330:	24480001 	addiu	t0,v0,1
+  409334:	00081840 	sll	v1,t0,0x1
+  409338:	8f82801c 	lw	v0,-32740(gp)
+  40933c:	00000000 	nop
+  409340:	24420904 	addiu	v0,v0,2308
+  409344:	8c420000 	lw	v0,0(v0)
+  409348:	00681821 	addu	v1,v1,t0
+  40934c:	00031880 	sll	v1,v1,0x2
+  409350:	00621021 	addu	v0,v1,v0
+  409354:	ac510000 	sw	s1,0(v0)
+  409358:	8f82801c 	lw	v0,-32740(gp)
+  40935c:	00000000 	nop
+  409360:	24420904 	addiu	v0,v0,2308
+  409364:	8c420000 	lw	v0,0(v0)
+  409368:	24e4ffff 	addiu	a0,a3,-1
+  40936c:	00621021 	addu	v0,v1,v0
+  409370:	ac440004 	sw	a0,4(v0)
+  409374:	8f82801c 	lw	v0,-32740(gp)
+  409378:	00000000 	nop
+  40937c:	24420904 	addiu	v0,v0,2308
+  409380:	8c420000 	lw	v0,0(v0)
+  409384:	00000000 	nop
+  409388:	00621821 	addu	v1,v1,v0
+  40938c:	1000ffa7 	b	40922c <malloc+0x1fc>
+  409390:	ac640008 	sw	a0,8(v1)
+  409394:	1000ffe5 	b	40932c <malloc+0x2fc>
+  409398:	24420fff 	addiu	v0,v0,4095
+  40939c:	8f88801c 	lw	t0,-32740(gp)
+  4093a0:	00000000 	nop
+  4093a4:	2508090c 	addiu	t0,t0,2316
+  4093a8:	8d080000 	lw	t0,0(t0)
+  4093ac:	8f85801c 	lw	a1,-32740(gp)
+  4093b0:	00000000 	nop
+  4093b4:	24a50904 	addiu	a1,a1,2308
+  4093b8:	8ca50000 	lw	a1,0(a1)
+  4093bc:	00082040 	sll	a0,t0,0x1
+  4093c0:	00881021 	addu	v0,a0,t0
+  4093c4:	00021080 	sll	v0,v0,0x2
+  4093c8:	00451021 	addu	v0,v0,a1
+  4093cc:	8c420000 	lw	v0,0(v0)
+  4093d0:	00038b02 	srl	s1,v1,0xc
+  4093d4:	0051102b 	sltu	v0,v0,s1
+  4093d8:	10400015 	beqz	v0,409430 <malloc+0x400>
+  4093dc:	01009821 	move	s3,t0
+  4093e0:	00881021 	addu	v0,a0,t0
+  4093e4:	00021080 	sll	v0,v0,0x2
+  4093e8:	00451021 	addu	v0,v0,a1
+  4093ec:	8c480004 	lw	t0,4(v0)
+  4093f0:	00000000 	nop
+  4093f4:	11130078 	beq	t0,s3,4095d8 <malloc+0x5a8>
+  4093f8:	00002021 	move	a0,zero
+  4093fc:	00082040 	sll	a0,t0,0x1
+  409400:	8f85801c 	lw	a1,-32740(gp)
+  409404:	00000000 	nop
+  409408:	24a50904 	addiu	a1,a1,2308
+  40940c:	8ca50000 	lw	a1,0(a1)
+  409410:	00881021 	addu	v0,a0,t0
+  409414:	00021080 	sll	v0,v0,0x2
+  409418:	00451021 	addu	v0,v0,a1
+  40941c:	8c420000 	lw	v0,0(v0)
+  409420:	00000000 	nop
+  409424:	0051102b 	sltu	v0,v0,s1
+  409428:	1440ffee 	bnez	v0,4093e4 <malloc+0x3b4>
+  40942c:	00881021 	addu	v0,a0,t0
+  409430:	00086040 	sll	t4,t0,0x1
+  409434:	01881021 	addu	v0,t4,t0
+  409438:	8f86801c 	lw	a2,-32740(gp)
+  40943c:	00000000 	nop
+  409440:	24c60904 	addiu	a2,a2,2308
+  409444:	8cc60000 	lw	a2,0(a2)
+  409448:	00025080 	sll	t2,v0,0x2
+  40944c:	01462821 	addu	a1,t2,a2
+  409450:	8cab0000 	lw	t3,0(a1)
+  409454:	2502ffff 	addiu	v0,t0,-1
+  409458:	8f83801c 	lw	v1,-32740(gp)
+  40945c:	00000000 	nop
+  409460:	24630900 	addiu	v1,v1,2304
+  409464:	8c630000 	lw	v1,0(v1)
+  409468:	00021300 	sll	v0,v0,0xc
+  40946c:	022b202b 	sltu	a0,s1,t3
+  409470:	10800040 	beqz	a0,409574 <malloc+0x544>
+  409474:	00624821 	addu	t1,v1,v0
+  409478:	01113821 	addu	a3,t0,s1
+  40947c:	00071840 	sll	v1,a3,0x1
+  409480:	00671821 	addu	v1,v1,a3
+  409484:	00031880 	sll	v1,v1,0x2
+  409488:	00662021 	addu	a0,v1,a2
+  40948c:	01711023 	subu	v0,t3,s1
+  409490:	ac820000 	sw	v0,0(a0)
+  409494:	8f82801c 	lw	v0,-32740(gp)
+  409498:	00000000 	nop
+  40949c:	24420904 	addiu	v0,v0,2308
+  4094a0:	8c420000 	lw	v0,0(v0)
+  4094a4:	00000000 	nop
+  4094a8:	01422021 	addu	a0,t2,v0
+  4094ac:	8c840004 	lw	a0,4(a0)
+  4094b0:	00621021 	addu	v0,v1,v0
+  4094b4:	ac440004 	sw	a0,4(v0)
+  4094b8:	8f84801c 	lw	a0,-32740(gp)
+  4094bc:	00000000 	nop
+  4094c0:	24840904 	addiu	a0,a0,2308
+  4094c4:	8c840000 	lw	a0,0(a0)
+  4094c8:	00000000 	nop
+  4094cc:	01441021 	addu	v0,t2,a0
+  4094d0:	8c420008 	lw	v0,8(v0)
+  4094d4:	00641821 	addu	v1,v1,a0
+  4094d8:	ac620008 	sw	v0,8(v1)
+  4094dc:	8f85801c 	lw	a1,-32740(gp)
+  4094e0:	00000000 	nop
+  4094e4:	24a50904 	addiu	a1,a1,2308
+  4094e8:	8ca50000 	lw	a1,0(a1)
+  4094ec:	00000000 	nop
+  4094f0:	01451021 	addu	v0,t2,a1
+  4094f4:	8c440008 	lw	a0,8(v0)
+  4094f8:	8c460004 	lw	a2,4(v0)
+  4094fc:	00041840 	sll	v1,a0,0x1
+  409500:	00061040 	sll	v0,a2,0x1
+  409504:	00641821 	addu	v1,v1,a0
+  409508:	00461021 	addu	v0,v0,a2
+  40950c:	00031880 	sll	v1,v1,0x2
+  409510:	00021080 	sll	v0,v0,0x2
+  409514:	00451021 	addu	v0,v0,a1
+  409518:	00651821 	addu	v1,v1,a1
+  40951c:	8f81801c 	lw	at,-32740(gp)
+  409520:	00000000 	nop
+  409524:	2421090c 	addiu	at,at,2316
+  409528:	ac270000 	sw	a3,0(at)
+  40952c:	ac470008 	sw	a3,8(v0)
+  409530:	ac670004 	sw	a3,4(v1)
+  409534:	8f83801c 	lw	v1,-32740(gp)
+  409538:	00000000 	nop
+  40953c:	24630904 	addiu	v1,v1,2308
+  409540:	8c630000 	lw	v1,0(v1)
+  409544:	01881021 	addu	v0,t4,t0
+  409548:	00021080 	sll	v0,v0,0x2
+  40954c:	00431821 	addu	v1,v0,v1
+  409550:	ac600000 	sw	zero,0(v1)
+  409554:	8f83801c 	lw	v1,-32740(gp)
+  409558:	00000000 	nop
+  40955c:	24630904 	addiu	v1,v1,2308
+  409560:	8c630000 	lw	v1,0(v1)
+  409564:	00000000 	nop
+  409568:	00431021 	addu	v0,v0,v1
+  40956c:	1000ff2f 	b	40922c <malloc+0x1fc>
+  409570:	ac510004 	sw	s1,4(v0)
+  409574:	8ca30004 	lw	v1,4(a1)
+  409578:	8ca40008 	lw	a0,8(a1)
+  40957c:	00031040 	sll	v0,v1,0x1
+  409580:	00431021 	addu	v0,v0,v1
+  409584:	00021080 	sll	v0,v0,0x2
+  409588:	00461021 	addu	v0,v0,a2
+  40958c:	ac440008 	sw	a0,8(v0)
+  409590:	8f85801c 	lw	a1,-32740(gp)
+  409594:	00000000 	nop
+  409598:	24a50904 	addiu	a1,a1,2308
+  40959c:	8ca50000 	lw	a1,0(a1)
+  4095a0:	00000000 	nop
+  4095a4:	01451021 	addu	v0,t2,a1
+  4095a8:	8c430008 	lw	v1,8(v0)
+  4095ac:	8c440004 	lw	a0,4(v0)
+  4095b0:	00031040 	sll	v0,v1,0x1
+  4095b4:	00431021 	addu	v0,v0,v1
+  4095b8:	00021080 	sll	v0,v0,0x2
+  4095bc:	00451021 	addu	v0,v0,a1
+  4095c0:	8f81801c 	lw	at,-32740(gp)
+  4095c4:	00000000 	nop
+  4095c8:	2421090c 	addiu	at,at,2316
+  4095cc:	ac240000 	sw	a0,0(at)
+  4095d0:	1000ffd8 	b	409534 <malloc+0x504>
+  4095d4:	ac440004 	sw	a0,4(v0)
+  4095d8:	8ca80008 	lw	t0,8(a1)
+  4095dc:	8f83801c 	lw	v1,-32740(gp)
+  4095e0:	00000000 	nop
+  4095e4:	24630910 	addiu	v1,v1,2320
+  4095e8:	8c630000 	lw	v1,0(v1)
+  4095ec:	00081040 	sll	v0,t0,0x1
+  4095f0:	00481021 	addu	v0,v0,t0
+  4095f4:	00021080 	sll	v0,v0,0x2
+  4095f8:	00451021 	addu	v0,v0,a1
+  4095fc:	8c420000 	lw	v0,0(v0)
+  409600:	14600029 	bnez	v1,4096a8 <malloc+0x678>
+  409604:	01028021 	addu	s0,t0,v0
+  409608:	00112300 	sll	a0,s1,0xc
+  40960c:	8f998018 	lw	t9,-32744(gp)
+  409610:	00000000 	nop
+  409614:	27398ce0 	addiu	t9,t9,-29472
+  409618:	00000000 	nop
+  40961c:	0320f809 	jalr	t9
+  409620:	00000000 	nop
+  409624:	8fbc0010 	lw	gp,16(sp)
+  409628:	00404821 	move	t1,v0
+  40962c:	1120ff00 	beqz	t1,409230 <malloc+0x200>
+  409630:	00000000 	nop
+  409634:	8f83801c 	lw	v1,-32740(gp)
+  409638:	00000000 	nop
+  40963c:	24630900 	addiu	v1,v1,2304
+  409640:	8c630000 	lw	v1,0(v1)
+  409644:	00000000 	nop
+  409648:	01231823 	subu	v1,t1,v1
+  40964c:	04600014 	bltz	v1,4096a0 <malloc+0x670>
+  409650:	00000000 	nop
+  409654:	00031b03 	sra	v1,v1,0xc
+  409658:	24680001 	addiu	t0,v1,1
+  40965c:	00082040 	sll	a0,t0,0x1
+  409660:	8f83801c 	lw	v1,-32740(gp)
+  409664:	00000000 	nop
+  409668:	24630904 	addiu	v1,v1,2308
+  40966c:	8c630000 	lw	v1,0(v1)
+  409670:	00882021 	addu	a0,a0,t0
+  409674:	00042080 	sll	a0,a0,0x2
+  409678:	00831821 	addu	v1,a0,v1
+  40967c:	ac600000 	sw	zero,0(v1)
+  409680:	8f83801c 	lw	v1,-32740(gp)
+  409684:	00000000 	nop
+  409688:	24630904 	addiu	v1,v1,2308
+  40968c:	8c630000 	lw	v1,0(v1)
+  409690:	00000000 	nop
+  409694:	00832021 	addu	a0,a0,v1
+  409698:	1000fee5 	b	409230 <malloc+0x200>
+  40969c:	ac910004 	sw	s1,4(a0)
+  4096a0:	1000ffec 	b	409654 <malloc+0x624>
+  4096a4:	24630fff 	addiu	v1,v1,4095
+  4096a8:	1603ffd7 	bne	s0,v1,409608 <malloc+0x5d8>
+  4096ac:	02229023 	subu	s2,s1,v0
+  4096b0:	8f998018 	lw	t9,-32744(gp)
+  4096b4:	00000000 	nop
+  4096b8:	27398fd8 	addiu	t9,t9,-28712
+  4096bc:	00000000 	nop
+  4096c0:	0320f809 	jalr	t9
+  4096c4:	00000000 	nop
+  4096c8:	8fbc0010 	lw	gp,16(sp)
+  4096cc:	2605ffff 	addiu	a1,s0,-1
+  4096d0:	8f83801c 	lw	v1,-32740(gp)
+  4096d4:	00000000 	nop
+  4096d8:	24630900 	addiu	v1,v1,2304
+  4096dc:	8c630000 	lw	v1,0(v1)
+  4096e0:	00052b00 	sll	a1,a1,0xc
+  4096e4:	00651821 	addu	v1,v1,a1
+  4096e8:	1443ffc7 	bne	v0,v1,409608 <malloc+0x5d8>
+  4096ec:	00122300 	sll	a0,s2,0xc
+  4096f0:	8f998018 	lw	t9,-32744(gp)
+  4096f4:	00000000 	nop
+  4096f8:	27398ce0 	addiu	t9,t9,-29472
+  4096fc:	00000000 	nop
+  409700:	0320f809 	jalr	t9
+  409704:	00000000 	nop
+  409708:	8fbc0010 	lw	gp,16(sp)
+  40970c:	1040ffbf 	beqz	v0,40960c <malloc+0x5dc>
+  409710:	00112300 	sll	a0,s1,0xc
+  409714:	8f82801c 	lw	v0,-32740(gp)
+  409718:	00000000 	nop
+  40971c:	24420904 	addiu	v0,v0,2308
+  409720:	8c420000 	lw	v0,0(v0)
+  409724:	00000000 	nop
+  409728:	8c480008 	lw	t0,8(v0)
+  40972c:	00000000 	nop
+  409730:	00081840 	sll	v1,t0,0x1
+  409734:	00681821 	addu	v1,v1,t0
+  409738:	00031880 	sll	v1,v1,0x2
+  40973c:	00621821 	addu	v1,v1,v0
+  409740:	8c620000 	lw	v0,0(v1)
+  409744:	00000000 	nop
+  409748:	00521021 	addu	v0,v0,s2
+  40974c:	1000ff2b 	b	4093fc <malloc+0x3cc>
+  409750:	ac620000 	sw	v0,0(v1)
+  409754:	8f998018 	lw	t9,-32744(gp)
+  409758:	00000000 	nop
+  40975c:	27398bb0 	addiu	t9,t9,-29776
+  409760:	00000000 	nop
+  409764:	0320f809 	jalr	t9
+  409768:	00000000 	nop
+  40976c:	8fbc0010 	lw	gp,16(sp)
+  409770:	00401821 	move	v1,v0
+  409774:	1460fe6f 	bnez	v1,409134 <malloc+0x104>
+  409778:	00000000 	nop
+  40977c:	1000feac 	b	409230 <malloc+0x200>
+  409780:	00000000 	nop
+
+00409784 <free>:
+  409784:	3c1c0fc0 	lui	gp,0xfc0
+  409788:	279ceacc 	addiu	gp,gp,-5428
+  40978c:	0399e021 	addu	gp,gp,t9
+  409790:	27bdffd8 	addiu	sp,sp,-40
+  409794:	afbc0010 	sw	gp,16(sp)
+  409798:	afb1001c 	sw	s1,28(sp)
+  40979c:	8f91801c 	lw	s1,-32740(gp)
+  4097a0:	00000000 	nop
+  4097a4:	263101b0 	addiu	s1,s1,432
+  4097a8:	afb00018 	sw	s0,24(sp)
+  4097ac:	00808021 	move	s0,a0
+  4097b0:	02202021 	move	a0,s1
+  4097b4:	afbf0024 	sw	ra,36(sp)
+  4097b8:	afbc0020 	sw	gp,32(sp)
+  4097bc:	8f9980a8 	lw	t9,-32600(gp)
+  4097c0:	00000000 	nop
+  4097c4:	0320f809 	jalr	t9
+  4097c8:	00000000 	nop
+  4097cc:	8fbc0010 	lw	gp,16(sp)
+  4097d0:	02002021 	move	a0,s0
+  4097d4:	8f998018 	lw	t9,-32744(gp)
+  4097d8:	00000000 	nop
+  4097dc:	2739981c 	addiu	t9,t9,-26596
+  4097e0:	00000000 	nop
+  4097e4:	0320f809 	jalr	t9
+  4097e8:	00000000 	nop
+  4097ec:	8fbc0010 	lw	gp,16(sp)
+  4097f0:	02202021 	move	a0,s1
+  4097f4:	8f99811c 	lw	t9,-32484(gp)
+  4097f8:	00000000 	nop
+  4097fc:	0320f809 	jalr	t9
+  409800:	00000000 	nop
+  409804:	8fbc0010 	lw	gp,16(sp)
+  409808:	8fbf0024 	lw	ra,36(sp)
+  40980c:	8fb1001c 	lw	s1,28(sp)
+  409810:	8fb00018 	lw	s0,24(sp)
+  409814:	03e00008 	jr	ra
+  409818:	27bd0028 	addiu	sp,sp,40
+  40981c:	3c1c0fc0 	lui	gp,0xfc0
+  409820:	279cea34 	addiu	gp,gp,-5580
+  409824:	0399e021 	addu	gp,gp,t9
+  409828:	27bdffd0 	addiu	sp,sp,-48
+  40982c:	afbc0010 	sw	gp,16(sp)
+  409830:	00804021 	move	t0,a0
+  409834:	afbf002c 	sw	ra,44(sp)
+  409838:	afbc0028 	sw	gp,40(sp)
+  40983c:	afb30024 	sw	s3,36(sp)
+  409840:	afb20020 	sw	s2,32(sp)
+  409844:	afb1001c 	sw	s1,28(sp)
+  409848:	1100003b 	beqz	t0,409938 <free+0x1b4>
+  40984c:	afb00018 	sw	s0,24(sp)
+  409850:	8f84801c 	lw	a0,-32740(gp)
+  409854:	00000000 	nop
+  409858:	24840900 	addiu	a0,a0,2304
+  40985c:	8c840000 	lw	a0,0(a0)
+  409860:	00000000 	nop
+  409864:	01041023 	subu	v0,t0,a0
+  409868:	0440017d 	bltz	v0,409e60 <free+0x6dc>
+  40986c:	00000000 	nop
+  409870:	00021303 	sra	v0,v0,0xc
+  409874:	24500001 	addiu	s0,v0,1
+  409878:	00105840 	sll	t3,s0,0x1
+  40987c:	8f89801c 	lw	t1,-32740(gp)
+  409880:	00000000 	nop
+  409884:	25290904 	addiu	t1,t1,2308
+  409888:	8d290000 	lw	t1,0(t1)
+  40988c:	01701021 	addu	v0,t3,s0
+  409890:	00021080 	sll	v0,v0,0x2
+  409894:	00492821 	addu	a1,v0,t1
+  409898:	8ca70000 	lw	a3,0(a1)
+  40989c:	00000000 	nop
+  4098a0:	10e00081 	beqz	a3,409aa8 <free+0x324>
+  4098a4:	24021000 	li	v0,4096
+  4098a8:	8ca30008 	lw	v1,8(a1)
+  4098ac:	00106300 	sll	t4,s0,0xc
+  4098b0:	008c2021 	addu	a0,a0,t4
+  4098b4:	00e31804 	sllv	v1,v1,a3
+  4098b8:	00e25007 	srav	t2,v0,a3
+  4098bc:	8ca50004 	lw	a1,4(a1)
+  4098c0:	00832021 	addu	a0,a0,v1
+  4098c4:	2542ffff 	addiu	v0,t2,-1
+  4098c8:	10a2003a 	beq	a1,v0,4099b4 <free+0x230>
+  4098cc:	2484f000 	addiu	a0,a0,-4096
+  4098d0:	01701021 	addu	v0,t3,s0
+  4098d4:	00022880 	sll	a1,v0,0x2
+  4098d8:	00a91821 	addu	v1,a1,t1
+  4098dc:	8c620004 	lw	v0,4(v1)
+  4098e0:	00000000 	nop
+  4098e4:	1040001b 	beqz	v0,409954 <free+0x1d0>
+  4098e8:	24020001 	li	v0,1
+  4098ec:	8c820000 	lw	v0,0(a0)
+  4098f0:	ad040004 	sw	a0,4(t0)
+  4098f4:	ad020000 	sw	v0,0(t0)
+  4098f8:	ac880000 	sw	t0,0(a0)
+  4098fc:	8d020000 	lw	v0,0(t0)
+  409900:	00000000 	nop
+  409904:	10400002 	beqz	v0,409910 <free+0x18c>
+  409908:	00000000 	nop
+  40990c:	ac480004 	sw	t0,4(v0)
+  409910:	8f83801c 	lw	v1,-32740(gp)
+  409914:	00000000 	nop
+  409918:	24630904 	addiu	v1,v1,2308
+  40991c:	8c630000 	lw	v1,0(v1)
+  409920:	00000000 	nop
+  409924:	00a31821 	addu	v1,a1,v1
+  409928:	8c620004 	lw	v0,4(v1)
+  40992c:	00000000 	nop
+  409930:	24420001 	addiu	v0,v0,1
+  409934:	ac620004 	sw	v0,4(v1)
+  409938:	8fbf002c 	lw	ra,44(sp)
+  40993c:	8fb30024 	lw	s3,36(sp)
+  409940:	8fb20020 	lw	s2,32(sp)
+  409944:	8fb1001c 	lw	s1,28(sp)
+  409948:	8fb00018 	lw	s0,24(sp)
+  40994c:	03e00008 	jr	ra
+  409950:	27bd0030 	addiu	sp,sp,48
+  409954:	ac620004 	sw	v0,4(v1)
+  409958:	8f82801c 	lw	v0,-32740(gp)
+  40995c:	00000000 	nop
+  409960:	24420904 	addiu	v0,v0,2308
+  409964:	8c420000 	lw	v0,0(v0)
+  409968:	31040fff 	andi	a0,t0,0xfff
+  40996c:	00a21021 	addu	v0,a1,v0
+  409970:	00e42006 	srlv	a0,a0,a3
+  409974:	000718c0 	sll	v1,a3,0x3
+  409978:	ac440008 	sw	a0,8(v0)
+  40997c:	8f81801c 	lw	at,-32740(gp)
+  409980:	00000000 	nop
+  409984:	24210944 	addiu	at,at,2372
+  409988:	00231821 	addu	v1,at,v1
+  40998c:	8c620000 	lw	v0,0(v1)
+  409990:	ad030004 	sw	v1,4(t0)
+  409994:	ad020000 	sw	v0,0(t0)
+  409998:	ac680000 	sw	t0,0(v1)
+  40999c:	8d020000 	lw	v0,0(t0)
+  4099a0:	00000000 	nop
+  4099a4:	1040ffe4 	beqz	v0,409938 <free+0x1b4>
+  4099a8:	00000000 	nop
+  4099ac:	1000ffe2 	b	409938 <free+0x1b4>
+  4099b0:	ac480004 	sw	t0,4(v0)
+  4099b4:	00071080 	sll	v0,a3,0x2
+  4099b8:	8f86801c 	lw	a2,-32740(gp)
+  4099bc:	00000000 	nop
+  4099c0:	24c60914 	addiu	a2,a2,2324
+  4099c4:	00c23021 	addu	a2,a2,v0
+  4099c8:	8cc30000 	lw	v1,0(a2)
+  4099cc:	00000000 	nop
+  4099d0:	2c620002 	sltiu	v0,v1,2
+  4099d4:	1440ffbf 	bnez	v0,4098d4 <free+0x150>
+  4099d8:	01701021 	addu	v0,t3,s0
+  4099dc:	24050001 	li	a1,1
+  4099e0:	2462ffff 	addiu	v0,v1,-1
+  4099e4:	00aa182a 	slt	v1,a1,t2
+  4099e8:	acc20000 	sw	v0,0(a2)
+  4099ec:	10600008 	beqz	v1,409a10 <free+0x28c>
+  4099f0:	00803021 	move	a2,a0
+  4099f4:	24021000 	li	v0,4096
+  4099f8:	00e21007 	srav	v0,v0,a3
+  4099fc:	24a50001 	addiu	a1,a1,1
+  409a00:	00a2102a 	slt	v0,a1,v0
+  409a04:	8cc60000 	lw	a2,0(a2)
+  409a08:	1440fffb 	bnez	v0,4099f8 <free+0x274>
+  409a0c:	24021000 	li	v0,4096
+  409a10:	8c820004 	lw	v0,4(a0)
+  409a14:	10c00004 	beqz	a2,409a28 <free+0x2a4>
+  409a18:	ac460000 	sw	a2,0(v0)
+  409a1c:	8c820004 	lw	v0,4(a0)
+  409a20:	00000000 	nop
+  409a24:	acc20004 	sw	v0,4(a2)
+  409a28:	8f82801c 	lw	v0,-32740(gp)
+  409a2c:	00000000 	nop
+  409a30:	24420904 	addiu	v0,v0,2308
+  409a34:	8c420000 	lw	v0,0(v0)
+  409a38:	01701821 	addu	v1,t3,s0
+  409a3c:	00031880 	sll	v1,v1,0x2
+  409a40:	00621021 	addu	v0,v1,v0
+  409a44:	ac400000 	sw	zero,0(v0)
+  409a48:	8f82801c 	lw	v0,-32740(gp)
+  409a4c:	00000000 	nop
+  409a50:	24420904 	addiu	v0,v0,2308
+  409a54:	8c420000 	lw	v0,0(v0)
+  409a58:	00000000 	nop
+  409a5c:	00621821 	addu	v1,v1,v0
+  409a60:	24020001 	li	v0,1
+  409a64:	ac620004 	sw	v0,4(v1)
+  409a68:	8f84801c 	lw	a0,-32740(gp)
+  409a6c:	00000000 	nop
+  409a70:	24840900 	addiu	a0,a0,2304
+  409a74:	8c840000 	lw	a0,0(a0)
+  409a78:	00000000 	nop
+  409a7c:	008c2021 	addu	a0,a0,t4
+  409a80:	2484f000 	addiu	a0,a0,-4096
+  409a84:	8f998018 	lw	t9,-32744(gp)
+  409a88:	00000000 	nop
+  409a8c:	2739981c 	addiu	t9,t9,-26596
+  409a90:	00000000 	nop
+  409a94:	0320f809 	jalr	t9
+  409a98:	00000000 	nop
+  409a9c:	8fbc0010 	lw	gp,16(sp)
+  409aa0:	1000ffa5 	b	409938 <free+0x1b4>
+  409aa4:	00000000 	nop
+  409aa8:	8f85801c 	lw	a1,-32740(gp)
+  409aac:	00000000 	nop
+  409ab0:	24a5090c 	addiu	a1,a1,2316
+  409ab4:	8ca50000 	lw	a1,0(a1)
+  409ab8:	00000000 	nop
+  409abc:	0205102a 	slt	v0,s0,a1
+  409ac0:	104000d7 	beqz	v0,409e20 <free+0x69c>
+  409ac4:	00051040 	sll	v0,a1,0x1
+  409ac8:	00451021 	addu	v0,v0,a1
+  409acc:	00021080 	sll	v0,v0,0x2
+  409ad0:	00491021 	addu	v0,v0,t1
+  409ad4:	8c450008 	lw	a1,8(v0)
+  409ad8:	00000000 	nop
+  409adc:	0205102a 	slt	v0,s0,a1
+  409ae0:	1440fff9 	bnez	v0,409ac8 <free+0x344>
+  409ae4:	00051040 	sll	v0,a1,0x1
+  409ae8:	00451021 	addu	v0,v0,a1
+  409aec:	8f83801c 	lw	v1,-32740(gp)
+  409af0:	00000000 	nop
+  409af4:	24630904 	addiu	v1,v1,2308
+  409af8:	8c630000 	lw	v1,0(v1)
+  409afc:	00023080 	sll	a2,v0,0x2
+  409b00:	00c33821 	addu	a3,a2,v1
+  409b04:	8ce40000 	lw	a0,0(a3)
+  409b08:	00000000 	nop
+  409b0c:	00a41021 	addu	v0,a1,a0
+  409b10:	120200bb 	beq	s0,v0,409e00 <free+0x67c>
+  409b14:	01701021 	addu	v0,t3,s0
+  409b18:	01702021 	addu	a0,t3,s0
+  409b1c:	00042080 	sll	a0,a0,0x2
+  409b20:	00831821 	addu	v1,a0,v1
+  409b24:	8c620004 	lw	v0,4(v1)
+  409b28:	00000000 	nop
+  409b2c:	ac620000 	sw	v0,0(v1)
+  409b30:	8f82801c 	lw	v0,-32740(gp)
+  409b34:	00000000 	nop
+  409b38:	24420904 	addiu	v0,v0,2308
+  409b3c:	8c420000 	lw	v0,0(v0)
+  409b40:	00000000 	nop
+  409b44:	00c21821 	addu	v1,a2,v0
+  409b48:	8c630004 	lw	v1,4(v1)
+  409b4c:	00821021 	addu	v0,a0,v0
+  409b50:	ac430004 	sw	v1,4(v0)
+  409b54:	8f82801c 	lw	v0,-32740(gp)
+  409b58:	00000000 	nop
+  409b5c:	24420904 	addiu	v0,v0,2308
+  409b60:	8c420000 	lw	v0,0(v0)
+  409b64:	00000000 	nop
+  409b68:	00821021 	addu	v0,a0,v0
+  409b6c:	ac450008 	sw	a1,8(v0)
+  409b70:	8f82801c 	lw	v0,-32740(gp)
+  409b74:	00000000 	nop
+  409b78:	24420904 	addiu	v0,v0,2308
+  409b7c:	8c420000 	lw	v0,0(v0)
+  409b80:	00000000 	nop
+  409b84:	00c21021 	addu	v0,a2,v0
+  409b88:	ac500004 	sw	s0,4(v0)
+  409b8c:	8f85801c 	lw	a1,-32740(gp)
+  409b90:	00000000 	nop
+  409b94:	24a50904 	addiu	a1,a1,2308
+  409b98:	8ca50000 	lw	a1,0(a1)
+  409b9c:	00000000 	nop
+  409ba0:	00852021 	addu	a0,a0,a1
+  409ba4:	8c830004 	lw	v1,4(a0)
+  409ba8:	00000000 	nop
+  409bac:	00031040 	sll	v0,v1,0x1
+  409bb0:	00431021 	addu	v0,v0,v1
+  409bb4:	00021080 	sll	v0,v0,0x2
+  409bb8:	00451021 	addu	v0,v0,a1
+  409bbc:	ac500008 	sw	s0,8(v0)
+  409bc0:	00101040 	sll	v0,s0,0x1
+  409bc4:	00501021 	addu	v0,v0,s0
+  409bc8:	8f86801c 	lw	a2,-32740(gp)
+  409bcc:	00000000 	nop
+  409bd0:	24c60904 	addiu	a2,a2,2308
+  409bd4:	8cc60000 	lw	a2,0(a2)
+  409bd8:	00029880 	sll	s3,v0,0x2
+  409bdc:	02662021 	addu	a0,s3,a2
+  409be0:	8c850000 	lw	a1,0(a0)
+  409be4:	8c820004 	lw	v0,4(a0)
+  409be8:	02051821 	addu	v1,s0,a1
+  409bec:	10620060 	beq	v1,v0,409d70 <free+0x5ec>
+  409bf0:	00031040 	sll	v0,v1,0x1
+  409bf4:	8f82801c 	lw	v0,-32740(gp)
+  409bf8:	00000000 	nop
+  409bfc:	24420904 	addiu	v0,v0,2308
+  409c00:	8c420000 	lw	v0,0(v0)
+  409c04:	00000000 	nop
+  409c08:	02621021 	addu	v0,s3,v0
+  409c0c:	8c510000 	lw	s1,0(v0)
+  409c10:	00000000 	nop
+  409c14:	2a220008 	slti	v0,s1,8
+  409c18:	14400008 	bnez	v0,409c3c <free+0x4b8>
+  409c1c:	02119021 	addu	s2,s0,s1
+  409c20:	8f82801c 	lw	v0,-32740(gp)
+  409c24:	00000000 	nop
+  409c28:	24420910 	addiu	v0,v0,2320
+  409c2c:	8c420000 	lw	v0,0(v0)
+  409c30:	00000000 	nop
+  409c34:	12420006 	beq	s2,v0,409c50 <free+0x4cc>
+  409c38:	00000000 	nop
+  409c3c:	8f81801c 	lw	at,-32740(gp)
+  409c40:	00000000 	nop
+  409c44:	2421090c 	addiu	at,at,2316
+  409c48:	1000ff3b 	b	409938 <free+0x1b4>
+  409c4c:	ac300000 	sw	s0,0(at)
+  409c50:	00002021 	move	a0,zero
+  409c54:	8f998018 	lw	t9,-32744(gp)
+  409c58:	00000000 	nop
+  409c5c:	27398fd8 	addiu	t9,t9,-28712
+  409c60:	00000000 	nop
+  409c64:	0320f809 	jalr	t9
+  409c68:	00000000 	nop
+  409c6c:	8fbc0010 	lw	gp,16(sp)
+  409c70:	00000000 	nop
+  409c74:	8f83801c 	lw	v1,-32740(gp)
+  409c78:	00000000 	nop
+  409c7c:	24630900 	addiu	v1,v1,2304
+  409c80:	8c630000 	lw	v1,0(v1)
+  409c84:	00122300 	sll	a0,s2,0xc
+  409c88:	00641821 	addu	v1,v1,a0
+  409c8c:	2463f000 	addiu	v1,v1,-4096
+  409c90:	1443ffea 	bne	v0,v1,409c3c <free+0x4b8>
+  409c94:	00000000 	nop
+  409c98:	8f82801c 	lw	v0,-32740(gp)
+  409c9c:	00000000 	nop
+  409ca0:	24420910 	addiu	v0,v0,2320
+  409ca4:	8c420000 	lw	v0,0(v0)
+  409ca8:	00112023 	negu	a0,s1
+  409cac:	00042300 	sll	a0,a0,0xc
+  409cb0:	00511023 	subu	v0,v0,s1
+  409cb4:	8f81801c 	lw	at,-32740(gp)
+  409cb8:	00000000 	nop
+  409cbc:	24210910 	addiu	at,at,2320
+  409cc0:	ac220000 	sw	v0,0(at)
+  409cc4:	8f998018 	lw	t9,-32744(gp)
+  409cc8:	00000000 	nop
+  409ccc:	27398fd8 	addiu	t9,t9,-28712
+  409cd0:	00000000 	nop
+  409cd4:	0320f809 	jalr	t9
+  409cd8:	00000000 	nop
+  409cdc:	8fbc0010 	lw	gp,16(sp)
+  409ce0:	00000000 	nop
+  409ce4:	8f84801c 	lw	a0,-32740(gp)
+  409ce8:	00000000 	nop
+  409cec:	24840904 	addiu	a0,a0,2308
+  409cf0:	8c840000 	lw	a0,0(a0)
+  409cf4:	00000000 	nop
+  409cf8:	02641021 	addu	v0,s3,a0
+  409cfc:	8c430008 	lw	v1,8(v0)
+  409d00:	8c450004 	lw	a1,4(v0)
+  409d04:	00031040 	sll	v0,v1,0x1
+  409d08:	00431021 	addu	v0,v0,v1
+  409d0c:	00021080 	sll	v0,v0,0x2
+  409d10:	00441021 	addu	v0,v0,a0
+  409d14:	ac450004 	sw	a1,4(v0)
+  409d18:	8f84801c 	lw	a0,-32740(gp)
+  409d1c:	00000000 	nop
+  409d20:	24840904 	addiu	a0,a0,2308
+  409d24:	8c840000 	lw	a0,0(a0)
+  409d28:	00000000 	nop
+  409d2c:	02641021 	addu	v0,s3,a0
+  409d30:	8c430004 	lw	v1,4(v0)
+  409d34:	8c450008 	lw	a1,8(v0)
+  409d38:	00031040 	sll	v0,v1,0x1
+  409d3c:	00431021 	addu	v0,v0,v1
+  409d40:	00021080 	sll	v0,v0,0x2
+  409d44:	00441021 	addu	v0,v0,a0
+  409d48:	ac450008 	sw	a1,8(v0)
+  409d4c:	8f82801c 	lw	v0,-32740(gp)
+  409d50:	00000000 	nop
+  409d54:	24420904 	addiu	v0,v0,2308
+  409d58:	8c420000 	lw	v0,0(v0)
+  409d5c:	00000000 	nop
+  409d60:	02621021 	addu	v0,s3,v0
+  409d64:	8c500008 	lw	s0,8(v0)
+  409d68:	1000ffb4 	b	409c3c <free+0x4b8>
+  409d6c:	00000000 	nop
+  409d70:	00431021 	addu	v0,v0,v1
+  409d74:	00021080 	sll	v0,v0,0x2
+  409d78:	00461021 	addu	v0,v0,a2
+  409d7c:	8c420000 	lw	v0,0(v0)
+  409d80:	00000000 	nop
+  409d84:	00a21021 	addu	v0,a1,v0
+  409d88:	ac820000 	sw	v0,0(a0)
+  409d8c:	8f84801c 	lw	a0,-32740(gp)
+  409d90:	00000000 	nop
+  409d94:	24840904 	addiu	a0,a0,2308
+  409d98:	8c840000 	lw	a0,0(a0)
+  409d9c:	00000000 	nop
+  409da0:	02642821 	addu	a1,s3,a0
+  409da4:	8ca30004 	lw	v1,4(a1)
+  409da8:	00000000 	nop
+  409dac:	00031040 	sll	v0,v1,0x1
+  409db0:	00431021 	addu	v0,v0,v1
+  409db4:	00021080 	sll	v0,v0,0x2
+  409db8:	00441021 	addu	v0,v0,a0
+  409dbc:	8c420004 	lw	v0,4(v0)
+  409dc0:	00000000 	nop
+  409dc4:	aca20004 	sw	v0,4(a1)
+  409dc8:	8f84801c 	lw	a0,-32740(gp)
+  409dcc:	00000000 	nop
+  409dd0:	24840904 	addiu	a0,a0,2308
+  409dd4:	8c840000 	lw	a0,0(a0)
+  409dd8:	00000000 	nop
+  409ddc:	02641021 	addu	v0,s3,a0
+  409de0:	8c430004 	lw	v1,4(v0)
+  409de4:	00000000 	nop
+  409de8:	00031040 	sll	v0,v1,0x1
+  409dec:	00431021 	addu	v0,v0,v1
+  409df0:	00021080 	sll	v0,v0,0x2
+  409df4:	00441021 	addu	v0,v0,a0
+  409df8:	1000ff7e 	b	409bf4 <free+0x470>
+  409dfc:	ac500008 	sw	s0,8(v0)
+  409e00:	00021080 	sll	v0,v0,0x2
+  409e04:	00431021 	addu	v0,v0,v1
+  409e08:	8c420004 	lw	v0,4(v0)
+  409e0c:	00a08021 	move	s0,a1
+  409e10:	00821021 	addu	v0,a0,v0
+  409e14:	1000ff6a 	b	409bc0 <free+0x43c>
+  409e18:	ace20000 	sw	v0,0(a3)
+  409e1c:	00051040 	sll	v0,a1,0x1
+  409e20:	00451021 	addu	v0,v0,a1
+  409e24:	00021080 	sll	v0,v0,0x2
+  409e28:	00491021 	addu	v0,v0,t1
+  409e2c:	8c450004 	lw	a1,4(v0)
+  409e30:	00000000 	nop
+  409e34:	18a00003 	blez	a1,409e44 <free+0x6c0>
+  409e38:	00b0102a 	slt	v0,a1,s0
+  409e3c:	1440fff7 	bnez	v0,409e1c <free+0x698>
+  409e40:	00000000 	nop
+  409e44:	00051040 	sll	v0,a1,0x1
+  409e48:	00451021 	addu	v0,v0,a1
+  409e4c:	00021080 	sll	v0,v0,0x2
+  409e50:	00491021 	addu	v0,v0,t1
+  409e54:	8c450008 	lw	a1,8(v0)
+  409e58:	1000ff23 	b	409ae8 <free+0x364>
+  409e5c:	00051040 	sll	v0,a1,0x1
+  409e60:	1000fe83 	b	409870 <free+0xec>
+  409e64:	24420fff 	addiu	v0,v0,4095
+
+00409e68 <realloc>:
+  409e68:	3c1c0fc0 	lui	gp,0xfc0
+  409e6c:	279ce3e8 	addiu	gp,gp,-7192
+  409e70:	0399e021 	addu	gp,gp,t9
+  409e74:	27bdffc0 	addiu	sp,sp,-64
+  409e78:	afbc0010 	sw	gp,16(sp)
+  409e7c:	afb5002c 	sw	s5,44(sp)
+  409e80:	0080a821 	move	s5,a0
+  409e84:	afb40028 	sw	s4,40(sp)
+  409e88:	afbf0038 	sw	ra,56(sp)
+  409e8c:	afbc0034 	sw	gp,52(sp)
+  409e90:	afb60030 	sw	s6,48(sp)
+  409e94:	afb30024 	sw	s3,36(sp)
+  409e98:	afb20020 	sw	s2,32(sp)
+  409e9c:	afb1001c 	sw	s1,28(sp)
+  409ea0:	afb00018 	sw	s0,24(sp)
+  409ea4:	12a0012e 	beqz	s5,40a360 <realloc+0x4f8>
+  409ea8:	00a0a021 	move	s4,a1
+  409eac:	12800107 	beqz	s4,40a2cc <realloc+0x464>
+  409eb0:	00000000 	nop
+  409eb4:	8f96801c 	lw	s6,-32740(gp)
+  409eb8:	00000000 	nop
+  409ebc:	26d601b0 	addiu	s6,s6,432
+  409ec0:	00000000 	nop
+  409ec4:	02c02021 	move	a0,s6
+  409ec8:	8f9980a8 	lw	t9,-32600(gp)
+  409ecc:	00000000 	nop
+  409ed0:	0320f809 	jalr	t9
+  409ed4:	00000000 	nop
+  409ed8:	8fbc0010 	lw	gp,16(sp)
+  409edc:	00000000 	nop
+  409ee0:	8f82801c 	lw	v0,-32740(gp)
+  409ee4:	00000000 	nop
+  409ee8:	24420900 	addiu	v0,v0,2304
+  409eec:	8c420000 	lw	v0,0(v0)
+  409ef0:	00000000 	nop
+  409ef4:	02a21023 	subu	v0,s5,v0
+  409ef8:	044000f2 	bltz	v0,40a2c4 <realloc+0x45c>
+  409efc:	00000000 	nop
+  409f00:	00021303 	sra	v0,v0,0xc
+  409f04:	24530001 	addiu	s3,v0,1
+  409f08:	00131040 	sll	v0,s3,0x1
+  409f0c:	00531021 	addu	v0,v0,s3
+  409f10:	8f88801c 	lw	t0,-32740(gp)
+  409f14:	00000000 	nop
+  409f18:	25080904 	addiu	t0,t0,2308
+  409f1c:	8d080000 	lw	t0,0(t0)
+  409f20:	00023880 	sll	a3,v0,0x2
+  409f24:	00e82021 	addu	a0,a3,t0
+  409f28:	8c900000 	lw	s0,0(a0)
+  409f2c:	00000000 	nop
+  409f30:	1200003b 	beqz	s0,40a020 <realloc+0x1b8>
+  409f34:	2602ffff 	addiu	v0,s0,-1
+  409f38:	24030001 	li	v1,1
+  409f3c:	00431004 	sllv	v0,v1,v0
+  409f40:	0054102b 	sltu	v0,v0,s4
+  409f44:	10400016 	beqz	v0,409fa0 <realloc+0x138>
+  409f48:	02802021 	move	a0,s4
+  409f4c:	02031004 	sllv	v0,v1,s0
+  409f50:	0054102b 	sltu	v0,v0,s4
+  409f54:	14400012 	bnez	v0,409fa0 <realloc+0x138>
+  409f58:	00000000 	nop
+  409f5c:	02c02021 	move	a0,s6
+  409f60:	8f99811c 	lw	t9,-32484(gp)
+  409f64:	00000000 	nop
+  409f68:	0320f809 	jalr	t9
+  409f6c:	00000000 	nop
+  409f70:	8fbc0010 	lw	gp,16(sp)
+  409f74:	02a01021 	move	v0,s5
+  409f78:	8fbf0038 	lw	ra,56(sp)
+  409f7c:	8fb60030 	lw	s6,48(sp)
+  409f80:	8fb5002c 	lw	s5,44(sp)
+  409f84:	8fb40028 	lw	s4,40(sp)
+  409f88:	8fb30024 	lw	s3,36(sp)
+  409f8c:	8fb20020 	lw	s2,32(sp)
+  409f90:	8fb1001c 	lw	s1,28(sp)
+  409f94:	8fb00018 	lw	s0,24(sp)
+  409f98:	03e00008 	jr	ra
+  409f9c:	27bd0040 	addiu	sp,sp,64
+  409fa0:	8f998018 	lw	t9,-32744(gp)
+  409fa4:	00000000 	nop
+  409fa8:	273990d0 	addiu	t9,t9,-28464
+  409fac:	00000000 	nop
+  409fb0:	0320f809 	jalr	t9
+  409fb4:	00000000 	nop
+  409fb8:	8fbc0010 	lw	gp,16(sp)
+  409fbc:	00408821 	move	s1,v0
+  409fc0:	122000ac 	beqz	s1,40a274 <realloc+0x40c>
+  409fc4:	00000000 	nop
+  409fc8:	24020001 	li	v0,1
+  409fcc:	02023004 	sllv	a2,v0,s0
+  409fd0:	0286102b 	sltu	v0,s4,a2
+  409fd4:	10400002 	beqz	v0,409fe0 <realloc+0x178>
+  409fd8:	02a02821 	move	a1,s5
+  409fdc:	02803021 	move	a2,s4
+  409fe0:	02202021 	move	a0,s1
+  409fe4:	8f998254 	lw	t9,-32172(gp)
+  409fe8:	00000000 	nop
+  409fec:	0320f809 	jalr	t9
+  409ff0:	00000000 	nop
+  409ff4:	8fbc0010 	lw	gp,16(sp)
+  409ff8:	02a02021 	move	a0,s5
+  409ffc:	8f998018 	lw	t9,-32744(gp)
+  40a000:	00000000 	nop
+  40a004:	2739981c 	addiu	t9,t9,-26596
+  40a008:	00000000 	nop
+  40a00c:	0320f809 	jalr	t9
+  40a010:	00000000 	nop
+  40a014:	8fbc0010 	lw	gp,16(sp)
+  40a018:	100000c7 	b	40a338 <realloc+0x4d0>
+  40a01c:	00000000 	nop
+  40a020:	2e820801 	sltiu	v0,s4,2049
+  40a024:	1040001d 	beqz	v0,40a09c <realloc+0x234>
+  40a028:	26820fff 	addiu	v0,s4,4095
+  40a02c:	02802021 	move	a0,s4
+  40a030:	8f998018 	lw	t9,-32744(gp)
+  40a034:	00000000 	nop
+  40a038:	273990d0 	addiu	t9,t9,-28464
+  40a03c:	00000000 	nop
+  40a040:	0320f809 	jalr	t9
+  40a044:	00000000 	nop
+  40a048:	8fbc0010 	lw	gp,16(sp)
+  40a04c:	00408821 	move	s1,v0
+  40a050:	122000b9 	beqz	s1,40a338 <realloc+0x4d0>
+  40a054:	02202021 	move	a0,s1
+  40a058:	02803021 	move	a2,s4
+  40a05c:	02a02821 	move	a1,s5
+  40a060:	8f998254 	lw	t9,-32172(gp)
+  40a064:	00000000 	nop
+  40a068:	0320f809 	jalr	t9
+  40a06c:	00000000 	nop
+  40a070:	8fbc0010 	lw	gp,16(sp)
+  40a074:	02a02021 	move	a0,s5
+  40a078:	8f998018 	lw	t9,-32744(gp)
+  40a07c:	00000000 	nop
+  40a080:	2739981c 	addiu	t9,t9,-26596
+  40a084:	00000000 	nop
+  40a088:	0320f809 	jalr	t9
+  40a08c:	00000000 	nop
+  40a090:	8fbc0010 	lw	gp,16(sp)
+  40a094:	100000a8 	b	40a338 <realloc+0x4d0>
+  40a098:	00000000 	nop
+  40a09c:	8c920004 	lw	s2,4(a0)
+  40a0a0:	00023302 	srl	a2,v0,0xc
+  40a0a4:	00d2102b 	sltu	v0,a2,s2
+  40a0a8:	10400026 	beqz	v0,40a144 <realloc+0x2dc>
+  40a0ac:	02662821 	addu	a1,s3,a2
+  40a0b0:	00051840 	sll	v1,a1,0x1
+  40a0b4:	00651821 	addu	v1,v1,a1
+  40a0b8:	00031880 	sll	v1,v1,0x2
+  40a0bc:	00681021 	addu	v0,v1,t0
+  40a0c0:	ac400000 	sw	zero,0(v0)
+  40a0c4:	8f84801c 	lw	a0,-32740(gp)
+  40a0c8:	00000000 	nop
+  40a0cc:	24840904 	addiu	a0,a0,2308
+  40a0d0:	8c840000 	lw	a0,0(a0)
+  40a0d4:	24a5ffff 	addiu	a1,a1,-1
+  40a0d8:	00e41021 	addu	v0,a3,a0
+  40a0dc:	8c420004 	lw	v0,4(v0)
+  40a0e0:	00641821 	addu	v1,v1,a0
+  40a0e4:	00461023 	subu	v0,v0,a2
+  40a0e8:	ac620004 	sw	v0,4(v1)
+  40a0ec:	8f82801c 	lw	v0,-32740(gp)
+  40a0f0:	00000000 	nop
+  40a0f4:	24420904 	addiu	v0,v0,2308
+  40a0f8:	8c420000 	lw	v0,0(v0)
+  40a0fc:	00052b00 	sll	a1,a1,0xc
+  40a100:	00e21021 	addu	v0,a3,v0
+  40a104:	ac460004 	sw	a2,4(v0)
+  40a108:	8f84801c 	lw	a0,-32740(gp)
+  40a10c:	00000000 	nop
+  40a110:	24840900 	addiu	a0,a0,2304
+  40a114:	8c840000 	lw	a0,0(a0)
+  40a118:	00000000 	nop
+  40a11c:	00852021 	addu	a0,a0,a1
+  40a120:	8f998018 	lw	t9,-32744(gp)
+  40a124:	00000000 	nop
+  40a128:	2739981c 	addiu	t9,t9,-26596
+  40a12c:	00000000 	nop
+  40a130:	0320f809 	jalr	t9
+  40a134:	00000000 	nop
+  40a138:	8fbc0010 	lw	gp,16(sp)
+  40a13c:	1000ff88 	b	409f60 <realloc+0xf8>
+  40a140:	02c02021 	move	a0,s6
+  40a144:	10d2ff85 	beq	a2,s2,409f5c <realloc+0xf4>
+  40a148:	02a02021 	move	a0,s5
+  40a14c:	8f90801c 	lw	s0,-32740(gp)
+  40a150:	00000000 	nop
+  40a154:	26100910 	addiu	s0,s0,2320
+  40a158:	8e100000 	lw	s0,0(s0)
+  40a15c:	8f81801c 	lw	at,-32740(gp)
+  40a160:	00000000 	nop
+  40a164:	24210910 	addiu	at,at,2320
+  40a168:	ac200000 	sw	zero,0(at)
+  40a16c:	8f998018 	lw	t9,-32744(gp)
+  40a170:	00000000 	nop
+  40a174:	2739981c 	addiu	t9,t9,-26596
+  40a178:	00000000 	nop
+  40a17c:	0320f809 	jalr	t9
+  40a180:	00000000 	nop
+  40a184:	8fbc0010 	lw	gp,16(sp)
+  40a188:	02802021 	move	a0,s4
+  40a18c:	8f81801c 	lw	at,-32740(gp)
+  40a190:	00000000 	nop
+  40a194:	24210910 	addiu	at,at,2320
+  40a198:	ac300000 	sw	s0,0(at)
+  40a19c:	8f998018 	lw	t9,-32744(gp)
+  40a1a0:	00000000 	nop
+  40a1a4:	273990d0 	addiu	t9,t9,-28464
+  40a1a8:	00000000 	nop
+  40a1ac:	0320f809 	jalr	t9
+  40a1b0:	00000000 	nop
+  40a1b4:	8fbc0010 	lw	gp,16(sp)
+  40a1b8:	00408821 	move	s1,v0
+  40a1bc:	1220000c 	beqz	s1,40a1f0 <realloc+0x388>
+  40a1c0:	00000000 	nop
+  40a1c4:	12b1005c 	beq	s5,s1,40a338 <realloc+0x4d0>
+  40a1c8:	00123300 	sll	a2,s2,0xc
+  40a1cc:	02a02821 	move	a1,s5
+  40a1d0:	02202021 	move	a0,s1
+  40a1d4:	8f998284 	lw	t9,-32124(gp)
+  40a1d8:	00000000 	nop
+  40a1dc:	0320f809 	jalr	t9
+  40a1e0:	00000000 	nop
+  40a1e4:	8fbc0010 	lw	gp,16(sp)
+  40a1e8:	10000053 	b	40a338 <realloc+0x4d0>
+  40a1ec:	00000000 	nop
+  40a1f0:	8f82801c 	lw	v0,-32740(gp)
+  40a1f4:	00000000 	nop
+  40a1f8:	2442090c 	addiu	v0,v0,2316
+  40a1fc:	8c420000 	lw	v0,0(v0)
+  40a200:	00000000 	nop
+  40a204:	10530025 	beq	v0,s3,40a29c <realloc+0x434>
+  40a208:	02622023 	subu	a0,s3,v0
+  40a20c:	00042300 	sll	a0,a0,0xc
+  40a210:	8f998018 	lw	t9,-32744(gp)
+  40a214:	00000000 	nop
+  40a218:	273990d0 	addiu	t9,t9,-28464
+  40a21c:	00000000 	nop
+  40a220:	0320f809 	jalr	t9
+  40a224:	00000000 	nop
+  40a228:	8fbc0010 	lw	gp,16(sp)
+  40a22c:	00408021 	move	s0,v0
+  40a230:	00122300 	sll	a0,s2,0xc
+  40a234:	8f998018 	lw	t9,-32744(gp)
+  40a238:	00000000 	nop
+  40a23c:	273990d0 	addiu	t9,t9,-28464
+  40a240:	00000000 	nop
+  40a244:	0320f809 	jalr	t9
+  40a248:	00000000 	nop
+  40a24c:	8fbc0010 	lw	gp,16(sp)
+  40a250:	02002021 	move	a0,s0
+  40a254:	8f998018 	lw	t9,-32744(gp)
+  40a258:	00000000 	nop
+  40a25c:	2739981c 	addiu	t9,t9,-26596
+  40a260:	00000000 	nop
+  40a264:	0320f809 	jalr	t9
+  40a268:	00000000 	nop
+  40a26c:	8fbc0010 	lw	gp,16(sp)
+  40a270:	00000000 	nop
+  40a274:	8f84801c 	lw	a0,-32740(gp)
+  40a278:	00000000 	nop
+  40a27c:	248401b0 	addiu	a0,a0,432
+  40a280:	8f99811c 	lw	t9,-32484(gp)
+  40a284:	00000000 	nop
+  40a288:	0320f809 	jalr	t9
+  40a28c:	00000000 	nop
+  40a290:	8fbc0010 	lw	gp,16(sp)
+  40a294:	1000ff38 	b	409f78 <realloc+0x110>
+  40a298:	00001021 	move	v0,zero
+  40a29c:	00122300 	sll	a0,s2,0xc
+  40a2a0:	8f998018 	lw	t9,-32744(gp)
+  40a2a4:	00000000 	nop
+  40a2a8:	273990d0 	addiu	t9,t9,-28464
+  40a2ac:	00000000 	nop
+  40a2b0:	0320f809 	jalr	t9
+  40a2b4:	00000000 	nop
+  40a2b8:	8fbc0010 	lw	gp,16(sp)
+  40a2bc:	1000ffed 	b	40a274 <realloc+0x40c>
+  40a2c0:	00000000 	nop
+  40a2c4:	1000ff0e 	b	409f00 <realloc+0x98>
+  40a2c8:	24420fff 	addiu	v0,v0,4095
+  40a2cc:	8f90801c 	lw	s0,-32740(gp)
+  40a2d0:	00000000 	nop
+  40a2d4:	261001b0 	addiu	s0,s0,432
+  40a2d8:	00000000 	nop
+  40a2dc:	02002021 	move	a0,s0
+  40a2e0:	8f9980a8 	lw	t9,-32600(gp)
+  40a2e4:	00000000 	nop
+  40a2e8:	0320f809 	jalr	t9
+  40a2ec:	00000000 	nop
+  40a2f0:	8fbc0010 	lw	gp,16(sp)
+  40a2f4:	02a02021 	move	a0,s5
+  40a2f8:	8f998018 	lw	t9,-32744(gp)
+  40a2fc:	00000000 	nop
+  40a300:	2739981c 	addiu	t9,t9,-26596
+  40a304:	00000000 	nop
+  40a308:	0320f809 	jalr	t9
+  40a30c:	00000000 	nop
+  40a310:	8fbc0010 	lw	gp,16(sp)
+  40a314:	00002021 	move	a0,zero
+  40a318:	8f998018 	lw	t9,-32744(gp)
+  40a31c:	00000000 	nop
+  40a320:	273990d0 	addiu	t9,t9,-28464
+  40a324:	00000000 	nop
+  40a328:	0320f809 	jalr	t9
+  40a32c:	00000000 	nop
+  40a330:	8fbc0010 	lw	gp,16(sp)
+  40a334:	00408821 	move	s1,v0
+  40a338:	8f84801c 	lw	a0,-32740(gp)
+  40a33c:	00000000 	nop
+  40a340:	248401b0 	addiu	a0,a0,432
+  40a344:	8f99811c 	lw	t9,-32484(gp)
+  40a348:	00000000 	nop
+  40a34c:	0320f809 	jalr	t9
+  40a350:	00000000 	nop
+  40a354:	8fbc0010 	lw	gp,16(sp)
+  40a358:	1000ff07 	b	409f78 <realloc+0x110>
+  40a35c:	02201021 	move	v0,s1
+  40a360:	02802021 	move	a0,s4
+  40a364:	8f998230 	lw	t9,-32208(gp)
+  40a368:	00000000 	nop
+  40a36c:	0320f809 	jalr	t9
+  40a370:	00000000 	nop
+  40a374:	8fbc0010 	lw	gp,16(sp)
+  40a378:	1000feff 	b	409f78 <realloc+0x110>
+  40a37c:	00000000 	nop
+
+0040a380 <_exit>:
+  40a380:	3c1c0fc0 	lui	gp,0xfc0
+  40a384:	279cded0 	addiu	gp,gp,-8496
+  40a388:	0399e021 	addu	gp,gp,t9
+  40a38c:	27bdffd8 	addiu	sp,sp,-40
+  40a390:	afbc0010 	sw	gp,16(sp)
+  40a394:	afbf0020 	sw	ra,32(sp)
+  40a398:	afbc001c 	sw	gp,28(sp)
+  40a39c:	afb00018 	sw	s0,24(sp)
+  40a3a0:	00801821 	move	v1,a0
+  40a3a4:	00602021 	move	a0,v1
+  40a3a8:	24020fa1 	li	v0,4001
+  40a3ac:	0000000c 	syscall
+  40a3b0:	00408021 	move	s0,v0
+  40a3b4:	00e01821 	move	v1,a3
+  40a3b8:	10600007 	beqz	v1,40a3d8 <_exit+0x58>
+  40a3bc:	00000000 	nop
+  40a3c0:	8f9980a0 	lw	t9,-32608(gp)
+  40a3c4:	00000000 	nop
+  40a3c8:	0320f809 	jalr	t9
+  40a3cc:	00000000 	nop
+  40a3d0:	8fbc0010 	lw	gp,16(sp)
+  40a3d4:	ac500000 	sw	s0,0(v0)
+  40a3d8:	8fbf0020 	lw	ra,32(sp)
+  40a3dc:	8fb00018 	lw	s0,24(sp)
+  40a3e0:	03e00008 	jr	ra
+  40a3e4:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040a3f0 <sbrk>:
+  40a3f0:	3c1c0fc0 	lui	gp,0xfc0
+  40a3f4:	279cde60 	addiu	gp,gp,-8608
+  40a3f8:	0399e021 	addu	gp,gp,t9
+  40a3fc:	27bdffd8 	addiu	sp,sp,-40
+  40a400:	afbc0010 	sw	gp,16(sp)
+  40a404:	8f82820c 	lw	v0,-32244(gp)
+  40a408:	00000000 	nop
+  40a40c:	8c420000 	lw	v0,0(v0)
+  40a410:	afb1001c 	sw	s1,28(sp)
+  40a414:	afbf0024 	sw	ra,36(sp)
+  40a418:	00808821 	move	s1,a0
+  40a41c:	afbc0020 	sw	gp,32(sp)
+  40a420:	afb00018 	sw	s0,24(sp)
+  40a424:	1040001b 	beqz	v0,40a494 <sbrk+0xa4>
+  40a428:	00002021 	move	a0,zero
+  40a42c:	12200014 	beqz	s1,40a480 <sbrk+0x90>
+  40a430:	00000000 	nop
+  40a434:	8f90820c 	lw	s0,-32244(gp)
+  40a438:	00000000 	nop
+  40a43c:	8e100000 	lw	s0,0(s0)
+  40a440:	00000000 	nop
+  40a444:	02112021 	addu	a0,s0,s1
+  40a448:	8f998088 	lw	t9,-32632(gp)
+  40a44c:	00000000 	nop
+  40a450:	0320f809 	jalr	t9
+  40a454:	00000000 	nop
+  40a458:	8fbc0010 	lw	gp,16(sp)
+  40a45c:	00401821 	move	v1,v0
+  40a460:	04600002 	bltz	v1,40a46c <sbrk+0x7c>
+  40a464:	2402ffff 	li	v0,-1
+  40a468:	02001021 	move	v0,s0
+  40a46c:	8fbf0024 	lw	ra,36(sp)
+  40a470:	8fb1001c 	lw	s1,28(sp)
+  40a474:	8fb00018 	lw	s0,24(sp)
+  40a478:	03e00008 	jr	ra
+  40a47c:	27bd0028 	addiu	sp,sp,40
+  40a480:	8f82820c 	lw	v0,-32244(gp)
+  40a484:	00000000 	nop
+  40a488:	8c420000 	lw	v0,0(v0)
+  40a48c:	1000fff7 	b	40a46c <sbrk+0x7c>
+  40a490:	00000000 	nop
+  40a494:	8f998088 	lw	t9,-32632(gp)
+  40a498:	00000000 	nop
+  40a49c:	0320f809 	jalr	t9
+  40a4a0:	00000000 	nop
+  40a4a4:	8fbc0010 	lw	gp,16(sp)
+  40a4a8:	00401821 	move	v1,v0
+  40a4ac:	0461ffdf 	bgez	v1,40a42c <sbrk+0x3c>
+  40a4b0:	2402ffff 	li	v0,-1
+  40a4b4:	1000ffed 	b	40a46c <sbrk+0x7c>
+  40a4b8:	00000000 	nop
+  40a4bc:	00000000 	nop
+
+0040a4c0 <__libc_read>:
+  40a4c0:	3c1c0fc0 	lui	gp,0xfc0
+  40a4c4:	279cdd90 	addiu	gp,gp,-8816
+  40a4c8:	0399e021 	addu	gp,gp,t9
+  40a4cc:	27bdffd8 	addiu	sp,sp,-40
+  40a4d0:	afbc0010 	sw	gp,16(sp)
+  40a4d4:	afb1001c 	sw	s1,28(sp)
+  40a4d8:	afb00018 	sw	s0,24(sp)
+  40a4dc:	afbf0024 	sw	ra,36(sp)
+  40a4e0:	afbc0020 	sw	gp,32(sp)
+  40a4e4:	00808821 	move	s1,a0
+  40a4e8:	00a08021 	move	s0,a1
+  40a4ec:	00c01821 	move	v1,a2
+  40a4f0:	02202021 	move	a0,s1
+  40a4f4:	02002821 	move	a1,s0
+  40a4f8:	00603021 	move	a2,v1
+  40a4fc:	24020fa3 	li	v0,4003
+  40a500:	0000000c 	syscall
+  40a504:	00408021 	move	s0,v0
+  40a508:	00e01821 	move	v1,a3
+  40a50c:	10600009 	beqz	v1,40a534 <__libc_read+0x74>
+  40a510:	02001021 	move	v0,s0
+  40a514:	8f9980a0 	lw	t9,-32608(gp)
+  40a518:	00000000 	nop
+  40a51c:	0320f809 	jalr	t9
+  40a520:	00000000 	nop
+  40a524:	8fbc0010 	lw	gp,16(sp)
+  40a528:	00401821 	move	v1,v0
+  40a52c:	ac700000 	sw	s0,0(v1)
+  40a530:	2402ffff 	li	v0,-1
+  40a534:	8fbf0024 	lw	ra,36(sp)
+  40a538:	8fb1001c 	lw	s1,28(sp)
+  40a53c:	8fb00018 	lw	s0,24(sp)
+  40a540:	03e00008 	jr	ra
+  40a544:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040a550 <__libc_write>:
+  40a550:	3c1c0fc0 	lui	gp,0xfc0
+  40a554:	279cdd00 	addiu	gp,gp,-8960
+  40a558:	0399e021 	addu	gp,gp,t9
+  40a55c:	27bdffd8 	addiu	sp,sp,-40
+  40a560:	afbc0010 	sw	gp,16(sp)
+  40a564:	afb1001c 	sw	s1,28(sp)
+  40a568:	afb00018 	sw	s0,24(sp)
+  40a56c:	afbf0024 	sw	ra,36(sp)
+  40a570:	afbc0020 	sw	gp,32(sp)
+  40a574:	00808821 	move	s1,a0
+  40a578:	00a08021 	move	s0,a1
+  40a57c:	00c01821 	move	v1,a2
+  40a580:	02202021 	move	a0,s1
+  40a584:	02002821 	move	a1,s0
+  40a588:	00603021 	move	a2,v1
+  40a58c:	24020fa4 	li	v0,4004
+  40a590:	0000000c 	syscall
+  40a594:	00408021 	move	s0,v0
+  40a598:	00e01821 	move	v1,a3
+  40a59c:	10600009 	beqz	v1,40a5c4 <__libc_write+0x74>
+  40a5a0:	02001021 	move	v0,s0
+  40a5a4:	8f9980a0 	lw	t9,-32608(gp)
+  40a5a8:	00000000 	nop
+  40a5ac:	0320f809 	jalr	t9
+  40a5b0:	00000000 	nop
+  40a5b4:	8fbc0010 	lw	gp,16(sp)
+  40a5b8:	00401821 	move	v1,v0
+  40a5bc:	ac700000 	sw	s0,0(v1)
+  40a5c0:	2402ffff 	li	v0,-1
+  40a5c4:	8fbf0024 	lw	ra,36(sp)
+  40a5c8:	8fb1001c 	lw	s1,28(sp)
+  40a5cc:	8fb00018 	lw	s0,24(sp)
+  40a5d0:	03e00008 	jr	ra
+  40a5d4:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040a5e0 <__libc_open>:
+  40a5e0:	3c1c0fc0 	lui	gp,0xfc0
+  40a5e4:	279cdc70 	addiu	gp,gp,-9104
+  40a5e8:	0399e021 	addu	gp,gp,t9
+  40a5ec:	27bdffd8 	addiu	sp,sp,-40
+  40a5f0:	afbc0010 	sw	gp,16(sp)
+  40a5f4:	afb1001c 	sw	s1,28(sp)
+  40a5f8:	afb00018 	sw	s0,24(sp)
+  40a5fc:	afbf0024 	sw	ra,36(sp)
+  40a600:	afbc0020 	sw	gp,32(sp)
+  40a604:	00808821 	move	s1,a0
+  40a608:	00a08021 	move	s0,a1
+  40a60c:	00c01821 	move	v1,a2
+  40a610:	02202021 	move	a0,s1
+  40a614:	02002821 	move	a1,s0
+  40a618:	00603021 	move	a2,v1
+  40a61c:	24020fa5 	li	v0,4005
+  40a620:	0000000c 	syscall
+  40a624:	00408021 	move	s0,v0
+  40a628:	00e01821 	move	v1,a3
+  40a62c:	10600009 	beqz	v1,40a654 <__libc_open+0x74>
+  40a630:	02001021 	move	v0,s0
+  40a634:	8f9980a0 	lw	t9,-32608(gp)
+  40a638:	00000000 	nop
+  40a63c:	0320f809 	jalr	t9
+  40a640:	00000000 	nop
+  40a644:	8fbc0010 	lw	gp,16(sp)
+  40a648:	00401821 	move	v1,v0
+  40a64c:	ac700000 	sw	s0,0(v1)
+  40a650:	2402ffff 	li	v0,-1
+  40a654:	8fbf0024 	lw	ra,36(sp)
+  40a658:	8fb1001c 	lw	s1,28(sp)
+  40a65c:	8fb00018 	lw	s0,24(sp)
+  40a660:	03e00008 	jr	ra
+  40a664:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040a670 <__libc_close>:
+  40a670:	3c1c0fc0 	lui	gp,0xfc0
+  40a674:	279cdbe0 	addiu	gp,gp,-9248
+  40a678:	0399e021 	addu	gp,gp,t9
+  40a67c:	27bdffd8 	addiu	sp,sp,-40
+  40a680:	afbc0010 	sw	gp,16(sp)
+  40a684:	afbf0020 	sw	ra,32(sp)
+  40a688:	afbc001c 	sw	gp,28(sp)
+  40a68c:	afb00018 	sw	s0,24(sp)
+  40a690:	00801821 	move	v1,a0
+  40a694:	00602021 	move	a0,v1
+  40a698:	24020fa6 	li	v0,4006
+  40a69c:	0000000c 	syscall
+  40a6a0:	00408021 	move	s0,v0
+  40a6a4:	00e01821 	move	v1,a3
+  40a6a8:	10600009 	beqz	v1,40a6d0 <__libc_close+0x60>
+  40a6ac:	02001021 	move	v0,s0
+  40a6b0:	8f9980a0 	lw	t9,-32608(gp)
+  40a6b4:	00000000 	nop
+  40a6b8:	0320f809 	jalr	t9
+  40a6bc:	00000000 	nop
+  40a6c0:	8fbc0010 	lw	gp,16(sp)
+  40a6c4:	00401821 	move	v1,v0
+  40a6c8:	ac700000 	sw	s0,0(v1)
+  40a6cc:	2402ffff 	li	v0,-1
+  40a6d0:	8fbf0020 	lw	ra,32(sp)
+  40a6d4:	8fb00018 	lw	s0,24(sp)
+  40a6d8:	03e00008 	jr	ra
+  40a6dc:	27bd0028 	addiu	sp,sp,40
+
+0040a6e0 <_ioctl>:
+  40a6e0:	3c1c0fc0 	lui	gp,0xfc0
+  40a6e4:	279cdb70 	addiu	gp,gp,-9360
+  40a6e8:	0399e021 	addu	gp,gp,t9
+  40a6ec:	27bdffd8 	addiu	sp,sp,-40
+  40a6f0:	afbc0010 	sw	gp,16(sp)
+  40a6f4:	afb1001c 	sw	s1,28(sp)
+  40a6f8:	afb00018 	sw	s0,24(sp)
+  40a6fc:	afbf0024 	sw	ra,36(sp)
+  40a700:	afbc0020 	sw	gp,32(sp)
+  40a704:	00808821 	move	s1,a0
+  40a708:	00a08021 	move	s0,a1
+  40a70c:	00c01821 	move	v1,a2
+  40a710:	02202021 	move	a0,s1
+  40a714:	02002821 	move	a1,s0
+  40a718:	00603021 	move	a2,v1
+  40a71c:	24020fd6 	li	v0,4054
+  40a720:	0000000c 	syscall
+  40a724:	00408021 	move	s0,v0
+  40a728:	00e01821 	move	v1,a3
+  40a72c:	10600009 	beqz	v1,40a754 <_ioctl+0x74>
+  40a730:	02001021 	move	v0,s0
+  40a734:	8f9980a0 	lw	t9,-32608(gp)
+  40a738:	00000000 	nop
+  40a73c:	0320f809 	jalr	t9
+  40a740:	00000000 	nop
+  40a744:	8fbc0010 	lw	gp,16(sp)
+  40a748:	00401821 	move	v1,v0
+  40a74c:	ac700000 	sw	s0,0(v1)
+  40a750:	2402ffff 	li	v0,-1
+  40a754:	8fbf0024 	lw	ra,36(sp)
+  40a758:	8fb1001c 	lw	s1,28(sp)
+  40a75c:	8fb00018 	lw	s0,24(sp)
+  40a760:	03e00008 	jr	ra
+  40a764:	27bd0028 	addiu	sp,sp,40
+
+0040a768 <ioctl>:
+  40a768:	3c1c0fc0 	lui	gp,0xfc0
+  40a76c:	279cdae8 	addiu	gp,gp,-9496
+  40a770:	0399e021 	addu	gp,gp,t9
+  40a774:	27bdffe0 	addiu	sp,sp,-32
+  40a778:	afbc0010 	sw	gp,16(sp)
+  40a77c:	27a2002b 	addiu	v0,sp,43
+  40a780:	2403fffc 	li	v1,-4
+  40a784:	afbf001c 	sw	ra,28(sp)
+  40a788:	afa50024 	sw	a1,36(sp)
+  40a78c:	afa60028 	sw	a2,40(sp)
+  40a790:	afa7002c 	sw	a3,44(sp)
+  40a794:	afbc0018 	sw	gp,24(sp)
+  40a798:	00431024 	and	v0,v0,v1
+  40a79c:	8c460000 	lw	a2,0(v0)
+  40a7a0:	8f998090 	lw	t9,-32624(gp)
+  40a7a4:	00000000 	nop
+  40a7a8:	0320f809 	jalr	t9
+  40a7ac:	00000000 	nop
+  40a7b0:	8fbc0010 	lw	gp,16(sp)
+  40a7b4:	8fbf001c 	lw	ra,28(sp)
+  40a7b8:	00000000 	nop
+  40a7bc:	03e00008 	jr	ra
+  40a7c0:	27bd0020 	addiu	sp,sp,32
+	...
+
+0040a7d0 <brk>:
+  40a7d0:	3c1c0fc0 	lui	gp,0xfc0
+  40a7d4:	279cda80 	addiu	gp,gp,-9600
+  40a7d8:	0399e021 	addu	gp,gp,t9
+  40a7dc:	27bdffe0 	addiu	sp,sp,-32
+  40a7e0:	afbc0010 	sw	gp,16(sp)
+  40a7e4:	00801821 	move	v1,a0
+  40a7e8:	24020fcd 	li	v0,4045
+  40a7ec:	00602021 	move	a0,v1
+  40a7f0:	0000000c 	syscall
+  40a7f4:	0043182b 	sltu	v1,v0,v1
+  40a7f8:	afbf001c 	sw	ra,28(sp)
+  40a7fc:	afbc0018 	sw	gp,24(sp)
+  40a800:	8f81820c 	lw	at,-32244(gp)
+  40a804:	00000000 	nop
+  40a808:	ac220000 	sw	v0,0(at)
+  40a80c:	1060000a 	beqz	v1,40a838 <brk+0x68>
+  40a810:	00001021 	move	v0,zero
+  40a814:	8f9980a0 	lw	t9,-32608(gp)
+  40a818:	00000000 	nop
+  40a81c:	0320f809 	jalr	t9
+  40a820:	00000000 	nop
+  40a824:	8fbc0010 	lw	gp,16(sp)
+  40a828:	00402021 	move	a0,v0
+  40a82c:	2403000c 	li	v1,12
+  40a830:	2402ffff 	li	v0,-1
+  40a834:	ac830000 	sw	v1,0(a0)
+  40a838:	8fbf001c 	lw	ra,28(sp)
+  40a83c:	00000000 	nop
+  40a840:	03e00008 	jr	ra
+  40a844:	27bd0020 	addiu	sp,sp,32
+	...
+
+0040a850 <usleep>:
+  40a850:	3c1c0fc0 	lui	gp,0xfc0
+  40a854:	279cda00 	addiu	gp,gp,-9728
+  40a858:	0399e021 	addu	gp,gp,t9
+  40a85c:	27bdffd8 	addiu	sp,sp,-40
+  40a860:	afbc0010 	sw	gp,16(sp)
+  40a864:	3c06431b 	lui	a2,0x431b
+  40a868:	00803821 	move	a3,a0
+  40a86c:	34c6de83 	ori	a2,a2,0xde83
+  40a870:	00e60019 	multu	a3,a2
+  40a874:	27a40018 	addiu	a0,sp,24
+  40a878:	00002821 	move	a1,zero
+  40a87c:	afbf0024 	sw	ra,36(sp)
+  40a880:	afbc0020 	sw	gp,32(sp)
+  40a884:	00003010 	mfhi	a2
+  40a888:	00063482 	srl	a2,a2,0x12
+  40a88c:	00061940 	sll	v1,a2,0x5
+  40a890:	00661823 	subu	v1,v1,a2
+  40a894:	00031180 	sll	v0,v1,0x6
+  40a898:	00431023 	subu	v0,v0,v1
+  40a89c:	000210c0 	sll	v0,v0,0x3
+  40a8a0:	00461021 	addu	v0,v0,a2
+  40a8a4:	00021180 	sll	v0,v0,0x6
+  40a8a8:	00e23823 	subu	a3,a3,v0
+  40a8ac:	00071140 	sll	v0,a3,0x5
+  40a8b0:	00471023 	subu	v0,v0,a3
+  40a8b4:	00021080 	sll	v0,v0,0x2
+  40a8b8:	00471021 	addu	v0,v0,a3
+  40a8bc:	000210c0 	sll	v0,v0,0x3
+  40a8c0:	afa2001c 	sw	v0,28(sp)
+  40a8c4:	afa60018 	sw	a2,24(sp)
+  40a8c8:	8f9981d4 	lw	t9,-32300(gp)
+  40a8cc:	00000000 	nop
+  40a8d0:	0320f809 	jalr	t9
+  40a8d4:	00000000 	nop
+  40a8d8:	8fbc0010 	lw	gp,16(sp)
+  40a8dc:	8fbf0024 	lw	ra,36(sp)
+  40a8e0:	00000000 	nop
+  40a8e4:	03e00008 	jr	ra
+  40a8e8:	27bd0028 	addiu	sp,sp,40
+  40a8ec:	00000000 	nop
+
+0040a8f0 <isxdigit>:
+  40a8f0:	3c1c0fc0 	lui	gp,0xfc0
+  40a8f4:	279cd960 	addiu	gp,gp,-9888
+  40a8f8:	0399e021 	addu	gp,gp,t9
+  40a8fc:	34820020 	ori	v0,a0,0x20
+  40a900:	2484ffd0 	addiu	a0,a0,-48
+  40a904:	2442ff9f 	addiu	v0,v0,-97
+  40a908:	2c84000a 	sltiu	a0,a0,10
+  40a90c:	2c420006 	sltiu	v0,v0,6
+  40a910:	14800003 	bnez	a0,40a920 <isxdigit+0x30>
+  40a914:	00001821 	move	v1,zero
+  40a918:	10400002 	beqz	v0,40a924 <isxdigit+0x34>
+  40a91c:	00000000 	nop
+  40a920:	24030001 	li	v1,1
+  40a924:	03e00008 	jr	ra
+  40a928:	00601021 	move	v0,v1
+  40a92c:	00000000 	nop
+
+0040a930 <tolower>:
+  40a930:	3c1c0fc0 	lui	gp,0xfc0
+  40a934:	279cd920 	addiu	gp,gp,-9952
+  40a938:	0399e021 	addu	gp,gp,t9
+  40a93c:	2482ffbf 	addiu	v0,a0,-65
+  40a940:	2c42001a 	sltiu	v0,v0,26
+  40a944:	10400002 	beqz	v0,40a950 <tolower+0x20>
+  40a948:	00000000 	nop
+  40a94c:	34840020 	ori	a0,a0,0x20
+  40a950:	03e00008 	jr	ra
+  40a954:	00801021 	move	v0,a0
+	...
+
+0040a960 <pthread_exit>:
+  40a960:	3c1c0fc0 	lui	gp,0xfc0
+  40a964:	279cd8f0 	addiu	gp,gp,-10000
+  40a968:	0399e021 	addu	gp,gp,t9
+  40a96c:	27bdffe0 	addiu	sp,sp,-32
+  40a970:	afbc0010 	sw	gp,16(sp)
+  40a974:	00002021 	move	a0,zero
+  40a978:	afbf001c 	sw	ra,28(sp)
+  40a97c:	afbc0018 	sw	gp,24(sp)
+  40a980:	8f99809c 	lw	t9,-32612(gp)
+  40a984:	00000000 	nop
+  40a988:	0320f809 	jalr	t9
+  40a98c:	00000000 	nop
+  40a990:	8fbc0010 	lw	gp,16(sp)
+  40a994:	00000000 	nop
+
+0040a998 <__pthread_return_0>:
+  40a998:	3c1c0fc0 	lui	gp,0xfc0
+  40a99c:	279cd8b8 	addiu	gp,gp,-10056
+  40a9a0:	0399e021 	addu	gp,gp,t9
+  40a9a4:	03e00008 	jr	ra
+  40a9a8:	00001021 	move	v0,zero
+
+0040a9ac <__pthread_return_1>:
+  40a9ac:	3c1c0fc0 	lui	gp,0xfc0
+  40a9b0:	279cd8a4 	addiu	gp,gp,-10076
+  40a9b4:	0399e021 	addu	gp,gp,t9
+  40a9b8:	03e00008 	jr	ra
+  40a9bc:	24020001 	li	v0,1
+
+0040a9c0 <__pthread_return_void>:
+  40a9c0:	3c1c0fc0 	lui	gp,0xfc0
+  40a9c4:	279cd890 	addiu	gp,gp,-10096
+  40a9c8:	0399e021 	addu	gp,gp,t9
+  40a9cc:	03e00008 	jr	ra
+  40a9d0:	00000000 	nop
+	...
+
+0040a9e0 <fgetc>:
+  40a9e0:	3c1c0fc0 	lui	gp,0xfc0
+  40a9e4:	279cd870 	addiu	gp,gp,-10128
+  40a9e8:	0399e021 	addu	gp,gp,t9
+  40a9ec:	27bdffd8 	addiu	sp,sp,-40
+  40a9f0:	afbc0010 	sw	gp,16(sp)
+  40a9f4:	afb00018 	sw	s0,24(sp)
+  40a9f8:	afbf0024 	sw	ra,36(sp)
+  40a9fc:	00808021 	move	s0,a0
+  40aa00:	afbc0020 	sw	gp,32(sp)
+  40aa04:	afb1001c 	sw	s1,28(sp)
+  40aa08:	8e020038 	lw	v0,56(s0)
+  40aa0c:	00000000 	nop
+  40aa10:	10400019 	beqz	v0,40aa78 <fgetc+0x98>
+  40aa14:	2604003c 	addiu	a0,s0,60
+  40aa18:	02002021 	move	a0,s0
+  40aa1c:	8f9980b0 	lw	t9,-32592(gp)
+  40aa20:	00000000 	nop
+  40aa24:	0320f809 	jalr	t9
+  40aa28:	00000000 	nop
+  40aa2c:	8fbc0010 	lw	gp,16(sp)
+  40aa30:	00408821 	move	s1,v0
+  40aa34:	8e020038 	lw	v0,56(s0)
+  40aa38:	00000000 	nop
+  40aa3c:	10400007 	beqz	v0,40aa5c <fgetc+0x7c>
+  40aa40:	2604003c 	addiu	a0,s0,60
+  40aa44:	02201021 	move	v0,s1
+  40aa48:	8fbf0024 	lw	ra,36(sp)
+  40aa4c:	8fb1001c 	lw	s1,28(sp)
+  40aa50:	8fb00018 	lw	s0,24(sp)
+  40aa54:	03e00008 	jr	ra
+  40aa58:	27bd0028 	addiu	sp,sp,40
+  40aa5c:	8f99811c 	lw	t9,-32484(gp)
+  40aa60:	00000000 	nop
+  40aa64:	0320f809 	jalr	t9
+  40aa68:	00000000 	nop
+  40aa6c:	8fbc0010 	lw	gp,16(sp)
+  40aa70:	1000fff5 	b	40aa48 <fgetc+0x68>
+  40aa74:	02201021 	move	v0,s1
+  40aa78:	8f9980a8 	lw	t9,-32600(gp)
+  40aa7c:	00000000 	nop
+  40aa80:	0320f809 	jalr	t9
+  40aa84:	00000000 	nop
+  40aa88:	8fbc0010 	lw	gp,16(sp)
+  40aa8c:	1000ffe3 	b	40aa1c <fgetc+0x3c>
+  40aa90:	02002021 	move	a0,s0
+
+0040aa94 <fgetc_unlocked>:
+  40aa94:	3c1c0fc0 	lui	gp,0xfc0
+  40aa98:	279cd7bc 	addiu	gp,gp,-10308
+  40aa9c:	0399e021 	addu	gp,gp,t9
+  40aaa0:	27bdffd8 	addiu	sp,sp,-40
+  40aaa4:	afbc0010 	sw	gp,16(sp)
+  40aaa8:	00803021 	move	a2,a0
+  40aaac:	24050001 	li	a1,1
+  40aab0:	27a40018 	addiu	a0,sp,24
+  40aab4:	afbf0024 	sw	ra,36(sp)
+  40aab8:	afbc0020 	sw	gp,32(sp)
+  40aabc:	8f998158 	lw	t9,-32424(gp)
+  40aac0:	00000000 	nop
+  40aac4:	0320f809 	jalr	t9
+  40aac8:	00000000 	nop
+  40aacc:	8fbc0010 	lw	gp,16(sp)
+  40aad0:	10400002 	beqz	v0,40aadc <fgetc_unlocked+0x48>
+  40aad4:	2403ffff 	li	v1,-1
+  40aad8:	93a30018 	lbu	v1,24(sp)
+  40aadc:	8fbf0024 	lw	ra,36(sp)
+  40aae0:	00601021 	move	v0,v1
+  40aae4:	03e00008 	jr	ra
+  40aae8:	27bd0028 	addiu	sp,sp,40
+  40aaec:	00000000 	nop
+
+0040aaf0 <fputc>:
+  40aaf0:	3c1c0fc0 	lui	gp,0xfc0
+  40aaf4:	279cd760 	addiu	gp,gp,-10400
+  40aaf8:	0399e021 	addu	gp,gp,t9
+  40aafc:	27bdffd8 	addiu	sp,sp,-40
+  40ab00:	afbc0010 	sw	gp,16(sp)
+  40ab04:	afb1001c 	sw	s1,28(sp)
+  40ab08:	afb00018 	sw	s0,24(sp)
+  40ab0c:	afbf0024 	sw	ra,36(sp)
+  40ab10:	00a08021 	move	s0,a1
+  40ab14:	afbc0020 	sw	gp,32(sp)
+  40ab18:	8e030038 	lw	v1,56(s0)
+  40ab1c:	2602003c 	addiu	v0,s0,60
+  40ab20:	00808821 	move	s1,a0
+  40ab24:	1060001a 	beqz	v1,40ab90 <fputc+0xa0>
+  40ab28:	00402021 	move	a0,v0
+  40ab2c:	02202021 	move	a0,s1
+  40ab30:	02002821 	move	a1,s0
+  40ab34:	8f998044 	lw	t9,-32700(gp)
+  40ab38:	00000000 	nop
+  40ab3c:	0320f809 	jalr	t9
+  40ab40:	00000000 	nop
+  40ab44:	8fbc0010 	lw	gp,16(sp)
+  40ab48:	00408821 	move	s1,v0
+  40ab4c:	8e020038 	lw	v0,56(s0)
+  40ab50:	00000000 	nop
+  40ab54:	10400007 	beqz	v0,40ab74 <fputc+0x84>
+  40ab58:	2604003c 	addiu	a0,s0,60
+  40ab5c:	02201021 	move	v0,s1
+  40ab60:	8fbf0024 	lw	ra,36(sp)
+  40ab64:	8fb1001c 	lw	s1,28(sp)
+  40ab68:	8fb00018 	lw	s0,24(sp)
+  40ab6c:	03e00008 	jr	ra
+  40ab70:	27bd0028 	addiu	sp,sp,40
+  40ab74:	8f99811c 	lw	t9,-32484(gp)
+  40ab78:	00000000 	nop
+  40ab7c:	0320f809 	jalr	t9
+  40ab80:	00000000 	nop
+  40ab84:	8fbc0010 	lw	gp,16(sp)
+  40ab88:	1000fff5 	b	40ab60 <fputc+0x70>
+  40ab8c:	02201021 	move	v0,s1
+  40ab90:	8f9980a8 	lw	t9,-32600(gp)
+  40ab94:	00000000 	nop
+  40ab98:	0320f809 	jalr	t9
+  40ab9c:	00000000 	nop
+  40aba0:	8fbc0010 	lw	gp,16(sp)
+  40aba4:	1000ffe2 	b	40ab30 <fputc+0x40>
+  40aba8:	02202021 	move	a0,s1
+
+0040abac <fputc_unlocked>:
+  40abac:	3c1c0fc0 	lui	gp,0xfc0
+  40abb0:	279cd6a4 	addiu	gp,gp,-10588
+  40abb4:	0399e021 	addu	gp,gp,t9
+  40abb8:	27bdffd8 	addiu	sp,sp,-40
+  40abbc:	afbc0010 	sw	gp,16(sp)
+  40abc0:	00801021 	move	v0,a0
+  40abc4:	00a03021 	move	a2,a1
+  40abc8:	27a40018 	addiu	a0,sp,24
+  40abcc:	24050001 	li	a1,1
+  40abd0:	afbf0024 	sw	ra,36(sp)
+  40abd4:	afbc0020 	sw	gp,32(sp)
+  40abd8:	a3a20018 	sb	v0,24(sp)
+  40abdc:	8f9982a4 	lw	t9,-32092(gp)
+  40abe0:	00000000 	nop
+  40abe4:	0320f809 	jalr	t9
+  40abe8:	00000000 	nop
+  40abec:	8fbc0010 	lw	gp,16(sp)
+  40abf0:	10400002 	beqz	v0,40abfc <fputc_unlocked+0x50>
+  40abf4:	2403ffff 	li	v1,-1
+  40abf8:	93a30018 	lbu	v1,24(sp)
+  40abfc:	8fbf0024 	lw	ra,36(sp)
+  40ac00:	00601021 	move	v0,v1
+  40ac04:	03e00008 	jr	ra
+  40ac08:	27bd0028 	addiu	sp,sp,40
+  40ac0c:	00000000 	nop
+
+0040ac10 <fputs>:
+  40ac10:	3c1c0fc0 	lui	gp,0xfc0
+  40ac14:	279cd640 	addiu	gp,gp,-10688
+  40ac18:	0399e021 	addu	gp,gp,t9
+  40ac1c:	27bdffd8 	addiu	sp,sp,-40
+  40ac20:	afbc0010 	sw	gp,16(sp)
+  40ac24:	afb1001c 	sw	s1,28(sp)
+  40ac28:	afb00018 	sw	s0,24(sp)
+  40ac2c:	afbf0024 	sw	ra,36(sp)
+  40ac30:	00a08021 	move	s0,a1
+  40ac34:	afbc0020 	sw	gp,32(sp)
+  40ac38:	8e030038 	lw	v1,56(s0)
+  40ac3c:	2602003c 	addiu	v0,s0,60
+  40ac40:	00808821 	move	s1,a0
+  40ac44:	1060001a 	beqz	v1,40acb0 <fputs+0xa0>
+  40ac48:	00402021 	move	a0,v0
+  40ac4c:	02202021 	move	a0,s1
+  40ac50:	02002821 	move	a1,s0
+  40ac54:	8f9981bc 	lw	t9,-32324(gp)
+  40ac58:	00000000 	nop
+  40ac5c:	0320f809 	jalr	t9
+  40ac60:	00000000 	nop
+  40ac64:	8fbc0010 	lw	gp,16(sp)
+  40ac68:	00408821 	move	s1,v0
+  40ac6c:	8e020038 	lw	v0,56(s0)
+  40ac70:	00000000 	nop
+  40ac74:	10400007 	beqz	v0,40ac94 <fputs+0x84>
+  40ac78:	2604003c 	addiu	a0,s0,60
+  40ac7c:	02201021 	move	v0,s1
+  40ac80:	8fbf0024 	lw	ra,36(sp)
+  40ac84:	8fb1001c 	lw	s1,28(sp)
+  40ac88:	8fb00018 	lw	s0,24(sp)
+  40ac8c:	03e00008 	jr	ra
+  40ac90:	27bd0028 	addiu	sp,sp,40
+  40ac94:	8f99811c 	lw	t9,-32484(gp)
+  40ac98:	00000000 	nop
+  40ac9c:	0320f809 	jalr	t9
+  40aca0:	00000000 	nop
+  40aca4:	8fbc0010 	lw	gp,16(sp)
+  40aca8:	1000fff5 	b	40ac80 <fputs+0x70>
+  40acac:	02201021 	move	v0,s1
+  40acb0:	8f9980a8 	lw	t9,-32600(gp)
+  40acb4:	00000000 	nop
+  40acb8:	0320f809 	jalr	t9
+  40acbc:	00000000 	nop
+  40acc0:	8fbc0010 	lw	gp,16(sp)
+  40acc4:	1000ffe2 	b	40ac50 <fputs+0x40>
+  40acc8:	02202021 	move	a0,s1
+
+0040accc <fputs_unlocked>:
+  40accc:	3c1c0fc0 	lui	gp,0xfc0
+  40acd0:	279cd584 	addiu	gp,gp,-10876
+  40acd4:	0399e021 	addu	gp,gp,t9
+  40acd8:	27bdffd0 	addiu	sp,sp,-48
+  40acdc:	afbc0010 	sw	gp,16(sp)
+  40ace0:	afb20020 	sw	s2,32(sp)
+  40ace4:	afb1001c 	sw	s1,28(sp)
+  40ace8:	afb00018 	sw	s0,24(sp)
+  40acec:	afbf0028 	sw	ra,40(sp)
+  40acf0:	afbc0024 	sw	gp,36(sp)
+  40acf4:	00a09021 	move	s2,a1
+  40acf8:	00808021 	move	s0,a0
+  40acfc:	8f998068 	lw	t9,-32664(gp)
+  40ad00:	00000000 	nop
+  40ad04:	0320f809 	jalr	t9
+  40ad08:	00000000 	nop
+  40ad0c:	8fbc0010 	lw	gp,16(sp)
+  40ad10:	00408821 	move	s1,v0
+  40ad14:	02002021 	move	a0,s0
+  40ad18:	02202821 	move	a1,s1
+  40ad1c:	02403021 	move	a2,s2
+  40ad20:	8f9982a4 	lw	t9,-32092(gp)
+  40ad24:	00000000 	nop
+  40ad28:	0320f809 	jalr	t9
+  40ad2c:	00000000 	nop
+  40ad30:	8fbc0010 	lw	gp,16(sp)
+  40ad34:	10510002 	beq	v0,s1,40ad40 <fputs_unlocked+0x74>
+  40ad38:	00401821 	move	v1,v0
+  40ad3c:	2403ffff 	li	v1,-1
+  40ad40:	8fbf0028 	lw	ra,40(sp)
+  40ad44:	8fb20020 	lw	s2,32(sp)
+  40ad48:	8fb1001c 	lw	s1,28(sp)
+  40ad4c:	8fb00018 	lw	s0,24(sp)
+  40ad50:	00601021 	move	v0,v1
+  40ad54:	03e00008 	jr	ra
+  40ad58:	27bd0030 	addiu	sp,sp,48
+  40ad5c:	00000000 	nop
+
+0040ad60 <ungetc>:
+  40ad60:	3c1c0fc0 	lui	gp,0xfc0
+  40ad64:	279cd4f0 	addiu	gp,gp,-11024
+  40ad68:	0399e021 	addu	gp,gp,t9
+  40ad6c:	27bdffd8 	addiu	sp,sp,-40
+  40ad70:	afbc0010 	sw	gp,16(sp)
+  40ad74:	afb00018 	sw	s0,24(sp)
+  40ad78:	00a08021 	move	s0,a1
+  40ad7c:	8e020038 	lw	v0,56(s0)
+  40ad80:	afb1001c 	sw	s1,28(sp)
+  40ad84:	afbf0024 	sw	ra,36(sp)
+  40ad88:	afbc0020 	sw	gp,32(sp)
+  40ad8c:	10400036 	beqz	v0,40ae68 <ungetc+0x108>
+  40ad90:	00808821 	move	s1,a0
+  40ad94:	96030000 	lhu	v1,0(s0)
+  40ad98:	00000000 	nop
+  40ad9c:	30620012 	andi	v0,v1,0x12
+  40ada0:	10400014 	beqz	v0,40adf4 <ungetc+0x94>
+  40ada4:	30620001 	andi	v0,v1,0x1
+  40ada8:	2411ffff 	li	s1,-1
+  40adac:	8e020038 	lw	v0,56(s0)
+  40adb0:	00000000 	nop
+  40adb4:	10400007 	beqz	v0,40add4 <ungetc+0x74>
+  40adb8:	00000000 	nop
+  40adbc:	02201021 	move	v0,s1
+  40adc0:	8fbf0024 	lw	ra,36(sp)
+  40adc4:	8fb1001c 	lw	s1,28(sp)
+  40adc8:	8fb00018 	lw	s0,24(sp)
+  40adcc:	03e00008 	jr	ra
+  40add0:	27bd0028 	addiu	sp,sp,40
+  40add4:	2604003c 	addiu	a0,s0,60
+  40add8:	8f99811c 	lw	t9,-32484(gp)
+  40addc:	00000000 	nop
+  40ade0:	0320f809 	jalr	t9
+  40ade4:	00000000 	nop
+  40ade8:	8fbc0010 	lw	gp,16(sp)
+  40adec:	1000fff4 	b	40adc0 <ungetc+0x60>
+  40adf0:	02201021 	move	v0,s1
+  40adf4:	10400005 	beqz	v0,40ae0c <ungetc+0xac>
+  40adf8:	2402ffff 	li	v0,-1
+  40adfc:	92020003 	lbu	v0,3(s0)
+  40ae00:	00000000 	nop
+  40ae04:	1440ffe8 	bnez	v0,40ada8 <ungetc+0x48>
+  40ae08:	2402ffff 	li	v0,-1
+  40ae0c:	1222ffe6 	beq	s1,v0,40ada8 <ungetc+0x48>
+  40ae10:	30622000 	andi	v0,v1,0x2000
+  40ae14:	10400007 	beqz	v0,40ae34 <ungetc+0xd4>
+  40ae18:	00000000 	nop
+  40ae1c:	02002021 	move	a0,s0
+  40ae20:	8f9980d8 	lw	t9,-32552(gp)
+  40ae24:	00000000 	nop
+  40ae28:	0320f809 	jalr	t9
+  40ae2c:	00000000 	nop
+  40ae30:	8fbc0010 	lw	gp,16(sp)
+  40ae34:	96020000 	lhu	v0,0(s0)
+  40ae38:	24030001 	li	v1,1
+  40ae3c:	3042dffb 	andi	v0,v0,0xdffb
+  40ae40:	34421000 	ori	v0,v0,0x1000
+  40ae44:	30440003 	andi	a0,v0,0x3
+  40ae48:	02042021 	addu	a0,s0,a0
+  40ae4c:	24420001 	addiu	v0,v0,1
+  40ae50:	a6020000 	sh	v0,0(s0)
+  40ae54:	a2030003 	sb	v1,3(s0)
+  40ae58:	a0910002 	sb	s1,2(a0)
+  40ae5c:	8e02000c 	lw	v0,12(s0)
+  40ae60:	1000ffd2 	b	40adac <ungetc+0x4c>
+  40ae64:	ae02001c 	sw	v0,28(s0)
+  40ae68:	2604003c 	addiu	a0,s0,60
+  40ae6c:	8f9980a8 	lw	t9,-32600(gp)
+  40ae70:	00000000 	nop
+  40ae74:	0320f809 	jalr	t9
+  40ae78:	00000000 	nop
+  40ae7c:	8fbc0010 	lw	gp,16(sp)
+  40ae80:	1000ffc4 	b	40ad94 <ungetc+0x34>
+  40ae84:	00000000 	nop
+	...
+
+0040ae90 <fseek>:
+  40ae90:	3c1c0fc0 	lui	gp,0xfc0
+  40ae94:	279cd3c0 	addiu	gp,gp,-11328
+  40ae98:	0399e021 	addu	gp,gp,t9
+  40ae9c:	27bdffc8 	addiu	sp,sp,-56
+  40aea0:	afbc0010 	sw	gp,16(sp)
+  40aea4:	afb10024 	sw	s1,36(sp)
+  40aea8:	00c08821 	move	s1,a2
+  40aeac:	2e220003 	sltiu	v0,s1,3
+  40aeb0:	afb20028 	sw	s2,40(sp)
+  40aeb4:	afb00020 	sw	s0,32(sp)
+  40aeb8:	afbf0030 	sw	ra,48(sp)
+  40aebc:	afbc002c 	sw	gp,44(sp)
+  40aec0:	00808021 	move	s0,a0
+  40aec4:	14400010 	bnez	v0,40af08 <fseek+0x78>
+  40aec8:	00a09021 	move	s2,a1
+  40aecc:	8f9980a0 	lw	t9,-32608(gp)
+  40aed0:	00000000 	nop
+  40aed4:	0320f809 	jalr	t9
+  40aed8:	00000000 	nop
+  40aedc:	8fbc0010 	lw	gp,16(sp)
+  40aee0:	00402021 	move	a0,v0
+  40aee4:	24030016 	li	v1,22
+  40aee8:	2402ffff 	li	v0,-1
+  40aeec:	ac830000 	sw	v1,0(a0)
+  40aef0:	8fbf0030 	lw	ra,48(sp)
+  40aef4:	8fb20028 	lw	s2,40(sp)
+  40aef8:	8fb10024 	lw	s1,36(sp)
+  40aefc:	8fb00020 	lw	s0,32(sp)
+  40af00:	03e00008 	jr	ra
+  40af04:	27bd0038 	addiu	sp,sp,56
+  40af08:	8e020038 	lw	v0,56(s0)
+  40af0c:	00000000 	nop
+  40af10:	1040003b 	beqz	v0,40b000 <fseek+0x170>
+  40af14:	2604003c 	addiu	a0,s0,60
+  40af18:	96020000 	lhu	v0,0(s0)
+  40af1c:	afb20018 	sw	s2,24(sp)
+  40af20:	30422000 	andi	v0,v0,0x2000
+  40af24:	10400016 	beqz	v0,40af80 <fseek+0xf0>
+  40af28:	2412ffff 	li	s2,-1
+  40af2c:	02002021 	move	a0,s0
+  40af30:	8f9980d8 	lw	t9,-32552(gp)
+  40af34:	00000000 	nop
+  40af38:	0320f809 	jalr	t9
+  40af3c:	00000000 	nop
+  40af40:	8fbc0010 	lw	gp,16(sp)
+  40af44:	1040000f 	beqz	v0,40af84 <fseek+0xf4>
+  40af48:	24020001 	li	v0,1
+  40af4c:	8e020038 	lw	v0,56(s0)
+  40af50:	00000000 	nop
+  40af54:	10400003 	beqz	v0,40af64 <fseek+0xd4>
+  40af58:	2604003c 	addiu	a0,s0,60
+  40af5c:	1000ffe4 	b	40aef0 <fseek+0x60>
+  40af60:	02401021 	move	v0,s2
+  40af64:	8f99811c 	lw	t9,-32484(gp)
+  40af68:	00000000 	nop
+  40af6c:	0320f809 	jalr	t9
+  40af70:	00000000 	nop
+  40af74:	8fbc0010 	lw	gp,16(sp)
+  40af78:	1000ffdd 	b	40aef0 <fseek+0x60>
+  40af7c:	02401021 	move	v0,s2
+  40af80:	24020001 	li	v0,1
+  40af84:	12220014 	beq	s1,v0,40afd8 <fseek+0x148>
+  40af88:	02002021 	move	a0,s0
+  40af8c:	02203021 	move	a2,s1
+  40af90:	02002021 	move	a0,s0
+  40af94:	27a50018 	addiu	a1,sp,24
+  40af98:	8f99824c 	lw	t9,-32180(gp)
+  40af9c:	00000000 	nop
+  40afa0:	0320f809 	jalr	t9
+  40afa4:	00000000 	nop
+  40afa8:	8fbc0010 	lw	gp,16(sp)
+  40afac:	0440ffe7 	bltz	v0,40af4c <fseek+0xbc>
+  40afb0:	00000000 	nop
+  40afb4:	96020000 	lhu	v0,0(s0)
+  40afb8:	8e03000c 	lw	v1,12(s0)
+  40afbc:	3042cff8 	andi	v0,v0,0xcff8
+  40afc0:	ae03001c 	sw	v1,28(s0)
+  40afc4:	a6020000 	sh	v0,0(s0)
+  40afc8:	ae030018 	sw	v1,24(s0)
+  40afcc:	ae030014 	sw	v1,20(s0)
+  40afd0:	1000ffde 	b	40af4c <fseek+0xbc>
+  40afd4:	00009021 	move	s2,zero
+  40afd8:	27a50018 	addiu	a1,sp,24
+  40afdc:	8f998248 	lw	t9,-32184(gp)
+  40afe0:	00000000 	nop
+  40afe4:	0320f809 	jalr	t9
+  40afe8:	00000000 	nop
+  40afec:	8fbc0010 	lw	gp,16(sp)
+  40aff0:	0441ffe7 	bgez	v0,40af90 <fseek+0x100>
+  40aff4:	02203021 	move	a2,s1
+  40aff8:	1000ffd4 	b	40af4c <fseek+0xbc>
+  40affc:	00000000 	nop
+  40b000:	8f9980a8 	lw	t9,-32600(gp)
+  40b004:	00000000 	nop
+  40b008:	0320f809 	jalr	t9
+  40b00c:	00000000 	nop
+  40b010:	8fbc0010 	lw	gp,16(sp)
+  40b014:	1000ffc0 	b	40af18 <fseek+0x88>
+  40b018:	00000000 	nop
+  40b01c:	00000000 	nop
+  40b020:	3c1c0fc0 	lui	gp,0xfc0
+  40b024:	279cd230 	addiu	gp,gp,-11728
+  40b028:	0399e021 	addu	gp,gp,t9
+  40b02c:	27bdffd8 	addiu	sp,sp,-40
+  40b030:	afbc0010 	sw	gp,16(sp)
+  40b034:	afb00018 	sw	s0,24(sp)
+  40b038:	00c08021 	move	s0,a2
+  40b03c:	afb1001c 	sw	s1,28(sp)
+  40b040:	afbf0024 	sw	ra,36(sp)
+  40b044:	afbc0020 	sw	gp,32(sp)
+  40b048:	00808821 	move	s1,a0
+  40b04c:	12000013 	beqz	s0,40b09c <fseek+0x20c>
+  40b050:	00001021 	move	v0,zero
+  40b054:	06000024 	bltz	s0,40b0e8 <fseek+0x258>
+  40b058:	00000000 	nop
+  40b05c:	8e220028 	lw	v0,40(s1)
+  40b060:	00000000 	nop
+  40b064:	1040001e 	beqz	v0,40b0e0 <fseek+0x250>
+  40b068:	02003021 	move	a2,s0
+  40b06c:	8e240024 	lw	a0,36(s1)
+  40b070:	0040c821 	move	t9,v0
+  40b074:	0320f809 	jalr	t9
+  40b078:	00000000 	nop
+  40b07c:	8fbc0010 	lw	gp,16(sp)
+  40b080:	00401821 	move	v1,v0
+  40b084:	1860000a 	blez	v1,40b0b0 <fseek+0x220>
+  40b088:	0203102b 	sltu	v0,s0,v1
+  40b08c:	10400003 	beqz	v0,40b09c <fseek+0x20c>
+  40b090:	00601021 	move	v0,v1
+  40b094:	02001821 	move	v1,s0
+  40b098:	00601021 	move	v0,v1
+  40b09c:	8fbf0024 	lw	ra,36(sp)
+  40b0a0:	8fb1001c 	lw	s1,28(sp)
+  40b0a4:	8fb00018 	lw	s0,24(sp)
+  40b0a8:	03e00008 	jr	ra
+  40b0ac:	27bd0028 	addiu	sp,sp,40
+  40b0b0:	10600006 	beqz	v1,40b0cc <fseek+0x23c>
+  40b0b4:	00000000 	nop
+  40b0b8:	96220000 	lhu	v0,0(s1)
+  40b0bc:	00001821 	move	v1,zero
+  40b0c0:	34420008 	ori	v0,v0,0x8
+  40b0c4:	1000fff4 	b	40b098 <fseek+0x208>
+  40b0c8:	a6220000 	sh	v0,0(s1)
+  40b0cc:	96220000 	lhu	v0,0(s1)
+  40b0d0:	00000000 	nop
+  40b0d4:	34420004 	ori	v0,v0,0x4
+  40b0d8:	1000ffef 	b	40b098 <fseek+0x208>
+  40b0dc:	a6220000 	sh	v0,0(s1)
+  40b0e0:	1000ffe8 	b	40b084 <fseek+0x1f4>
+  40b0e4:	2403ffff 	li	v1,-1
+  40b0e8:	3c107fff 	lui	s0,0x7fff
+  40b0ec:	1000ffdb 	b	40b05c <fseek+0x1cc>
+  40b0f0:	3610ffff 	ori	s0,s0,0xffff
+
+0040b0f4 <_stdio_fread>:
+  40b0f4:	3c1c0fc0 	lui	gp,0xfc0
+  40b0f8:	279cd15c 	addiu	gp,gp,-11940
+  40b0fc:	0399e021 	addu	gp,gp,t9
+  40b100:	27bdffd0 	addiu	sp,sp,-48
+  40b104:	afbc0010 	sw	gp,16(sp)
+  40b108:	afb30024 	sw	s3,36(sp)
+  40b10c:	afb1001c 	sw	s1,28(sp)
+  40b110:	afb00018 	sw	s0,24(sp)
+  40b114:	afbf002c 	sw	ra,44(sp)
+  40b118:	afbc0028 	sw	gp,40(sp)
+  40b11c:	afb20020 	sw	s2,32(sp)
+  40b120:	00c08021 	move	s0,a2
+  40b124:	96060000 	lhu	a2,0(s0)
+  40b128:	00809821 	move	s3,a0
+  40b12c:	30c20010 	andi	v0,a2,0x10
+  40b130:	10400015 	beqz	v0,40b188 <_stdio_fread+0x94>
+  40b134:	00a08821 	move	s1,a1
+  40b138:	8e03000c 	lw	v1,12(s0)
+  40b13c:	34c20008 	ori	v0,a2,0x8
+  40b140:	ae030020 	sw	v1,32(s0)
+  40b144:	a6020000 	sh	v0,0(s0)
+  40b148:	8f9980a0 	lw	t9,-32608(gp)
+  40b14c:	00000000 	nop
+  40b150:	0320f809 	jalr	t9
+  40b154:	00000000 	nop
+  40b158:	8fbc0010 	lw	gp,16(sp)
+  40b15c:	00402021 	move	a0,v0
+  40b160:	24030009 	li	v1,9
+  40b164:	00001021 	move	v0,zero
+  40b168:	ac830000 	sw	v1,0(a0)
+  40b16c:	8fbf002c 	lw	ra,44(sp)
+  40b170:	8fb30024 	lw	s3,36(sp)
+  40b174:	8fb20020 	lw	s2,32(sp)
+  40b178:	8fb1001c 	lw	s1,28(sp)
+  40b17c:	8fb00018 	lw	s0,24(sp)
+  40b180:	03e00008 	jr	ra
+  40b184:	27bd0030 	addiu	sp,sp,48
+  40b188:	8e02000c 	lw	v0,12(s0)
+  40b18c:	30c30300 	andi	v1,a2,0x300
+  40b190:	ae020020 	sw	v0,32(s0)
+  40b194:	10600007 	beqz	v1,40b1b4 <_stdio_fread+0xc0>
+  40b198:	ae02001c 	sw	v0,28(s0)
+  40b19c:	8f8481b8 	lw	a0,-32328(gp)
+  40b1a0:	8f9980d8 	lw	t9,-32552(gp)
+  40b1a4:	00000000 	nop
+  40b1a8:	0320f809 	jalr	t9
+  40b1ac:	00000000 	nop
+  40b1b0:	8fbc0010 	lw	gp,16(sp)
+  40b1b4:	96020000 	lhu	v0,0(s0)
+  40b1b8:	00000000 	nop
+  40b1bc:	30422000 	andi	v0,v0,0x2000
+  40b1c0:	1040000a 	beqz	v0,40b1ec <_stdio_fread+0xf8>
+  40b1c4:	02002021 	move	a0,s0
+  40b1c8:	8f9980d8 	lw	t9,-32552(gp)
+  40b1cc:	00000000 	nop
+  40b1d0:	0320f809 	jalr	t9
+  40b1d4:	00000000 	nop
+  40b1d8:	8fbc0010 	lw	gp,16(sp)
+  40b1dc:	00402021 	move	a0,v0
+  40b1e0:	2403ffff 	li	v1,-1
+  40b1e4:	1083ffe1 	beq	a0,v1,40b16c <_stdio_fread+0x78>
+  40b1e8:	00001021 	move	v0,zero
+  40b1ec:	96020000 	lhu	v0,0(s0)
+  40b1f0:	02609021 	move	s2,s3
+  40b1f4:	34421000 	ori	v0,v0,0x1000
+  40b1f8:	1220003f 	beqz	s1,40b2f8 <_stdio_fread+0x204>
+  40b1fc:	a6020000 	sh	v0,0(s0)
+  40b200:	30420003 	andi	v0,v0,0x3
+  40b204:	10400013 	beqz	v0,40b254 <_stdio_fread+0x160>
+  40b208:	00000000 	nop
+  40b20c:	96020000 	lhu	v0,0(s0)
+  40b210:	2631ffff 	addiu	s1,s1,-1
+  40b214:	3401ffff 	li	at,0xffff
+  40b218:	00221021 	addu	v0,at,v0
+  40b21c:	30430003 	andi	v1,v0,0x3
+  40b220:	a6020000 	sh	v0,0(s0)
+  40b224:	02031821 	addu	v1,s0,v1
+  40b228:	90620002 	lbu	v0,2(v1)
+  40b22c:	00000000 	nop
+  40b230:	a2420000 	sb	v0,0(s2)
+  40b234:	a2000003 	sb	zero,3(s0)
+  40b238:	1220002f 	beqz	s1,40b2f8 <_stdio_fread+0x204>
+  40b23c:	26520001 	addiu	s2,s2,1
+  40b240:	96020000 	lhu	v0,0(s0)
+  40b244:	00000000 	nop
+  40b248:	30420003 	andi	v0,v0,0x3
+  40b24c:	1440ffef 	bnez	v0,40b20c <_stdio_fread+0x118>
+  40b250:	00000000 	nop
+  40b254:	12200028 	beqz	s1,40b2f8 <_stdio_fread+0x204>
+  40b258:	00000000 	nop
+  40b25c:	8e040014 	lw	a0,20(s0)
+  40b260:	10000008 	b	40b284 <_stdio_fread+0x190>
+  40b264:	00000000 	nop
+  40b268:	90830000 	lbu	v1,0(a0)
+  40b26c:	2631ffff 	addiu	s1,s1,-1
+  40b270:	a2430000 	sb	v1,0(s2)
+  40b274:	00402021 	move	a0,v0
+  40b278:	ae020014 	sw	v0,20(s0)
+  40b27c:	1220001e 	beqz	s1,40b2f8 <_stdio_fread+0x204>
+  40b280:	26520001 	addiu	s2,s2,1
+  40b284:	8e020018 	lw	v0,24(s0)
+  40b288:	00000000 	nop
+  40b28c:	0082102b 	sltu	v0,a0,v0
+  40b290:	1440fff5 	bnez	v0,40b268 <_stdio_fread+0x174>
+  40b294:	24820001 	addiu	v0,a0,1
+  40b298:	12200017 	beqz	s1,40b2f8 <_stdio_fread+0x204>
+  40b29c:	00000000 	nop
+  40b2a0:	8e05000c 	lw	a1,12(s0)
+  40b2a4:	8e020010 	lw	v0,16(s0)
+  40b2a8:	ae050018 	sw	a1,24(s0)
+  40b2ac:	00453023 	subu	a2,v0,a1
+  40b2b0:	00d1102b 	sltu	v0,a2,s1
+  40b2b4:	1040001a 	beqz	v0,40b320 <_stdio_fread+0x22c>
+  40b2b8:	ae050014 	sw	a1,20(s0)
+  40b2bc:	02002021 	move	a0,s0
+  40b2c0:	02402821 	move	a1,s2
+  40b2c4:	02203021 	move	a2,s1
+  40b2c8:	8f998018 	lw	t9,-32744(gp)
+  40b2cc:	00000000 	nop
+  40b2d0:	2739b020 	addiu	t9,t9,-20448
+  40b2d4:	00000000 	nop
+  40b2d8:	0320f809 	jalr	t9
+  40b2dc:	00000000 	nop
+  40b2e0:	8fbc0010 	lw	gp,16(sp)
+  40b2e4:	00401821 	move	v1,v0
+  40b2e8:	18600003 	blez	v1,40b2f8 <_stdio_fread+0x204>
+  40b2ec:	02238823 	subu	s1,s1,v1
+  40b2f0:	1000ffd8 	b	40b254 <_stdio_fread+0x160>
+  40b2f4:	02439021 	addu	s2,s2,v1
+  40b2f8:	96020000 	lhu	v0,0(s0)
+  40b2fc:	00000000 	nop
+  40b300:	30420b0b 	andi	v0,v0,0xb0b
+  40b304:	10400003 	beqz	v0,40b314 <_stdio_fread+0x220>
+  40b308:	00000000 	nop
+  40b30c:	1000ff97 	b	40b16c <_stdio_fread+0x78>
+  40b310:	02531023 	subu	v0,s2,s3
+  40b314:	8e020018 	lw	v0,24(s0)
+  40b318:	1000fffc 	b	40b30c <_stdio_fread+0x218>
+  40b31c:	ae02001c 	sw	v0,28(s0)
+  40b320:	02002021 	move	a0,s0
+  40b324:	8f998018 	lw	t9,-32744(gp)
+  40b328:	00000000 	nop
+  40b32c:	2739b020 	addiu	t9,t9,-20448
+  40b330:	00000000 	nop
+  40b334:	0320f809 	jalr	t9
+  40b338:	00000000 	nop
+  40b33c:	8fbc0010 	lw	gp,16(sp)
+  40b340:	00401821 	move	v1,v0
+  40b344:	1860ffec 	blez	v1,40b2f8 <_stdio_fread+0x204>
+  40b348:	00000000 	nop
+  40b34c:	8e020018 	lw	v0,24(s0)
+  40b350:	00000000 	nop
+  40b354:	00431021 	addu	v0,v0,v1
+  40b358:	1000ffbe 	b	40b254 <_stdio_fread+0x160>
+  40b35c:	ae020018 	sw	v0,24(s0)
+
+0040b360 <_stdio_adjpos>:
+  40b360:	3c1c0fc0 	lui	gp,0xfc0
+  40b364:	279ccef0 	addiu	gp,gp,-12560
+  40b368:	0399e021 	addu	gp,gp,t9
+  40b36c:	94820000 	lhu	v0,0(a0)
+  40b370:	00000000 	nop
+  40b374:	30432000 	andi	v1,v0,0x2000
+  40b378:	30471000 	andi	a3,v0,0x1000
+  40b37c:	10600006 	beqz	v1,40b398 <_stdio_adjpos+0x38>
+  40b380:	30460003 	andi	a2,v0,0x3
+  40b384:	8c820014 	lw	v0,20(a0)
+  40b388:	8c83000c 	lw	v1,12(a0)
+  40b38c:	00000000 	nop
+  40b390:	00431023 	subu	v0,v0,v1
+  40b394:	00c23023 	subu	a2,a2,v0
+  40b398:	10e00006 	beqz	a3,40b3b4 <_stdio_adjpos+0x54>
+  40b39c:	00000000 	nop
+  40b3a0:	8c830014 	lw	v1,20(a0)
+  40b3a4:	8c820018 	lw	v0,24(a0)
+  40b3a8:	00000000 	nop
+  40b3ac:	00431023 	subu	v0,v0,v1
+  40b3b0:	00c23021 	addu	a2,a2,v0
+  40b3b4:	8ca20000 	lw	v0,0(a1)
+  40b3b8:	00062023 	negu	a0,a2
+  40b3bc:	00461823 	subu	v1,v0,a2
+  40b3c0:	0043102a 	slt	v0,v0,v1
+  40b3c4:	14400002 	bnez	v0,40b3d0 <_stdio_adjpos+0x70>
+  40b3c8:	aca30000 	sw	v1,0(a1)
+  40b3cc:	00c02021 	move	a0,a2
+  40b3d0:	03e00008 	jr	ra
+  40b3d4:	00801021 	move	v0,a0
+	...
+
+0040b3e0 <_stdio_lseek>:
+  40b3e0:	3c1c0fc0 	lui	gp,0xfc0
+  40b3e4:	279cce70 	addiu	gp,gp,-12688
+  40b3e8:	0399e021 	addu	gp,gp,t9
+  40b3ec:	27bdffd8 	addiu	sp,sp,-40
+  40b3f0:	afbc0010 	sw	gp,16(sp)
+  40b3f4:	afb00018 	sw	s0,24(sp)
+  40b3f8:	afbf0020 	sw	ra,32(sp)
+  40b3fc:	afbc001c 	sw	gp,28(sp)
+  40b400:	8c830024 	lw	v1,36(a0)
+  40b404:	24820004 	addiu	v0,a0,4
+  40b408:	10620012 	beq	v1,v0,40b454 <_stdio_lseek+0x74>
+  40b40c:	00a08021 	move	s0,a1
+  40b410:	8c820030 	lw	v0,48(a0)
+  40b414:	00000000 	nop
+  40b418:	1040000c 	beqz	v0,40b44c <_stdio_lseek+0x6c>
+  40b41c:	00602021 	move	a0,v1
+  40b420:	0040c821 	move	t9,v0
+  40b424:	0320f809 	jalr	t9
+  40b428:	00000000 	nop
+  40b42c:	8fbc0010 	lw	gp,16(sp)
+  40b430:	04400006 	bltz	v0,40b44c <_stdio_lseek+0x6c>
+  40b434:	00001821 	move	v1,zero
+  40b438:	00601021 	move	v0,v1
+  40b43c:	8fbf0020 	lw	ra,32(sp)
+  40b440:	8fb00018 	lw	s0,24(sp)
+  40b444:	03e00008 	jr	ra
+  40b448:	27bd0028 	addiu	sp,sp,40
+  40b44c:	1000fffa 	b	40b438 <_stdio_lseek+0x58>
+  40b450:	2403ffff 	li	v1,-1
+  40b454:	8c840004 	lw	a0,4(a0)
+  40b458:	8e050000 	lw	a1,0(s0)
+  40b45c:	8f9981f8 	lw	t9,-32264(gp)
+  40b460:	00000000 	nop
+  40b464:	0320f809 	jalr	t9
+  40b468:	00000000 	nop
+  40b46c:	8fbc0010 	lw	gp,16(sp)
+  40b470:	0440fff6 	bltz	v0,40b44c <_stdio_lseek+0x6c>
+  40b474:	00001821 	move	v1,zero
+  40b478:	1000ffef 	b	40b438 <_stdio_lseek+0x58>
+  40b47c:	ae020000 	sw	v0,0(s0)
+
+0040b480 <_uintmaxtostr>:
+  40b480:	3c1c0fc0 	lui	gp,0xfc0
+  40b484:	279ccdd0 	addiu	gp,gp,-12848
+  40b488:	0399e021 	addu	gp,gp,t9
+  40b48c:	8fa80010 	lw	t0,16(sp)
+  40b490:	00804821 	move	t1,a0
+  40b494:	8faf0014 	lw	t7,20(sp)
+  40b498:	0500003d 	bltz	t0,40b590 <_uintmaxtostr+0x110>
+  40b49c:	00007021 	move	t6,zero
+  40b4a0:	2402ffff 	li	v0,-1
+  40b4a4:	0048001b 	divu	zero,v0,t0
+  40b4a8:	a1200000 	sb	zero,0(t1)
+  40b4ac:	15000002 	bnez	t0,40b4b8 <_uintmaxtostr+0x38>
+  40b4b0:	00000000 	nop
+  40b4b4:	0007000d 	break	0x7
+  40b4b8:	00001810 	mfhi	v1
+  40b4bc:	246c0001 	addiu	t4,v1,1
+  40b4c0:	00001012 	mflo	v0
+  40b4c4:	1188002f 	beq	t4,t0,40b584 <_uintmaxtostr+0x104>
+  40b4c8:	00406821 	move	t5,v0
+  40b4cc:	00061802 	srl	v1,a2,0x0
+  40b4d0:	00605021 	move	t2,v1
+  40b4d4:	00e01821 	move	v1,a3
+  40b4d8:	0148001b 	divu	zero,t2,t0
+  40b4dc:	15000002 	bnez	t0,40b4e8 <_uintmaxtostr+0x68>
+  40b4e0:	00000000 	nop
+  40b4e4:	0007000d 	break	0x7
+  40b4e8:	2529ffff 	addiu	t1,t1,-1
+  40b4ec:	00002810 	mfhi	a1
+  40b4f0:	00003812 	mflo	a3
+  40b4f4:	00e05021 	move	t2,a3
+  40b4f8:	00000000 	nop
+  40b4fc:	0068001b 	divu	zero,v1,t0
+  40b500:	00001810 	mfhi	v1
+  40b504:	00002012 	mflo	a0
+	...
+  40b510:	01850018 	mult	t4,a1
+  40b514:	00001012 	mflo	v0
+  40b518:	00621821 	addu	v1,v1,v0
+  40b51c:	00000000 	nop
+  40b520:	0068001b 	divu	zero,v1,t0
+  40b524:	00001010 	mfhi	v0
+  40b528:	24460030 	addiu	a2,v0,48
+  40b52c:	004f5821 	addu	t3,v0,t7
+  40b530:	00001812 	mflo	v1
+  40b534:	2c42000a 	sltiu	v0,v0,10
+  40b538:	00000000 	nop
+  40b53c:	01a50018 	mult	t5,a1
+  40b540:	00002812 	mflo	a1
+  40b544:	00852021 	addu	a0,a0,a1
+  40b548:	1040000c 	beqz	v0,40b57c <_uintmaxtostr+0xfc>
+  40b54c:	00831821 	addu	v1,a0,v1
+  40b550:	a1260000 	sb	a2,0(t1)
+  40b554:	00671025 	or	v0,v1,a3
+  40b558:	1440ffdf 	bnez	v0,40b4d8 <_uintmaxtostr+0x58>
+  40b55c:	00000000 	nop
+  40b560:	11c00004 	beqz	t6,40b574 <_uintmaxtostr+0xf4>
+  40b564:	00000000 	nop
+  40b568:	2529ffff 	addiu	t1,t1,-1
+  40b56c:	2402002d 	li	v0,45
+  40b570:	a1220000 	sb	v0,0(t1)
+  40b574:	03e00008 	jr	ra
+  40b578:	01201021 	move	v0,t1
+  40b57c:	1000fff5 	b	40b554 <_uintmaxtostr+0xd4>
+  40b580:	a12b0000 	sb	t3,0(t1)
+  40b584:	25ad0001 	addiu	t5,t5,1
+  40b588:	1000ffd0 	b	40b4cc <_uintmaxtostr+0x4c>
+  40b58c:	00006021 	move	t4,zero
+  40b590:	04c1ffc3 	bgez	a2,40b4a0 <_uintmaxtostr+0x20>
+  40b594:	00084023 	negu	t0,t0
+  40b598:	00073823 	negu	a3,a3
+  40b59c:	00063023 	negu	a2,a2
+  40b5a0:	0007102b 	sltu	v0,zero,a3
+  40b5a4:	00c23023 	subu	a2,a2,v0
+  40b5a8:	1000ffbd 	b	40b4a0 <_uintmaxtostr+0x20>
+  40b5ac:	240e0001 	li	t6,1
+
+0040b5b0 <vsnprintf>:
+  40b5b0:	3c1c0fc0 	lui	gp,0xfc0
+  40b5b4:	279ccca0 	addiu	gp,gp,-13152
+  40b5b8:	0399e021 	addu	gp,gp,t9
+  40b5bc:	27bdff78 	addiu	sp,sp,-136
+  40b5c0:	afbc0010 	sw	gp,16(sp)
+  40b5c4:	00801821 	move	v1,a0
+  40b5c8:	afb00070 	sw	s0,112(sp)
+  40b5cc:	00a08021 	move	s0,a1
+  40b5d0:	00032827 	nor	a1,zero,v1
+  40b5d4:	00b0102b 	sltu	v0,a1,s0
+  40b5d8:	afb20078 	sw	s2,120(sp)
+  40b5dc:	afb10074 	sw	s1,116(sp)
+  40b5e0:	afbf0080 	sw	ra,128(sp)
+  40b5e4:	afbc007c 	sw	gp,124(sp)
+  40b5e8:	27a40054 	addiu	a0,sp,84
+  40b5ec:	00c08821 	move	s1,a2
+  40b5f0:	00e09021 	move	s2,a3
+  40b5f4:	afa30024 	sw	v1,36(sp)
+  40b5f8:	afa30030 	sw	v1,48(sp)
+  40b5fc:	afa3002c 	sw	v1,44(sp)
+  40b600:	10400002 	beqz	v0,40b60c <vsnprintf+0x5c>
+  40b604:	afa30034 	sw	v1,52(sp)
+  40b608:	00a08021 	move	s0,a1
+  40b60c:	2402fffe 	li	v0,-2
+  40b610:	00701821 	addu	v1,v1,s0
+  40b614:	afa2001c 	sw	v0,28(sp)
+  40b618:	24022090 	li	v0,8336
+  40b61c:	a7a20018 	sh	v0,24(sp)
+  40b620:	afa00050 	sw	zero,80(sp)
+  40b624:	afa30038 	sw	v1,56(sp)
+  40b628:	afa30028 	sw	v1,40(sp)
+  40b62c:	8f998128 	lw	t9,-32472(gp)
+  40b630:	00000000 	nop
+  40b634:	0320f809 	jalr	t9
+  40b638:	00000000 	nop
+  40b63c:	8fbc0010 	lw	gp,16(sp)
+  40b640:	27a40018 	addiu	a0,sp,24
+  40b644:	02202821 	move	a1,s1
+  40b648:	02403021 	move	a2,s2
+  40b64c:	8f99803c 	lw	t9,-32708(gp)
+  40b650:	00000000 	nop
+  40b654:	0320f809 	jalr	t9
+  40b658:	00000000 	nop
+  40b65c:	8fbc0010 	lw	gp,16(sp)
+  40b660:	12000009 	beqz	s0,40b688 <vsnprintf+0xd8>
+  40b664:	00000000 	nop
+  40b668:	8fa4002c 	lw	a0,44(sp)
+  40b66c:	8fa30028 	lw	v1,40(sp)
+  40b670:	00000000 	nop
+  40b674:	1083000a 	beq	a0,v1,40b6a0 <vsnprintf+0xf0>
+  40b678:	2485ffff 	addiu	a1,a0,-1
+  40b67c:	8fa3002c 	lw	v1,44(sp)
+  40b680:	00000000 	nop
+  40b684:	a0600000 	sb	zero,0(v1)
+  40b688:	8fbf0080 	lw	ra,128(sp)
+  40b68c:	8fb20078 	lw	s2,120(sp)
+  40b690:	8fb10074 	lw	s1,116(sp)
+  40b694:	8fb00070 	lw	s0,112(sp)
+  40b698:	03e00008 	jr	ra
+  40b69c:	27bd0088 	addiu	sp,sp,136
+  40b6a0:	1000fff6 	b	40b67c <vsnprintf+0xcc>
+  40b6a4:	afa5002c 	sw	a1,44(sp)
+	...
+
+0040b6b0 <_ppfs_init>:
+  40b6b0:	3c1c0fc0 	lui	gp,0xfc0
+  40b6b4:	279ccba0 	addiu	gp,gp,-13408
+  40b6b8:	0399e021 	addu	gp,gp,t9
+  40b6bc:	27bdffd0 	addiu	sp,sp,-48
+  40b6c0:	afbc0010 	sw	gp,16(sp)
+  40b6c4:	afb1001c 	sw	s1,28(sp)
+  40b6c8:	afb00018 	sw	s0,24(sp)
+  40b6cc:	00a08821 	move	s1,a1
+  40b6d0:	00808021 	move	s0,a0
+  40b6d4:	00002821 	move	a1,zero
+  40b6d8:	240600a8 	li	a2,168
+  40b6dc:	afb20020 	sw	s2,32(sp)
+  40b6e0:	afbf0028 	sw	ra,40(sp)
+  40b6e4:	afbc0024 	sw	gp,36(sp)
+  40b6e8:	8f99813c 	lw	t9,-32452(gp)
+  40b6ec:	00000000 	nop
+  40b6f0:	0320f809 	jalr	t9
+  40b6f4:	00000000 	nop
+  40b6f8:	8fbc0010 	lw	gp,16(sp)
+  40b6fc:	8e020018 	lw	v0,24(s0)
+  40b700:	26120028 	addiu	s2,s0,40
+  40b704:	2442ffff 	addiu	v0,v0,-1
+  40b708:	ae020018 	sw	v0,24(s0)
+  40b70c:	02401821 	move	v1,s2
+  40b710:	2405000a 	li	a1,10
+  40b714:	24020008 	li	v0,8
+  40b718:	24a5ffff 	addiu	a1,a1,-1
+  40b71c:	ac620000 	sw	v0,0(v1)
+  40b720:	14a0fffd 	bnez	a1,40b718 <_ppfs_init+0x68>
+  40b724:	24630004 	addiu	v1,v1,4
+  40b728:	82220000 	lb	v0,0(s1)
+  40b72c:	00000000 	nop
+  40b730:	1040000a 	beqz	v0,40b75c <_ppfs_init+0xac>
+  40b734:	02201821 	move	v1,s1
+  40b738:	80650000 	lb	a1,0(v1)
+  40b73c:	24020025 	li	v0,37
+  40b740:	10a2001a 	beq	a1,v0,40b7ac <_ppfs_init+0xfc>
+  40b744:	00000000 	nop
+  40b748:	24630001 	addiu	v1,v1,1
+  40b74c:	80620000 	lb	v0,0(v1)
+  40b750:	00000000 	nop
+  40b754:	1440fff8 	bnez	v0,40b738 <_ppfs_init+0x88>
+  40b758:	00000000 	nop
+  40b75c:	8e050018 	lw	a1,24(s0)
+  40b760:	ae110000 	sw	s1,0(s0)
+  40b764:	24a5ffff 	addiu	a1,a1,-1
+  40b768:	04a00009 	bltz	a1,40b790 <_ppfs_init+0xe0>
+  40b76c:	02403021 	move	a2,s2
+  40b770:	8cc40000 	lw	a0,0(a2)
+  40b774:	24030008 	li	v1,8
+  40b778:	24a5ffff 	addiu	a1,a1,-1
+  40b77c:	24c60004 	addiu	a2,a2,4
+  40b780:	10830004 	beq	a0,v1,40b794 <_ppfs_init+0xe4>
+  40b784:	2402ffff 	li	v0,-1
+  40b788:	04a1fff9 	bgez	a1,40b770 <_ppfs_init+0xc0>
+  40b78c:	00000000 	nop
+  40b790:	00001021 	move	v0,zero
+  40b794:	8fbf0028 	lw	ra,40(sp)
+  40b798:	8fb20020 	lw	s2,32(sp)
+  40b79c:	8fb1001c 	lw	s1,28(sp)
+  40b7a0:	8fb00018 	lw	s0,24(sp)
+  40b7a4:	03e00008 	jr	ra
+  40b7a8:	27bd0030 	addiu	sp,sp,48
+  40b7ac:	24630001 	addiu	v1,v1,1
+  40b7b0:	80620000 	lb	v0,0(v1)
+  40b7b4:	00000000 	nop
+  40b7b8:	1045ffe3 	beq	v0,a1,40b748 <_ppfs_init+0x98>
+  40b7bc:	02002021 	move	a0,s0
+  40b7c0:	ae030000 	sw	v1,0(s0)
+  40b7c4:	8f998060 	lw	t9,-32672(gp)
+  40b7c8:	00000000 	nop
+  40b7cc:	0320f809 	jalr	t9
+  40b7d0:	00000000 	nop
+  40b7d4:	8fbc0010 	lw	gp,16(sp)
+  40b7d8:	00402821 	move	a1,v0
+  40b7dc:	04a0ffed 	bltz	a1,40b794 <_ppfs_init+0xe4>
+  40b7e0:	2402ffff 	li	v0,-1
+  40b7e4:	8e030000 	lw	v1,0(s0)
+  40b7e8:	1000ffd8 	b	40b74c <_ppfs_init+0x9c>
+  40b7ec:	00000000 	nop
+
+0040b7f0 <_ppfs_prepargs>:
+  40b7f0:	3c1c0fc0 	lui	gp,0xfc0
+  40b7f4:	279cca60 	addiu	gp,gp,-13728
+  40b7f8:	0399e021 	addu	gp,gp,t9
+  40b7fc:	27bdffd8 	addiu	sp,sp,-40
+  40b800:	afbc0010 	sw	gp,16(sp)
+  40b804:	afb00018 	sw	s0,24(sp)
+  40b808:	00808021 	move	s0,a0
+  40b80c:	afb1001c 	sw	s1,28(sp)
+  40b810:	8e110018 	lw	s1,24(s0)
+  40b814:	afbf0024 	sw	ra,36(sp)
+  40b818:	afbc0020 	sw	gp,32(sp)
+  40b81c:	1a20000b 	blez	s1,40b84c <_ppfs_prepargs+0x5c>
+  40b820:	ae050050 	sw	a1,80(s0)
+  40b824:	ae11001c 	sw	s1,28(s0)
+  40b828:	ae000018 	sw	zero,24(s0)
+  40b82c:	ae000004 	sw	zero,4(s0)
+  40b830:	ae000008 	sw	zero,8(s0)
+  40b834:	8f9980e0 	lw	t9,-32544(gp)
+  40b838:	00000000 	nop
+  40b83c:	0320f809 	jalr	t9
+  40b840:	00000000 	nop
+  40b844:	8fbc0010 	lw	gp,16(sp)
+  40b848:	ae110018 	sw	s1,24(s0)
+  40b84c:	8fbf0024 	lw	ra,36(sp)
+  40b850:	8fb1001c 	lw	s1,28(sp)
+  40b854:	8fb00018 	lw	s0,24(sp)
+  40b858:	03e00008 	jr	ra
+  40b85c:	27bd0028 	addiu	sp,sp,40
+
+0040b860 <_ppfs_setargs>:
+  40b860:	3c1c0fc0 	lui	gp,0xfc0
+  40b864:	279cc9f0 	addiu	gp,gp,-13840
+  40b868:	0399e021 	addu	gp,gp,t9
+  40b86c:	00802821 	move	a1,a0
+  40b870:	8ca20018 	lw	v0,24(a1)
+  40b874:	00000000 	nop
+  40b878:	10400027 	beqz	v0,40b918 <_ppfs_setargs+0xb8>
+  40b87c:	24a40058 	addiu	a0,a1,88
+  40b880:	8ca20008 	lw	v0,8(a1)
+  40b884:	3c038000 	lui	v1,0x8000
+  40b888:	1043001c 	beq	v0,v1,40b8fc <_ppfs_setargs+0x9c>
+  40b88c:	00000000 	nop
+  40b890:	8ca20004 	lw	v0,4(a1)
+  40b894:	00000000 	nop
+  40b898:	10430011 	beq	v0,v1,40b8e0 <_ppfs_setargs+0x80>
+  40b89c:	00000000 	nop
+  40b8a0:	8ca40008 	lw	a0,8(a1)
+  40b8a4:	00000000 	nop
+  40b8a8:	04800003 	bltz	a0,40b8b8 <_ppfs_setargs+0x58>
+  40b8ac:	2402fffe 	li	v0,-2
+  40b8b0:	03e00008 	jr	ra
+  40b8b4:	00000000 	nop
+  40b8b8:	8ca30010 	lw	v1,16(a1)
+  40b8bc:	00000000 	nop
+  40b8c0:	34630008 	ori	v1,v1,0x8
+  40b8c4:	00621824 	and	v1,v1,v0
+  40b8c8:	00042023 	negu	a0,a0
+  40b8cc:	24020020 	li	v0,32
+  40b8d0:	aca20014 	sw	v0,20(a1)
+  40b8d4:	aca40008 	sw	a0,8(a1)
+  40b8d8:	03e00008 	jr	ra
+  40b8dc:	aca30010 	sw	v1,16(a1)
+  40b8e0:	90a20025 	lbu	v0,37(a1)
+  40b8e4:	00000000 	nop
+  40b8e8:	000210c0 	sll	v0,v0,0x3
+  40b8ec:	00821021 	addu	v0,a0,v0
+  40b8f0:	8c42fff8 	lw	v0,-8(v0)
+  40b8f4:	1000ffea 	b	40b8a0 <_ppfs_setargs+0x40>
+  40b8f8:	aca20004 	sw	v0,4(a1)
+  40b8fc:	90a20024 	lbu	v0,36(a1)
+  40b900:	00000000 	nop
+  40b904:	000210c0 	sll	v0,v0,0x3
+  40b908:	00821021 	addu	v0,a0,v0
+  40b90c:	8c42fff8 	lw	v0,-8(v0)
+  40b910:	1000ffdf 	b	40b890 <_ppfs_setargs+0x30>
+  40b914:	aca20008 	sw	v0,8(a1)
+  40b918:	8ca20008 	lw	v0,8(a1)
+  40b91c:	3c068000 	lui	a2,0x8000
+  40b920:	10460047 	beq	v0,a2,40ba40 <_ppfs_setargs+0x1e0>
+  40b924:	2403fffc 	li	v1,-4
+  40b928:	8ca20004 	lw	v0,4(a1)
+  40b92c:	00000000 	nop
+  40b930:	10460038 	beq	v0,a2,40ba14 <_ppfs_setargs+0x1b4>
+  40b934:	2403fffc 	li	v1,-4
+  40b938:	8ca2001c 	lw	v0,28(a1)
+  40b93c:	00000000 	nop
+  40b940:	1840ffd7 	blez	v0,40b8a0 <_ppfs_setargs+0x40>
+  40b944:	00003821 	move	a3,zero
+  40b948:	24a60024 	addiu	a2,a1,36
+  40b94c:	24c60004 	addiu	a2,a2,4
+  40b950:	8cc30000 	lw	v1,0(a2)
+  40b954:	00000000 	nop
+  40b958:	28620009 	slti	v0,v1,9
+  40b95c:	10400015 	beqz	v0,40b9b4 <_ppfs_setargs+0x154>
+  40b960:	24e70001 	addiu	a3,a3,1
+  40b964:	28620007 	slti	v0,v1,7
+  40b968:	1040000b 	beqz	v0,40b998 <_ppfs_setargs+0x138>
+  40b96c:	00000000 	nop
+  40b970:	8ca20050 	lw	v0,80(a1)
+  40b974:	2403fffc 	li	v1,-4
+  40b978:	24420003 	addiu	v0,v0,3
+  40b97c:	00431024 	and	v0,v0,v1
+  40b980:	24430004 	addiu	v1,v0,4
+  40b984:	aca30050 	sw	v1,80(a1)
+  40b988:	8c420000 	lw	v0,0(v0)
+  40b98c:	00000000 	nop
+  40b990:	ac820000 	sw	v0,0(a0)
+  40b994:	24840008 	addiu	a0,a0,8
+  40b998:	8ca2001c 	lw	v0,28(a1)
+  40b99c:	00000000 	nop
+  40b9a0:	00e2102a 	slt	v0,a3,v0
+  40b9a4:	1440ffe9 	bnez	v0,40b94c <_ppfs_setargs+0xec>
+  40b9a8:	00000000 	nop
+  40b9ac:	1000ffbc 	b	40b8a0 <_ppfs_setargs+0x40>
+  40b9b0:	00000000 	nop
+  40b9b4:	24020400 	li	v0,1024
+  40b9b8:	1062ffed 	beq	v1,v0,40b970 <_ppfs_setargs+0x110>
+  40b9bc:	28620401 	slti	v0,v1,1025
+  40b9c0:	1440ffeb 	bnez	v0,40b970 <_ppfs_setargs+0x110>
+  40b9c4:	24020800 	li	v0,2048
+  40b9c8:	10620005 	beq	v1,v0,40b9e0 <_ppfs_setargs+0x180>
+  40b9cc:	24020807 	li	v0,2055
+  40b9d0:	1062fff1 	beq	v1,v0,40b998 <_ppfs_setargs+0x138>
+  40b9d4:	00000000 	nop
+  40b9d8:	1000ffe5 	b	40b970 <_ppfs_setargs+0x110>
+  40b9dc:	00000000 	nop
+  40b9e0:	8ca20050 	lw	v0,80(a1)
+  40b9e4:	2403fff8 	li	v1,-8
+  40b9e8:	24420007 	addiu	v0,v0,7
+  40b9ec:	00431024 	and	v0,v0,v1
+  40b9f0:	24430008 	addiu	v1,v0,8
+  40b9f4:	aca30050 	sw	v1,80(a1)
+  40b9f8:	8c430004 	lw	v1,4(v0)
+  40b9fc:	8c420000 	lw	v0,0(v0)
+  40ba00:	00000000 	nop
+  40ba04:	ac820000 	sw	v0,0(a0)
+  40ba08:	ac830004 	sw	v1,4(a0)
+  40ba0c:	1000ffe2 	b	40b998 <_ppfs_setargs+0x138>
+  40ba10:	24840008 	addiu	a0,a0,8
+  40ba14:	8ca20050 	lw	v0,80(a1)
+  40ba18:	00000000 	nop
+  40ba1c:	24420003 	addiu	v0,v0,3
+  40ba20:	00431024 	and	v0,v0,v1
+  40ba24:	24430004 	addiu	v1,v0,4
+  40ba28:	aca30050 	sw	v1,80(a1)
+  40ba2c:	8c420000 	lw	v0,0(v0)
+  40ba30:	00000000 	nop
+  40ba34:	aca20004 	sw	v0,4(a1)
+  40ba38:	1000ffbf 	b	40b938 <_ppfs_setargs+0xd8>
+  40ba3c:	aca20058 	sw	v0,88(a1)
+  40ba40:	8ca20050 	lw	v0,80(a1)
+  40ba44:	00000000 	nop
+  40ba48:	24420003 	addiu	v0,v0,3
+  40ba4c:	00431024 	and	v0,v0,v1
+  40ba50:	24430004 	addiu	v1,v0,4
+  40ba54:	aca30050 	sw	v1,80(a1)
+  40ba58:	8c420000 	lw	v0,0(v0)
+  40ba5c:	00000000 	nop
+  40ba60:	aca20008 	sw	v0,8(a1)
+  40ba64:	1000ffb0 	b	40b928 <_ppfs_setargs+0xc8>
+  40ba68:	aca20058 	sw	v0,88(a1)
+  40ba6c:	00000000 	nop
+  40ba70:	3c1c0fc0 	lui	gp,0xfc0
+  40ba74:	279cc7e0 	addiu	gp,gp,-14368
+  40ba78:	0399e021 	addu	gp,gp,t9
+  40ba7c:	8f838018 	lw	v1,-32744(gp)
+  40ba80:	00000000 	nop
+  40ba84:	24631204 	addiu	v1,v1,4612
+  40ba88:	2463fffe 	addiu	v1,v1,-2
+  40ba8c:	8f828018 	lw	v0,-32744(gp)
+  40ba90:	00000000 	nop
+  40ba94:	244211f0 	addiu	v0,v0,4592
+  40ba98:	00000000 	nop
+  40ba9c:	0043282b 	sltu	a1,v0,v1
+  40baa0:	84620000 	lh	v0,0(v1)
+  40baa4:	00000000 	nop
+  40baa8:	10440003 	beq	v0,a0,40bab8 <_ppfs_setargs+0x258>
+  40baac:	00000000 	nop
+  40bab0:	14a0fff5 	bnez	a1,40ba88 <_ppfs_setargs+0x228>
+  40bab4:	00000000 	nop
+  40bab8:	8f828018 	lw	v0,-32744(gp)
+  40babc:	00000000 	nop
+  40bac0:	244211f0 	addiu	v0,v0,4592
+  40bac4:	00000000 	nop
+  40bac8:	00621023 	subu	v0,v1,v0
+  40bacc:	00021043 	sra	v0,v0,0x1
+  40bad0:	8f818018 	lw	at,-32744(gp)
+  40bad4:	00000000 	nop
+  40bad8:	24211204 	addiu	at,at,4612
+  40badc:	00220821 	addu	at,at,v0
+  40bae0:	90220000 	lbu	v0,0(at)
+  40bae4:	03e00008 	jr	ra
+  40bae8:	00000000 	nop
+  40baec:	3c1c0fc0 	lui	gp,0xfc0
+  40baf0:	279cc764 	addiu	gp,gp,-14492
+  40baf4:	0399e021 	addu	gp,gp,t9
+  40baf8:	27bdffd8 	addiu	sp,sp,-40
+  40bafc:	afbc0010 	sw	gp,16(sp)
+  40bb00:	afb1001c 	sw	s1,28(sp)
+  40bb04:	00a08821 	move	s1,a1
+  40bb08:	24050008 	li	a1,8
+  40bb0c:	afbf0024 	sw	ra,36(sp)
+  40bb10:	afbc0020 	sw	gp,32(sp)
+  40bb14:	afb00018 	sw	s0,24(sp)
+  40bb18:	00801821 	move	v1,a0
+  40bb1c:	12250017 	beq	s1,a1,40bb7c <_ppfs_setargs+0x31c>
+  40bb20:	00001021 	move	v0,zero
+  40bb24:	10650015 	beq	v1,a1,40bb7c <_ppfs_setargs+0x31c>
+  40bb28:	24020001 	li	v0,1
+  40bb2c:	10710013 	beq	v1,s1,40bb7c <_ppfs_setargs+0x31c>
+  40bb30:	00000000 	nop
+  40bb34:	8f998018 	lw	t9,-32744(gp)
+  40bb38:	00000000 	nop
+  40bb3c:	2739ba70 	addiu	t9,t9,-17808
+  40bb40:	00000000 	nop
+  40bb44:	0320f809 	jalr	t9
+  40bb48:	00000000 	nop
+  40bb4c:	8fbc0010 	lw	gp,16(sp)
+  40bb50:	02202021 	move	a0,s1
+  40bb54:	00408021 	move	s0,v0
+  40bb58:	8f998018 	lw	t9,-32744(gp)
+  40bb5c:	00000000 	nop
+  40bb60:	2739ba70 	addiu	t9,t9,-17808
+  40bb64:	00000000 	nop
+  40bb68:	0320f809 	jalr	t9
+  40bb6c:	00000000 	nop
+  40bb70:	8fbc0010 	lw	gp,16(sp)
+  40bb74:	0050102a 	slt	v0,v0,s0
+  40bb78:	38420001 	xori	v0,v0,0x1
+  40bb7c:	8fbf0024 	lw	ra,36(sp)
+  40bb80:	8fb1001c 	lw	s1,28(sp)
+  40bb84:	8fb00018 	lw	s0,24(sp)
+  40bb88:	03e00008 	jr	ra
+  40bb8c:	27bd0028 	addiu	sp,sp,40
+
+0040bb90 <_ppfs_parsespec>:
+  40bb90:	3c1c0fc0 	lui	gp,0xfc0
+  40bb94:	279cc6c0 	addiu	gp,gp,-14656
+  40bb98:	0399e021 	addu	gp,gp,t9
+  40bb9c:	27bdff88 	addiu	sp,sp,-120
+  40bba0:	afbc0010 	sw	gp,16(sp)
+  40bba4:	afb40060 	sw	s4,96(sp)
+  40bba8:	afbf0070 	sw	ra,112(sp)
+  40bbac:	0080a021 	move	s4,a0
+  40bbb0:	afbc006c 	sw	gp,108(sp)
+  40bbb4:	afb60068 	sw	s6,104(sp)
+  40bbb8:	afb50064 	sw	s5,100(sp)
+  40bbbc:	afb3005c 	sw	s3,92(sp)
+  40bbc0:	afb20058 	sw	s2,88(sp)
+  40bbc4:	afb10054 	sw	s1,84(sp)
+  40bbc8:	afb00050 	sw	s0,80(sp)
+  40bbcc:	24020008 	li	v0,8
+  40bbd0:	8e950018 	lw	s5,24(s4)
+  40bbd4:	8e900000 	lw	s0,0(s4)
+  40bbd8:	240affff 	li	t2,-1
+  40bbdc:	afa2001c 	sw	v0,28(sp)
+  40bbe0:	afa00040 	sw	zero,64(sp)
+  40bbe4:	afa00044 	sw	zero,68(sp)
+  40bbe8:	afa20018 	sw	v0,24(sp)
+  40bbec:	00002021 	move	a0,zero
+  40bbf0:	00003821 	move	a3,zero
+  40bbf4:	00004821 	move	t1,zero
+  40bbf8:	82030000 	lb	v1,0(s0)
+  40bbfc:	2402002a 	li	v0,42
+  40bc00:	10620156 	beq	v1,v0,40c15c <_ppfs_parsespec+0x5cc>
+  40bc04:	02002821 	move	a1,s0
+  40bc08:	92030000 	lbu	v1,0(s0)
+  40bc0c:	1000000c 	b	40bc40 <_ppfs_parsespec+0xb0>
+  40bc10:	00008821 	move	s1,zero
+  40bc14:	00511021 	addu	v0,v0,s1
+  40bc18:	00031e00 	sll	v1,v1,0x18
+  40bc1c:	00021040 	sll	v0,v0,0x1
+  40bc20:	00031e03 	sra	v1,v1,0x18
+  40bc24:	00431821 	addu	v1,v0,v1
+  40bc28:	2a220fff 	slti	v0,s1,4095
+  40bc2c:	10400002 	beqz	v0,40bc38 <_ppfs_parsespec+0xa8>
+  40bc30:	26100001 	addiu	s0,s0,1
+  40bc34:	2471ffd0 	addiu	s1,v1,-48
+  40bc38:	92030000 	lbu	v1,0(s0)
+  40bc3c:	00000000 	nop
+  40bc40:	2462ffd0 	addiu	v0,v1,-48
+  40bc44:	2c42000a 	sltiu	v0,v0,10
+  40bc48:	1440fff2 	bnez	v0,40bc14 <_ppfs_parsespec+0x84>
+  40bc4c:	00111080 	sll	v0,s1,0x2
+  40bc50:	80a3ffff 	lb	v1,-1(a1)
+  40bc54:	24020025 	li	v0,37
+  40bc58:	1062010a 	beq	v1,v0,40c084 <_ppfs_parsespec+0x4f4>
+  40bc5c:	24020024 	li	v0,36
+  40bc60:	80a30000 	lb	v1,0(a1)
+  40bc64:	2402002a 	li	v0,42
+  40bc68:	106200f2 	beq	v1,v0,40c034 <_ppfs_parsespec+0x4a4>
+  40bc6c:	00000000 	nop
+  40bc70:	108000e9 	beqz	a0,40c018 <_ppfs_parsespec+0x488>
+  40bc74:	2402002e 	li	v0,46
+  40bc78:	02205021 	move	t2,s1
+  40bc7c:	8f858018 	lw	a1,-32744(gp)
+  40bc80:	00000000 	nop
+  40bc84:	24a5125c 	addiu	a1,a1,4700
+  40bc88:	00000000 	nop
+  40bc8c:	00a02021 	move	a0,a1
+  40bc90:	80a30000 	lb	v1,0(a1)
+  40bc94:	82020000 	lb	v0,0(s0)
+  40bc98:	00000000 	nop
+  40bc9c:	104300dc 	beq	v0,v1,40c010 <_ppfs_parsespec+0x480>
+  40bca0:	00000000 	nop
+  40bca4:	24a50001 	addiu	a1,a1,1
+  40bca8:	80a20000 	lb	v0,0(a1)
+  40bcac:	00000000 	nop
+  40bcb0:	1440fff7 	bnez	v0,40bc90 <_ppfs_parsespec+0x100>
+  40bcb4:	00000000 	nop
+  40bcb8:	00a41023 	subu	v0,a1,a0
+  40bcbc:	28420002 	slti	v0,v0,2
+  40bcc0:	10400006 	beqz	v0,40bcdc <_ppfs_parsespec+0x14c>
+  40bcc4:	00000000 	nop
+  40bcc8:	82030000 	lb	v1,0(s0)
+  40bccc:	80a20000 	lb	v0,0(a1)
+  40bcd0:	00000000 	nop
+  40bcd4:	106200cb 	beq	v1,v0,40c004 <_ppfs_parsespec+0x474>
+  40bcd8:	00000000 	nop
+  40bcdc:	80a20009 	lb	v0,9(a1)
+  40bce0:	82030000 	lb	v1,0(s0)
+  40bce4:	00023200 	sll	a2,v0,0x8
+  40bce8:	92040000 	lbu	a0,0(s0)
+  40bcec:	10600056 	beqz	v1,40be48 <_ppfs_parsespec+0x2b8>
+  40bcf0:	2402ffff 	li	v0,-1
+  40bcf4:	8f858018 	lw	a1,-32744(gp)
+  40bcf8:	00000000 	nop
+  40bcfc:	24a51218 	addiu	a1,a1,4632
+  40bd00:	00000000 	nop
+  40bd04:	00a04021 	move	t0,a1
+  40bd08:	00041600 	sll	v0,a0,0x18
+  40bd0c:	80a30000 	lb	v1,0(a1)
+  40bd10:	00021603 	sra	v0,v0,0x18
+  40bd14:	10430095 	beq	v0,v1,40bf6c <_ppfs_parsespec+0x3dc>
+  40bd18:	00a81823 	subu	v1,a1,t0
+  40bd1c:	24a50001 	addiu	a1,a1,1
+  40bd20:	80a20000 	lb	v0,0(a1)
+  40bd24:	00000000 	nop
+  40bd28:	1440fff8 	bnez	v0,40bd0c <_ppfs_parsespec+0x17c>
+  40bd2c:	00041600 	sll	v0,a0,0x18
+  40bd30:	82020000 	lb	v0,0(s0)
+  40bd34:	30e30004 	andi	v1,a3,0x4
+  40bd38:	ae82000c 	sw	v0,12(s4)
+  40bd3c:	ae8a0004 	sw	t2,4(s4)
+  40bd40:	10600088 	beqz	v1,40bf64 <_ppfs_parsespec+0x3d4>
+  40bd44:	ae890008 	sw	t1,8(s4)
+  40bd48:	24020030 	li	v0,48
+  40bd4c:	ae820014 	sw	v0,20(s4)
+  40bd50:	2402fffb 	li	v0,-5
+  40bd54:	00e21024 	and	v0,a3,v0
+  40bd58:	30c30f00 	andi	v1,a2,0xf00
+  40bd5c:	00431025 	or	v0,v0,v1
+  40bd60:	ae820010 	sw	v0,16(s4)
+  40bd64:	24020001 	li	v0,1
+  40bd68:	ae82001c 	sw	v0,28(s4)
+  40bd6c:	80a20000 	lb	v0,0(a1)
+  40bd70:	00000000 	nop
+  40bd74:	10400050 	beqz	v0,40beb8 <_ppfs_parsespec+0x328>
+  40bd78:	2402006d 	li	v0,109
+  40bd7c:	1aa00041 	blez	s5,40be84 <_ppfs_parsespec+0x2f4>
+  40bd80:	24020001 	li	v0,1
+  40bd84:	00008821 	move	s1,zero
+  40bd88:	00111080 	sll	v0,s1,0x2
+  40bd8c:	03a22021 	addu	a0,sp,v0
+  40bd90:	2a220003 	slti	v0,s1,3
+  40bd94:	10400036 	beqz	v0,40be70 <_ppfs_parsespec+0x2e0>
+  40bd98:	02341821 	addu	v1,s1,s4
+  40bd9c:	90820043 	lbu	v0,67(a0)
+  40bda0:	00000000 	nop
+  40bda4:	00403021 	move	a2,v0
+  40bda8:	a0620024 	sb	v0,36(v1)
+  40bdac:	00061880 	sll	v1,a2,0x2
+  40bdb0:	00112080 	sll	a0,s1,0x2
+  40bdb4:	24630024 	addiu	v1,v1,36
+  40bdb8:	27a20018 	addiu	v0,sp,24
+  40bdbc:	02a6282a 	slt	a1,s5,a2
+  40bdc0:	00449821 	addu	s3,v0,a0
+  40bdc4:	02839021 	addu	s2,s4,v1
+  40bdc8:	10a00005 	beqz	a1,40bde0 <_ppfs_parsespec+0x250>
+  40bdcc:	26310001 	addiu	s1,s1,1
+  40bdd0:	00c0a821 	move	s5,a2
+  40bdd4:	2aa2000a 	slti	v0,s5,10
+  40bdd8:	1040001b 	beqz	v0,40be48 <_ppfs_parsespec+0x2b8>
+  40bddc:	2402ffff 	li	v0,-1
+  40bde0:	8e440000 	lw	a0,0(s2)
+  40bde4:	8e650000 	lw	a1,0(s3)
+  40bde8:	8f998018 	lw	t9,-32744(gp)
+  40bdec:	00000000 	nop
+  40bdf0:	2739baec 	addiu	t9,t9,-17684
+  40bdf4:	00000000 	nop
+  40bdf8:	0320f809 	jalr	t9
+  40bdfc:	00000000 	nop
+  40be00:	8fbc0010 	lw	gp,16(sp)
+  40be04:	10400004 	beqz	v0,40be18 <_ppfs_parsespec+0x288>
+  40be08:	00000000 	nop
+  40be0c:	8e620000 	lw	v0,0(s3)
+  40be10:	00000000 	nop
+  40be14:	ae420000 	sw	v0,0(s2)
+  40be18:	8e82001c 	lw	v0,28(s4)
+  40be1c:	00000000 	nop
+  40be20:	24420002 	addiu	v0,v0,2
+  40be24:	0222102a 	slt	v0,s1,v0
+  40be28:	1440ffd8 	bnez	v0,40bd8c <_ppfs_parsespec+0x1fc>
+  40be2c:	00111080 	sll	v0,s1,0x2
+  40be30:	8e82001c 	lw	v0,28(s4)
+  40be34:	26100001 	addiu	s0,s0,1
+  40be38:	24420002 	addiu	v0,v0,2
+  40be3c:	ae950018 	sw	s5,24(s4)
+  40be40:	ae900000 	sw	s0,0(s4)
+  40be44:	ae960020 	sw	s6,32(s4)
+  40be48:	8fbf0070 	lw	ra,112(sp)
+  40be4c:	8fb60068 	lw	s6,104(sp)
+  40be50:	8fb50064 	lw	s5,100(sp)
+  40be54:	8fb40060 	lw	s4,96(sp)
+  40be58:	8fb3005c 	lw	s3,92(sp)
+  40be5c:	8fb20058 	lw	s2,88(sp)
+  40be60:	8fb10054 	lw	s1,84(sp)
+  40be64:	8fb00050 	lw	s0,80(sp)
+  40be68:	03e00008 	jr	ra
+  40be6c:	27bd0078 	addiu	sp,sp,120
+  40be70:	8fa20048 	lw	v0,72(sp)
+  40be74:	00000000 	nop
+  40be78:	00511021 	addu	v0,v0,s1
+  40be7c:	1000ffcb 	b	40bdac <_ppfs_parsespec+0x21c>
+  40be80:	2446fffe 	addiu	a2,v0,-2
+  40be84:	8e86001c 	lw	a2,28(s4)
+  40be88:	00000000 	nop
+  40be8c:	00063080 	sll	a2,a2,0x2
+  40be90:	26840028 	addiu	a0,s4,40
+  40be94:	a2820026 	sb	v0,38(s4)
+  40be98:	27a50020 	addiu	a1,sp,32
+  40be9c:	8f998254 	lw	t9,-32172(gp)
+  40bea0:	00000000 	nop
+  40bea4:	0320f809 	jalr	t9
+  40bea8:	00000000 	nop
+  40beac:	8fbc0010 	lw	gp,16(sp)
+  40beb0:	1000ffdf 	b	40be30 <_ppfs_parsespec+0x2a0>
+  40beb4:	00000000 	nop
+  40beb8:	82030000 	lb	v1,0(s0)
+  40bebc:	92070000 	lbu	a3,0(s0)
+  40bec0:	10620026 	beq	v1,v0,40bf5c <_ppfs_parsespec+0x3cc>
+  40bec4:	24160014 	li	s6,20
+  40bec8:	8f8581a0 	lw	a1,-32352(gp)
+  40becc:	00000000 	nop
+  40bed0:	8ca50000 	lw	a1,0(a1)
+  40bed4:	24160015 	li	s6,21
+  40bed8:	00a03021 	move	a2,a1
+  40bedc:	00071600 	sll	v0,a3,0x18
+  40bee0:	80a30000 	lb	v1,0(a1)
+  40bee4:	00021603 	sra	v0,v0,0x18
+  40bee8:	10620007 	beq	v1,v0,40bf08 <_ppfs_parsespec+0x378>
+  40beec:	24c4000a 	addiu	a0,a2,10
+  40bef0:	24a50001 	addiu	a1,a1,1
+  40bef4:	00a4102b 	sltu	v0,a1,a0
+  40bef8:	1440fff8 	bnez	v0,40bedc <_ppfs_parsespec+0x34c>
+  40befc:	2402ffff 	li	v0,-1
+  40bf00:	1000ffd1 	b	40be48 <_ppfs_parsespec+0x2b8>
+  40bf04:	00000000 	nop
+  40bf08:	8f8281a0 	lw	v0,-32352(gp)
+  40bf0c:	00000000 	nop
+  40bf10:	8c420000 	lw	v0,0(v0)
+  40bf14:	26840004 	addiu	a0,s4,4
+  40bf18:	00a21023 	subu	v0,a1,v0
+  40bf1c:	00021080 	sll	v0,v0,0x2
+  40bf20:	8f8181b0 	lw	at,-32336(gp)
+  40bf24:	00000000 	nop
+  40bf28:	00220821 	addu	at,at,v0
+  40bf2c:	8c220000 	lw	v0,0(at)
+  40bf30:	24050008 	li	a1,8
+  40bf34:	27a60020 	addiu	a2,sp,32
+  40bf38:	0040c821 	move	t9,v0
+  40bf3c:	0320f809 	jalr	t9
+  40bf40:	00000000 	nop
+  40bf44:	8fbc0010 	lw	gp,16(sp)
+  40bf48:	28430009 	slti	v1,v0,9
+  40bf4c:	1460ff8b 	bnez	v1,40bd7c <_ppfs_parsespec+0x1ec>
+  40bf50:	ae82001c 	sw	v0,28(s4)
+  40bf54:	1000ffbc 	b	40be48 <_ppfs_parsespec+0x2b8>
+  40bf58:	2402ffff 	li	v0,-1
+  40bf5c:	1000ff87 	b	40bd7c <_ppfs_parsespec+0x1ec>
+  40bf60:	ae80001c 	sw	zero,28(s4)
+  40bf64:	1000ff79 	b	40bd4c <_ppfs_parsespec+0x1bc>
+  40bf68:	24020020 	li	v0,32
+  40bf6c:	28620012 	slti	v0,v1,18
+  40bf70:	14400006 	bnez	v0,40bf8c <_ppfs_parsespec+0x3fc>
+  40bf74:	0060b021 	move	s6,v1
+  40bf78:	30c20400 	andi	v0,a2,0x400
+  40bf7c:	10400003 	beqz	v0,40bf8c <_ppfs_parsespec+0x3fc>
+  40bf80:	00000000 	nop
+  40bf84:	2463fffe 	addiu	v1,v1,-2
+  40bf88:	0060b021 	move	s6,v1
+  40bf8c:	8f858018 	lw	a1,-32744(gp)
+  40bf90:	00000000 	nop
+  40bf94:	24a5122f 	addiu	a1,a1,4655
+  40bf98:	24a50001 	addiu	a1,a1,1
+  40bf9c:	80a20000 	lb	v0,0(a1)
+  40bfa0:	00000000 	nop
+  40bfa4:	0043102a 	slt	v0,v0,v1
+  40bfa8:	1440fffb 	bnez	v0,40bf98 <_ppfs_parsespec+0x408>
+  40bfac:	00000000 	nop
+  40bfb0:	8f828018 	lw	v0,-32744(gp)
+  40bfb4:	00000000 	nop
+  40bfb8:	24421230 	addiu	v0,v0,4656
+  40bfbc:	00000000 	nop
+  40bfc0:	00a28823 	subu	s1,a1,v0
+  40bfc4:	00111840 	sll	v1,s1,0x1
+  40bfc8:	8f828018 	lw	v0,-32744(gp)
+  40bfcc:	00000000 	nop
+  40bfd0:	2442123c 	addiu	v0,v0,4668
+  40bfd4:	00431021 	addu	v0,v0,v1
+  40bfd8:	84420000 	lh	v0,0(v0)
+  40bfdc:	8f818018 	lw	at,-32744(gp)
+  40bfe0:	00000000 	nop
+  40bfe4:	2421124c 	addiu	at,at,4684
+  40bfe8:	00230821 	addu	at,at,v1
+  40bfec:	84230000 	lh	v1,0(at)
+  40bff0:	00c21025 	or	v0,a2,v0
+  40bff4:	00431024 	and	v0,v0,v1
+  40bff8:	01002821 	move	a1,t0
+  40bffc:	1000ff4c 	b	40bd30 <_ppfs_parsespec+0x1a0>
+  40c000:	afa20020 	sw	v0,32(sp)
+  40c004:	24a50009 	addiu	a1,a1,9
+  40c008:	1000ff34 	b	40bcdc <_ppfs_parsespec+0x14c>
+  40c00c:	26100001 	addiu	s0,s0,1
+  40c010:	1000ff29 	b	40bcb8 <_ppfs_parsespec+0x128>
+  40c014:	26100001 	addiu	s0,s0,1
+  40c018:	82030000 	lb	v1,0(s0)
+  40c01c:	00000000 	nop
+  40c020:	1462ff16 	bne	v1,v0,40bc7c <_ppfs_parsespec+0xec>
+  40c024:	02204821 	move	t1,s1
+  40c028:	26100001 	addiu	s0,s0,1
+  40c02c:	1000fef2 	b	40bbf8 <_ppfs_parsespec+0x68>
+  40c030:	2404ffff 	li	a0,-1
+  40c034:	12a0000e 	beqz	s5,40c070 <_ppfs_parsespec+0x4e0>
+  40c038:	24030024 	li	v1,36
+  40c03c:	92020000 	lbu	v0,0(s0)
+  40c040:	00000000 	nop
+  40c044:	00021600 	sll	v0,v0,0x18
+  40c048:	00021603 	sra	v0,v0,0x18
+  40c04c:	14430037 	bne	v0,v1,40c12c <_ppfs_parsespec+0x59c>
+  40c050:	26100001 	addiu	s0,s0,1
+  40c054:	1a20ff7c 	blez	s1,40be48 <_ppfs_parsespec+0x2b8>
+  40c058:	2402ffff 	li	v0,-1
+  40c05c:	30820004 	andi	v0,a0,0x4
+  40c060:	03a21021 	addu	v0,sp,v0
+  40c064:	ac510040 	sw	s1,64(v0)
+  40c068:	1000ff01 	b	40bc70 <_ppfs_parsespec+0xe0>
+  40c06c:	3c118000 	lui	s1,0x8000
+  40c070:	24a50001 	addiu	a1,a1,1
+  40c074:	10b0fffc 	beq	a1,s0,40c068 <_ppfs_parsespec+0x4d8>
+  40c078:	2402ffff 	li	v0,-1
+  40c07c:	1000ff72 	b	40be48 <_ppfs_parsespec+0x2b8>
+  40c080:	00000000 	nop
+  40c084:	82030000 	lb	v1,0(s0)
+  40c088:	00000000 	nop
+  40c08c:	10620029 	beq	v1,v0,40c134 <_ppfs_parsespec+0x5a4>
+  40c090:	00000000 	nop
+  40c094:	1ea0ff6c 	bgtz	s5,40be48 <_ppfs_parsespec+0x2b8>
+  40c098:	2402ffff 	li	v0,-1
+  40c09c:	00b0102b 	sltu	v0,a1,s0
+  40c0a0:	10400005 	beqz	v0,40c0b8 <_ppfs_parsespec+0x528>
+  40c0a4:	0000a821 	move	s5,zero
+  40c0a8:	80a30000 	lb	v1,0(a1)
+  40c0ac:	24020030 	li	v0,48
+  40c0b0:	1462feed 	bne	v1,v0,40bc68 <_ppfs_parsespec+0xd8>
+  40c0b4:	2402002a 	li	v0,42
+  40c0b8:	00a08021 	move	s0,a1
+  40c0bc:	24110001 	li	s1,1
+  40c0c0:	8f858018 	lw	a1,-32744(gp)
+  40c0c4:	00000000 	nop
+  40c0c8:	24a51210 	addiu	a1,a1,4624
+  40c0cc:	00000000 	nop
+  40c0d0:	90a20000 	lbu	v0,0(a1)
+  40c0d4:	82030000 	lb	v1,0(s0)
+  40c0d8:	00021600 	sll	v0,v0,0x18
+  40c0dc:	00021603 	sra	v0,v0,0x18
+  40c0e0:	1062000f 	beq	v1,v0,40c120 <_ppfs_parsespec+0x590>
+  40c0e4:	24a50001 	addiu	a1,a1,1
+  40c0e8:	80a20000 	lb	v0,0(a1)
+  40c0ec:	00000000 	nop
+  40c0f0:	1440fff7 	bnez	v0,40c0d0 <_ppfs_parsespec+0x540>
+  40c0f4:	00118840 	sll	s1,s1,0x1
+  40c0f8:	30e2000a 	andi	v0,a3,0xa
+  40c0fc:	00021043 	sra	v0,v0,0x1
+  40c100:	00021027 	nor	v0,zero,v0
+  40c104:	8203ffff 	lb	v1,-1(s0)
+  40c108:	00e23824 	and	a3,a3,v0
+  40c10c:	24020025 	li	v0,37
+  40c110:	1462feb9 	bne	v1,v0,40bbf8 <_ppfs_parsespec+0x68>
+  40c114:	00008821 	move	s1,zero
+  40c118:	1000fed1 	b	40bc60 <_ppfs_parsespec+0xd0>
+  40c11c:	00000000 	nop
+  40c120:	00f13825 	or	a3,a3,s1
+  40c124:	1000ffe5 	b	40c0bc <_ppfs_parsespec+0x52c>
+  40c128:	26100001 	addiu	s0,s0,1
+  40c12c:	1000ff46 	b	40be48 <_ppfs_parsespec+0x2b8>
+  40c130:	2402ffff 	li	v0,-1
+  40c134:	1a20ffd7 	blez	s1,40c094 <_ppfs_parsespec+0x504>
+  40c138:	00000000 	nop
+  40c13c:	26100001 	addiu	s0,s0,1
+  40c140:	12a0ff41 	beqz	s5,40be48 <_ppfs_parsespec+0x2b8>
+  40c144:	2402ffff 	li	v0,-1
+  40c148:	02b1102a 	slt	v0,s5,s1
+  40c14c:	1040ffdb 	beqz	v0,40c0bc <_ppfs_parsespec+0x52c>
+  40c150:	afb10048 	sw	s1,72(sp)
+  40c154:	1000ffd9 	b	40c0bc <_ppfs_parsespec+0x52c>
+  40c158:	0220a821 	move	s5,s1
+  40c15c:	30820004 	andi	v0,a0,0x4
+  40c160:	03a21021 	addu	v0,sp,v0
+  40c164:	ac400018 	sw	zero,24(v0)
+  40c168:	1000fea7 	b	40bc08 <_ppfs_parsespec+0x78>
+  40c16c:	26100001 	addiu	s0,s0,1
+
+0040c170 <_charpad>:
+  40c170:	3c1c0fc0 	lui	gp,0xfc0
+  40c174:	279cc0e0 	addiu	gp,gp,-16160
+  40c178:	0399e021 	addu	gp,gp,t9
+  40c17c:	27bdffd0 	addiu	sp,sp,-48
+  40c180:	afbc0010 	sw	gp,16(sp)
+  40c184:	afb00020 	sw	s0,32(sp)
+  40c188:	00c08021 	move	s0,a2
+  40c18c:	afb10024 	sw	s1,36(sp)
+  40c190:	afbf002c 	sw	ra,44(sp)
+  40c194:	afbc0028 	sw	gp,40(sp)
+  40c198:	a3a50018 	sb	a1,24(sp)
+  40c19c:	1200000c 	beqz	s0,40c1d0 <_charpad+0x60>
+  40c1a0:	00808821 	move	s1,a0
+  40c1a4:	2610ffff 	addiu	s0,s0,-1
+  40c1a8:	27a40018 	addiu	a0,sp,24
+  40c1ac:	24050001 	li	a1,1
+  40c1b0:	02203021 	move	a2,s1
+  40c1b4:	8f9982a4 	lw	t9,-32092(gp)
+  40c1b8:	00000000 	nop
+  40c1bc:	0320f809 	jalr	t9
+  40c1c0:	00000000 	nop
+  40c1c4:	8fbc0010 	lw	gp,16(sp)
+  40c1c8:	1600fff7 	bnez	s0,40c1a8 <_charpad+0x38>
+  40c1cc:	2610ffff 	addiu	s0,s0,-1
+  40c1d0:	8fbf002c 	lw	ra,44(sp)
+  40c1d4:	8fb10024 	lw	s1,36(sp)
+  40c1d8:	8fb00020 	lw	s0,32(sp)
+  40c1dc:	03e00008 	jr	ra
+  40c1e0:	27bd0030 	addiu	sp,sp,48
+
+0040c1e4 <_do_one_spec>:
+  40c1e4:	3c1c0fc0 	lui	gp,0xfc0
+  40c1e8:	279cc06c 	addiu	gp,gp,-16276
+  40c1ec:	0399e021 	addu	gp,gp,t9
+  40c1f0:	27bdff50 	addiu	sp,sp,-176
+  40c1f4:	afbc0018 	sw	gp,24(sp)
+  40c1f8:	afb3008c 	sw	s3,140(sp)
+  40c1fc:	00a09821 	move	s3,a1
+  40c200:	afb60098 	sw	s6,152(sp)
+  40c204:	0080b021 	move	s6,a0
+  40c208:	02602021 	move	a0,s3
+  40c20c:	afbe00a4 	sw	s8,164(sp)
+  40c210:	afb7009c 	sw	s7,156(sp)
+  40c214:	afb50094 	sw	s5,148(sp)
+  40c218:	afb40090 	sw	s4,144(sp)
+  40c21c:	00c0b821 	move	s7,a2
+  40c220:	afbf00a8 	sw	ra,168(sp)
+  40c224:	afbc00a0 	sw	gp,160(sp)
+  40c228:	afb20088 	sw	s2,136(sp)
+  40c22c:	afb10084 	sw	s1,132(sp)
+  40c230:	afb00080 	sw	s0,128(sp)
+  40c234:	8f998060 	lw	t9,-32672(gp)
+  40c238:	00000000 	nop
+  40c23c:	0320f809 	jalr	t9
+  40c240:	00000000 	nop
+  40c244:	8fbc0018 	lw	gp,24(sp)
+  40c248:	02602021 	move	a0,s3
+  40c24c:	8f9980e0 	lw	t9,-32544(gp)
+  40c250:	00000000 	nop
+  40c254:	0320f809 	jalr	t9
+  40c258:	00000000 	nop
+  40c25c:	8fbc0018 	lw	gp,24(sp)
+  40c260:	92660026 	lbu	a2,38(s3)
+  40c264:	8e630018 	lw	v1,24(s3)
+  40c268:	00061080 	sll	v0,a2,0x2
+  40c26c:	02621021 	addu	v0,s3,v0
+  40c270:	24440024 	addiu	a0,v0,36
+  40c274:	0000a021 	move	s4,zero
+  40c278:	2415000b 	li	s5,11
+  40c27c:	241e0020 	li	s8,32
+  40c280:	18600004 	blez	v1,40c294 <_do_one_spec+0xb0>
+  40c284:	26650058 	addiu	a1,s3,88
+  40c288:	000610c0 	sll	v0,a2,0x3
+  40c28c:	00a21021 	addu	v0,a1,v0
+  40c290:	2445fff8 	addiu	a1,v0,-8
+  40c294:	8e67001c 	lw	a3,28(s3)
+  40c298:	00000000 	nop
+  40c29c:	18e00008 	blez	a3,40c2c0 <_do_one_spec+0xdc>
+  40c2a0:	00003021 	move	a2,zero
+  40c2a4:	00061080 	sll	v0,a2,0x2
+  40c2a8:	24c60001 	addiu	a2,a2,1
+  40c2ac:	03a21021 	addu	v0,sp,v0
+  40c2b0:	00c7182a 	slt	v1,a2,a3
+  40c2b4:	ac450020 	sw	a1,32(v0)
+  40c2b8:	1460fffa 	bnez	v1,40c2a4 <_do_one_spec+0xc0>
+  40c2bc:	24a50008 	addiu	a1,a1,8
+  40c2c0:	8e650020 	lw	a1,32(s3)
+  40c2c4:	00000000 	nop
+  40c2c8:	10a00141 	beqz	a1,40c7d0 <_do_one_spec+0x5ec>
+  40c2cc:	00000000 	nop
+  40c2d0:	2ca20008 	sltiu	v0,a1,8
+  40c2d4:	104000da 	beqz	v0,40c640 <_do_one_spec+0x45c>
+  40c2d8:	2ca30010 	sltiu	v1,a1,16
+  40c2dc:	2ca20006 	sltiu	v0,a1,6
+  40c2e0:	8f908018 	lw	s0,-32744(gp)
+  40c2e4:	00000000 	nop
+  40c2e8:	26101270 	addiu	s0,s0,4720
+  40c2ec:	02058021 	addu	s0,s0,a1
+  40c2f0:	8210ffff 	lb	s0,-1(s0)
+  40c2f4:	104000d0 	beqz	v0,40c638 <_do_one_spec+0x454>
+  40c2f8:	24020001 	li	v0,1
+  40c2fc:	10a200cc 	beq	a1,v0,40c630 <_do_one_spec+0x44c>
+  40c300:	00000000 	nop
+  40c304:	8e620004 	lw	v0,4(s3)
+  40c308:	00000000 	nop
+  40c30c:	044000c5 	bltz	v0,40c624 <_do_one_spec+0x440>
+  40c310:	00000000 	nop
+  40c314:	8c840000 	lw	a0,0(a0)
+  40c318:	8fa50020 	lw	a1,32(sp)
+  40c31c:	02003021 	move	a2,s0
+  40c320:	30840f00 	andi	a0,a0,0xf00
+  40c324:	8f998034 	lw	t9,-32716(gp)
+  40c328:	00000000 	nop
+  40c32c:	0320f809 	jalr	t9
+  40c330:	00000000 	nop
+  40c334:	8fbc0018 	lw	gp,24(sp)
+  40c338:	00603821 	move	a3,v1
+  40c33c:	8e630020 	lw	v1,32(s3)
+  40c340:	00403021 	move	a2,v0
+  40c344:	24020003 	li	v0,3
+  40c348:	106200b4 	beq	v1,v0,40c61c <_do_one_spec+0x438>
+  40c34c:	afb00010 	sw	s0,16(sp)
+  40c350:	24020057 	li	v0,87
+  40c354:	afa20014 	sw	v0,20(sp)
+  40c358:	27a4007f 	addiu	a0,sp,127
+  40c35c:	8f998278 	lw	t9,-32136(gp)
+  40c360:	00000000 	nop
+  40c364:	0320f809 	jalr	t9
+  40c368:	00000000 	nop
+  40c36c:	8fbc0018 	lw	gp,24(sp)
+  40c370:	00408021 	move	s0,v0
+  40c374:	8e620020 	lw	v0,32(s3)
+  40c378:	00000000 	nop
+  40c37c:	2c420006 	sltiu	v0,v0,6
+  40c380:	1440000c 	bnez	v0,40c3b4 <_do_one_spec+0x1d0>
+  40c384:	27a20040 	addiu	v0,sp,64
+  40c388:	82030000 	lb	v1,0(s0)
+  40c38c:	2402002d 	li	v0,45
+  40c390:	1062009c 	beq	v1,v0,40c604 <_do_one_spec+0x420>
+  40c394:	00000000 	nop
+  40c398:	8e630010 	lw	v1,16(s3)
+  40c39c:	00000000 	nop
+  40c3a0:	30620002 	andi	v0,v1,0x2
+  40c3a4:	10400093 	beqz	v0,40c5f4 <_do_one_spec+0x410>
+  40c3a8:	30620001 	andi	v0,v1,0x1
+  40c3ac:	0000a821 	move	s5,zero
+  40c3b0:	27a20040 	addiu	v0,sp,64
+  40c3b4:	8e740004 	lw	s4,4(s3)
+  40c3b8:	00502023 	subu	a0,v0,s0
+  40c3bc:	0680008b 	bltz	s4,40c5ec <_do_one_spec+0x408>
+  40c3c0:	2492003f 	addiu	s2,a0,63
+  40c3c4:	8e620010 	lw	v0,16(s3)
+  40c3c8:	00000000 	nop
+  40c3cc:	30420010 	andi	v0,v0,0x10
+  40c3d0:	1040000c 	beqz	v0,40c404 <_do_one_spec+0x220>
+  40c3d4:	00000000 	nop
+  40c3d8:	8e630020 	lw	v1,32(s3)
+  40c3dc:	00000000 	nop
+  40c3e0:	2c620003 	sltiu	v0,v1,3
+  40c3e4:	10400002 	beqz	v0,40c3f0 <_do_one_spec+0x20c>
+  40c3e8:	24020003 	li	v0,3
+  40c3ec:	24150006 	li	s5,6
+  40c3f0:	1062007c 	beq	v1,v0,40c5e4 <_do_one_spec+0x400>
+  40c3f4:	00000000 	nop
+  40c3f8:	24020004 	li	v0,4
+  40c3fc:	10620071 	beq	v1,v0,40c5c4 <_do_one_spec+0x3e0>
+  40c400:	0254102b 	sltu	v0,s2,s4
+  40c404:	82030000 	lb	v1,0(s0)
+  40c408:	24020030 	li	v0,48
+  40c40c:	1062005c 	beq	v1,v0,40c580 <_do_one_spec+0x39c>
+  40c410:	2aa20006 	slti	v0,s5,6
+  40c414:	0254102b 	sltu	v0,s2,s4
+  40c418:	14400002 	bnez	v0,40c424 <_do_one_spec+0x240>
+  40c41c:	02923023 	subu	a2,s4,s2
+  40c420:	00003021 	move	a2,zero
+  40c424:	00c0a021 	move	s4,a2
+  40c428:	2402000b 	li	v0,11
+  40c42c:	12a20005 	beq	s5,v0,40c444 <_do_one_spec+0x260>
+  40c430:	02541821 	addu	v1,s2,s4
+  40c434:	2aa20006 	slti	v0,s5,6
+  40c438:	1040004f 	beqz	v0,40c578 <_do_one_spec+0x394>
+  40c43c:	00000000 	nop
+  40c440:	24630001 	addiu	v1,v1,1
+  40c444:	8e640008 	lw	a0,8(s3)
+  40c448:	00000000 	nop
+  40c44c:	0064102b 	sltu	v0,v1,a0
+  40c450:	10400002 	beqz	v0,40c45c <_do_one_spec+0x278>
+  40c454:	00008821 	move	s1,zero
+  40c458:	00838823 	subu	s1,a0,v1
+  40c45c:	8ee20000 	lw	v0,0(s7)
+  40c460:	00711821 	addu	v1,v1,s1
+  40c464:	00431021 	addu	v0,v0,v1
+  40c468:	aee20000 	sw	v0,0(s7)
+  40c46c:	24020030 	li	v0,48
+  40c470:	13c2003e 	beq	s8,v0,40c56c <_do_one_spec+0x388>
+  40c474:	00000000 	nop
+  40c478:	8e620010 	lw	v0,16(s3)
+  40c47c:	00000000 	nop
+  40c480:	30420008 	andi	v0,v0,0x8
+  40c484:	10400030 	beqz	v0,40c548 <_do_one_spec+0x364>
+  40c488:	02203021 	move	a2,s1
+  40c48c:	8f848018 	lw	a0,-32744(gp)
+  40c490:	00000000 	nop
+  40c494:	24841278 	addiu	a0,a0,4728
+  40c498:	00952021 	addu	a0,a0,s5
+  40c49c:	02c02821 	move	a1,s6
+  40c4a0:	8f998058 	lw	t9,-32680(gp)
+  40c4a4:	00000000 	nop
+  40c4a8:	0320f809 	jalr	t9
+  40c4ac:	00000000 	nop
+  40c4b0:	8fbc0018 	lw	gp,24(sp)
+  40c4b4:	02c02021 	move	a0,s6
+  40c4b8:	02803021 	move	a2,s4
+  40c4bc:	24050030 	li	a1,48
+  40c4c0:	8f998178 	lw	t9,-32392(gp)
+  40c4c4:	00000000 	nop
+  40c4c8:	0320f809 	jalr	t9
+  40c4cc:	00000000 	nop
+  40c4d0:	8fbc0018 	lw	gp,24(sp)
+  40c4d4:	02002021 	move	a0,s0
+  40c4d8:	02402821 	move	a1,s2
+  40c4dc:	02c03021 	move	a2,s6
+  40c4e0:	8f9982a4 	lw	t9,-32092(gp)
+  40c4e4:	00000000 	nop
+  40c4e8:	0320f809 	jalr	t9
+  40c4ec:	00000000 	nop
+  40c4f0:	8fbc0018 	lw	gp,24(sp)
+  40c4f4:	02c02021 	move	a0,s6
+  40c4f8:	02203021 	move	a2,s1
+  40c4fc:	24050020 	li	a1,32
+  40c500:	8f998178 	lw	t9,-32392(gp)
+  40c504:	00000000 	nop
+  40c508:	0320f809 	jalr	t9
+  40c50c:	00000000 	nop
+  40c510:	8fbc0018 	lw	gp,24(sp)
+  40c514:	00001021 	move	v0,zero
+  40c518:	8fbf00a8 	lw	ra,168(sp)
+  40c51c:	8fbe00a4 	lw	s8,164(sp)
+  40c520:	8fb7009c 	lw	s7,156(sp)
+  40c524:	8fb60098 	lw	s6,152(sp)
+  40c528:	8fb50094 	lw	s5,148(sp)
+  40c52c:	8fb40090 	lw	s4,144(sp)
+  40c530:	8fb3008c 	lw	s3,140(sp)
+  40c534:	8fb20088 	lw	s2,136(sp)
+  40c538:	8fb10084 	lw	s1,132(sp)
+  40c53c:	8fb00080 	lw	s0,128(sp)
+  40c540:	03e00008 	jr	ra
+  40c544:	27bd00b0 	addiu	sp,sp,176
+  40c548:	02c02021 	move	a0,s6
+  40c54c:	24050020 	li	a1,32
+  40c550:	8f998178 	lw	t9,-32392(gp)
+  40c554:	00000000 	nop
+  40c558:	0320f809 	jalr	t9
+  40c55c:	00000000 	nop
+  40c560:	8fbc0018 	lw	gp,24(sp)
+  40c564:	1000ffc9 	b	40c48c <_do_one_spec+0x2a8>
+  40c568:	00008821 	move	s1,zero
+  40c56c:	0291a021 	addu	s4,s4,s1
+  40c570:	1000ffc1 	b	40c478 <_do_one_spec+0x294>
+  40c574:	00008821 	move	s1,zero
+  40c578:	1000ffb2 	b	40c444 <_do_one_spec+0x260>
+  40c57c:	24630002 	addiu	v1,v1,2
+  40c580:	14400002 	bnez	v0,40c58c <_do_one_spec+0x3a8>
+  40c584:	00000000 	nop
+  40c588:	2415000b 	li	s5,11
+  40c58c:	8e630020 	lw	v1,32(s3)
+  40c590:	24020001 	li	v0,1
+  40c594:	10620005 	beq	v1,v0,40c5ac <_do_one_spec+0x3c8>
+  40c598:	00000000 	nop
+  40c59c:	1680ff9e 	bnez	s4,40c418 <_do_one_spec+0x234>
+  40c5a0:	0254102b 	sltu	v0,s2,s4
+  40c5a4:	1000ff9b 	b	40c414 <_do_one_spec+0x230>
+  40c5a8:	00009021 	move	s2,zero
+  40c5ac:	8f908018 	lw	s0,-32744(gp)
+  40c5b0:	00000000 	nop
+  40c5b4:	26101284 	addiu	s0,s0,4740
+  40c5b8:	24120005 	li	s2,5
+  40c5bc:	1000ff95 	b	40c414 <_do_one_spec+0x230>
+  40c5c0:	0000a021 	move	s4,zero
+  40c5c4:	1440ff8f 	bnez	v0,40c404 <_do_one_spec+0x220>
+  40c5c8:	24020030 	li	v0,48
+  40c5cc:	82030000 	lb	v1,0(s0)
+  40c5d0:	00000000 	nop
+  40c5d4:	1462ff8d 	bne	v1,v0,40c40c <_do_one_spec+0x228>
+  40c5d8:	24940040 	addiu	s4,a0,64
+  40c5dc:	1000ff8b 	b	40c40c <_do_one_spec+0x228>
+  40c5e0:	24140001 	li	s4,1
+  40c5e4:	1000ff84 	b	40c3f8 <_do_one_spec+0x214>
+  40c5e8:	24150009 	li	s5,9
+  40c5ec:	1000ff75 	b	40c3c4 <_do_one_spec+0x1e0>
+  40c5f0:	24140001 	li	s4,1
+  40c5f4:	1040ff6f 	beqz	v0,40c3b4 <_do_one_spec+0x1d0>
+  40c5f8:	27a20040 	addiu	v0,sp,64
+  40c5fc:	1000ff6d 	b	40c3b4 <_do_one_spec+0x1d0>
+  40c600:	24150004 	li	s5,4
+  40c604:	8e620010 	lw	v0,16(s3)
+  40c608:	26100001 	addiu	s0,s0,1
+  40c60c:	34420002 	ori	v0,v0,0x2
+  40c610:	24150002 	li	s5,2
+  40c614:	1000ff66 	b	40c3b0 <_do_one_spec+0x1cc>
+  40c618:	ae620010 	sw	v0,16(s3)
+  40c61c:	1000ff4d 	b	40c354 <_do_one_spec+0x170>
+  40c620:	24020037 	li	v0,55
+  40c624:	827e0017 	lb	s8,23(s3)
+  40c628:	1000ff3a 	b	40c314 <_do_one_spec+0x130>
+  40c62c:	00000000 	nop
+  40c630:	1000ff34 	b	40c304 <_do_one_spec+0x120>
+  40c634:	24150006 	li	s5,6
+  40c638:	1000ff32 	b	40c304 <_do_one_spec+0x120>
+  40c63c:	00108023 	negu	s0,s0
+  40c640:	1460ffb5 	bnez	v1,40c518 <_do_one_spec+0x334>
+  40c644:	2402ffff 	li	v0,-1
+  40c648:	2ca30012 	sltiu	v1,a1,18
+  40c64c:	1460ffb2 	bnez	v1,40c518 <_do_one_spec+0x334>
+  40c650:	00000000 	nop
+  40c654:	2ca20014 	sltiu	v0,a1,20
+  40c658:	10400024 	beqz	v0,40c6ec <_do_one_spec+0x508>
+  40c65c:	24020014 	li	v0,20
+  40c660:	24020013 	li	v0,19
+  40c664:	10a20008 	beq	a1,v0,40c688 <_do_one_spec+0x4a4>
+  40c668:	27b00040 	addiu	s0,sp,64
+  40c66c:	8fa20020 	lw	v0,32(sp)
+  40c670:	00000000 	nop
+  40c674:	90420003 	lbu	v0,3(v0)
+  40c678:	24120001 	li	s2,1
+  40c67c:	a3a20040 	sb	v0,64(sp)
+  40c680:	1000ff69 	b	40c428 <_do_one_spec+0x244>
+  40c684:	a3a00041 	sb	zero,65(sp)
+  40c688:	8fa20020 	lw	v0,32(sp)
+  40c68c:	00000000 	nop
+  40c690:	8c500000 	lw	s0,0(v0)
+  40c694:	00000000 	nop
+  40c698:	1200000f 	beqz	s0,40c6d8 <_do_one_spec+0x4f4>
+  40c69c:	00000000 	nop
+  40c6a0:	8e620004 	lw	v0,4(s3)
+  40c6a4:	00000000 	nop
+  40c6a8:	04400009 	bltz	v0,40c6d0 <_do_one_spec+0x4ec>
+  40c6ac:	00402821 	move	a1,v0
+  40c6b0:	02002021 	move	a0,s0
+  40c6b4:	8f9981dc 	lw	t9,-32292(gp)
+  40c6b8:	00000000 	nop
+  40c6bc:	0320f809 	jalr	t9
+  40c6c0:	00000000 	nop
+  40c6c4:	8fbc0018 	lw	gp,24(sp)
+  40c6c8:	1000ff57 	b	40c428 <_do_one_spec+0x244>
+  40c6cc:	00409021 	move	s2,v0
+  40c6d0:	1000fff7 	b	40c6b0 <_do_one_spec+0x4cc>
+  40c6d4:	2405ffff 	li	a1,-1
+  40c6d8:	8f908018 	lw	s0,-32744(gp)
+  40c6dc:	00000000 	nop
+  40c6e0:	2610128c 	addiu	s0,s0,4748
+  40c6e4:	1000ff50 	b	40c428 <_do_one_spec+0x244>
+  40c6e8:	24120006 	li	s2,6
+  40c6ec:	10a20029 	beq	a1,v0,40c794 <_do_one_spec+0x5b0>
+  40c6f0:	00000000 	nop
+  40c6f4:	8f9081a0 	lw	s0,-32352(gp)
+  40c6f8:	00000000 	nop
+  40c6fc:	8e100000 	lw	s0,0(s0)
+  40c700:	00000000 	nop
+  40c704:	02002821 	move	a1,s0
+  40c708:	82030000 	lb	v1,0(s0)
+  40c70c:	8e62000c 	lw	v0,12(s3)
+  40c710:	00000000 	nop
+  40c714:	10620007 	beq	v1,v0,40c734 <_do_one_spec+0x550>
+  40c718:	24a4000a 	addiu	a0,a1,10
+  40c71c:	26100001 	addiu	s0,s0,1
+  40c720:	0204102b 	sltu	v0,s0,a0
+  40c724:	1440fff8 	bnez	v0,40c708 <_do_one_spec+0x524>
+  40c728:	00000000 	nop
+  40c72c:	1000ff7a 	b	40c518 <_do_one_spec+0x334>
+  40c730:	2402ffff 	li	v0,-1
+  40c734:	8f8281a0 	lw	v0,-32352(gp)
+  40c738:	00000000 	nop
+  40c73c:	8c420000 	lw	v0,0(v0)
+  40c740:	02c02021 	move	a0,s6
+  40c744:	02021023 	subu	v0,s0,v0
+  40c748:	00021080 	sll	v0,v0,0x2
+  40c74c:	8f81807c 	lw	at,-32644(gp)
+  40c750:	00000000 	nop
+  40c754:	00220821 	addu	at,at,v0
+  40c758:	8c220000 	lw	v0,0(at)
+  40c75c:	26650004 	addiu	a1,s3,4
+  40c760:	27a60020 	addiu	a2,sp,32
+  40c764:	0040c821 	move	t9,v0
+  40c768:	0320f809 	jalr	t9
+  40c76c:	00000000 	nop
+  40c770:	8fbc0018 	lw	gp,24(sp)
+  40c774:	00402021 	move	a0,v0
+  40c778:	0480ffec 	bltz	a0,40c72c <_do_one_spec+0x548>
+  40c77c:	00000000 	nop
+  40c780:	8ee30000 	lw	v1,0(s7)
+  40c784:	00001021 	move	v0,zero
+  40c788:	00641821 	addu	v1,v1,a0
+  40c78c:	1000ff62 	b	40c518 <_do_one_spec+0x334>
+  40c790:	aee30000 	sw	v1,0(s7)
+  40c794:	8f9980a0 	lw	t9,-32608(gp)
+  40c798:	00000000 	nop
+  40c79c:	0320f809 	jalr	t9
+  40c7a0:	00000000 	nop
+  40c7a4:	8fbc0018 	lw	gp,24(sp)
+  40c7a8:	8c440000 	lw	a0,0(v0)
+  40c7ac:	27a50040 	addiu	a1,sp,64
+  40c7b0:	24060040 	li	a2,64
+  40c7b4:	8f9981ec 	lw	t9,-32276(gp)
+  40c7b8:	00000000 	nop
+  40c7bc:	0320f809 	jalr	t9
+  40c7c0:	00000000 	nop
+  40c7c4:	8fbc0018 	lw	gp,24(sp)
+  40c7c8:	1000ffb5 	b	40c6a0 <_do_one_spec+0x4bc>
+  40c7cc:	00408021 	move	s0,v0
+  40c7d0:	8ee20000 	lw	v0,0(s7)
+  40c7d4:	8e650010 	lw	a1,16(s3)
+  40c7d8:	00403821 	move	a3,v0
+  40c7dc:	000237c3 	sra	a2,v0,0x1f
+  40c7e0:	8fa20020 	lw	v0,32(sp)
+  40c7e4:	30a50f00 	andi	a1,a1,0xf00
+  40c7e8:	8c440000 	lw	a0,0(v0)
+  40c7ec:	8f998168 	lw	t9,-32408(gp)
+  40c7f0:	00000000 	nop
+  40c7f4:	0320f809 	jalr	t9
+  40c7f8:	00000000 	nop
+  40c7fc:	8fbc0018 	lw	gp,24(sp)
+  40c800:	1000ff45 	b	40c518 <_do_one_spec+0x334>
+  40c804:	00001021 	move	v0,zero
+	...
+
+0040c810 <_store_inttype>:
+  40c810:	3c1c0fc0 	lui	gp,0xfc0
+  40c814:	279cba40 	addiu	gp,gp,-17856
+  40c818:	0399e021 	addu	gp,gp,t9
+  40c81c:	24020100 	li	v0,256
+  40c820:	10a2000c 	beq	a1,v0,40c854 <_store_inttype+0x44>
+  40c824:	24020800 	li	v0,2048
+  40c828:	10a20007 	beq	a1,v0,40c848 <_store_inttype+0x38>
+  40c82c:	24020200 	li	v0,512
+  40c830:	10a20003 	beq	a1,v0,40c840 <_store_inttype+0x30>
+  40c834:	00000000 	nop
+  40c838:	03e00008 	jr	ra
+  40c83c:	ac870000 	sw	a3,0(a0)
+  40c840:	03e00008 	jr	ra
+  40c844:	a4870000 	sh	a3,0(a0)
+  40c848:	ac860000 	sw	a2,0(a0)
+  40c84c:	03e00008 	jr	ra
+  40c850:	ac870004 	sw	a3,4(a0)
+  40c854:	03e00008 	jr	ra
+  40c858:	a0870000 	sb	a3,0(a0)
+  40c85c:	00000000 	nop
+
+0040c860 <_load_inttype>:
+  40c860:	3c1c0fc0 	lui	gp,0xfc0
+  40c864:	279cb9f0 	addiu	gp,gp,-17936
+  40c868:	0399e021 	addu	gp,gp,t9
+  40c86c:	04c00011 	bltz	a2,40c8b4 <_load_inttype+0x54>
+  40c870:	30820800 	andi	v0,a0,0x800
+  40c874:	14400011 	bnez	v0,40c8bc <_load_inttype+0x5c>
+  40c878:	00000000 	nop
+  40c87c:	24020100 	li	v0,256
+  40c880:	8ca50000 	lw	a1,0(a1)
+  40c884:	10820009 	beq	a0,v0,40c8ac <_load_inttype+0x4c>
+  40c888:	00000000 	nop
+  40c88c:	24020200 	li	v0,512
+  40c890:	10820004 	beq	a0,v0,40c8a4 <_load_inttype+0x44>
+  40c894:	00000000 	nop
+  40c898:	00a01821 	move	v1,a1
+  40c89c:	03e00008 	jr	ra
+  40c8a0:	00001021 	move	v0,zero
+  40c8a4:	1000fffc 	b	40c898 <_load_inttype+0x38>
+  40c8a8:	30a5ffff 	andi	a1,a1,0xffff
+  40c8ac:	1000fff7 	b	40c88c <_load_inttype+0x2c>
+  40c8b0:	30a500ff 	andi	a1,a1,0xff
+  40c8b4:	10400005 	beqz	v0,40c8cc <_load_inttype+0x6c>
+  40c8b8:	00000000 	nop
+  40c8bc:	8ca20000 	lw	v0,0(a1)
+  40c8c0:	8ca30004 	lw	v1,4(a1)
+  40c8c4:	03e00008 	jr	ra
+  40c8c8:	00000000 	nop
+  40c8cc:	24020100 	li	v0,256
+  40c8d0:	8ca50000 	lw	a1,0(a1)
+  40c8d4:	1082000a 	beq	a0,v0,40c900 <_load_inttype+0xa0>
+  40c8d8:	00051600 	sll	v0,a1,0x18
+  40c8dc:	24020200 	li	v0,512
+  40c8e0:	10820004 	beq	a0,v0,40c8f4 <_load_inttype+0x94>
+  40c8e4:	00000000 	nop
+  40c8e8:	00a01821 	move	v1,a1
+  40c8ec:	03e00008 	jr	ra
+  40c8f0:	000517c3 	sra	v0,a1,0x1f
+  40c8f4:	00051400 	sll	v0,a1,0x10
+  40c8f8:	1000fffb 	b	40c8e8 <_load_inttype+0x88>
+  40c8fc:	00022c03 	sra	a1,v0,0x10
+  40c900:	1000fff6 	b	40c8dc <_load_inttype+0x7c>
+  40c904:	00022e03 	sra	a1,v0,0x18
+	...
+
+0040c910 <memmove>:
+  40c910:	3c1c0fc0 	lui	gp,0xfc0
+  40c914:	279cb940 	addiu	gp,gp,-18112
+  40c918:	0399e021 	addu	gp,gp,t9
+  40c91c:	00a4102b 	sltu	v0,a1,a0
+  40c920:	00803821 	move	a3,a0
+  40c924:	1440000b 	bnez	v0,40c954 <memmove+0x44>
+  40c928:	00a01821 	move	v1,a1
+  40c92c:	10c00007 	beqz	a2,40c94c <memmove+0x3c>
+  40c930:	00000000 	nop
+  40c934:	90620000 	lbu	v0,0(v1)
+  40c938:	24c6ffff 	addiu	a2,a2,-1
+  40c93c:	a0e20000 	sb	v0,0(a3)
+  40c940:	24630001 	addiu	v1,v1,1
+  40c944:	14c0fffb 	bnez	a2,40c934 <memmove+0x24>
+  40c948:	24e70001 	addiu	a3,a3,1
+  40c94c:	03e00008 	jr	ra
+  40c950:	00801021 	move	v0,a0
+  40c954:	10c0fffd 	beqz	a2,40c94c <memmove+0x3c>
+  40c958:	00000000 	nop
+  40c95c:	24c6ffff 	addiu	a2,a2,-1
+  40c960:	00a61021 	addu	v0,a1,a2
+  40c964:	90430000 	lbu	v1,0(v0)
+  40c968:	00861021 	addu	v0,a0,a2
+  40c96c:	14c0fffb 	bnez	a2,40c95c <memmove+0x4c>
+  40c970:	a0430000 	sb	v1,0(v0)
+  40c974:	1000fff5 	b	40c94c <memmove+0x3c>
+  40c978:	00000000 	nop
+  40c97c:	00000000 	nop
+
+0040c980 <mempcpy>:
+  40c980:	3c1c0fc0 	lui	gp,0xfc0
+  40c984:	279cb8d0 	addiu	gp,gp,-18224
+  40c988:	0399e021 	addu	gp,gp,t9
+  40c98c:	10c00007 	beqz	a2,40c9ac <mempcpy+0x2c>
+  40c990:	00000000 	nop
+  40c994:	90a20000 	lbu	v0,0(a1)
+  40c998:	24c6ffff 	addiu	a2,a2,-1
+  40c99c:	a0820000 	sb	v0,0(a0)
+  40c9a0:	24a50001 	addiu	a1,a1,1
+  40c9a4:	14c0fffb 	bnez	a2,40c994 <mempcpy+0x14>
+  40c9a8:	24840001 	addiu	a0,a0,1
+  40c9ac:	03e00008 	jr	ra
+  40c9b0:	00801021 	move	v0,a0
+	...
+
+0040c9c0 <strnlen>:
+  40c9c0:	3c1c0fc0 	lui	gp,0xfc0
+  40c9c4:	279cb890 	addiu	gp,gp,-18288
+  40c9c8:	0399e021 	addu	gp,gp,t9
+  40c9cc:	10a0000c 	beqz	a1,40ca00 <strnlen+0x40>
+  40c9d0:	00801821 	move	v1,a0
+  40c9d4:	80820000 	lb	v0,0(a0)
+  40c9d8:	00000000 	nop
+  40c9dc:	10400008 	beqz	v0,40ca00 <strnlen+0x40>
+  40c9e0:	00000000 	nop
+  40c9e4:	24a5ffff 	addiu	a1,a1,-1
+  40c9e8:	10a00005 	beqz	a1,40ca00 <strnlen+0x40>
+  40c9ec:	24630001 	addiu	v1,v1,1
+  40c9f0:	80620000 	lb	v0,0(v1)
+  40c9f4:	00000000 	nop
+  40c9f8:	1440fffa 	bnez	v0,40c9e4 <strnlen+0x24>
+  40c9fc:	00000000 	nop
+  40ca00:	03e00008 	jr	ra
+  40ca04:	00641023 	subu	v0,v1,a0
+	...
+
+0040ca10 <strpbrk>:
+  40ca10:	3c1c0fc0 	lui	gp,0xfc0
+  40ca14:	279cb840 	addiu	gp,gp,-18368
+  40ca18:	0399e021 	addu	gp,gp,t9
+  40ca1c:	00803821 	move	a3,a0
+  40ca20:	80e20000 	lb	v0,0(a3)
+  40ca24:	00000000 	nop
+  40ca28:	10400012 	beqz	v0,40ca74 <strpbrk+0x64>
+  40ca2c:	00001021 	move	v0,zero
+  40ca30:	10000007 	b	40ca50 <strpbrk+0x40>
+  40ca34:	00a03021 	move	a2,a1
+  40ca38:	00031e00 	sll	v1,v1,0x18
+  40ca3c:	80e40000 	lb	a0,0(a3)
+  40ca40:	00031e03 	sra	v1,v1,0x18
+  40ca44:	24c60001 	addiu	a2,a2,1
+  40ca48:	1064000a 	beq	v1,a0,40ca74 <strpbrk+0x64>
+  40ca4c:	00e01021 	move	v0,a3
+  40ca50:	80c20000 	lb	v0,0(a2)
+  40ca54:	90c30000 	lbu	v1,0(a2)
+  40ca58:	1440fff7 	bnez	v0,40ca38 <strpbrk+0x28>
+  40ca5c:	00000000 	nop
+  40ca60:	24e70001 	addiu	a3,a3,1
+  40ca64:	80e20000 	lb	v0,0(a3)
+  40ca68:	00000000 	nop
+  40ca6c:	1440fff0 	bnez	v0,40ca30 <strpbrk+0x20>
+  40ca70:	00001021 	move	v0,zero
+  40ca74:	03e00008 	jr	ra
+  40ca78:	00000000 	nop
+  40ca7c:	00000000 	nop
+
+0040ca80 <strspn>:
+  40ca80:	3c1c0fc0 	lui	gp,0xfc0
+  40ca84:	279cb7d0 	addiu	gp,gp,-18480
+  40ca88:	0399e021 	addu	gp,gp,t9
+  40ca8c:	00a03021 	move	a2,a1
+  40ca90:	80c20000 	lb	v0,0(a2)
+  40ca94:	90c30000 	lbu	v1,0(a2)
+  40ca98:	1040000a 	beqz	v0,40cac4 <strspn+0x44>
+  40ca9c:	00803821 	move	a3,a0
+  40caa0:	00031600 	sll	v0,v1,0x18
+  40caa4:	80e30000 	lb	v1,0(a3)
+  40caa8:	00021603 	sra	v0,v0,0x18
+  40caac:	10430007 	beq	v0,v1,40cacc <strspn+0x4c>
+  40cab0:	24c60001 	addiu	a2,a2,1
+  40cab4:	80c20000 	lb	v0,0(a2)
+  40cab8:	90c30000 	lbu	v1,0(a2)
+  40cabc:	1440fff8 	bnez	v0,40caa0 <strspn+0x20>
+  40cac0:	00000000 	nop
+  40cac4:	03e00008 	jr	ra
+  40cac8:	00e41023 	subu	v0,a3,a0
+  40cacc:	24e70001 	addiu	a3,a3,1
+  40cad0:	1000fff8 	b	40cab4 <strspn+0x34>
+  40cad4:	00a03021 	move	a2,a1
+	...
+
+0040cae0 <_glibc_strerror_r>:
+  40cae0:	3c1c0fc0 	lui	gp,0xfc0
+  40cae4:	279cb770 	addiu	gp,gp,-18576
+  40cae8:	0399e021 	addu	gp,gp,t9
+  40caec:	27bdffd8 	addiu	sp,sp,-40
+  40caf0:	afbc0010 	sw	gp,16(sp)
+  40caf4:	afbf0020 	sw	ra,32(sp)
+  40caf8:	afb00018 	sw	s0,24(sp)
+  40cafc:	afbc001c 	sw	gp,28(sp)
+  40cb00:	00a08021 	move	s0,a1
+  40cb04:	8f998124 	lw	t9,-32476(gp)
+  40cb08:	00000000 	nop
+  40cb0c:	0320f809 	jalr	t9
+  40cb10:	00000000 	nop
+  40cb14:	8fbc0010 	lw	gp,16(sp)
+  40cb18:	8fbf0020 	lw	ra,32(sp)
+  40cb1c:	02001021 	move	v0,s0
+  40cb20:	8fb00018 	lw	s0,24(sp)
+  40cb24:	03e00008 	jr	ra
+  40cb28:	27bd0028 	addiu	sp,sp,40
+  40cb2c:	00000000 	nop
+
+0040cb30 <inet_aton>:
+  40cb30:	3c1c0fc0 	lui	gp,0xfc0
+  40cb34:	279cb720 	addiu	gp,gp,-18656
+  40cb38:	0399e021 	addu	gp,gp,t9
+  40cb3c:	27bdffc8 	addiu	sp,sp,-56
+  40cb40:	afbc0010 	sw	gp,16(sp)
+  40cb44:	afb40028 	sw	s4,40(sp)
+  40cb48:	00a0a021 	move	s4,a1
+  40cb4c:	afb30024 	sw	s3,36(sp)
+  40cb50:	afb20020 	sw	s2,32(sp)
+  40cb54:	afb00018 	sw	s0,24(sp)
+  40cb58:	afbf0030 	sw	ra,48(sp)
+  40cb5c:	afbc002c 	sw	gp,44(sp)
+  40cb60:	afb1001c 	sw	s1,28(sp)
+  40cb64:	00808021 	move	s0,a0
+  40cb68:	00009021 	move	s2,zero
+  40cb6c:	1280001b 	beqz	s4,40cbdc <inet_aton+0xac>
+  40cb70:	24130001 	li	s3,1
+  40cb74:	82040000 	lb	a0,0(s0)
+  40cb78:	8f9980cc 	lw	t9,-32564(gp)
+  40cb7c:	00000000 	nop
+  40cb80:	0320f809 	jalr	t9
+  40cb84:	00000000 	nop
+  40cb88:	8fbc0010 	lw	gp,16(sp)
+  40cb8c:	00401821 	move	v1,v0
+  40cb90:	10600013 	beqz	v1,40cbe0 <inet_aton+0xb0>
+  40cb94:	00008821 	move	s1,zero
+  40cb98:	82040000 	lb	a0,0(s0)
+  40cb9c:	8f9980cc 	lw	t9,-32564(gp)
+  40cba0:	00000000 	nop
+  40cba4:	0320f809 	jalr	t9
+  40cba8:	00000000 	nop
+  40cbac:	8fbc0010 	lw	gp,16(sp)
+  40cbb0:	00402021 	move	a0,v0
+  40cbb4:	00111880 	sll	v1,s1,0x2
+  40cbb8:	10800011 	beqz	a0,40cc00 <inet_aton+0xd0>
+  40cbbc:	00711821 	addu	v1,v1,s1
+  40cbc0:	82020000 	lb	v0,0(s0)
+  40cbc4:	00038840 	sll	s1,v1,0x1
+  40cbc8:	02221021 	addu	v0,s1,v0
+  40cbcc:	2451ffd0 	addiu	s1,v0,-48
+  40cbd0:	2a220100 	slti	v0,s1,256
+  40cbd4:	1440fff0 	bnez	v0,40cb98 <inet_aton+0x68>
+  40cbd8:	26100001 	addiu	s0,s0,1
+  40cbdc:	00001021 	move	v0,zero
+  40cbe0:	8fbf0030 	lw	ra,48(sp)
+  40cbe4:	8fb40028 	lw	s4,40(sp)
+  40cbe8:	8fb30024 	lw	s3,36(sp)
+  40cbec:	8fb20020 	lw	s2,32(sp)
+  40cbf0:	8fb1001c 	lw	s1,28(sp)
+  40cbf4:	8fb00018 	lw	s0,24(sp)
+  40cbf8:	03e00008 	jr	ra
+  40cbfc:	27bd0038 	addiu	sp,sp,56
+  40cc00:	2a630004 	slti	v1,s3,4
+  40cc04:	1060000f 	beqz	v1,40cc44 <inet_aton+0x114>
+  40cc08:	2404002e 	li	a0,46
+  40cc0c:	92030000 	lbu	v1,0(s0)
+  40cc10:	00000000 	nop
+  40cc14:	00031e00 	sll	v1,v1,0x18
+  40cc18:	00031e03 	sra	v1,v1,0x18
+  40cc1c:	1464fff0 	bne	v1,a0,40cbe0 <inet_aton+0xb0>
+  40cc20:	26100001 	addiu	s0,s0,1
+  40cc24:	26730001 	addiu	s3,s3,1
+  40cc28:	00129200 	sll	s2,s2,0x8
+  40cc2c:	2a620005 	slti	v0,s3,5
+  40cc30:	1440ffd0 	bnez	v0,40cb74 <inet_aton+0x44>
+  40cc34:	02519025 	or	s2,s2,s1
+  40cc38:	ae920000 	sw	s2,0(s4)
+  40cc3c:	1000ffe8 	b	40cbe0 <inet_aton+0xb0>
+  40cc40:	24020001 	li	v0,1
+  40cc44:	82040000 	lb	a0,0(s0)
+  40cc48:	00000000 	nop
+  40cc4c:	1080fff5 	beqz	a0,40cc24 <inet_aton+0xf4>
+  40cc50:	26100001 	addiu	s0,s0,1
+  40cc54:	8f998210 	lw	t9,-32240(gp)
+  40cc58:	00000000 	nop
+  40cc5c:	0320f809 	jalr	t9
+  40cc60:	00000000 	nop
+  40cc64:	8fbc0010 	lw	gp,16(sp)
+  40cc68:	00401821 	move	v1,v0
+  40cc6c:	1460ffee 	bnez	v1,40cc28 <inet_aton+0xf8>
+  40cc70:	26730001 	addiu	s3,s3,1
+  40cc74:	1000ffda 	b	40cbe0 <inet_aton+0xb0>
+  40cc78:	00000000 	nop
+  40cc7c:	00000000 	nop
+
+0040cc80 <__decode_dotted>:
+  40cc80:	3c1c0fc0 	lui	gp,0xfc0
+  40cc84:	279cb5d0 	addiu	gp,gp,-18992
+  40cc88:	0399e021 	addu	gp,gp,t9
+  40cc8c:	27bdffb8 	addiu	sp,sp,-72
+  40cc90:	afbc0010 	sw	gp,16(sp)
+  40cc94:	afb5002c 	sw	s5,44(sp)
+  40cc98:	0080a821 	move	s5,a0
+  40cc9c:	afbe003c 	sw	s8,60(sp)
+  40cca0:	afb70034 	sw	s7,52(sp)
+  40cca4:	afb60030 	sw	s6,48(sp)
+  40cca8:	afb40028 	sw	s4,40(sp)
+  40ccac:	afb1001c 	sw	s1,28(sp)
+  40ccb0:	afbf0040 	sw	ra,64(sp)
+  40ccb4:	afbc0038 	sw	gp,56(sp)
+  40ccb8:	afb30024 	sw	s3,36(sp)
+  40ccbc:	afb20020 	sw	s2,32(sp)
+  40ccc0:	afb00018 	sw	s0,24(sp)
+  40ccc4:	00a08821 	move	s1,a1
+  40ccc8:	00c0b821 	move	s7,a2
+  40cccc:	00e0f021 	move	s8,a3
+  40ccd0:	24160001 	li	s6,1
+  40ccd4:	0000a021 	move	s4,zero
+  40ccd8:	12a00040 	beqz	s5,40cddc <__decode_dotted+0x15c>
+  40ccdc:	00002021 	move	a0,zero
+  40cce0:	10000020 	b	40cd64 <__decode_dotted+0xe4>
+  40cce4:	02b11021 	addu	v0,s5,s1
+  40cce8:	12c00002 	beqz	s6,40ccf4 <__decode_dotted+0x74>
+  40ccec:	320300c0 	andi	v1,s0,0xc0
+  40ccf0:	26940001 	addiu	s4,s4,1
+  40ccf4:	240200c0 	li	v0,192
+  40ccf8:	1062002f 	beq	v1,v0,40cdb8 <__decode_dotted+0x138>
+  40ccfc:	00909821 	addu	s3,a0,s0
+  40cd00:	26720001 	addiu	s2,s3,1
+  40cd04:	025e102a 	slt	v0,s2,s8
+  40cd08:	1040001b 	beqz	v0,40cd78 <__decode_dotted+0xf8>
+  40cd0c:	2402ffff 	li	v0,-1
+  40cd10:	02e42021 	addu	a0,s7,a0
+  40cd14:	02b12821 	addu	a1,s5,s1
+  40cd18:	02003021 	move	a2,s0
+  40cd1c:	8f998254 	lw	t9,-32172(gp)
+  40cd20:	00000000 	nop
+  40cd24:	0320f809 	jalr	t9
+  40cd28:	00000000 	nop
+  40cd2c:	8fbc0010 	lw	gp,16(sp)
+  40cd30:	02308821 	addu	s1,s1,s0
+  40cd34:	12c00002 	beqz	s6,40cd40 <__decode_dotted+0xc0>
+  40cd38:	02602021 	move	a0,s3
+  40cd3c:	0290a021 	addu	s4,s4,s0
+  40cd40:	02b11021 	addu	v0,s5,s1
+  40cd44:	90420000 	lbu	v0,0(v0)
+  40cd48:	00000000 	nop
+  40cd4c:	10400016 	beqz	v0,40cda8 <__decode_dotted+0x128>
+  40cd50:	02e41821 	addu	v1,s7,a0
+  40cd54:	2402002e 	li	v0,46
+  40cd58:	02402021 	move	a0,s2
+  40cd5c:	a0620000 	sb	v0,0(v1)
+  40cd60:	02b11021 	addu	v0,s5,s1
+  40cd64:	90500000 	lbu	s0,0(v0)
+  40cd68:	00000000 	nop
+  40cd6c:	1600ffde 	bnez	s0,40cce8 <__decode_dotted+0x68>
+  40cd70:	26310001 	addiu	s1,s1,1
+  40cd74:	02801021 	move	v0,s4
+  40cd78:	8fbf0040 	lw	ra,64(sp)
+  40cd7c:	8fbe003c 	lw	s8,60(sp)
+  40cd80:	8fb70034 	lw	s7,52(sp)
+  40cd84:	8fb60030 	lw	s6,48(sp)
+  40cd88:	8fb5002c 	lw	s5,44(sp)
+  40cd8c:	8fb40028 	lw	s4,40(sp)
+  40cd90:	8fb30024 	lw	s3,36(sp)
+  40cd94:	8fb20020 	lw	s2,32(sp)
+  40cd98:	8fb1001c 	lw	s1,28(sp)
+  40cd9c:	8fb00018 	lw	s0,24(sp)
+  40cda0:	03e00008 	jr	ra
+  40cda4:	27bd0048 	addiu	sp,sp,72
+  40cda8:	02e41021 	addu	v0,s7,a0
+  40cdac:	a0400000 	sb	zero,0(v0)
+  40cdb0:	1000ffeb 	b	40cd60 <__decode_dotted+0xe0>
+  40cdb4:	02402021 	move	a0,s2
+  40cdb8:	12c00002 	beqz	s6,40cdc4 <__decode_dotted+0x144>
+  40cdbc:	02b11021 	addu	v0,s5,s1
+  40cdc0:	26940001 	addiu	s4,s4,1
+  40cdc4:	3203003f 	andi	v1,s0,0x3f
+  40cdc8:	90420000 	lbu	v0,0(v0)
+  40cdcc:	00031a00 	sll	v1,v1,0x8
+  40cdd0:	00628825 	or	s1,v1,v0
+  40cdd4:	1000ffe2 	b	40cd60 <__decode_dotted+0xe0>
+  40cdd8:	0000b021 	move	s6,zero
+  40cddc:	1000ffe6 	b	40cd78 <__decode_dotted+0xf8>
+  40cde0:	2402ffff 	li	v0,-1
+	...
+
+0040cdf0 <__dns_lookup>:
+  40cdf0:	3c1c0fc0 	lui	gp,0xfc0
+  40cdf4:	279cb460 	addiu	gp,gp,-19360
+  40cdf8:	0399e021 	addu	gp,gp,t9
+  40cdfc:	27bdfee0 	addiu	sp,sp,-288
+  40ce00:	afbc0018 	sw	gp,24(sp)
+  40ce04:	afa40120 	sw	a0,288(sp)
+  40ce08:	24040200 	li	a0,512
+  40ce0c:	afbe0114 	sw	s8,276(sp)
+  40ce10:	afb60108 	sw	s6,264(sp)
+  40ce14:	afb50104 	sw	s5,260(sp)
+  40ce18:	afb40100 	sw	s4,256(sp)
+  40ce1c:	afb300fc 	sw	s3,252(sp)
+  40ce20:	afbf0118 	sw	ra,280(sp)
+  40ce24:	afbc0110 	sw	gp,272(sp)
+  40ce28:	afb7010c 	sw	s7,268(sp)
+  40ce2c:	afb200f8 	sw	s2,248(sp)
+  40ce30:	afb100f4 	sw	s1,244(sp)
+  40ce34:	afb000f0 	sw	s0,240(sp)
+  40ce38:	afa50124 	sw	a1,292(sp)
+  40ce3c:	00c0b021 	move	s6,a2
+  40ce40:	afa7012c 	sw	a3,300(sp)
+  40ce44:	8f998230 	lw	t9,-32208(gp)
+  40ce48:	00000000 	nop
+  40ce4c:	0320f809 	jalr	t9
+  40ce50:	00000000 	nop
+  40ce54:	8fbc0018 	lw	gp,24(sp)
+  40ce58:	24040401 	li	a0,1025
+  40ce5c:	00409821 	move	s3,v0
+  40ce60:	8f998230 	lw	t9,-32208(gp)
+  40ce64:	00000000 	nop
+  40ce68:	0320f809 	jalr	t9
+  40ce6c:	00000000 	nop
+  40ce70:	8fbc0018 	lw	gp,24(sp)
+  40ce74:	0040a021 	move	s4,v0
+  40ce78:	0000f021 	move	s8,zero
+  40ce7c:	1260013a 	beqz	s3,40d368 <__dns_lookup+0x578>
+  40ce80:	2415ffff 	li	s5,-1
+  40ce84:	12800139 	beqz	s4,40d36c <__dns_lookup+0x57c>
+  40ce88:	2402ffff 	li	v0,-1
+  40ce8c:	12c00137 	beqz	s6,40d36c <__dns_lookup+0x57c>
+  40ce90:	00000000 	nop
+  40ce94:	8f90801c 	lw	s0,-32740(gp)
+  40ce98:	00000000 	nop
+  40ce9c:	26100200 	addiu	s0,s0,512
+  40cea0:	00000000 	nop
+  40cea4:	02002021 	move	a0,s0
+  40cea8:	8f9980a8 	lw	t9,-32600(gp)
+  40ceac:	00000000 	nop
+  40ceb0:	0320f809 	jalr	t9
+  40ceb4:	00000000 	nop
+  40ceb8:	8fbc0018 	lw	gp,24(sp)
+  40cebc:	00000000 	nop
+  40cec0:	8f82801c 	lw	v0,-32740(gp)
+  40cec4:	00000000 	nop
+  40cec8:	24420218 	addiu	v0,v0,536
+  40cecc:	8c420000 	lw	v0,0(v0)
+  40ced0:	24030001 	li	v1,1
+  40ced4:	0056001a 	div	zero,v0,s6
+  40ced8:	02002021 	move	a0,s0
+  40cedc:	16c00002 	bnez	s6,40cee8 <__dns_lookup+0xf8>
+  40cee0:	00000000 	nop
+  40cee4:	0007000d 	break	0x7
+  40cee8:	afa300e8 	sw	v1,232(sp)
+  40ceec:	00001010 	mfhi	v0
+  40cef0:	8f81801c 	lw	at,-32740(gp)
+  40cef4:	00000000 	nop
+  40cef8:	24210218 	addiu	at,at,536
+  40cefc:	ac220000 	sw	v0,0(at)
+  40cf00:	8f99811c 	lw	t9,-32484(gp)
+  40cf04:	00000000 	nop
+  40cf08:	0320f809 	jalr	t9
+  40cf0c:	00000000 	nop
+  40cf10:	8fbc0018 	lw	gp,24(sp)
+  40cf14:	2402ffff 	li	v0,-1
+  40cf18:	12a20006 	beq	s5,v0,40cf34 <__dns_lookup+0x144>
+  40cf1c:	02a02021 	move	a0,s5
+  40cf20:	8f998040 	lw	t9,-32704(gp)
+  40cf24:	00000000 	nop
+  40cf28:	0320f809 	jalr	t9
+  40cf2c:	00000000 	nop
+  40cf30:	8fbc0018 	lw	gp,24(sp)
+  40cf34:	02602021 	move	a0,s3
+  40cf38:	00002821 	move	a1,zero
+  40cf3c:	24060200 	li	a2,512
+  40cf40:	8f99813c 	lw	t9,-32452(gp)
+  40cf44:	00000000 	nop
+  40cf48:	0320f809 	jalr	t9
+  40cf4c:	00000000 	nop
+  40cf50:	8fbc0018 	lw	gp,24(sp)
+  40cf54:	27b700a8 	addiu	s7,sp,168
+  40cf58:	00002821 	move	a1,zero
+  40cf5c:	24060030 	li	a2,48
+  40cf60:	02e02021 	move	a0,s7
+  40cf64:	8f90801c 	lw	s0,-32740(gp)
+  40cf68:	00000000 	nop
+  40cf6c:	26100200 	addiu	s0,s0,512
+  40cf70:	8f99813c 	lw	t9,-32452(gp)
+  40cf74:	00000000 	nop
+  40cf78:	0320f809 	jalr	t9
+  40cf7c:	00000000 	nop
+  40cf80:	8fbc0018 	lw	gp,24(sp)
+  40cf84:	02002021 	move	a0,s0
+  40cf88:	8f9980a8 	lw	t9,-32600(gp)
+  40cf8c:	00000000 	nop
+  40cf90:	0320f809 	jalr	t9
+  40cf94:	00000000 	nop
+  40cf98:	8fbc0018 	lw	gp,24(sp)
+  40cf9c:	00000000 	nop
+  40cfa0:	8f83801c 	lw	v1,-32740(gp)
+  40cfa4:	00000000 	nop
+  40cfa8:	2463021c 	addiu	v1,v1,540
+  40cfac:	8c630000 	lw	v1,0(v1)
+  40cfb0:	8f82801c 	lw	v0,-32740(gp)
+  40cfb4:	00000000 	nop
+  40cfb8:	24420218 	addiu	v0,v0,536
+  40cfbc:	8c420000 	lw	v0,0(v0)
+  40cfc0:	8fa4012c 	lw	a0,300(sp)
+  40cfc4:	24630001 	addiu	v1,v1,1
+  40cfc8:	00021080 	sll	v0,v0,0x2
+  40cfcc:	8f81801c 	lw	at,-32740(gp)
+  40cfd0:	00000000 	nop
+  40cfd4:	2421021c 	addiu	at,at,540
+  40cfd8:	ac230000 	sw	v1,0(at)
+  40cfdc:	00441021 	addu	v0,v0,a0
+  40cfe0:	afa300a8 	sw	v1,168(sp)
+  40cfe4:	02002021 	move	a0,s0
+  40cfe8:	8c520000 	lw	s2,0(v0)
+  40cfec:	8f99811c 	lw	t9,-32484(gp)
+  40cff0:	00000000 	nop
+  40cff4:	0320f809 	jalr	t9
+  40cff8:	00000000 	nop
+  40cffc:	8fbc0018 	lw	gp,24(sp)
+  40d000:	24020001 	li	v0,1
+  40d004:	02e02021 	move	a0,s7
+  40d008:	02602821 	move	a1,s3
+  40d00c:	24060200 	li	a2,512
+  40d010:	afa200bc 	sw	v0,188(sp)
+  40d014:	afa200c8 	sw	v0,200(sp)
+  40d018:	8f998290 	lw	t9,-32112(gp)
+  40d01c:	00000000 	nop
+  40d020:	0320f809 	jalr	t9
+  40d024:	00000000 	nop
+  40d028:	8fbc0018 	lw	gp,24(sp)
+  40d02c:	00408821 	move	s1,v0
+  40d030:	062000cd 	bltz	s1,40d368 <__dns_lookup+0x578>
+  40d034:	02802021 	move	a0,s4
+  40d038:	8fa50120 	lw	a1,288(sp)
+  40d03c:	24060401 	li	a2,1025
+  40d040:	8f998188 	lw	t9,-32376(gp)
+  40d044:	00000000 	nop
+  40d048:	0320f809 	jalr	t9
+  40d04c:	00000000 	nop
+  40d050:	8fbc0018 	lw	gp,24(sp)
+  40d054:	00000000 	nop
+  40d058:	8f8481c0 	lw	a0,-32320(gp)
+  40d05c:	8f9980a8 	lw	t9,-32600(gp)
+  40d060:	00000000 	nop
+  40d064:	0320f809 	jalr	t9
+  40d068:	00000000 	nop
+  40d06c:	8fbc0018 	lw	gp,24(sp)
+  40d070:	00000000 	nop
+  40d074:	8f8280c0 	lw	v0,-32576(gp)
+  40d078:	00000000 	nop
+  40d07c:	8c420000 	lw	v0,0(v0)
+  40d080:	00000000 	nop
+  40d084:	03c2102a 	slt	v0,s8,v0
+  40d088:	10400009 	beqz	v0,40d0b0 <__dns_lookup+0x2c0>
+  40d08c:	02802021 	move	a0,s4
+  40d090:	2405002e 	li	a1,46
+  40d094:	8f99805c 	lw	t9,-32676(gp)
+  40d098:	00000000 	nop
+  40d09c:	0320f809 	jalr	t9
+  40d0a0:	00000000 	nop
+  40d0a4:	8fbc0018 	lw	gp,24(sp)
+  40d0a8:	10400158 	beqz	v0,40d60c <__dns_lookup+0x81c>
+  40d0ac:	02802021 	move	a0,s4
+  40d0b0:	8f8481c0 	lw	a0,-32320(gp)
+  40d0b4:	8f99811c 	lw	t9,-32484(gp)
+  40d0b8:	00000000 	nop
+  40d0bc:	0320f809 	jalr	t9
+  40d0c0:	00000000 	nop
+  40d0c4:	8fbc0018 	lw	gp,24(sp)
+  40d0c8:	24020001 	li	v0,1
+  40d0cc:	afa200e0 	sw	v0,224(sp)
+  40d0d0:	24060200 	li	a2,512
+  40d0d4:	8fa20124 	lw	v0,292(sp)
+  40d0d8:	00d13023 	subu	a2,a2,s1
+  40d0dc:	02712821 	addu	a1,s3,s1
+  40d0e0:	27a400d8 	addiu	a0,sp,216
+  40d0e4:	afb400d8 	sw	s4,216(sp)
+  40d0e8:	afa200dc 	sw	v0,220(sp)
+  40d0ec:	8f998298 	lw	t9,-32104(gp)
+  40d0f0:	00000000 	nop
+  40d0f4:	0320f809 	jalr	t9
+  40d0f8:	00000000 	nop
+  40d0fc:	8fbc0018 	lw	gp,24(sp)
+  40d100:	00408021 	move	s0,v0
+  40d104:	06000098 	bltz	s0,40d368 <__dns_lookup+0x578>
+  40d108:	02402021 	move	a0,s2
+  40d10c:	8f99815c 	lw	t9,-32420(gp)
+  40d110:	00000000 	nop
+  40d114:	0320f809 	jalr	t9
+  40d118:	00000000 	nop
+  40d11c:	8fbc0018 	lw	gp,24(sp)
+  40d120:	0040a821 	move	s5,v0
+  40d124:	06a00115 	bltz	s5,40d57c <__dns_lookup+0x78c>
+  40d128:	02303021 	addu	a2,s1,s0
+  40d12c:	02a02021 	move	a0,s5
+  40d130:	02602821 	move	a1,s3
+  40d134:	00003821 	move	a3,zero
+  40d138:	8f9981e8 	lw	t9,-32280(gp)
+  40d13c:	00000000 	nop
+  40d140:	0320f809 	jalr	t9
+  40d144:	00000000 	nop
+  40d148:	8fbc0018 	lw	gp,24(sp)
+  40d14c:	27a50028 	addiu	a1,sp,40
+  40d150:	00002021 	move	a0,zero
+  40d154:	00a01821 	move	v1,a1
+  40d158:	24840001 	addiu	a0,a0,1
+  40d15c:	2c820020 	sltiu	v0,a0,32
+  40d160:	ac600000 	sw	zero,0(v1)
+  40d164:	1440fffc 	bnez	v0,40d158 <__dns_lookup+0x368>
+  40d168:	24630004 	addiu	v1,v1,4
+  40d16c:	00151942 	srl	v1,s5,0x5
+  40d170:	00031880 	sll	v1,v1,0x2
+  40d174:	00a31821 	addu	v1,a1,v1
+  40d178:	8c680000 	lw	t0,0(v1)
+  40d17c:	32a4001f 	andi	a0,s5,0x1f
+  40d180:	24020001 	li	v0,1
+  40d184:	00821004 	sllv	v0,v0,a0
+  40d188:	01024025 	or	t0,t0,v0
+  40d18c:	27a20020 	addiu	v0,sp,32
+  40d190:	ac680000 	sw	t0,0(v1)
+  40d194:	26a40001 	addiu	a0,s5,1
+  40d198:	afa20010 	sw	v0,16(sp)
+  40d19c:	00003021 	move	a2,zero
+  40d1a0:	2402000a 	li	v0,10
+  40d1a4:	00003821 	move	a3,zero
+  40d1a8:	afa20020 	sw	v0,32(sp)
+  40d1ac:	afa00024 	sw	zero,36(sp)
+  40d1b0:	8f998214 	lw	t9,-32236(gp)
+  40d1b4:	00000000 	nop
+  40d1b8:	0320f809 	jalr	t9
+  40d1bc:	00000000 	nop
+  40d1c0:	8fbc0018 	lw	gp,24(sp)
+  40d1c4:	1840002d 	blez	v0,40d27c <__dns_lookup+0x48c>
+  40d1c8:	02a02021 	move	a0,s5
+  40d1cc:	02602821 	move	a1,s3
+  40d1d0:	24060200 	li	a2,512
+  40d1d4:	00003821 	move	a3,zero
+  40d1d8:	8f9982a0 	lw	t9,-32096(gp)
+  40d1dc:	00000000 	nop
+  40d1e0:	0320f809 	jalr	t9
+  40d1e4:	00000000 	nop
+  40d1e8:	8fbc0018 	lw	gp,24(sp)
+  40d1ec:	00408821 	move	s1,v0
+  40d1f0:	2a22000c 	slti	v0,s1,12
+  40d1f4:	14400021 	bnez	v0,40d27c <__dns_lookup+0x48c>
+  40d1f8:	02e02821 	move	a1,s7
+  40d1fc:	02602021 	move	a0,s3
+  40d200:	8f998194 	lw	t9,-32364(gp)
+  40d204:	00000000 	nop
+  40d208:	0320f809 	jalr	t9
+  40d20c:	00000000 	nop
+  40d210:	8fbc0018 	lw	gp,24(sp)
+  40d214:	00000000 	nop
+  40d218:	8f84801c 	lw	a0,-32740(gp)
+  40d21c:	00000000 	nop
+  40d220:	24840200 	addiu	a0,a0,512
+  40d224:	8f9980a8 	lw	t9,-32600(gp)
+  40d228:	00000000 	nop
+  40d22c:	0320f809 	jalr	t9
+  40d230:	00000000 	nop
+  40d234:	8fbc0018 	lw	gp,24(sp)
+  40d238:	8fa300a8 	lw	v1,168(sp)
+  40d23c:	8f82801c 	lw	v0,-32740(gp)
+  40d240:	00000000 	nop
+  40d244:	2442021c 	addiu	v0,v0,540
+  40d248:	8c420000 	lw	v0,0(v0)
+  40d24c:	00000000 	nop
+  40d250:	10620068 	beq	v1,v0,40d3f4 <__dns_lookup+0x604>
+  40d254:	00000000 	nop
+  40d258:	8f84801c 	lw	a0,-32740(gp)
+  40d25c:	00000000 	nop
+  40d260:	24840200 	addiu	a0,a0,512
+  40d264:	8f99811c 	lw	t9,-32484(gp)
+  40d268:	00000000 	nop
+  40d26c:	0320f809 	jalr	t9
+  40d270:	00000000 	nop
+  40d274:	8fbc0018 	lw	gp,24(sp)
+  40d278:	00000000 	nop
+  40d27c:	8f9181c0 	lw	s1,-32320(gp)
+  40d280:	00000000 	nop
+  40d284:	02202021 	move	a0,s1
+  40d288:	8f9980a8 	lw	t9,-32600(gp)
+  40d28c:	00000000 	nop
+  40d290:	0320f809 	jalr	t9
+  40d294:	00000000 	nop
+  40d298:	8fbc0018 	lw	gp,24(sp)
+  40d29c:	00000000 	nop
+  40d2a0:	8f9080c0 	lw	s0,-32576(gp)
+  40d2a4:	00000000 	nop
+  40d2a8:	8e100000 	lw	s0,0(s0)
+  40d2ac:	02202021 	move	a0,s1
+  40d2b0:	03d0802a 	slt	s0,s8,s0
+  40d2b4:	8f99811c 	lw	t9,-32484(gp)
+  40d2b8:	00000000 	nop
+  40d2bc:	0320f809 	jalr	t9
+  40d2c0:	00000000 	nop
+  40d2c4:	8fbc0018 	lw	gp,24(sp)
+  40d2c8:	16000021 	bnez	s0,40d350 <__dns_lookup+0x560>
+  40d2cc:	27de0001 	addiu	s8,s8,1
+  40d2d0:	8f90801c 	lw	s0,-32740(gp)
+  40d2d4:	00000000 	nop
+  40d2d8:	26100200 	addiu	s0,s0,512
+  40d2dc:	00000000 	nop
+  40d2e0:	02002021 	move	a0,s0
+  40d2e4:	8f9980a8 	lw	t9,-32600(gp)
+  40d2e8:	00000000 	nop
+  40d2ec:	0320f809 	jalr	t9
+  40d2f0:	00000000 	nop
+  40d2f4:	8fbc0018 	lw	gp,24(sp)
+  40d2f8:	00000000 	nop
+  40d2fc:	8f82801c 	lw	v0,-32740(gp)
+  40d300:	00000000 	nop
+  40d304:	24420218 	addiu	v0,v0,536
+  40d308:	8c420000 	lw	v0,0(v0)
+  40d30c:	02002021 	move	a0,s0
+  40d310:	24420001 	addiu	v0,v0,1
+  40d314:	0056001a 	div	zero,v0,s6
+  40d318:	16c00002 	bnez	s6,40d324 <__dns_lookup+0x534>
+  40d31c:	00000000 	nop
+  40d320:	0007000d 	break	0x7
+  40d324:	0000f021 	move	s8,zero
+  40d328:	00001010 	mfhi	v0
+  40d32c:	8f81801c 	lw	at,-32740(gp)
+  40d330:	00000000 	nop
+  40d334:	24210218 	addiu	at,at,536
+  40d338:	ac220000 	sw	v0,0(at)
+  40d33c:	8f99811c 	lw	t9,-32484(gp)
+  40d340:	00000000 	nop
+  40d344:	0320f809 	jalr	t9
+  40d348:	00000000 	nop
+  40d34c:	8fbc0018 	lw	gp,24(sp)
+  40d350:	8fa200e8 	lw	v0,232(sp)
+  40d354:	8fa300e8 	lw	v1,232(sp)
+  40d358:	2842000f 	slti	v0,v0,15
+  40d35c:	24630001 	addiu	v1,v1,1
+  40d360:	1440feec 	bnez	v0,40cf14 <__dns_lookup+0x124>
+  40d364:	afa300e8 	sw	v1,232(sp)
+  40d368:	2402ffff 	li	v0,-1
+  40d36c:	12a20006 	beq	s5,v0,40d388 <__dns_lookup+0x598>
+  40d370:	02a02021 	move	a0,s5
+  40d374:	8f998040 	lw	t9,-32704(gp)
+  40d378:	00000000 	nop
+  40d37c:	0320f809 	jalr	t9
+  40d380:	00000000 	nop
+  40d384:	8fbc0018 	lw	gp,24(sp)
+  40d388:	12800006 	beqz	s4,40d3a4 <__dns_lookup+0x5b4>
+  40d38c:	02802021 	move	a0,s4
+  40d390:	8f998030 	lw	t9,-32720(gp)
+  40d394:	00000000 	nop
+  40d398:	0320f809 	jalr	t9
+  40d39c:	00000000 	nop
+  40d3a0:	8fbc0018 	lw	gp,24(sp)
+  40d3a4:	12600006 	beqz	s3,40d3c0 <__dns_lookup+0x5d0>
+  40d3a8:	02602021 	move	a0,s3
+  40d3ac:	8f998030 	lw	t9,-32720(gp)
+  40d3b0:	00000000 	nop
+  40d3b4:	0320f809 	jalr	t9
+  40d3b8:	00000000 	nop
+  40d3bc:	8fbc0018 	lw	gp,24(sp)
+  40d3c0:	2402ffff 	li	v0,-1
+  40d3c4:	8fbf0118 	lw	ra,280(sp)
+  40d3c8:	8fbe0114 	lw	s8,276(sp)
+  40d3cc:	8fb7010c 	lw	s7,268(sp)
+  40d3d0:	8fb60108 	lw	s6,264(sp)
+  40d3d4:	8fb50104 	lw	s5,260(sp)
+  40d3d8:	8fb40100 	lw	s4,256(sp)
+  40d3dc:	8fb300fc 	lw	s3,252(sp)
+  40d3e0:	8fb200f8 	lw	s2,248(sp)
+  40d3e4:	8fb100f4 	lw	s1,244(sp)
+  40d3e8:	8fb000f0 	lw	s0,240(sp)
+  40d3ec:	03e00008 	jr	ra
+  40d3f0:	27bd0120 	addiu	sp,sp,288
+  40d3f4:	8fa200ac 	lw	v0,172(sp)
+  40d3f8:	00000000 	nop
+  40d3fc:	1040ff96 	beqz	v0,40d258 <__dns_lookup+0x468>
+  40d400:	00000000 	nop
+  40d404:	8f84801c 	lw	a0,-32740(gp)
+  40d408:	00000000 	nop
+  40d40c:	24840200 	addiu	a0,a0,512
+  40d410:	8f99811c 	lw	t9,-32484(gp)
+  40d414:	00000000 	nop
+  40d418:	0320f809 	jalr	t9
+  40d41c:	00000000 	nop
+  40d420:	8fbc0018 	lw	gp,24(sp)
+  40d424:	8fa200c4 	lw	v0,196(sp)
+  40d428:	00000000 	nop
+  40d42c:	1440ff93 	bnez	v0,40d27c <__dns_lookup+0x48c>
+  40d430:	00000000 	nop
+  40d434:	8fa200cc 	lw	v0,204(sp)
+  40d438:	00000000 	nop
+  40d43c:	1840ff8f 	blez	v0,40d27c <__dns_lookup+0x48c>
+  40d440:	00000000 	nop
+  40d444:	8fa200c8 	lw	v0,200(sp)
+  40d448:	2412000c 	li	s2,12
+  40d44c:	18400011 	blez	v0,40d494 <__dns_lookup+0x6a4>
+  40d450:	00008021 	move	s0,zero
+  40d454:	02402821 	move	a1,s2
+  40d458:	02602021 	move	a0,s3
+  40d45c:	8f9982a8 	lw	t9,-32088(gp)
+  40d460:	00000000 	nop
+  40d464:	0320f809 	jalr	t9
+  40d468:	00000000 	nop
+  40d46c:	8fbc0018 	lw	gp,24(sp)
+  40d470:	00408821 	move	s1,v0
+  40d474:	26100001 	addiu	s0,s0,1
+  40d478:	0620ff80 	bltz	s1,40d27c <__dns_lookup+0x48c>
+  40d47c:	02519021 	addu	s2,s2,s1
+  40d480:	8fa200c8 	lw	v0,200(sp)
+  40d484:	00000000 	nop
+  40d488:	0202102a 	slt	v0,s0,v0
+  40d48c:	1440fff2 	bnez	v0,40d458 <__dns_lookup+0x668>
+  40d490:	02402821 	move	a1,s2
+  40d494:	00008021 	move	s0,zero
+  40d498:	8fa200cc 	lw	v0,204(sp)
+  40d49c:	02402821 	move	a1,s2
+  40d4a0:	0202102a 	slt	v0,s0,v0
+  40d4a4:	02602021 	move	a0,s3
+  40d4a8:	8fa60134 	lw	a2,308(sp)
+  40d4ac:	1440001b 	bnez	v0,40d51c <__dns_lookup+0x72c>
+  40d4b0:	26100001 	addiu	s0,s0,1
+  40d4b4:	02a02021 	move	a0,s5
+  40d4b8:	8f998040 	lw	t9,-32704(gp)
+  40d4bc:	00000000 	nop
+  40d4c0:	0320f809 	jalr	t9
+  40d4c4:	00000000 	nop
+  40d4c8:	8fbc0018 	lw	gp,24(sp)
+  40d4cc:	8fa20130 	lw	v0,304(sp)
+  40d4d0:	00000000 	nop
+  40d4d4:	1040000a 	beqz	v0,40d500 <__dns_lookup+0x710>
+  40d4d8:	02602021 	move	a0,s3
+  40d4dc:	ac530000 	sw	s3,0(v0)
+  40d4e0:	02802021 	move	a0,s4
+  40d4e4:	8f998030 	lw	t9,-32720(gp)
+  40d4e8:	00000000 	nop
+  40d4ec:	0320f809 	jalr	t9
+  40d4f0:	00000000 	nop
+  40d4f4:	8fbc0018 	lw	gp,24(sp)
+  40d4f8:	1000ffb2 	b	40d3c4 <__dns_lookup+0x5d4>
+  40d4fc:	00001021 	move	v0,zero
+  40d500:	8f998030 	lw	t9,-32720(gp)
+  40d504:	00000000 	nop
+  40d508:	0320f809 	jalr	t9
+  40d50c:	00000000 	nop
+  40d510:	8fbc0018 	lw	gp,24(sp)
+  40d514:	1000fff3 	b	40d4e4 <__dns_lookup+0x6f4>
+  40d518:	02802021 	move	a0,s4
+  40d51c:	8f9980ec 	lw	t9,-32532(gp)
+  40d520:	00000000 	nop
+  40d524:	0320f809 	jalr	t9
+  40d528:	00000000 	nop
+  40d52c:	8fbc0018 	lw	gp,24(sp)
+  40d530:	00408821 	move	s1,v0
+  40d534:	0620ff51 	bltz	s1,40d27c <__dns_lookup+0x48c>
+  40d538:	02519021 	addu	s2,s2,s1
+  40d53c:	8fa40134 	lw	a0,308(sp)
+  40d540:	24020018 	li	v0,24
+  40d544:	8c830004 	lw	v1,4(a0)
+  40d548:	00000000 	nop
+  40d54c:	1462ffda 	bne	v1,v0,40d4b8 <__dns_lookup+0x6c8>
+  40d550:	02a02021 	move	a0,s5
+  40d554:	8fa30134 	lw	v1,308(sp)
+  40d558:	00000000 	nop
+  40d55c:	8c640000 	lw	a0,0(v1)
+  40d560:	8f998030 	lw	t9,-32720(gp)
+  40d564:	00000000 	nop
+  40d568:	0320f809 	jalr	t9
+  40d56c:	00000000 	nop
+  40d570:	8fbc0018 	lw	gp,24(sp)
+  40d574:	1000ffc8 	b	40d498 <__dns_lookup+0x6a8>
+  40d578:	00000000 	nop
+  40d57c:	8f9980a0 	lw	t9,-32608(gp)
+  40d580:	00000000 	nop
+  40d584:	0320f809 	jalr	t9
+  40d588:	00000000 	nop
+  40d58c:	8fbc0018 	lw	gp,24(sp)
+  40d590:	8c430000 	lw	v1,0(v0)
+  40d594:	24020080 	li	v0,128
+  40d598:	1462ff6d 	bne	v1,v0,40d350 <__dns_lookup+0x560>
+  40d59c:	00000000 	nop
+  40d5a0:	8f9181c0 	lw	s1,-32320(gp)
+  40d5a4:	00000000 	nop
+  40d5a8:	02202021 	move	a0,s1
+  40d5ac:	8f9980a8 	lw	t9,-32600(gp)
+  40d5b0:	00000000 	nop
+  40d5b4:	0320f809 	jalr	t9
+  40d5b8:	00000000 	nop
+  40d5bc:	8fbc0018 	lw	gp,24(sp)
+  40d5c0:	00000000 	nop
+  40d5c4:	8f9080c0 	lw	s0,-32576(gp)
+  40d5c8:	00000000 	nop
+  40d5cc:	8e100000 	lw	s0,0(s0)
+  40d5d0:	02202021 	move	a0,s1
+  40d5d4:	26100001 	addiu	s0,s0,1
+  40d5d8:	8f99811c 	lw	t9,-32484(gp)
+  40d5dc:	00000000 	nop
+  40d5e0:	0320f809 	jalr	t9
+  40d5e4:	00000000 	nop
+  40d5e8:	8fbc0018 	lw	gp,24(sp)
+  40d5ec:	02d00018 	mult	s6,s0
+  40d5f0:	8fa200e8 	lw	v0,232(sp)
+  40d5f4:	00008012 	mflo	s0
+  40d5f8:	0050802a 	slt	s0,v0,s0
+  40d5fc:	1200ff5a 	beqz	s0,40d368 <__dns_lookup+0x578>
+  40d600:	0000f021 	move	s8,zero
+  40d604:	1000ff20 	b	40d288 <__dns_lookup+0x498>
+  40d608:	02202021 	move	a0,s1
+  40d60c:	8f858018 	lw	a1,-32744(gp)
+  40d610:	00000000 	nop
+  40d614:	24a512a0 	addiu	a1,a1,4768
+  40d618:	24060401 	li	a2,1025
+  40d61c:	8f99816c 	lw	t9,-32404(gp)
+  40d620:	00000000 	nop
+  40d624:	0320f809 	jalr	t9
+  40d628:	00000000 	nop
+  40d62c:	8fbc0018 	lw	gp,24(sp)
+  40d630:	001e1080 	sll	v0,s8,0x2
+  40d634:	8f8581fc 	lw	a1,-32260(gp)
+  40d638:	00000000 	nop
+  40d63c:	00a22821 	addu	a1,a1,v0
+  40d640:	8ca50000 	lw	a1,0(a1)
+  40d644:	02802021 	move	a0,s4
+  40d648:	24060401 	li	a2,1025
+  40d64c:	8f99816c 	lw	t9,-32404(gp)
+  40d650:	00000000 	nop
+  40d654:	0320f809 	jalr	t9
+  40d658:	00000000 	nop
+  40d65c:	8fbc0018 	lw	gp,24(sp)
+  40d660:	1000fe93 	b	40d0b0 <__dns_lookup+0x2c0>
+  40d664:	00000000 	nop
+	...
+
+0040d670 <__open_nameservers>:
+  40d670:	3c1c0fc0 	lui	gp,0xfc0
+  40d674:	279cabe0 	addiu	gp,gp,-21536
+  40d678:	0399e021 	addu	gp,gp,t9
+  40d67c:	27bdff38 	addiu	sp,sp,-200
+  40d680:	afbc0010 	sw	gp,16(sp)
+  40d684:	afb000b0 	sw	s0,176(sp)
+  40d688:	8f9081c0 	lw	s0,-32320(gp)
+  40d68c:	00000000 	nop
+  40d690:	02002021 	move	a0,s0
+  40d694:	afbf00c4 	sw	ra,196(sp)
+  40d698:	afbc00c0 	sw	gp,192(sp)
+  40d69c:	afb300bc 	sw	s3,188(sp)
+  40d6a0:	afb200b8 	sw	s2,184(sp)
+  40d6a4:	afb100b4 	sw	s1,180(sp)
+  40d6a8:	8f9980a8 	lw	t9,-32600(gp)
+  40d6ac:	00000000 	nop
+  40d6b0:	0320f809 	jalr	t9
+  40d6b4:	00000000 	nop
+  40d6b8:	8fbc0010 	lw	gp,16(sp)
+  40d6bc:	00000000 	nop
+  40d6c0:	8f8280d4 	lw	v0,-32556(gp)
+  40d6c4:	00000000 	nop
+  40d6c8:	8c420000 	lw	v0,0(v0)
+  40d6cc:	00000000 	nop
+  40d6d0:	1840000f 	blez	v0,40d710 <__open_nameservers+0xa0>
+  40d6d4:	00000000 	nop
+  40d6d8:	8f8481c0 	lw	a0,-32320(gp)
+  40d6dc:	8f99811c 	lw	t9,-32484(gp)
+  40d6e0:	00000000 	nop
+  40d6e4:	0320f809 	jalr	t9
+  40d6e8:	00000000 	nop
+  40d6ec:	8fbc0010 	lw	gp,16(sp)
+  40d6f0:	00001021 	move	v0,zero
+  40d6f4:	8fbf00c4 	lw	ra,196(sp)
+  40d6f8:	8fb300bc 	lw	s3,188(sp)
+  40d6fc:	8fb200b8 	lw	s2,184(sp)
+  40d700:	8fb100b4 	lw	s1,180(sp)
+  40d704:	8fb000b0 	lw	s0,176(sp)
+  40d708:	03e00008 	jr	ra
+  40d70c:	27bd00c8 	addiu	sp,sp,200
+  40d710:	8f908018 	lw	s0,-32744(gp)
+  40d714:	00000000 	nop
+  40d718:	261012b0 	addiu	s0,s0,4784
+  40d71c:	8f848018 	lw	a0,-32744(gp)
+  40d720:	00000000 	nop
+  40d724:	248412b4 	addiu	a0,a0,4788
+  40d728:	02002821 	move	a1,s0
+  40d72c:	8f998140 	lw	t9,-32448(gp)
+  40d730:	00000000 	nop
+  40d734:	0320f809 	jalr	t9
+  40d738:	00000000 	nop
+  40d73c:	8fbc0010 	lw	gp,16(sp)
+  40d740:	00409821 	move	s3,v0
+  40d744:	126000eb 	beqz	s3,40daf4 <__open_nameservers+0x484>
+  40d748:	02002821 	move	a1,s0
+  40d74c:	27a40018 	addiu	a0,sp,24
+  40d750:	24050080 	li	a1,128
+  40d754:	02603021 	move	a2,s3
+  40d758:	8f998268 	lw	t9,-32152(gp)
+  40d75c:	00000000 	nop
+  40d760:	0320f809 	jalr	t9
+  40d764:	00000000 	nop
+  40d768:	8fbc0010 	lw	gp,16(sp)
+  40d76c:	104000d9 	beqz	v0,40dad4 <__open_nameservers+0x464>
+  40d770:	27b00018 	addiu	s0,sp,24
+  40d774:	82020000 	lb	v0,0(s0)
+  40d778:	00000000 	nop
+  40d77c:	1040fff3 	beqz	v0,40d74c <__open_nameservers+0xdc>
+  40d780:	00402021 	move	a0,v0
+  40d784:	8f998210 	lw	t9,-32240(gp)
+  40d788:	00000000 	nop
+  40d78c:	0320f809 	jalr	t9
+  40d790:	00000000 	nop
+  40d794:	8fbc0010 	lw	gp,16(sp)
+  40d798:	10400003 	beqz	v0,40d7a8 <__open_nameservers+0x138>
+  40d79c:	00000000 	nop
+  40d7a0:	1000fff4 	b	40d774 <__open_nameservers+0x104>
+  40d7a4:	26100001 	addiu	s0,s0,1
+  40d7a8:	82030000 	lb	v1,0(s0)
+  40d7ac:	00000000 	nop
+  40d7b0:	1060ffe7 	beqz	v1,40d750 <__open_nameservers+0xe0>
+  40d7b4:	27a40018 	addiu	a0,sp,24
+  40d7b8:	2402000a 	li	v0,10
+  40d7bc:	1062ffe5 	beq	v1,v0,40d754 <__open_nameservers+0xe4>
+  40d7c0:	24050080 	li	a1,128
+  40d7c4:	24020023 	li	v0,35
+  40d7c8:	1062ffe3 	beq	v1,v0,40d758 <__open_nameservers+0xe8>
+  40d7cc:	02603021 	move	a2,s3
+  40d7d0:	10600026 	beqz	v1,40d86c <__open_nameservers+0x1fc>
+  40d7d4:	00009021 	move	s2,zero
+  40d7d8:	00121080 	sll	v0,s2,0x2
+  40d7dc:	03a21021 	addu	v0,sp,v0
+  40d7e0:	26520001 	addiu	s2,s2,1
+  40d7e4:	ac500098 	sw	s0,152(v0)
+  40d7e8:	82020000 	lb	v0,0(s0)
+  40d7ec:	00000000 	nop
+  40d7f0:	1040000a 	beqz	v0,40d81c <__open_nameservers+0x1ac>
+  40d7f4:	00402021 	move	a0,v0
+  40d7f8:	8f998210 	lw	t9,-32240(gp)
+  40d7fc:	00000000 	nop
+  40d800:	0320f809 	jalr	t9
+  40d804:	00000000 	nop
+  40d808:	8fbc0010 	lw	gp,16(sp)
+  40d80c:	104000ab 	beqz	v0,40dabc <__open_nameservers+0x44c>
+  40d810:	2402000a 	li	v0,10
+  40d814:	82020000 	lb	v0,0(s0)
+  40d818:	00000000 	nop
+  40d81c:	10400013 	beqz	v0,40d86c <__open_nameservers+0x1fc>
+  40d820:	00402021 	move	a0,v0
+  40d824:	8f998210 	lw	t9,-32240(gp)
+  40d828:	00000000 	nop
+  40d82c:	0320f809 	jalr	t9
+  40d830:	00000000 	nop
+  40d834:	8fbc0010 	lw	gp,16(sp)
+  40d838:	10400004 	beqz	v0,40d84c <__open_nameservers+0x1dc>
+  40d83c:	2402000a 	li	v0,10
+  40d840:	a2000000 	sb	zero,0(s0)
+  40d844:	1000fff3 	b	40d814 <__open_nameservers+0x1a4>
+  40d848:	26100001 	addiu	s0,s0,1
+  40d84c:	82030000 	lb	v1,0(s0)
+  40d850:	00000000 	nop
+  40d854:	1062fffa 	beq	v1,v0,40d840 <__open_nameservers+0x1d0>
+  40d858:	00000000 	nop
+  40d85c:	10600003 	beqz	v1,40d86c <__open_nameservers+0x1fc>
+  40d860:	2a420005 	slti	v0,s2,5
+  40d864:	1440ffdd 	bnez	v0,40d7dc <__open_nameservers+0x16c>
+  40d868:	00121080 	sll	v0,s2,0x2
+  40d86c:	8fa40098 	lw	a0,152(sp)
+  40d870:	8f858018 	lw	a1,-32744(gp)
+  40d874:	00000000 	nop
+  40d878:	24a512c8 	addiu	a1,a1,4808
+  40d87c:	8f998120 	lw	t9,-32480(gp)
+  40d880:	00000000 	nop
+  40d884:	0320f809 	jalr	t9
+  40d888:	00000000 	nop
+  40d88c:	8fbc0010 	lw	gp,16(sp)
+  40d890:	10400062 	beqz	v0,40da1c <__open_nameservers+0x3ac>
+  40d894:	24110001 	li	s1,1
+  40d898:	8fa40098 	lw	a0,152(sp)
+  40d89c:	8f858018 	lw	a1,-32744(gp)
+  40d8a0:	00000000 	nop
+  40d8a4:	24a512d4 	addiu	a1,a1,4820
+  40d8a8:	8f998120 	lw	t9,-32480(gp)
+  40d8ac:	00000000 	nop
+  40d8b0:	0320f809 	jalr	t9
+  40d8b4:	00000000 	nop
+  40d8b8:	8fbc0010 	lw	gp,16(sp)
+  40d8bc:	1440004a 	bnez	v0,40d9e8 <__open_nameservers+0x378>
+  40d8c0:	00000000 	nop
+  40d8c4:	8f8380c0 	lw	v1,-32576(gp)
+  40d8c8:	00000000 	nop
+  40d8cc:	8c630000 	lw	v1,0(v1)
+  40d8d0:	00000000 	nop
+  40d8d4:	1860001c 	blez	v1,40d948 <__open_nameservers+0x2d8>
+  40d8d8:	24110001 	li	s1,1
+  40d8dc:	2463ffff 	addiu	v1,v1,-1
+  40d8e0:	00031080 	sll	v0,v1,0x2
+  40d8e4:	8f8481fc 	lw	a0,-32260(gp)
+  40d8e8:	00000000 	nop
+  40d8ec:	00822021 	addu	a0,a0,v0
+  40d8f0:	8c840000 	lw	a0,0(a0)
+  40d8f4:	8f8180c0 	lw	at,-32576(gp)
+  40d8f8:	00000000 	nop
+  40d8fc:	ac230000 	sw	v1,0(at)
+  40d900:	8f998030 	lw	t9,-32720(gp)
+  40d904:	00000000 	nop
+  40d908:	0320f809 	jalr	t9
+  40d90c:	00000000 	nop
+  40d910:	8fbc0010 	lw	gp,16(sp)
+  40d914:	00000000 	nop
+  40d918:	8f8280c0 	lw	v0,-32576(gp)
+  40d91c:	00000000 	nop
+  40d920:	8c420000 	lw	v0,0(v0)
+  40d924:	00000000 	nop
+  40d928:	00021880 	sll	v1,v0,0x2
+  40d92c:	8f8181fc 	lw	at,-32260(gp)
+  40d930:	00000000 	nop
+  40d934:	00230821 	addu	at,at,v1
+  40d938:	ac200000 	sw	zero,0(at)
+  40d93c:	1c40ffe7 	bgtz	v0,40d8dc <__open_nameservers+0x26c>
+  40d940:	00401821 	move	v1,v0
+  40d944:	24110001 	li	s1,1
+  40d948:	0232102a 	slt	v0,s1,s2
+  40d94c:	1040ff80 	beqz	v0,40d750 <__open_nameservers+0xe0>
+  40d950:	27a40018 	addiu	a0,sp,24
+  40d954:	8f8280c0 	lw	v0,-32576(gp)
+  40d958:	00000000 	nop
+  40d95c:	8c420000 	lw	v0,0(v0)
+  40d960:	00000000 	nop
+  40d964:	28420004 	slti	v0,v0,4
+  40d968:	1040ff7a 	beqz	v0,40d754 <__open_nameservers+0xe4>
+  40d96c:	24050080 	li	a1,128
+  40d970:	8f8580c0 	lw	a1,-32576(gp)
+  40d974:	00111080 	sll	v0,s1,0x2
+  40d978:	03a21821 	addu	v1,sp,v0
+  40d97c:	8ca20000 	lw	v0,0(a1)
+  40d980:	8c640098 	lw	a0,152(v1)
+  40d984:	00028080 	sll	s0,v0,0x2
+  40d988:	24420001 	addiu	v0,v0,1
+  40d98c:	26310001 	addiu	s1,s1,1
+  40d990:	aca20000 	sw	v0,0(a1)
+  40d994:	8f99814c 	lw	t9,-32436(gp)
+  40d998:	00000000 	nop
+  40d99c:	0320f809 	jalr	t9
+  40d9a0:	00000000 	nop
+  40d9a4:	8fbc0010 	lw	gp,16(sp)
+  40d9a8:	00000000 	nop
+  40d9ac:	8f8181fc 	lw	at,-32260(gp)
+  40d9b0:	00000000 	nop
+  40d9b4:	00308021 	addu	s0,at,s0
+  40d9b8:	0232182a 	slt	v1,s1,s2
+  40d9bc:	1060ff63 	beqz	v1,40d74c <__open_nameservers+0xdc>
+  40d9c0:	ae020000 	sw	v0,0(s0)
+  40d9c4:	8f8280c0 	lw	v0,-32576(gp)
+  40d9c8:	00000000 	nop
+  40d9cc:	8c420000 	lw	v0,0(v0)
+  40d9d0:	00000000 	nop
+  40d9d4:	28420004 	slti	v0,v0,4
+  40d9d8:	1440ffe5 	bnez	v0,40d970 <__open_nameservers+0x300>
+  40d9dc:	27a40018 	addiu	a0,sp,24
+  40d9e0:	1000ff5c 	b	40d754 <__open_nameservers+0xe4>
+  40d9e4:	24050080 	li	a1,128
+  40d9e8:	8fa40098 	lw	a0,152(sp)
+  40d9ec:	8f858018 	lw	a1,-32744(gp)
+  40d9f0:	00000000 	nop
+  40d9f4:	24a512dc 	addiu	a1,a1,4828
+  40d9f8:	8f998120 	lw	t9,-32480(gp)
+  40d9fc:	00000000 	nop
+  40da00:	0320f809 	jalr	t9
+  40da04:	00000000 	nop
+  40da08:	8fbc0010 	lw	gp,16(sp)
+  40da0c:	1440ff50 	bnez	v0,40d750 <__open_nameservers+0xe0>
+  40da10:	27a40018 	addiu	a0,sp,24
+  40da14:	1000ffab 	b	40d8c4 <__open_nameservers+0x254>
+  40da18:	00000000 	nop
+  40da1c:	0232102a 	slt	v0,s1,s2
+  40da20:	1040ff9d 	beqz	v0,40d898 <__open_nameservers+0x228>
+  40da24:	00000000 	nop
+  40da28:	8f8280d4 	lw	v0,-32556(gp)
+  40da2c:	00000000 	nop
+  40da30:	8c420000 	lw	v0,0(v0)
+  40da34:	00000000 	nop
+  40da38:	28420003 	slti	v0,v0,3
+  40da3c:	1040ff96 	beqz	v0,40d898 <__open_nameservers+0x228>
+  40da40:	00000000 	nop
+  40da44:	8f8580d4 	lw	a1,-32556(gp)
+  40da48:	00111080 	sll	v0,s1,0x2
+  40da4c:	03a21821 	addu	v1,sp,v0
+  40da50:	8ca20000 	lw	v0,0(a1)
+  40da54:	8c640098 	lw	a0,152(v1)
+  40da58:	00028080 	sll	s0,v0,0x2
+  40da5c:	24420001 	addiu	v0,v0,1
+  40da60:	26310001 	addiu	s1,s1,1
+  40da64:	aca20000 	sw	v0,0(a1)
+  40da68:	8f99814c 	lw	t9,-32436(gp)
+  40da6c:	00000000 	nop
+  40da70:	0320f809 	jalr	t9
+  40da74:	00000000 	nop
+  40da78:	8fbc0010 	lw	gp,16(sp)
+  40da7c:	00000000 	nop
+  40da80:	8f818114 	lw	at,-32492(gp)
+  40da84:	00000000 	nop
+  40da88:	00308021 	addu	s0,at,s0
+  40da8c:	0232182a 	slt	v1,s1,s2
+  40da90:	1060ff81 	beqz	v1,40d898 <__open_nameservers+0x228>
+  40da94:	ae020000 	sw	v0,0(s0)
+  40da98:	8f8280d4 	lw	v0,-32556(gp)
+  40da9c:	00000000 	nop
+  40daa0:	8c420000 	lw	v0,0(v0)
+  40daa4:	00000000 	nop
+  40daa8:	28420003 	slti	v0,v0,3
+  40daac:	1440ffe5 	bnez	v0,40da44 <__open_nameservers+0x3d4>
+  40dab0:	00000000 	nop
+  40dab4:	1000ff78 	b	40d898 <__open_nameservers+0x228>
+  40dab8:	00000000 	nop
+  40dabc:	82030000 	lb	v1,0(s0)
+  40dac0:	00000000 	nop
+  40dac4:	1062ff53 	beq	v1,v0,40d814 <__open_nameservers+0x1a4>
+  40dac8:	00000000 	nop
+  40dacc:	1000ff46 	b	40d7e8 <__open_nameservers+0x178>
+  40dad0:	26100001 	addiu	s0,s0,1
+  40dad4:	02602021 	move	a0,s3
+  40dad8:	8f998134 	lw	t9,-32460(gp)
+  40dadc:	00000000 	nop
+  40dae0:	0320f809 	jalr	t9
+  40dae4:	00000000 	nop
+  40dae8:	8fbc0010 	lw	gp,16(sp)
+  40daec:	1000fefa 	b	40d6d8 <__open_nameservers+0x68>
+  40daf0:	00000000 	nop
+  40daf4:	8f848018 	lw	a0,-32744(gp)
+  40daf8:	00000000 	nop
+  40dafc:	248412e4 	addiu	a0,a0,4836
+  40db00:	8f998140 	lw	t9,-32448(gp)
+  40db04:	00000000 	nop
+  40db08:	0320f809 	jalr	t9
+  40db0c:	00000000 	nop
+  40db10:	8fbc0010 	lw	gp,16(sp)
+  40db14:	00409821 	move	s3,v0
+  40db18:	1260feef 	beqz	s3,40d6d8 <__open_nameservers+0x68>
+  40db1c:	27a40018 	addiu	a0,sp,24
+  40db20:	1000ff0c 	b	40d754 <__open_nameservers+0xe4>
+  40db24:	24050080 	li	a1,128
+	...
+
+0040db30 <__get_hosts_byname_r>:
+  40db30:	3c1c0fc0 	lui	gp,0xfc0
+  40db34:	279ca720 	addiu	gp,gp,-22752
+  40db38:	0399e021 	addu	gp,gp,t9
+  40db3c:	27bdffc8 	addiu	sp,sp,-56
+  40db40:	afbc0028 	sw	gp,40(sp)
+  40db44:	00a01021 	move	v0,a1
+  40db48:	00c01821 	move	v1,a2
+  40db4c:	00403021 	move	a2,v0
+  40db50:	8fa20048 	lw	v0,72(sp)
+  40db54:	00e04021 	move	t0,a3
+  40db58:	afa20018 	sw	v0,24(sp)
+  40db5c:	8fa2004c 	lw	v0,76(sp)
+  40db60:	00802821 	move	a1,a0
+  40db64:	afa2001c 	sw	v0,28(sp)
+  40db68:	8fa20050 	lw	v0,80(sp)
+  40db6c:	00002021 	move	a0,zero
+  40db70:	00003821 	move	a3,zero
+  40db74:	afbf0034 	sw	ra,52(sp)
+  40db78:	afbc0030 	sw	gp,48(sp)
+  40db7c:	afa30010 	sw	v1,16(sp)
+  40db80:	afa80014 	sw	t0,20(sp)
+  40db84:	afa20020 	sw	v0,32(sp)
+  40db88:	8f9982cc 	lw	t9,-32052(gp)
+  40db8c:	00000000 	nop
+  40db90:	0320f809 	jalr	t9
+  40db94:	00000000 	nop
+  40db98:	8fbc0028 	lw	gp,40(sp)
+  40db9c:	8fbf0034 	lw	ra,52(sp)
+  40dba0:	00000000 	nop
+  40dba4:	03e00008 	jr	ra
+  40dba8:	27bd0038 	addiu	sp,sp,56
+  40dbac:	00000000 	nop
+
+0040dbb0 <__connect_dns>:
+  40dbb0:	3c1c0fc0 	lui	gp,0xfc0
+  40dbb4:	279ca6a0 	addiu	gp,gp,-22880
+  40dbb8:	0399e021 	addu	gp,gp,t9
+  40dbbc:	27bdffc8 	addiu	sp,sp,-56
+  40dbc0:	afbc0010 	sw	gp,16(sp)
+  40dbc4:	afb00028 	sw	s0,40(sp)
+  40dbc8:	24050001 	li	a1,1
+  40dbcc:	00808021 	move	s0,a0
+  40dbd0:	24060011 	li	a2,17
+  40dbd4:	24040002 	li	a0,2
+  40dbd8:	afb1002c 	sw	s1,44(sp)
+  40dbdc:	afbf0034 	sw	ra,52(sp)
+  40dbe0:	afbc0030 	sw	gp,48(sp)
+  40dbe4:	8f998218 	lw	t9,-32232(gp)
+  40dbe8:	00000000 	nop
+  40dbec:	0320f809 	jalr	t9
+  40dbf0:	00000000 	nop
+  40dbf4:	8fbc0010 	lw	gp,16(sp)
+  40dbf8:	00408821 	move	s1,v0
+  40dbfc:	2403ffff 	li	v1,-1
+  40dc00:	1223001b 	beq	s1,v1,40dc70 <__connect_dns+0xc0>
+  40dc04:	02002021 	move	a0,s0
+  40dc08:	24020002 	li	v0,2
+  40dc0c:	a7a20018 	sh	v0,24(sp)
+  40dc10:	24020035 	li	v0,53
+  40dc14:	a7a2001a 	sh	v0,26(sp)
+  40dc18:	8f9981b4 	lw	t9,-32332(gp)
+  40dc1c:	00000000 	nop
+  40dc20:	0320f809 	jalr	t9
+  40dc24:	00000000 	nop
+  40dc28:	8fbc0010 	lw	gp,16(sp)
+  40dc2c:	27a50018 	addiu	a1,sp,24
+  40dc30:	02202021 	move	a0,s1
+  40dc34:	24060010 	li	a2,16
+  40dc38:	afa2001c 	sw	v0,28(sp)
+  40dc3c:	8f99829c 	lw	t9,-32100(gp)
+  40dc40:	00000000 	nop
+  40dc44:	0320f809 	jalr	t9
+  40dc48:	00000000 	nop
+  40dc4c:	8fbc0010 	lw	gp,16(sp)
+  40dc50:	1040000c 	beqz	v0,40dc84 <__connect_dns+0xd4>
+  40dc54:	02202021 	move	a0,s1
+  40dc58:	8f998040 	lw	t9,-32704(gp)
+  40dc5c:	00000000 	nop
+  40dc60:	0320f809 	jalr	t9
+  40dc64:	00000000 	nop
+  40dc68:	8fbc0010 	lw	gp,16(sp)
+  40dc6c:	2402ffff 	li	v0,-1
+  40dc70:	8fbf0034 	lw	ra,52(sp)
+  40dc74:	8fb1002c 	lw	s1,44(sp)
+  40dc78:	8fb00028 	lw	s0,40(sp)
+  40dc7c:	03e00008 	jr	ra
+  40dc80:	27bd0038 	addiu	sp,sp,56
+  40dc84:	1000fffa 	b	40dc70 <__connect_dns+0xc0>
+  40dc88:	02201021 	move	v0,s1
+  40dc8c:	00000000 	nop
+
+0040dc90 <__libc_connect>:
+  40dc90:	3c1c0fc0 	lui	gp,0xfc0
+  40dc94:	279ca5c0 	addiu	gp,gp,-23104
+  40dc98:	0399e021 	addu	gp,gp,t9
+  40dc9c:	27bdffd8 	addiu	sp,sp,-40
+  40dca0:	afbc0010 	sw	gp,16(sp)
+  40dca4:	afb1001c 	sw	s1,28(sp)
+  40dca8:	afb00018 	sw	s0,24(sp)
+  40dcac:	afbf0024 	sw	ra,36(sp)
+  40dcb0:	afbc0020 	sw	gp,32(sp)
+  40dcb4:	00808821 	move	s1,a0
+  40dcb8:	00a08021 	move	s0,a1
+  40dcbc:	00c01821 	move	v1,a2
+  40dcc0:	02202021 	move	a0,s1
+  40dcc4:	02002821 	move	a1,s0
+  40dcc8:	00603021 	move	a2,v1
+  40dccc:	2402104a 	li	v0,4170
+  40dcd0:	0000000c 	syscall
+  40dcd4:	00408021 	move	s0,v0
+  40dcd8:	00e01821 	move	v1,a3
+  40dcdc:	10600009 	beqz	v1,40dd04 <__libc_connect+0x74>
+  40dce0:	02001021 	move	v0,s0
+  40dce4:	8f9980a0 	lw	t9,-32608(gp)
+  40dce8:	00000000 	nop
+  40dcec:	0320f809 	jalr	t9
+  40dcf0:	00000000 	nop
+  40dcf4:	8fbc0010 	lw	gp,16(sp)
+  40dcf8:	00401821 	move	v1,v0
+  40dcfc:	ac700000 	sw	s0,0(v1)
+  40dd00:	2402ffff 	li	v0,-1
+  40dd04:	8fbf0024 	lw	ra,36(sp)
+  40dd08:	8fb1001c 	lw	s1,28(sp)
+  40dd0c:	8fb00018 	lw	s0,24(sp)
+  40dd10:	03e00008 	jr	ra
+  40dd14:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040dd20 <__libc_recv>:
+  40dd20:	3c1c0fc0 	lui	gp,0xfc0
+  40dd24:	279ca530 	addiu	gp,gp,-23248
+  40dd28:	0399e021 	addu	gp,gp,t9
+  40dd2c:	27bdffd0 	addiu	sp,sp,-48
+  40dd30:	afbc0010 	sw	gp,16(sp)
+  40dd34:	afb20020 	sw	s2,32(sp)
+  40dd38:	afb1001c 	sw	s1,28(sp)
+  40dd3c:	afb00018 	sw	s0,24(sp)
+  40dd40:	afbf0028 	sw	ra,40(sp)
+  40dd44:	afbc0024 	sw	gp,36(sp)
+  40dd48:	00809021 	move	s2,a0
+  40dd4c:	00a08821 	move	s1,a1
+  40dd50:	00c08021 	move	s0,a2
+  40dd54:	00e01821 	move	v1,a3
+  40dd58:	02402021 	move	a0,s2
+  40dd5c:	02202821 	move	a1,s1
+  40dd60:	02003021 	move	a2,s0
+  40dd64:	00603821 	move	a3,v1
+  40dd68:	2402104f 	li	v0,4175
+  40dd6c:	0000000c 	syscall
+  40dd70:	00408021 	move	s0,v0
+  40dd74:	00e01821 	move	v1,a3
+  40dd78:	10600009 	beqz	v1,40dda0 <__libc_recv+0x80>
+  40dd7c:	02001021 	move	v0,s0
+  40dd80:	8f9980a0 	lw	t9,-32608(gp)
+  40dd84:	00000000 	nop
+  40dd88:	0320f809 	jalr	t9
+  40dd8c:	00000000 	nop
+  40dd90:	8fbc0010 	lw	gp,16(sp)
+  40dd94:	00401821 	move	v1,v0
+  40dd98:	ac700000 	sw	s0,0(v1)
+  40dd9c:	2402ffff 	li	v0,-1
+  40dda0:	8fbf0028 	lw	ra,40(sp)
+  40dda4:	8fb20020 	lw	s2,32(sp)
+  40dda8:	8fb1001c 	lw	s1,28(sp)
+  40ddac:	8fb00018 	lw	s0,24(sp)
+  40ddb0:	03e00008 	jr	ra
+  40ddb4:	27bd0030 	addiu	sp,sp,48
+	...
+
+0040ddc0 <__libc_send>:
+  40ddc0:	3c1c0fc0 	lui	gp,0xfc0
+  40ddc4:	279ca490 	addiu	gp,gp,-23408
+  40ddc8:	0399e021 	addu	gp,gp,t9
+  40ddcc:	27bdffd0 	addiu	sp,sp,-48
+  40ddd0:	afbc0010 	sw	gp,16(sp)
+  40ddd4:	afb20020 	sw	s2,32(sp)
+  40ddd8:	afb1001c 	sw	s1,28(sp)
+  40dddc:	afb00018 	sw	s0,24(sp)
+  40dde0:	afbf0028 	sw	ra,40(sp)
+  40dde4:	afbc0024 	sw	gp,36(sp)
+  40dde8:	00809021 	move	s2,a0
+  40ddec:	00a08821 	move	s1,a1
+  40ddf0:	00c08021 	move	s0,a2
+  40ddf4:	00e01821 	move	v1,a3
+  40ddf8:	02402021 	move	a0,s2
+  40ddfc:	02202821 	move	a1,s1
+  40de00:	02003021 	move	a2,s0
+  40de04:	00603821 	move	a3,v1
+  40de08:	24021052 	li	v0,4178
+  40de0c:	0000000c 	syscall
+  40de10:	00408021 	move	s0,v0
+  40de14:	00e01821 	move	v1,a3
+  40de18:	10600009 	beqz	v1,40de40 <__libc_send+0x80>
+  40de1c:	02001021 	move	v0,s0
+  40de20:	8f9980a0 	lw	t9,-32608(gp)
+  40de24:	00000000 	nop
+  40de28:	0320f809 	jalr	t9
+  40de2c:	00000000 	nop
+  40de30:	8fbc0010 	lw	gp,16(sp)
+  40de34:	00401821 	move	v1,v0
+  40de38:	ac700000 	sw	s0,0(v1)
+  40de3c:	2402ffff 	li	v0,-1
+  40de40:	8fbf0028 	lw	ra,40(sp)
+  40de44:	8fb20020 	lw	s2,32(sp)
+  40de48:	8fb1001c 	lw	s1,28(sp)
+  40de4c:	8fb00018 	lw	s0,24(sp)
+  40de50:	03e00008 	jr	ra
+  40de54:	27bd0030 	addiu	sp,sp,48
+	...
+
+0040de60 <setnetent>:
+  40de60:	3c1c0fc0 	lui	gp,0xfc0
+  40de64:	279ca3f0 	addiu	gp,gp,-23568
+  40de68:	0399e021 	addu	gp,gp,t9
+  40de6c:	27bdffd8 	addiu	sp,sp,-40
+  40de70:	afbc0010 	sw	gp,16(sp)
+  40de74:	afb00018 	sw	s0,24(sp)
+  40de78:	00808021 	move	s0,a0
+  40de7c:	8f84801c 	lw	a0,-32740(gp)
+  40de80:	00000000 	nop
+  40de84:	24840240 	addiu	a0,a0,576
+  40de88:	afbf0020 	sw	ra,32(sp)
+  40de8c:	afbc001c 	sw	gp,28(sp)
+  40de90:	8f9980a8 	lw	t9,-32600(gp)
+  40de94:	00000000 	nop
+  40de98:	0320f809 	jalr	t9
+  40de9c:	00000000 	nop
+  40dea0:	8fbc0010 	lw	gp,16(sp)
+  40dea4:	00000000 	nop
+  40dea8:	8f82801c 	lw	v0,-32740(gp)
+  40deac:	00000000 	nop
+  40deb0:	24420258 	addiu	v0,v0,600
+  40deb4:	8c420000 	lw	v0,0(v0)
+  40deb8:	8f848018 	lw	a0,-32744(gp)
+  40debc:	00000000 	nop
+  40dec0:	24841300 	addiu	a0,a0,4864
+  40dec4:	8f858018 	lw	a1,-32744(gp)
+  40dec8:	00000000 	nop
+  40decc:	24a51310 	addiu	a1,a1,4880
+  40ded0:	1040001b 	beqz	v0,40df40 <setnetent+0xe0>
+  40ded4:	00000000 	nop
+  40ded8:	00402021 	move	a0,v0
+  40dedc:	8f9980b8 	lw	t9,-32584(gp)
+  40dee0:	00000000 	nop
+  40dee4:	0320f809 	jalr	t9
+  40dee8:	00000000 	nop
+  40deec:	8fbc0010 	lw	gp,16(sp)
+  40def0:	00000000 	nop
+  40def4:	8f82827c 	lw	v0,-32132(gp)
+  40def8:	00000000 	nop
+  40defc:	8c420000 	lw	v0,0(v0)
+  40df00:	8f84801c 	lw	a0,-32740(gp)
+  40df04:	00000000 	nop
+  40df08:	24840240 	addiu	a0,a0,576
+  40df0c:	00501025 	or	v0,v0,s0
+  40df10:	8f81827c 	lw	at,-32132(gp)
+  40df14:	00000000 	nop
+  40df18:	ac220000 	sw	v0,0(at)
+  40df1c:	8f99811c 	lw	t9,-32484(gp)
+  40df20:	00000000 	nop
+  40df24:	0320f809 	jalr	t9
+  40df28:	00000000 	nop
+  40df2c:	8fbc0010 	lw	gp,16(sp)
+  40df30:	8fbf0020 	lw	ra,32(sp)
+  40df34:	8fb00018 	lw	s0,24(sp)
+  40df38:	03e00008 	jr	ra
+  40df3c:	27bd0028 	addiu	sp,sp,40
+  40df40:	8f998140 	lw	t9,-32448(gp)
+  40df44:	00000000 	nop
+  40df48:	0320f809 	jalr	t9
+  40df4c:	00000000 	nop
+  40df50:	8fbc0010 	lw	gp,16(sp)
+  40df54:	00000000 	nop
+  40df58:	8f81801c 	lw	at,-32740(gp)
+  40df5c:	00000000 	nop
+  40df60:	24210258 	addiu	at,at,600
+  40df64:	1000ffe3 	b	40def4 <setnetent+0x94>
+  40df68:	ac220000 	sw	v0,0(at)
+
+0040df6c <endnetent>:
+  40df6c:	3c1c0fc0 	lui	gp,0xfc0
+  40df70:	279ca2e4 	addiu	gp,gp,-23836
+  40df74:	0399e021 	addu	gp,gp,t9
+  40df78:	27bdffd8 	addiu	sp,sp,-40
+  40df7c:	afbc0010 	sw	gp,16(sp)
+  40df80:	afb00018 	sw	s0,24(sp)
+  40df84:	8f90801c 	lw	s0,-32740(gp)
+  40df88:	00000000 	nop
+  40df8c:	26100240 	addiu	s0,s0,576
+  40df90:	00000000 	nop
+  40df94:	02002021 	move	a0,s0
+  40df98:	afbf0020 	sw	ra,32(sp)
+  40df9c:	afbc001c 	sw	gp,28(sp)
+  40dfa0:	8f9980a8 	lw	t9,-32600(gp)
+  40dfa4:	00000000 	nop
+  40dfa8:	0320f809 	jalr	t9
+  40dfac:	00000000 	nop
+  40dfb0:	8fbc0010 	lw	gp,16(sp)
+  40dfb4:	00000000 	nop
+  40dfb8:	8f82801c 	lw	v0,-32740(gp)
+  40dfbc:	00000000 	nop
+  40dfc0:	24420258 	addiu	v0,v0,600
+  40dfc4:	8c420000 	lw	v0,0(v0)
+  40dfc8:	00000000 	nop
+  40dfcc:	1040000b 	beqz	v0,40dffc <endnetent+0x90>
+  40dfd0:	00402021 	move	a0,v0
+  40dfd4:	8f998134 	lw	t9,-32460(gp)
+  40dfd8:	00000000 	nop
+  40dfdc:	0320f809 	jalr	t9
+  40dfe0:	00000000 	nop
+  40dfe4:	8fbc0010 	lw	gp,16(sp)
+  40dfe8:	00000000 	nop
+  40dfec:	8f81801c 	lw	at,-32740(gp)
+  40dff0:	00000000 	nop
+  40dff4:	24210258 	addiu	at,at,600
+  40dff8:	ac200000 	sw	zero,0(at)
+  40dffc:	02002021 	move	a0,s0
+  40e000:	8f81827c 	lw	at,-32132(gp)
+  40e004:	00000000 	nop
+  40e008:	ac200000 	sw	zero,0(at)
+  40e00c:	8f99811c 	lw	t9,-32484(gp)
+  40e010:	00000000 	nop
+  40e014:	0320f809 	jalr	t9
+  40e018:	00000000 	nop
+  40e01c:	8fbc0010 	lw	gp,16(sp)
+  40e020:	8fbf0020 	lw	ra,32(sp)
+  40e024:	8fb00018 	lw	s0,24(sp)
+  40e028:	03e00008 	jr	ra
+  40e02c:	27bd0028 	addiu	sp,sp,40
+  40e030:	3c1c0fc0 	lui	gp,0xfc0
+  40e034:	279ca220 	addiu	gp,gp,-24032
+  40e038:	0399e021 	addu	gp,gp,t9
+  40e03c:	80870000 	lb	a3,0(a0)
+  40e040:	00000000 	nop
+  40e044:	10e00011 	beqz	a3,40e08c <endnetent+0x120>
+  40e048:	00001021 	move	v0,zero
+  40e04c:	10000006 	b	40e068 <endnetent+0xfc>
+  40e050:	00a03021 	move	a2,a1
+  40e054:	00031e00 	sll	v1,v1,0x18
+  40e058:	00031e03 	sra	v1,v1,0x18
+  40e05c:	24c60001 	addiu	a2,a2,1
+  40e060:	1067000a 	beq	v1,a3,40e08c <endnetent+0x120>
+  40e064:	00801021 	move	v0,a0
+  40e068:	80c20000 	lb	v0,0(a2)
+  40e06c:	90c30000 	lbu	v1,0(a2)
+  40e070:	1440fff8 	bnez	v0,40e054 <endnetent+0xe8>
+  40e074:	00000000 	nop
+  40e078:	24840001 	addiu	a0,a0,1
+  40e07c:	80870000 	lb	a3,0(a0)
+  40e080:	00000000 	nop
+  40e084:	14e0fff1 	bnez	a3,40e04c <endnetent+0xe0>
+  40e088:	00001021 	move	v0,zero
+  40e08c:	03e00008 	jr	ra
+  40e090:	00000000 	nop
+
+0040e094 <getnetent>:
+  40e094:	3c1c0fc0 	lui	gp,0xfc0
+  40e098:	279ca1bc 	addiu	gp,gp,-24132
+  40e09c:	0399e021 	addu	gp,gp,t9
+  40e0a0:	27bdffd0 	addiu	sp,sp,-48
+  40e0a4:	afbc0010 	sw	gp,16(sp)
+  40e0a8:	afb00018 	sw	s0,24(sp)
+  40e0ac:	8f90801c 	lw	s0,-32740(gp)
+  40e0b0:	00000000 	nop
+  40e0b4:	26100240 	addiu	s0,s0,576
+  40e0b8:	00000000 	nop
+  40e0bc:	02002021 	move	a0,s0
+  40e0c0:	afbf0028 	sw	ra,40(sp)
+  40e0c4:	afbc0024 	sw	gp,36(sp)
+  40e0c8:	afb20020 	sw	s2,32(sp)
+  40e0cc:	afb1001c 	sw	s1,28(sp)
+  40e0d0:	8f9980a8 	lw	t9,-32600(gp)
+  40e0d4:	00000000 	nop
+  40e0d8:	0320f809 	jalr	t9
+  40e0dc:	00000000 	nop
+  40e0e0:	8fbc0010 	lw	gp,16(sp)
+  40e0e4:	00000000 	nop
+  40e0e8:	8f82801c 	lw	v0,-32740(gp)
+  40e0ec:	00000000 	nop
+  40e0f0:	24420258 	addiu	v0,v0,600
+  40e0f4:	8c420000 	lw	v0,0(v0)
+  40e0f8:	00000000 	nop
+  40e0fc:	104000a0 	beqz	v0,40e380 <getnetent+0x2ec>
+  40e100:	00000000 	nop
+  40e104:	8f86801c 	lw	a2,-32740(gp)
+  40e108:	00000000 	nop
+  40e10c:	24c60258 	addiu	a2,a2,600
+  40e110:	8cc60000 	lw	a2,0(a2)
+  40e114:	8f84801c 	lw	a0,-32740(gp)
+  40e118:	00000000 	nop
+  40e11c:	248409c0 	addiu	a0,a0,2496
+  40e120:	24050100 	li	a1,256
+  40e124:	8f998268 	lw	t9,-32152(gp)
+  40e128:	00000000 	nop
+  40e12c:	0320f809 	jalr	t9
+  40e130:	00000000 	nop
+  40e134:	8fbc0010 	lw	gp,16(sp)
+  40e138:	00408821 	move	s1,v0
+  40e13c:	8f858018 	lw	a1,-32744(gp)
+  40e140:	00000000 	nop
+  40e144:	24a51314 	addiu	a1,a1,4884
+  40e148:	1220009e 	beqz	s1,40e3c4 <getnetent+0x330>
+  40e14c:	02202021 	move	a0,s1
+  40e150:	82230000 	lb	v1,0(s1)
+  40e154:	24020023 	li	v0,35
+  40e158:	1062ffea 	beq	v1,v0,40e104 <getnetent+0x70>
+  40e15c:	00000000 	nop
+  40e160:	8f998018 	lw	t9,-32744(gp)
+  40e164:	00000000 	nop
+  40e168:	2739e030 	addiu	t9,t9,-8144
+  40e16c:	00000000 	nop
+  40e170:	0320f809 	jalr	t9
+  40e174:	00000000 	nop
+  40e178:	8fbc0010 	lw	gp,16(sp)
+  40e17c:	00408021 	move	s0,v0
+  40e180:	8f858018 	lw	a1,-32744(gp)
+  40e184:	00000000 	nop
+  40e188:	24a51318 	addiu	a1,a1,4888
+  40e18c:	1200ffdd 	beqz	s0,40e104 <getnetent+0x70>
+  40e190:	02202021 	move	a0,s1
+  40e194:	a2000000 	sb	zero,0(s0)
+  40e198:	8f81801c 	lw	at,-32740(gp)
+  40e19c:	00000000 	nop
+  40e1a0:	24210ac4 	addiu	at,at,2756
+  40e1a4:	ac310000 	sw	s1,0(at)
+  40e1a8:	8f998018 	lw	t9,-32744(gp)
+  40e1ac:	00000000 	nop
+  40e1b0:	2739e030 	addiu	t9,t9,-8144
+  40e1b4:	00000000 	nop
+  40e1b8:	0320f809 	jalr	t9
+  40e1bc:	00000000 	nop
+  40e1c0:	8fbc0010 	lw	gp,16(sp)
+  40e1c4:	00408021 	move	s0,v0
+  40e1c8:	1200ffce 	beqz	s0,40e104 <getnetent+0x70>
+  40e1cc:	24020020 	li	v0,32
+  40e1d0:	a2000000 	sb	zero,0(s0)
+  40e1d4:	26100001 	addiu	s0,s0,1
+  40e1d8:	82030000 	lb	v1,0(s0)
+  40e1dc:	00000000 	nop
+  40e1e0:	1062005e 	beq	v1,v0,40e35c <getnetent+0x2c8>
+  40e1e4:	24020009 	li	v0,9
+  40e1e8:	1062005c 	beq	v1,v0,40e35c <getnetent+0x2c8>
+  40e1ec:	00000000 	nop
+  40e1f0:	8f858018 	lw	a1,-32744(gp)
+  40e1f4:	00000000 	nop
+  40e1f8:	24a51318 	addiu	a1,a1,4888
+  40e1fc:	02002021 	move	a0,s0
+  40e200:	8f998018 	lw	t9,-32744(gp)
+  40e204:	00000000 	nop
+  40e208:	2739e030 	addiu	t9,t9,-8144
+  40e20c:	00000000 	nop
+  40e210:	0320f809 	jalr	t9
+  40e214:	00000000 	nop
+  40e218:	8fbc0010 	lw	gp,16(sp)
+  40e21c:	00408821 	move	s1,v0
+  40e220:	12200003 	beqz	s1,40e230 <getnetent+0x19c>
+  40e224:	02002021 	move	a0,s0
+  40e228:	a2200000 	sb	zero,0(s1)
+  40e22c:	26310001 	addiu	s1,s1,1
+  40e230:	8f998160 	lw	t9,-32416(gp)
+  40e234:	00000000 	nop
+  40e238:	0320f809 	jalr	t9
+  40e23c:	00000000 	nop
+  40e240:	8fbc0010 	lw	gp,16(sp)
+  40e244:	00000000 	nop
+  40e248:	8f83801c 	lw	v1,-32740(gp)
+  40e24c:	00000000 	nop
+  40e250:	24630ad0 	addiu	v1,v1,2768
+  40e254:	8f84801c 	lw	a0,-32740(gp)
+  40e258:	00000000 	nop
+  40e25c:	24840ad4 	addiu	a0,a0,2772
+  40e260:	ac620000 	sw	v0,0(v1)
+  40e264:	24020002 	li	v0,2
+  40e268:	ac62fffc 	sw	v0,-4(v1)
+  40e26c:	ac64fff8 	sw	a0,-8(v1)
+  40e270:	12200021 	beqz	s1,40e2f8 <getnetent+0x264>
+  40e274:	00809021 	move	s2,a0
+  40e278:	1000001f 	b	40e2f8 <getnetent+0x264>
+  40e27c:	02208021 	move	s0,s1
+  40e280:	00023603 	sra	a2,v0,0x18
+  40e284:	24020020 	li	v0,32
+  40e288:	10c2001a 	beq	a2,v0,40e2f4 <getnetent+0x260>
+  40e28c:	00000000 	nop
+  40e290:	8f82801c 	lw	v0,-32740(gp)
+  40e294:	00000000 	nop
+  40e298:	24420b5c 	addiu	v0,v0,2908
+  40e29c:	0242182b 	sltu	v1,s2,v0
+  40e2a0:	24020009 	li	v0,9
+  40e2a4:	8f858018 	lw	a1,-32744(gp)
+  40e2a8:	00000000 	nop
+  40e2ac:	24a51318 	addiu	a1,a1,4888
+  40e2b0:	10c20010 	beq	a2,v0,40e2f4 <getnetent+0x260>
+  40e2b4:	02002021 	move	a0,s0
+  40e2b8:	10600003 	beqz	v1,40e2c8 <getnetent+0x234>
+  40e2bc:	00000000 	nop
+  40e2c0:	ae500000 	sw	s0,0(s2)
+  40e2c4:	26520004 	addiu	s2,s2,4
+  40e2c8:	8f998018 	lw	t9,-32744(gp)
+  40e2cc:	00000000 	nop
+  40e2d0:	2739e030 	addiu	t9,t9,-8144
+  40e2d4:	00000000 	nop
+  40e2d8:	0320f809 	jalr	t9
+  40e2dc:	00000000 	nop
+  40e2e0:	8fbc0010 	lw	gp,16(sp)
+  40e2e4:	00408021 	move	s0,v0
+  40e2e8:	12000009 	beqz	s0,40e310 <getnetent+0x27c>
+  40e2ec:	00000000 	nop
+  40e2f0:	a2000000 	sb	zero,0(s0)
+  40e2f4:	26100001 	addiu	s0,s0,1
+  40e2f8:	12000005 	beqz	s0,40e310 <getnetent+0x27c>
+  40e2fc:	00000000 	nop
+  40e300:	82020000 	lb	v0,0(s0)
+  40e304:	92030000 	lbu	v1,0(s0)
+  40e308:	1440ffdd 	bnez	v0,40e280 <getnetent+0x1ec>
+  40e30c:	00031600 	sll	v0,v1,0x18
+  40e310:	8f84801c 	lw	a0,-32740(gp)
+  40e314:	00000000 	nop
+  40e318:	24840240 	addiu	a0,a0,576
+  40e31c:	ae400000 	sw	zero,0(s2)
+  40e320:	8f99811c 	lw	t9,-32484(gp)
+  40e324:	00000000 	nop
+  40e328:	0320f809 	jalr	t9
+  40e32c:	00000000 	nop
+  40e330:	8fbc0010 	lw	gp,16(sp)
+  40e334:	00000000 	nop
+  40e338:	8f82801c 	lw	v0,-32740(gp)
+  40e33c:	00000000 	nop
+  40e340:	24420ac4 	addiu	v0,v0,2756
+  40e344:	8fbf0028 	lw	ra,40(sp)
+  40e348:	8fb20020 	lw	s2,32(sp)
+  40e34c:	8fb1001c 	lw	s1,28(sp)
+  40e350:	8fb00018 	lw	s0,24(sp)
+  40e354:	03e00008 	jr	ra
+  40e358:	27bd0030 	addiu	sp,sp,48
+  40e35c:	26100001 	addiu	s0,s0,1
+  40e360:	82030000 	lb	v1,0(s0)
+  40e364:	24020020 	li	v0,32
+  40e368:	1062fffc 	beq	v1,v0,40e35c <getnetent+0x2c8>
+  40e36c:	24020009 	li	v0,9
+  40e370:	1462ff9f 	bne	v1,v0,40e1f0 <getnetent+0x15c>
+  40e374:	00000000 	nop
+  40e378:	1000fff9 	b	40e360 <getnetent+0x2cc>
+  40e37c:	26100001 	addiu	s0,s0,1
+  40e380:	8f848018 	lw	a0,-32744(gp)
+  40e384:	00000000 	nop
+  40e388:	24841300 	addiu	a0,a0,4864
+  40e38c:	8f858018 	lw	a1,-32744(gp)
+  40e390:	00000000 	nop
+  40e394:	24a51310 	addiu	a1,a1,4880
+  40e398:	8f998140 	lw	t9,-32448(gp)
+  40e39c:	00000000 	nop
+  40e3a0:	0320f809 	jalr	t9
+  40e3a4:	00000000 	nop
+  40e3a8:	8fbc0010 	lw	gp,16(sp)
+  40e3ac:	00000000 	nop
+  40e3b0:	8f81801c 	lw	at,-32740(gp)
+  40e3b4:	00000000 	nop
+  40e3b8:	24210258 	addiu	at,at,600
+  40e3bc:	1440ff51 	bnez	v0,40e104 <getnetent+0x70>
+  40e3c0:	ac220000 	sw	v0,0(at)
+  40e3c4:	8f84801c 	lw	a0,-32740(gp)
+  40e3c8:	00000000 	nop
+  40e3cc:	24840240 	addiu	a0,a0,576
+  40e3d0:	8f99811c 	lw	t9,-32484(gp)
+  40e3d4:	00000000 	nop
+  40e3d8:	0320f809 	jalr	t9
+  40e3dc:	00000000 	nop
+  40e3e0:	8fbc0010 	lw	gp,16(sp)
+  40e3e4:	1000ffd7 	b	40e344 <getnetent+0x2b0>
+  40e3e8:	00001021 	move	v0,zero
+  40e3ec:	00000000 	nop
+
+0040e3f0 <inet_network>:
+  40e3f0:	3c1c0fc0 	lui	gp,0xfc0
+  40e3f4:	279c9e60 	addiu	gp,gp,-24992
+  40e3f8:	0399e021 	addu	gp,gp,t9
+  40e3fc:	27bdffb0 	addiu	sp,sp,-80
+  40e400:	afbc0010 	sw	gp,16(sp)
+  40e404:	afb60040 	sw	s6,64(sp)
+  40e408:	27b60018 	addiu	s6,sp,24
+  40e40c:	afb40038 	sw	s4,56(sp)
+  40e410:	afb1002c 	sw	s1,44(sp)
+  40e414:	afbf0048 	sw	ra,72(sp)
+  40e418:	afbc0044 	sw	gp,68(sp)
+  40e41c:	afb5003c 	sw	s5,60(sp)
+  40e420:	afb30034 	sw	s3,52(sp)
+  40e424:	afb20030 	sw	s2,48(sp)
+  40e428:	afb00028 	sw	s0,40(sp)
+  40e42c:	00808821 	move	s1,a0
+  40e430:	02c0a021 	move	s4,s6
+  40e434:	82230000 	lb	v1,0(s1)
+  40e438:	24020030 	li	v0,48
+  40e43c:	00009821 	move	s3,zero
+  40e440:	1062005b 	beq	v1,v0,40e5b0 <inet_network+0x1c0>
+  40e444:	2415000a 	li	s5,10
+  40e448:	1000000d 	b	40e480 <inet_network+0x90>
+  40e44c:	00000000 	nop
+  40e450:	8f9980cc 	lw	t9,-32564(gp)
+  40e454:	00000000 	nop
+  40e458:	0320f809 	jalr	t9
+  40e45c:	00000000 	nop
+  40e460:	8fbc0010 	lw	gp,16(sp)
+  40e464:	1040003c 	beqz	v0,40e558 <inet_network+0x168>
+  40e468:	02002021 	move	a0,s0
+  40e46c:	02750018 	mult	s3,s5
+  40e470:	26310001 	addiu	s1,s1,1
+  40e474:	00001012 	mflo	v0
+  40e478:	00501021 	addu	v0,v0,s0
+  40e47c:	2453ffd0 	addiu	s3,v0,-48
+  40e480:	82300000 	lb	s0,0(s1)
+  40e484:	00000000 	nop
+  40e488:	1600fff1 	bnez	s0,40e450 <inet_network+0x60>
+  40e48c:	02002021 	move	a0,s0
+  40e490:	82240000 	lb	a0,0(s1)
+  40e494:	2402002e 	li	v0,46
+  40e498:	10820028 	beq	a0,v0,40e53c <inet_network+0x14c>
+  40e49c:	27a30028 	addiu	v1,sp,40
+  40e4a0:	10800009 	beqz	a0,40e4c8 <inet_network+0xd8>
+  40e4a4:	00000000 	nop
+  40e4a8:	8f998210 	lw	t9,-32240(gp)
+  40e4ac:	00000000 	nop
+  40e4b0:	0320f809 	jalr	t9
+  40e4b4:	00000000 	nop
+  40e4b8:	8fbc0010 	lw	gp,16(sp)
+  40e4bc:	00401821 	move	v1,v0
+  40e4c0:	10600014 	beqz	v1,40e514 <inet_network+0x124>
+  40e4c4:	2402ffff 	li	v0,-1
+  40e4c8:	ae930000 	sw	s3,0(s4)
+  40e4cc:	26940004 	addiu	s4,s4,4
+  40e4d0:	02961023 	subu	v0,s4,s6
+  40e4d4:	00022083 	sra	a0,v0,0x2
+  40e4d8:	2c830005 	sltiu	v1,a0,5
+  40e4dc:	1060000d 	beqz	v1,40e514 <inet_network+0x124>
+  40e4e0:	2402ffff 	li	v0,-1
+  40e4e4:	00002821 	move	a1,zero
+  40e4e8:	10800009 	beqz	a0,40e510 <inet_network+0x120>
+  40e4ec:	00009821 	move	s3,zero
+  40e4f0:	00051080 	sll	v0,a1,0x2
+  40e4f4:	02c21021 	addu	v0,s6,v0
+  40e4f8:	90430003 	lbu	v1,3(v0)
+  40e4fc:	24a50001 	addiu	a1,a1,1
+  40e500:	00139a00 	sll	s3,s3,0x8
+  40e504:	00a4102b 	sltu	v0,a1,a0
+  40e508:	1440fff9 	bnez	v0,40e4f0 <inet_network+0x100>
+  40e50c:	02639825 	or	s3,s3,v1
+  40e510:	02601021 	move	v0,s3
+  40e514:	8fbf0048 	lw	ra,72(sp)
+  40e518:	8fb60040 	lw	s6,64(sp)
+  40e51c:	8fb5003c 	lw	s5,60(sp)
+  40e520:	8fb40038 	lw	s4,56(sp)
+  40e524:	8fb30034 	lw	s3,52(sp)
+  40e528:	8fb20030 	lw	s2,48(sp)
+  40e52c:	8fb1002c 	lw	s1,44(sp)
+  40e530:	8fb00028 	lw	s0,40(sp)
+  40e534:	03e00008 	jr	ra
+  40e538:	27bd0050 	addiu	sp,sp,80
+  40e53c:	0283182b 	sltu	v1,s4,v1
+  40e540:	1060fff4 	beqz	v1,40e514 <inet_network+0x124>
+  40e544:	2402ffff 	li	v0,-1
+  40e548:	ae930000 	sw	s3,0(s4)
+  40e54c:	26310001 	addiu	s1,s1,1
+  40e550:	1000ffb8 	b	40e434 <inet_network+0x44>
+  40e554:	26940004 	addiu	s4,s4,4
+  40e558:	24020010 	li	v0,16
+  40e55c:	16a2ffcc 	bne	s5,v0,40e490 <inet_network+0xa0>
+  40e560:	00139100 	sll	s2,s3,0x4
+  40e564:	8f9981e4 	lw	t9,-32284(gp)
+  40e568:	00000000 	nop
+  40e56c:	0320f809 	jalr	t9
+  40e570:	00000000 	nop
+  40e574:	8fbc0010 	lw	gp,16(sp)
+  40e578:	1040ffc5 	beqz	v0,40e490 <inet_network+0xa0>
+  40e57c:	02002021 	move	a0,s0
+  40e580:	8f99823c 	lw	t9,-32196(gp)
+  40e584:	00000000 	nop
+  40e588:	0320f809 	jalr	t9
+  40e58c:	00000000 	nop
+  40e590:	8fbc0010 	lw	gp,16(sp)
+  40e594:	2603000a 	addiu	v1,s0,10
+  40e598:	02432021 	addu	a0,s2,v1
+  40e59c:	00801821 	move	v1,a0
+  40e5a0:	1440000d 	bnez	v0,40e5d8 <inet_network+0x1e8>
+  40e5a4:	2493ff9f 	addiu	s3,a0,-97
+  40e5a8:	1000000b 	b	40e5d8 <inet_network+0x1e8>
+  40e5ac:	2473ffbf 	addiu	s3,v1,-65
+  40e5b0:	26310001 	addiu	s1,s1,1
+  40e5b4:	82230000 	lb	v1,0(s1)
+  40e5b8:	24020078 	li	v0,120
+  40e5bc:	10620005 	beq	v1,v0,40e5d4 <inet_network+0x1e4>
+  40e5c0:	24020058 	li	v0,88
+  40e5c4:	10620003 	beq	v1,v0,40e5d4 <inet_network+0x1e4>
+  40e5c8:	00000000 	nop
+  40e5cc:	1000ffac 	b	40e480 <inet_network+0x90>
+  40e5d0:	24150008 	li	s5,8
+  40e5d4:	24150010 	li	s5,16
+  40e5d8:	1000ffa9 	b	40e480 <inet_network+0x90>
+  40e5dc:	26310001 	addiu	s1,s1,1
+
+0040e5e0 <__libc_lseek>:
+  40e5e0:	3c1c0fc0 	lui	gp,0xfc0
+  40e5e4:	279c9c70 	addiu	gp,gp,-25488
+  40e5e8:	0399e021 	addu	gp,gp,t9
+  40e5ec:	27bdffd8 	addiu	sp,sp,-40
+  40e5f0:	afbc0010 	sw	gp,16(sp)
+  40e5f4:	afb1001c 	sw	s1,28(sp)
+  40e5f8:	afb00018 	sw	s0,24(sp)
+  40e5fc:	afbf0024 	sw	ra,36(sp)
+  40e600:	afbc0020 	sw	gp,32(sp)
+  40e604:	00808821 	move	s1,a0
+  40e608:	00a08021 	move	s0,a1
+  40e60c:	00c01821 	move	v1,a2
+  40e610:	02202021 	move	a0,s1
+  40e614:	02002821 	move	a1,s0
+  40e618:	00603021 	move	a2,v1
+  40e61c:	24020fb3 	li	v0,4019
+  40e620:	0000000c 	syscall
+  40e624:	00408021 	move	s0,v0
+  40e628:	00e01821 	move	v1,a3
+  40e62c:	10600009 	beqz	v1,40e654 <__libc_lseek+0x74>
+  40e630:	02001021 	move	v0,s0
+  40e634:	8f9980a0 	lw	t9,-32608(gp)
+  40e638:	00000000 	nop
+  40e63c:	0320f809 	jalr	t9
+  40e640:	00000000 	nop
+  40e644:	8fbc0010 	lw	gp,16(sp)
+  40e648:	00401821 	move	v1,v0
+  40e64c:	ac700000 	sw	s0,0(v1)
+  40e650:	2402ffff 	li	v0,-1
+  40e654:	8fbf0024 	lw	ra,36(sp)
+  40e658:	8fb1001c 	lw	s1,28(sp)
+  40e65c:	8fb00018 	lw	s0,24(sp)
+  40e660:	03e00008 	jr	ra
+  40e664:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040e670 <_newselect>:
+  40e670:	3c1c0fc0 	lui	gp,0xfc0
+  40e674:	279c9be0 	addiu	gp,gp,-25632
+  40e678:	0399e021 	addu	gp,gp,t9
+  40e67c:	27bdffc8 	addiu	sp,sp,-56
+  40e680:	afbc0010 	sw	gp,16(sp)
+  40e684:	8fa20048 	lw	v0,72(sp)
+  40e688:	afb20028 	sw	s2,40(sp)
+  40e68c:	afb10024 	sw	s1,36(sp)
+  40e690:	afb00020 	sw	s0,32(sp)
+  40e694:	afbf0030 	sw	ra,48(sp)
+  40e698:	afbc002c 	sw	gp,44(sp)
+  40e69c:	00809021 	move	s2,a0
+  40e6a0:	afa20018 	sw	v0,24(sp)
+  40e6a4:	00a08821 	move	s1,a1
+  40e6a8:	00c08021 	move	s0,a2
+  40e6ac:	00e01821 	move	v1,a3
+  40e6b0:	02402021 	move	a0,s2
+  40e6b4:	02202821 	move	a1,s1
+  40e6b8:	02003021 	move	a2,s0
+  40e6bc:	8fa20018 	lw	v0,24(sp)
+  40e6c0:	00603821 	move	a3,v1
+  40e6c4:	27bdffe8 	addiu	sp,sp,-24
+  40e6c8:	afa20010 	sw	v0,16(sp)
+  40e6cc:	2402102e 	li	v0,4142
+  40e6d0:	0000000c 	syscall
+  40e6d4:	00408021 	move	s0,v0
+  40e6d8:	00e01821 	move	v1,a3
+  40e6dc:	27bd0018 	addiu	sp,sp,24
+  40e6e0:	10600009 	beqz	v1,40e708 <_newselect+0x98>
+  40e6e4:	02001021 	move	v0,s0
+  40e6e8:	8f9980a0 	lw	t9,-32608(gp)
+  40e6ec:	00000000 	nop
+  40e6f0:	0320f809 	jalr	t9
+  40e6f4:	00000000 	nop
+  40e6f8:	8fbc0010 	lw	gp,16(sp)
+  40e6fc:	00401821 	move	v1,v0
+  40e700:	ac700000 	sw	s0,0(v1)
+  40e704:	2402ffff 	li	v0,-1
+  40e708:	8fbf0030 	lw	ra,48(sp)
+  40e70c:	8fb20028 	lw	s2,40(sp)
+  40e710:	8fb10024 	lw	s1,36(sp)
+  40e714:	8fb00020 	lw	s0,32(sp)
+  40e718:	03e00008 	jr	ra
+  40e71c:	27bd0038 	addiu	sp,sp,56
+
+0040e720 <__libc_nanosleep>:
+  40e720:	3c1c0fc0 	lui	gp,0xfc0
+  40e724:	279c9b30 	addiu	gp,gp,-25808
+  40e728:	0399e021 	addu	gp,gp,t9
+  40e72c:	27bdffd8 	addiu	sp,sp,-40
+  40e730:	afbc0010 	sw	gp,16(sp)
+  40e734:	afbf0020 	sw	ra,32(sp)
+  40e738:	afbc001c 	sw	gp,28(sp)
+  40e73c:	afb00018 	sw	s0,24(sp)
+  40e740:	00801821 	move	v1,a0
+  40e744:	00a03021 	move	a2,a1
+  40e748:	00602021 	move	a0,v1
+  40e74c:	00c02821 	move	a1,a2
+  40e750:	24021046 	li	v0,4166
+  40e754:	0000000c 	syscall
+  40e758:	00408021 	move	s0,v0
+  40e75c:	00e01821 	move	v1,a3
+  40e760:	10600009 	beqz	v1,40e788 <__libc_nanosleep+0x68>
+  40e764:	02001021 	move	v0,s0
+  40e768:	8f9980a0 	lw	t9,-32608(gp)
+  40e76c:	00000000 	nop
+  40e770:	0320f809 	jalr	t9
+  40e774:	00000000 	nop
+  40e778:	8fbc0010 	lw	gp,16(sp)
+  40e77c:	00401821 	move	v1,v0
+  40e780:	ac700000 	sw	s0,0(v1)
+  40e784:	2402ffff 	li	v0,-1
+  40e788:	8fbf0020 	lw	ra,32(sp)
+  40e78c:	8fb00018 	lw	s0,24(sp)
+  40e790:	03e00008 	jr	ra
+  40e794:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040e7a0 <islower>:
+  40e7a0:	3c1c0fc0 	lui	gp,0xfc0
+  40e7a4:	279c9ab0 	addiu	gp,gp,-25936
+  40e7a8:	0399e021 	addu	gp,gp,t9
+  40e7ac:	00801021 	move	v0,a0
+  40e7b0:	2442ff9f 	addiu	v0,v0,-97
+  40e7b4:	03e00008 	jr	ra
+  40e7b8:	2c42001a 	sltiu	v0,v0,26
+  40e7bc:	00000000 	nop
+
+0040e7c0 <rewind>:
+  40e7c0:	3c1c0fc0 	lui	gp,0xfc0
+  40e7c4:	279c9a90 	addiu	gp,gp,-25968
+  40e7c8:	0399e021 	addu	gp,gp,t9
+  40e7cc:	27bdffd8 	addiu	sp,sp,-40
+  40e7d0:	afbc0010 	sw	gp,16(sp)
+  40e7d4:	afb00018 	sw	s0,24(sp)
+  40e7d8:	afbf0020 	sw	ra,32(sp)
+  40e7dc:	00808021 	move	s0,a0
+  40e7e0:	afbc001c 	sw	gp,28(sp)
+  40e7e4:	8e020038 	lw	v0,56(s0)
+  40e7e8:	00000000 	nop
+  40e7ec:	1040001b 	beqz	v0,40e85c <rewind+0x9c>
+  40e7f0:	2604003c 	addiu	a0,s0,60
+  40e7f4:	96020000 	lhu	v0,0(s0)
+  40e7f8:	02002021 	move	a0,s0
+  40e7fc:	3042fff3 	andi	v0,v0,0xfff3
+  40e800:	00002821 	move	a1,zero
+  40e804:	00003021 	move	a2,zero
+  40e808:	a6020000 	sh	v0,0(s0)
+  40e80c:	8f9981a8 	lw	t9,-32344(gp)
+  40e810:	00000000 	nop
+  40e814:	0320f809 	jalr	t9
+  40e818:	00000000 	nop
+  40e81c:	8fbc0010 	lw	gp,16(sp)
+  40e820:	8e020038 	lw	v0,56(s0)
+  40e824:	00000000 	nop
+  40e828:	10400005 	beqz	v0,40e840 <rewind+0x80>
+  40e82c:	2604003c 	addiu	a0,s0,60
+  40e830:	8fbf0020 	lw	ra,32(sp)
+  40e834:	8fb00018 	lw	s0,24(sp)
+  40e838:	03e00008 	jr	ra
+  40e83c:	27bd0028 	addiu	sp,sp,40
+  40e840:	8f99811c 	lw	t9,-32484(gp)
+  40e844:	00000000 	nop
+  40e848:	0320f809 	jalr	t9
+  40e84c:	00000000 	nop
+  40e850:	8fbc0010 	lw	gp,16(sp)
+  40e854:	1000fff6 	b	40e830 <rewind+0x70>
+  40e858:	00000000 	nop
+  40e85c:	8f9980a8 	lw	t9,-32600(gp)
+  40e860:	00000000 	nop
+  40e864:	0320f809 	jalr	t9
+  40e868:	00000000 	nop
+  40e86c:	8fbc0010 	lw	gp,16(sp)
+  40e870:	1000ffe0 	b	40e7f4 <rewind+0x34>
+  40e874:	00000000 	nop
+	...
+
+0040e880 <strdup>:
+  40e880:	3c1c0fc0 	lui	gp,0xfc0
+  40e884:	279c99d0 	addiu	gp,gp,-26160
+  40e888:	0399e021 	addu	gp,gp,t9
+  40e88c:	27bdffd8 	addiu	sp,sp,-40
+  40e890:	afbc0010 	sw	gp,16(sp)
+  40e894:	afb1001c 	sw	s1,28(sp)
+  40e898:	afb00018 	sw	s0,24(sp)
+  40e89c:	afbf0024 	sw	ra,36(sp)
+  40e8a0:	afbc0020 	sw	gp,32(sp)
+  40e8a4:	00808021 	move	s0,a0
+  40e8a8:	8f998068 	lw	t9,-32664(gp)
+  40e8ac:	00000000 	nop
+  40e8b0:	0320f809 	jalr	t9
+  40e8b4:	00000000 	nop
+  40e8b8:	8fbc0010 	lw	gp,16(sp)
+  40e8bc:	24420001 	addiu	v0,v0,1
+  40e8c0:	00402021 	move	a0,v0
+  40e8c4:	8f998230 	lw	t9,-32208(gp)
+  40e8c8:	00000000 	nop
+  40e8cc:	0320f809 	jalr	t9
+  40e8d0:	00000000 	nop
+  40e8d4:	8fbc0010 	lw	gp,16(sp)
+  40e8d8:	00408821 	move	s1,v0
+  40e8dc:	02002821 	move	a1,s0
+  40e8e0:	12200006 	beqz	s1,40e8fc <strdup+0x7c>
+  40e8e4:	02202021 	move	a0,s1
+  40e8e8:	8f9982c4 	lw	t9,-32060(gp)
+  40e8ec:	00000000 	nop
+  40e8f0:	0320f809 	jalr	t9
+  40e8f4:	00000000 	nop
+  40e8f8:	8fbc0010 	lw	gp,16(sp)
+  40e8fc:	02201021 	move	v0,s1
+  40e900:	8fbf0024 	lw	ra,36(sp)
+  40e904:	8fb1001c 	lw	s1,28(sp)
+  40e908:	8fb00018 	lw	s0,24(sp)
+  40e90c:	03e00008 	jr	ra
+  40e910:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040e920 <strncat>:
+  40e920:	3c1c0fc0 	lui	gp,0xfc0
+  40e924:	279c9930 	addiu	gp,gp,-26320
+  40e928:	0399e021 	addu	gp,gp,t9
+  40e92c:	00803821 	move	a3,a0
+  40e930:	90e20000 	lbu	v0,0(a3)
+  40e934:	00000000 	nop
+  40e938:	1440fffd 	bnez	v0,40e930 <strncat+0x10>
+  40e93c:	24e70001 	addiu	a3,a3,1
+  40e940:	10000003 	b	40e950 <strncat+0x30>
+  40e944:	24e7ffff 	addiu	a3,a3,-1
+  40e948:	24c6ffff 	addiu	a2,a2,-1
+  40e94c:	24e70001 	addiu	a3,a3,1
+  40e950:	10c00006 	beqz	a2,40e96c <strncat+0x4c>
+  40e954:	00000000 	nop
+  40e958:	90a20000 	lbu	v0,0(a1)
+  40e95c:	24a50001 	addiu	a1,a1,1
+  40e960:	00021e00 	sll	v1,v0,0x18
+  40e964:	1460fff8 	bnez	v1,40e948 <strncat+0x28>
+  40e968:	a0e20000 	sb	v0,0(a3)
+  40e96c:	a0e00000 	sb	zero,0(a3)
+  40e970:	03e00008 	jr	ra
+  40e974:	00801021 	move	v0,a0
+	...
+
+0040e980 <inet_addr>:
+  40e980:	3c1c0fc0 	lui	gp,0xfc0
+  40e984:	279c98d0 	addiu	gp,gp,-26416
+  40e988:	0399e021 	addu	gp,gp,t9
+  40e98c:	27bdffd8 	addiu	sp,sp,-40
+  40e990:	afbc0010 	sw	gp,16(sp)
+  40e994:	27a50018 	addiu	a1,sp,24
+  40e998:	afbf0024 	sw	ra,36(sp)
+  40e99c:	afbc0020 	sw	gp,32(sp)
+  40e9a0:	8f998148 	lw	t9,-32440(gp)
+  40e9a4:	00000000 	nop
+  40e9a8:	0320f809 	jalr	t9
+  40e9ac:	00000000 	nop
+  40e9b0:	8fbc0010 	lw	gp,16(sp)
+  40e9b4:	00401821 	move	v1,v0
+  40e9b8:	10600002 	beqz	v1,40e9c4 <inet_addr+0x44>
+  40e9bc:	2402ffff 	li	v0,-1
+  40e9c0:	8fa20018 	lw	v0,24(sp)
+  40e9c4:	8fbf0024 	lw	ra,36(sp)
+  40e9c8:	00000000 	nop
+  40e9cc:	03e00008 	jr	ra
+  40e9d0:	27bd0028 	addiu	sp,sp,40
+	...
+
+0040e9e0 <__encode_header>:
+  40e9e0:	3c1c0fc0 	lui	gp,0xfc0
+  40e9e4:	279c9870 	addiu	gp,gp,-26512
+  40e9e8:	0399e021 	addu	gp,gp,t9
+  40e9ec:	28c6000c 	slti	a2,a2,12
+  40e9f0:	14c0003b 	bnez	a2,40eae0 <__encode_header+0x100>
+  40e9f4:	2402ffff 	li	v0,-1
+  40e9f8:	90820002 	lbu	v0,2(a0)
+  40e9fc:	00000000 	nop
+  40ea00:	a0a20000 	sb	v0,0(a1)
+  40ea04:	90820003 	lbu	v0,3(a0)
+  40ea08:	00000000 	nop
+  40ea0c:	a0a20001 	sb	v0,1(a1)
+  40ea10:	8c820008 	lw	v0,8(a0)
+  40ea14:	8c830004 	lw	v1,4(a0)
+  40ea18:	3042000f 	andi	v0,v0,0xf
+  40ea1c:	10600002 	beqz	v1,40ea28 <__encode_header+0x48>
+  40ea20:	000230c0 	sll	a2,v0,0x3
+  40ea24:	34c60080 	ori	a2,a2,0x80
+  40ea28:	8c82000c 	lw	v0,12(a0)
+  40ea2c:	00000000 	nop
+  40ea30:	10400002 	beqz	v0,40ea3c <__encode_header+0x5c>
+  40ea34:	00c01821 	move	v1,a2
+  40ea38:	34630004 	ori	v1,v1,0x4
+  40ea3c:	8c820010 	lw	v0,16(a0)
+  40ea40:	00000000 	nop
+  40ea44:	10400002 	beqz	v0,40ea50 <__encode_header+0x70>
+  40ea48:	00000000 	nop
+  40ea4c:	34630002 	ori	v1,v1,0x2
+  40ea50:	8c820014 	lw	v0,20(a0)
+  40ea54:	00000000 	nop
+  40ea58:	0002102b 	sltu	v0,zero,v0
+  40ea5c:	00621025 	or	v0,v1,v0
+  40ea60:	a0a20002 	sb	v0,2(a1)
+  40ea64:	8c82001c 	lw	v0,28(a0)
+  40ea68:	8c830018 	lw	v1,24(a0)
+  40ea6c:	00000000 	nop
+  40ea70:	10600002 	beqz	v1,40ea7c <__encode_header+0x9c>
+  40ea74:	3042000f 	andi	v0,v0,0xf
+  40ea78:	34420080 	ori	v0,v0,0x80
+  40ea7c:	a0a20003 	sb	v0,3(a1)
+  40ea80:	90830022 	lbu	v1,34(a0)
+  40ea84:	2402000c 	li	v0,12
+  40ea88:	a0a30004 	sb	v1,4(a1)
+  40ea8c:	90830023 	lbu	v1,35(a0)
+  40ea90:	00000000 	nop
+  40ea94:	a0a30005 	sb	v1,5(a1)
+  40ea98:	90830026 	lbu	v1,38(a0)
+  40ea9c:	00000000 	nop
+  40eaa0:	a0a30006 	sb	v1,6(a1)
+  40eaa4:	90830027 	lbu	v1,39(a0)
+  40eaa8:	00000000 	nop
+  40eaac:	a0a30007 	sb	v1,7(a1)
+  40eab0:	9083002a 	lbu	v1,42(a0)
+  40eab4:	00000000 	nop
+  40eab8:	a0a30008 	sb	v1,8(a1)
+  40eabc:	9083002b 	lbu	v1,43(a0)
+  40eac0:	00000000 	nop
+  40eac4:	a0a30009 	sb	v1,9(a1)
+  40eac8:	9083002e 	lbu	v1,46(a0)
+  40eacc:	00000000 	nop
+  40ead0:	a0a3000a 	sb	v1,10(a1)
+  40ead4:	9083002f 	lbu	v1,47(a0)
+  40ead8:	00000000 	nop
+  40eadc:	a0a3000b 	sb	v1,11(a1)
+  40eae0:	03e00008 	jr	ra
+  40eae4:	00000000 	nop
+	...
+
+0040eaf0 <__decode_header>:
+  40eaf0:	3c1c0fc0 	lui	gp,0xfc0
+  40eaf4:	279c9760 	addiu	gp,gp,-26784
+  40eaf8:	0399e021 	addu	gp,gp,t9
+  40eafc:	90820000 	lbu	v0,0(a0)
+  40eb00:	90830001 	lbu	v1,1(a0)
+  40eb04:	00021200 	sll	v0,v0,0x8
+  40eb08:	00431025 	or	v0,v0,v1
+  40eb0c:	aca20000 	sw	v0,0(a1)
+  40eb10:	90830002 	lbu	v1,2(a0)
+  40eb14:	2402000c 	li	v0,12
+  40eb18:	000319c2 	srl	v1,v1,0x7
+  40eb1c:	aca30004 	sw	v1,4(a1)
+  40eb20:	90830002 	lbu	v1,2(a0)
+  40eb24:	00000000 	nop
+  40eb28:	000318c2 	srl	v1,v1,0x3
+  40eb2c:	3063000f 	andi	v1,v1,0xf
+  40eb30:	aca30008 	sw	v1,8(a1)
+  40eb34:	90830002 	lbu	v1,2(a0)
+  40eb38:	00000000 	nop
+  40eb3c:	00031882 	srl	v1,v1,0x2
+  40eb40:	30630001 	andi	v1,v1,0x1
+  40eb44:	aca3000c 	sw	v1,12(a1)
+  40eb48:	90830002 	lbu	v1,2(a0)
+  40eb4c:	00000000 	nop
+  40eb50:	00031842 	srl	v1,v1,0x1
+  40eb54:	30630001 	andi	v1,v1,0x1
+  40eb58:	aca30010 	sw	v1,16(a1)
+  40eb5c:	90830002 	lbu	v1,2(a0)
+  40eb60:	00000000 	nop
+  40eb64:	30630001 	andi	v1,v1,0x1
+  40eb68:	aca30014 	sw	v1,20(a1)
+  40eb6c:	90830003 	lbu	v1,3(a0)
+  40eb70:	00000000 	nop
+  40eb74:	000319c2 	srl	v1,v1,0x7
+  40eb78:	aca30018 	sw	v1,24(a1)
+  40eb7c:	90830003 	lbu	v1,3(a0)
+  40eb80:	00000000 	nop
+  40eb84:	3063000f 	andi	v1,v1,0xf
+  40eb88:	aca3001c 	sw	v1,28(a1)
+  40eb8c:	90830004 	lbu	v1,4(a0)
+  40eb90:	90860005 	lbu	a2,5(a0)
+  40eb94:	00031a00 	sll	v1,v1,0x8
+  40eb98:	00661825 	or	v1,v1,a2
+  40eb9c:	aca30020 	sw	v1,32(a1)
+  40eba0:	90830006 	lbu	v1,6(a0)
+  40eba4:	90860007 	lbu	a2,7(a0)
+  40eba8:	00031a00 	sll	v1,v1,0x8
+  40ebac:	00661825 	or	v1,v1,a2
+  40ebb0:	aca30024 	sw	v1,36(a1)
+  40ebb4:	90830008 	lbu	v1,8(a0)
+  40ebb8:	90860009 	lbu	a2,9(a0)
+  40ebbc:	00031a00 	sll	v1,v1,0x8
+  40ebc0:	00661825 	or	v1,v1,a2
+  40ebc4:	aca30028 	sw	v1,40(a1)
+  40ebc8:	9083000a 	lbu	v1,10(a0)
+  40ebcc:	9084000b 	lbu	a0,11(a0)
+  40ebd0:	00031a00 	sll	v1,v1,0x8
+  40ebd4:	00641825 	or	v1,v1,a0
+  40ebd8:	03e00008 	jr	ra
+  40ebdc:	aca3002c 	sw	v1,44(a1)
+
+0040ebe0 <__encode_question>:
+  40ebe0:	3c1c0fc0 	lui	gp,0xfc0
+  40ebe4:	279c9670 	addiu	gp,gp,-27024
+  40ebe8:	0399e021 	addu	gp,gp,t9
+  40ebec:	27bdffd0 	addiu	sp,sp,-48
+  40ebf0:	afbc0010 	sw	gp,16(sp)
+  40ebf4:	afb20020 	sw	s2,32(sp)
+  40ebf8:	afb1001c 	sw	s1,28(sp)
+  40ebfc:	afb00018 	sw	s0,24(sp)
+  40ec00:	afbf0028 	sw	ra,40(sp)
+  40ec04:	afbc0024 	sw	gp,36(sp)
+  40ec08:	00809021 	move	s2,a0
+  40ec0c:	8e440000 	lw	a0,0(s2)
+  40ec10:	00c08021 	move	s0,a2
+  40ec14:	00a08821 	move	s1,a1
+  40ec18:	8f998054 	lw	t9,-32684(gp)
+  40ec1c:	00000000 	nop
+  40ec20:	0320f809 	jalr	t9
+  40ec24:	00000000 	nop
+  40ec28:	8fbc0010 	lw	gp,16(sp)
+  40ec2c:	00401821 	move	v1,v0
+  40ec30:	02038023 	subu	s0,s0,v1
+  40ec34:	04600011 	bltz	v1,40ec7c <__encode_question+0x9c>
+  40ec38:	2a100004 	slti	s0,s0,4
+  40ec3c:	24640004 	addiu	a0,v1,4
+  40ec40:	02238821 	addu	s1,s1,v1
+  40ec44:	1600000d 	bnez	s0,40ec7c <__encode_question+0x9c>
+  40ec48:	2402ffff 	li	v0,-1
+  40ec4c:	92430006 	lbu	v1,6(s2)
+  40ec50:	00801021 	move	v0,a0
+  40ec54:	a2230000 	sb	v1,0(s1)
+  40ec58:	92430007 	lbu	v1,7(s2)
+  40ec5c:	00000000 	nop
+  40ec60:	a2230001 	sb	v1,1(s1)
+  40ec64:	9243000a 	lbu	v1,10(s2)
+  40ec68:	00000000 	nop
+  40ec6c:	a2230002 	sb	v1,2(s1)
+  40ec70:	9243000b 	lbu	v1,11(s2)
+  40ec74:	00000000 	nop
+  40ec78:	a2230003 	sb	v1,3(s1)
+  40ec7c:	8fbf0028 	lw	ra,40(sp)
+  40ec80:	8fb20020 	lw	s2,32(sp)
+  40ec84:	8fb1001c 	lw	s1,28(sp)
+  40ec88:	8fb00018 	lw	s0,24(sp)
+  40ec8c:	03e00008 	jr	ra
+  40ec90:	27bd0030 	addiu	sp,sp,48
+	...
+
+0040eca0 <__length_question>:
+  40eca0:	3c1c0fc0 	lui	gp,0xfc0
+  40eca4:	279c95b0 	addiu	gp,gp,-27216
+  40eca8:	0399e021 	addu	gp,gp,t9
+  40ecac:	27bdffe0 	addiu	sp,sp,-32
+  40ecb0:	afbc0010 	sw	gp,16(sp)
+  40ecb4:	afbf001c 	sw	ra,28(sp)
+  40ecb8:	afbc0018 	sw	gp,24(sp)
+  40ecbc:	8f998164 	lw	t9,-32412(gp)
+  40ecc0:	00000000 	nop
+  40ecc4:	0320f809 	jalr	t9
+  40ecc8:	00000000 	nop
+  40eccc:	8fbc0010 	lw	gp,16(sp)
+  40ecd0:	00401821 	move	v1,v0
+  40ecd4:	04600002 	bltz	v1,40ece0 <__length_question+0x40>
+  40ecd8:	00000000 	nop
+  40ecdc:	24620004 	addiu	v0,v1,4
+  40ece0:	8fbf001c 	lw	ra,28(sp)
+  40ece4:	00000000 	nop
+  40ece8:	03e00008 	jr	ra
+  40ecec:	27bd0020 	addiu	sp,sp,32
+
+0040ecf0 <__decode_answer>:
+  40ecf0:	3c1c0fc0 	lui	gp,0xfc0
+  40ecf4:	279c9560 	addiu	gp,gp,-27296
+  40ecf8:	0399e021 	addu	gp,gp,t9
+  40ecfc:	27bdfed0 	addiu	sp,sp,-304
+  40ed00:	afbc0010 	sw	gp,16(sp)
+  40ed04:	afb20120 	sw	s2,288(sp)
+  40ed08:	24070100 	li	a3,256
+  40ed0c:	00c09021 	move	s2,a2
+  40ed10:	27a60018 	addiu	a2,sp,24
+  40ed14:	afb30124 	sw	s3,292(sp)
+  40ed18:	afb1011c 	sw	s1,284(sp)
+  40ed1c:	afb00118 	sw	s0,280(sp)
+  40ed20:	00808821 	move	s1,a0
+  40ed24:	00a08021 	move	s0,a1
+  40ed28:	afbf012c 	sw	ra,300(sp)
+  40ed2c:	afbc0128 	sw	gp,296(sp)
+  40ed30:	8f9981a4 	lw	t9,-32348(gp)
+  40ed34:	00000000 	nop
+  40ed38:	0320f809 	jalr	t9
+  40ed3c:	00000000 	nop
+  40ed40:	8fbc0010 	lw	gp,16(sp)
+  40ed44:	00409821 	move	s3,v0
+  40ed48:	02138021 	addu	s0,s0,s3
+  40ed4c:	27a40018 	addiu	a0,sp,24
+  40ed50:	0660002a 	bltz	s3,40edfc <__decode_answer+0x10c>
+  40ed54:	02308821 	addu	s1,s1,s0
+  40ed58:	8f99814c 	lw	t9,-32436(gp)
+  40ed5c:	00000000 	nop
+  40ed60:	0320f809 	jalr	t9
+  40ed64:	00000000 	nop
+  40ed68:	8fbc0010 	lw	gp,16(sp)
+  40ed6c:	ae420000 	sw	v0,0(s2)
+  40ed70:	92220000 	lbu	v0,0(s1)
+  40ed74:	92230001 	lbu	v1,1(s1)
+  40ed78:	00021200 	sll	v0,v0,0x8
+  40ed7c:	00431025 	or	v0,v0,v1
+  40ed80:	ae420004 	sw	v0,4(s2)
+  40ed84:	26310002 	addiu	s1,s1,2
+  40ed88:	92220000 	lbu	v0,0(s1)
+  40ed8c:	92230001 	lbu	v1,1(s1)
+  40ed90:	00021200 	sll	v0,v0,0x8
+  40ed94:	00431025 	or	v0,v0,v1
+  40ed98:	ae420008 	sw	v0,8(s2)
+  40ed9c:	26310002 	addiu	s1,s1,2
+  40eda0:	92220000 	lbu	v0,0(s1)
+  40eda4:	92230001 	lbu	v1,1(s1)
+  40eda8:	92240002 	lbu	a0,2(s1)
+  40edac:	00031c00 	sll	v1,v1,0x10
+  40edb0:	00021600 	sll	v0,v0,0x18
+  40edb4:	00431025 	or	v0,v0,v1
+  40edb8:	00042200 	sll	a0,a0,0x8
+  40edbc:	92230003 	lbu	v1,3(s1)
+  40edc0:	00441025 	or	v0,v0,a0
+  40edc4:	00431025 	or	v0,v0,v1
+  40edc8:	26310004 	addiu	s1,s1,4
+  40edcc:	ae42000c 	sw	v0,12(s2)
+  40edd0:	92230000 	lbu	v1,0(s1)
+  40edd4:	92220001 	lbu	v0,1(s1)
+  40edd8:	00031a00 	sll	v1,v1,0x8
+  40eddc:	00621825 	or	v1,v1,v0
+  40ede0:	2605000a 	addiu	a1,s0,10
+  40ede4:	02631021 	addu	v0,s3,v1
+  40ede8:	26310002 	addiu	s1,s1,2
+  40edec:	ae450018 	sw	a1,24(s2)
+  40edf0:	ae510014 	sw	s1,20(s2)
+  40edf4:	2442000a 	addiu	v0,v0,10
+  40edf8:	ae430010 	sw	v1,16(s2)
+  40edfc:	8fbf012c 	lw	ra,300(sp)
+  40ee00:	8fb30124 	lw	s3,292(sp)
+  40ee04:	8fb20120 	lw	s2,288(sp)
+  40ee08:	8fb1011c 	lw	s1,284(sp)
+  40ee0c:	8fb00118 	lw	s0,280(sp)
+  40ee10:	03e00008 	jr	ra
+  40ee14:	27bd0130 	addiu	sp,sp,304
+	...
+
+0040ee20 <__open_etc_hosts>:
+  40ee20:	3c1c0fc0 	lui	gp,0xfc0
+  40ee24:	279c9430 	addiu	gp,gp,-27600
+  40ee28:	0399e021 	addu	gp,gp,t9
+  40ee2c:	27bdffd8 	addiu	sp,sp,-40
+  40ee30:	afbc0010 	sw	gp,16(sp)
+  40ee34:	afb00018 	sw	s0,24(sp)
+  40ee38:	8f908018 	lw	s0,-32744(gp)
+  40ee3c:	00000000 	nop
+  40ee40:	26101320 	addiu	s0,s0,4896
+  40ee44:	afb1001c 	sw	s1,28(sp)
+  40ee48:	02002821 	move	a1,s0
+  40ee4c:	00808821 	move	s1,a0
+  40ee50:	8f848018 	lw	a0,-32744(gp)
+  40ee54:	00000000 	nop
+  40ee58:	24841324 	addiu	a0,a0,4900
+  40ee5c:	afbf0024 	sw	ra,36(sp)
+  40ee60:	afbc0020 	sw	gp,32(sp)
+  40ee64:	8f998140 	lw	t9,-32448(gp)
+  40ee68:	00000000 	nop
+  40ee6c:	0320f809 	jalr	t9
+  40ee70:	00000000 	nop
+  40ee74:	8fbc0010 	lw	gp,16(sp)
+  40ee78:	ae220000 	sw	v0,0(s1)
+  40ee7c:	8f848018 	lw	a0,-32744(gp)
+  40ee80:	00000000 	nop
+  40ee84:	24841330 	addiu	a0,a0,4912
+  40ee88:	10400006 	beqz	v0,40eea4 <__open_etc_hosts+0x84>
+  40ee8c:	02002821 	move	a1,s0
+  40ee90:	8fbf0024 	lw	ra,36(sp)
+  40ee94:	8fb1001c 	lw	s1,28(sp)
+  40ee98:	8fb00018 	lw	s0,24(sp)
+  40ee9c:	03e00008 	jr	ra
+  40eea0:	27bd0028 	addiu	sp,sp,40
+  40eea4:	8f998140 	lw	t9,-32448(gp)
+  40eea8:	00000000 	nop
+  40eeac:	0320f809 	jalr	t9
+  40eeb0:	00000000 	nop
+  40eeb4:	8fbc0010 	lw	gp,16(sp)
+  40eeb8:	1000fff5 	b	40ee90 <__open_etc_hosts+0x70>
+  40eebc:	ae220000 	sw	v0,0(s1)
+
+0040eec0 <__read_etc_hosts_r>:
+  40eec0:	3c1c0fc0 	lui	gp,0xfc0
+  40eec4:	279c9390 	addiu	gp,gp,-27760
+  40eec8:	0399e021 	addu	gp,gp,t9
+  40eecc:	27bdffb0 	addiu	sp,sp,-80
+  40eed0:	afbc0010 	sw	gp,16(sp)
+  40eed4:	afb20028 	sw	s2,40(sp)
+  40eed8:	8fb20068 	lw	s2,104(sp)
+  40eedc:	24020001 	li	v0,1
+  40eee0:	2e430020 	sltiu	v1,s2,32
+  40eee4:	afbe0044 	sw	s8,68(sp)
+  40eee8:	afb7003c 	sw	s7,60(sp)
+  40eeec:	afb60038 	sw	s6,56(sp)
+  40eef0:	afb10024 	sw	s1,36(sp)
+  40eef4:	afb00020 	sw	s0,32(sp)
+  40eef8:	afa2001c 	sw	v0,28(sp)
+  40eefc:	afbf0048 	sw	ra,72(sp)
+  40ef00:	afbc0040 	sw	gp,64(sp)
+  40ef04:	afb50034 	sw	s5,52(sp)
+  40ef08:	afb40030 	sw	s4,48(sp)
+  40ef0c:	afb3002c 	sw	s3,44(sp)
+  40ef10:	afa40050 	sw	a0,80(sp)
+  40ef14:	afa50054 	sw	a1,84(sp)
+  40ef18:	afa60058 	sw	a2,88(sp)
+  40ef1c:	00e0f021 	move	s8,a3
+  40ef20:	8fb60060 	lw	s6,96(sp)
+  40ef24:	8fb10064 	lw	s1,100(sp)
+  40ef28:	8fb00070 	lw	s0,112(sp)
+  40ef2c:	afa00018 	sw	zero,24(sp)
+  40ef30:	0000b821 	move	s7,zero
+  40ef34:	14600088 	bnez	v1,40f158 <__read_etc_hosts_r+0x298>
+  40ef38:	24020022 	li	v0,34
+  40ef3c:	8fa3001c 	lw	v1,28(sp)
+  40ef40:	0220a021 	move	s4,s1
+  40ef44:	2652ffe0 	addiu	s2,s2,-32
+  40ef48:	13c3001b 	beq	s8,v1,40efb8 <__read_etc_hosts_r+0xf8>
+  40ef4c:	26310020 	addiu	s1,s1,32
+  40ef50:	2402ffff 	li	v0,-1
+  40ef54:	2e430004 	sltiu	v1,s2,4
+  40ef58:	ae020000 	sw	v0,0(s0)
+  40ef5c:	1460007e 	bnez	v1,40f158 <__read_etc_hosts_r+0x298>
+  40ef60:	24020022 	li	v0,34
+  40ef64:	2652fffc 	addiu	s2,s2,-4
+  40ef68:	2e430008 	sltiu	v1,s2,8
+  40ef6c:	afb10018 	sw	s1,24(sp)
+  40ef70:	14600079 	bnez	v1,40f158 <__read_etc_hosts_r+0x298>
+  40ef74:	26310004 	addiu	s1,s1,4
+  40ef78:	2652fff8 	addiu	s2,s2,-8
+  40ef7c:	2e430050 	sltiu	v1,s2,80
+  40ef80:	0220b821 	move	s7,s1
+  40ef84:	14600074 	bnez	v1,40f158 <__read_etc_hosts_r+0x298>
+  40ef88:	26310008 	addiu	s1,s1,8
+  40ef8c:	27a20050 	addiu	v0,sp,80
+  40ef90:	00402021 	move	a0,v0
+  40ef94:	8f998234 	lw	t9,-32204(gp)
+  40ef98:	00000000 	nop
+  40ef9c:	0320f809 	jalr	t9
+  40efa0:	00000000 	nop
+  40efa4:	8fbc0010 	lw	gp,16(sp)
+  40efa8:	8fa20050 	lw	v0,80(sp)
+  40efac:	00000000 	nop
+  40efb0:	104000a3 	beqz	v0,40f240 <__read_etc_hosts_r+0x380>
+  40efb4:	00000000 	nop
+  40efb8:	24020001 	li	v0,1
+  40efbc:	ae020000 	sw	v0,0(s0)
+  40efc0:	8fa60050 	lw	a2,80(sp)
+  40efc4:	02202021 	move	a0,s1
+  40efc8:	02402821 	move	a1,s2
+  40efcc:	8f998268 	lw	t9,-32152(gp)
+  40efd0:	00000000 	nop
+  40efd4:	0320f809 	jalr	t9
+  40efd8:	00000000 	nop
+  40efdc:	8fbc0010 	lw	gp,16(sp)
+  40efe0:	10400053 	beqz	v0,40f130 <__read_etc_hosts_r+0x270>
+  40efe4:	02202021 	move	a0,s1
+  40efe8:	24050023 	li	a1,35
+  40efec:	8f99805c 	lw	t9,-32676(gp)
+  40eff0:	00000000 	nop
+  40eff4:	0320f809 	jalr	t9
+  40eff8:	00000000 	nop
+  40effc:	8fbc0010 	lw	gp,16(sp)
+  40f000:	00408021 	move	s0,v0
+  40f004:	12000002 	beqz	s0,40f010 <__read_etc_hosts_r+0x150>
+  40f008:	00000000 	nop
+  40f00c:	a2000000 	sb	zero,0(s0)
+  40f010:	82220000 	lb	v0,0(s1)
+  40f014:	0000a821 	move	s5,zero
+  40f018:	10400028 	beqz	v0,40f0bc <__read_etc_hosts_r+0x1fc>
+  40f01c:	02208021 	move	s0,s1
+  40f020:	02809821 	move	s3,s4
+  40f024:	82020000 	lb	v0,0(s0)
+  40f028:	00000000 	nop
+  40f02c:	10400023 	beqz	v0,40f0bc <__read_etc_hosts_r+0x1fc>
+  40f030:	00402021 	move	a0,v0
+  40f034:	8f998210 	lw	t9,-32240(gp)
+  40f038:	00000000 	nop
+  40f03c:	0320f809 	jalr	t9
+  40f040:	00000000 	nop
+  40f044:	8fbc0010 	lw	gp,16(sp)
+  40f048:	10400004 	beqz	v0,40f05c <__read_etc_hosts_r+0x19c>
+  40f04c:	00000000 	nop
+  40f050:	a2000000 	sb	zero,0(s0)
+  40f054:	1000fff3 	b	40f024 <__read_etc_hosts_r+0x164>
+  40f058:	26100001 	addiu	s0,s0,1
+  40f05c:	82020000 	lb	v0,0(s0)
+  40f060:	00000000 	nop
+  40f064:	10400015 	beqz	v0,40f0bc <__read_etc_hosts_r+0x1fc>
+  40f068:	2aa20007 	slti	v0,s5,7
+  40f06c:	10400004 	beqz	v0,40f080 <__read_etc_hosts_r+0x1c0>
+  40f070:	00000000 	nop
+  40f074:	ae700000 	sw	s0,0(s3)
+  40f078:	26b50001 	addiu	s5,s5,1
+  40f07c:	26730004 	addiu	s3,s3,4
+  40f080:	82020000 	lb	v0,0(s0)
+  40f084:	00000000 	nop
+  40f088:	1040000c 	beqz	v0,40f0bc <__read_etc_hosts_r+0x1fc>
+  40f08c:	00402021 	move	a0,v0
+  40f090:	8f998210 	lw	t9,-32240(gp)
+  40f094:	00000000 	nop
+  40f098:	0320f809 	jalr	t9
+  40f09c:	00000000 	nop
+  40f0a0:	8fbc0010 	lw	gp,16(sp)
+  40f0a4:	10400064 	beqz	v0,40f238 <__read_etc_hosts_r+0x378>
+  40f0a8:	00000000 	nop
+  40f0ac:	82020000 	lb	v0,0(s0)
+  40f0b0:	00000000 	nop
+  40f0b4:	1440ffdd 	bnez	v0,40f02c <__read_etc_hosts_r+0x16c>
+  40f0b8:	00000000 	nop
+  40f0bc:	00151080 	sll	v0,s5,0x2
+  40f0c0:	00541021 	addu	v0,v0,s4
+  40f0c4:	2aa30002 	slti	v1,s5,2
+  40f0c8:	1460ffbd 	bnez	v1,40efc0 <__read_etc_hosts_r+0x100>
+  40f0cc:	ac400000 	sw	zero,0(v0)
+  40f0d0:	24020001 	li	v0,1
+  40f0d4:	13c2001f 	beq	s8,v0,40f154 <__read_etc_hosts_r+0x294>
+  40f0d8:	24020002 	li	v0,2
+  40f0dc:	13c2004b 	beq	s8,v0,40f20c <__read_etc_hosts_r+0x34c>
+  40f0e0:	24130001 	li	s3,1
+  40f0e4:	26900004 	addiu	s0,s4,4
+  40f0e8:	0275102a 	slt	v0,s3,s5
+  40f0ec:	8fa40054 	lw	a0,84(sp)
+  40f0f0:	1040ffb3 	beqz	v0,40efc0 <__read_etc_hosts_r+0x100>
+  40f0f4:	26730001 	addiu	s3,s3,1
+  40f0f8:	8e050000 	lw	a1,0(s0)
+  40f0fc:	8f998184 	lw	t9,-32380(gp)
+  40f100:	00000000 	nop
+  40f104:	0320f809 	jalr	t9
+  40f108:	00000000 	nop
+  40f10c:	8fbc0010 	lw	gp,16(sp)
+  40f110:	1440fff5 	bnez	v0,40f0e8 <__read_etc_hosts_r+0x228>
+  40f114:	26100004 	addiu	s0,s0,4
+  40f118:	8fa30058 	lw	v1,88(sp)
+  40f11c:	24020002 	li	v0,2
+  40f120:	10620019 	beq	v1,v0,40f188 <__read_etc_hosts_r+0x2c8>
+  40f124:	24040002 	li	a0,2
+  40f128:	24020002 	li	v0,2
+  40f12c:	afa2001c 	sw	v0,28(sp)
+  40f130:	24020001 	li	v0,1
+  40f134:	13c20007 	beq	s8,v0,40f154 <__read_etc_hosts_r+0x294>
+  40f138:	00000000 	nop
+  40f13c:	8fa40050 	lw	a0,80(sp)
+  40f140:	8f998134 	lw	t9,-32460(gp)
+  40f144:	00000000 	nop
+  40f148:	0320f809 	jalr	t9
+  40f14c:	00000000 	nop
+  40f150:	8fbc0010 	lw	gp,16(sp)
+  40f154:	8fa2001c 	lw	v0,28(sp)
+  40f158:	8fbf0048 	lw	ra,72(sp)
+  40f15c:	8fbe0044 	lw	s8,68(sp)
+  40f160:	8fb7003c 	lw	s7,60(sp)
+  40f164:	8fb60038 	lw	s6,56(sp)
+  40f168:	8fb50034 	lw	s5,52(sp)
+  40f16c:	8fb40030 	lw	s4,48(sp)
+  40f170:	8fb3002c 	lw	s3,44(sp)
+  40f174:	8fb20028 	lw	s2,40(sp)
+  40f178:	8fb10024 	lw	s1,36(sp)
+  40f17c:	8fb00020 	lw	s0,32(sp)
+  40f180:	03e00008 	jr	ra
+  40f184:	27bd0050 	addiu	sp,sp,80
+  40f188:	8e850000 	lw	a1,0(s4)
+  40f18c:	8fa60018 	lw	a2,24(sp)
+  40f190:	8f998288 	lw	t9,-32120(gp)
+  40f194:	00000000 	nop
+  40f198:	0320f809 	jalr	t9
+  40f19c:	00000000 	nop
+  40f1a0:	8fbc0010 	lw	gp,16(sp)
+  40f1a4:	1840ffe1 	blez	v0,40f12c <__read_etc_hosts_r+0x26c>
+  40f1a8:	24020002 	li	v0,2
+  40f1ac:	8fa20018 	lw	v0,24(sp)
+  40f1b0:	aee00004 	sw	zero,4(s7)
+  40f1b4:	aee20000 	sw	v0,0(s7)
+  40f1b8:	8e820004 	lw	v0,4(s4)
+  40f1bc:	26830008 	addiu	v1,s4,8
+  40f1c0:	aec20000 	sw	v0,0(s6)
+  40f1c4:	8fa20058 	lw	v0,88(sp)
+  40f1c8:	aed70010 	sw	s7,16(s6)
+  40f1cc:	aec20008 	sw	v0,8(s6)
+  40f1d0:	24020004 	li	v0,4
+  40f1d4:	aec2000c 	sw	v0,12(s6)
+  40f1d8:	aec30004 	sw	v1,4(s6)
+  40f1dc:	8fa3006c 	lw	v1,108(sp)
+  40f1e0:	24020001 	li	v0,1
+  40f1e4:	13c20007 	beq	s8,v0,40f204 <__read_etc_hosts_r+0x344>
+  40f1e8:	ac760000 	sw	s6,0(v1)
+  40f1ec:	8fa40050 	lw	a0,80(sp)
+  40f1f0:	8f998134 	lw	t9,-32460(gp)
+  40f1f4:	00000000 	nop
+  40f1f8:	0320f809 	jalr	t9
+  40f1fc:	00000000 	nop
+  40f200:	8fbc0010 	lw	gp,16(sp)
+  40f204:	1000ffd4 	b	40f158 <__read_etc_hosts_r+0x298>
+  40f208:	00001021 	move	v0,zero
+  40f20c:	8e850000 	lw	a1,0(s4)
+  40f210:	8fa40054 	lw	a0,84(sp)
+  40f214:	8f998120 	lw	t9,-32480(gp)
+  40f218:	00000000 	nop
+  40f21c:	0320f809 	jalr	t9
+  40f220:	00000000 	nop
+  40f224:	8fbc0010 	lw	gp,16(sp)
+  40f228:	1040ffbb 	beqz	v0,40f118 <__read_etc_hosts_r+0x258>
+  40f22c:	00000000 	nop
+  40f230:	1000ff63 	b	40efc0 <__read_etc_hosts_r+0x100>
+  40f234:	00000000 	nop
+  40f238:	1000ff91 	b	40f080 <__read_etc_hosts_r+0x1c0>
+  40f23c:	26100001 	addiu	s0,s0,1
+  40f240:	8f9980a0 	lw	t9,-32608(gp)
+  40f244:	00000000 	nop
+  40f248:	0320f809 	jalr	t9
+  40f24c:	00000000 	nop
+  40f250:	8fbc0010 	lw	gp,16(sp)
+  40f254:	8c420000 	lw	v0,0(v0)
+  40f258:	1000ffbf 	b	40f158 <__read_etc_hosts_r+0x298>
+  40f25c:	00000000 	nop
+  40f260:	3c1c0fc0 	lui	gp,0xfc0
+  40f264:	279c8ff0 	addiu	gp,gp,-28688
+  40f268:	0399e021 	addu	gp,gp,t9
+  40f26c:	27bdffb8 	addiu	sp,sp,-72
+  40f270:	afbc0010 	sw	gp,16(sp)
+  40f274:	afb3003c 	sw	s3,60(sp)
+  40f278:	afb20038 	sw	s2,56(sp)
+  40f27c:	afb10034 	sw	s1,52(sp)
+  40f280:	00a09821 	move	s3,a1
+  40f284:	00808821 	move	s1,a0
+  40f288:	00c09021 	move	s2,a2
+  40f28c:	27a4001a 	addiu	a0,sp,26
+  40f290:	00002821 	move	a1,zero
+  40f294:	2406000f 	li	a2,15
+  40f298:	8f828018 	lw	v0,-32744(gp)
+  40f29c:	00000000 	nop
+  40f2a0:	24421350 	addiu	v0,v0,4944
+  40f2a4:	80420000 	lb	v0,0(v0)
+  40f2a8:	8f838018 	lw	v1,-32744(gp)
+  40f2ac:	00000000 	nop
+  40f2b0:	24631350 	addiu	v1,v1,4944
+  40f2b4:	80630001 	lb	v1,1(v1)
+  40f2b8:	a3a20018 	sb	v0,24(sp)
+  40f2bc:	a3a30019 	sb	v1,25(sp)
+  40f2c0:	afbf0044 	sw	ra,68(sp)
+  40f2c4:	afbc0040 	sw	gp,64(sp)
+  40f2c8:	afb00030 	sw	s0,48(sp)
+  40f2cc:	8f99813c 	lw	t9,-32452(gp)
+  40f2d0:	00000000 	nop
+  40f2d4:	0320f809 	jalr	t9
+  40f2d8:	00000000 	nop
+  40f2dc:	8fbc0010 	lw	gp,16(sp)
+  40f2e0:	00004021 	move	t0,zero
+  40f2e4:	00006021 	move	t4,zero
+  40f2e8:	022c6821 	addu	t5,s1,t4
+  40f2ec:	91a40000 	lbu	a0,0(t5)
+  40f2f0:	3c0251eb 	lui	v0,0x51eb
+  40f2f4:	3442851f 	ori	v0,v0,0x851f
+  40f2f8:	00820019 	multu	a0,v0
+  40f2fc:	27b00018 	addiu	s0,sp,24
+  40f300:	02081821 	addu	v1,s0,t0
+  40f304:	25080001 	addiu	t0,t0,1
+  40f308:	250affff 	addiu	t2,t0,-1
+  40f30c:	020a4821 	addu	t1,s0,t2
+  40f310:	3c06cccc 	lui	a2,0xcccc
+  40f314:	34c6cccd 	ori	a2,a2,0xcccd
+  40f318:	00c02821 	move	a1,a2
+  40f31c:	00001010 	mfhi	v0
+  40f320:	00021142 	srl	v0,v0,0x5
+  40f324:	24420030 	addiu	v0,v0,48
+  40f328:	a0620000 	sb	v0,0(v1)
+  40f32c:	81270000 	lb	a3,0(t1)
+  40f330:	24020030 	li	v0,48
+  40f334:	10e20047 	beq	a3,v0,40f454 <__read_etc_hosts_r+0x594>
+  40f338:	02085821 	addu	t3,s0,t0
+  40f33c:	00850019 	multu	a0,a1
+  40f340:	25080001 	addiu	t0,t0,1
+  40f344:	00002010 	mfhi	a0
+  40f348:	000420c2 	srl	a0,a0,0x3
+  40f34c:	308400ff 	andi	a0,a0,0xff
+  40f350:	00850019 	multu	a0,a1
+  40f354:	00001810 	mfhi	v1
+  40f358:	000318c2 	srl	v1,v1,0x3
+  40f35c:	00031080 	sll	v0,v1,0x2
+  40f360:	00431021 	addu	v0,v0,v1
+  40f364:	00021040 	sll	v0,v0,0x1
+  40f368:	00822023 	subu	a0,a0,v0
+  40f36c:	24840030 	addiu	a0,a0,48
+  40f370:	a1640000 	sb	a0,0(t3)
+  40f374:	91a40000 	lbu	a0,0(t5)
+  40f378:	3c03cccc 	lui	v1,0xcccc
+  40f37c:	3463cccd 	ori	v1,v1,0xcccd
+  40f380:	00830019 	multu	a0,v1
+  40f384:	02083821 	addu	a3,s0,t0
+  40f388:	258c0001 	addiu	t4,t4,1
+  40f38c:	25080001 	addiu	t0,t0,1
+  40f390:	02082821 	addu	a1,s0,t0
+  40f394:	29860004 	slti	a2,t4,4
+  40f398:	25080001 	addiu	t0,t0,1
+  40f39c:	00001810 	mfhi	v1
+  40f3a0:	000318c2 	srl	v1,v1,0x3
+  40f3a4:	00031080 	sll	v0,v1,0x2
+  40f3a8:	00431021 	addu	v0,v0,v1
+  40f3ac:	00021040 	sll	v0,v0,0x1
+  40f3b0:	00822023 	subu	a0,a0,v0
+  40f3b4:	24840030 	addiu	a0,a0,48
+  40f3b8:	2402002e 	li	v0,46
+  40f3bc:	a0e40000 	sb	a0,0(a3)
+  40f3c0:	14c0ffc9 	bnez	a2,40f2e8 <__read_etc_hosts_r+0x428>
+  40f3c4:	a0a20000 	sb	v0,0(a1)
+  40f3c8:	01101021 	addu	v0,t0,s0
+  40f3cc:	a040ffff 	sb	zero,-1(v0)
+  40f3d0:	02002021 	move	a0,s0
+  40f3d4:	8f998068 	lw	t9,-32664(gp)
+  40f3d8:	00000000 	nop
+  40f3dc:	0320f809 	jalr	t9
+  40f3e0:	00000000 	nop
+  40f3e4:	8fbc0010 	lw	gp,16(sp)
+  40f3e8:	0242102b 	sltu	v0,s2,v0
+  40f3ec:	10400011 	beqz	v0,40f434 <__read_etc_hosts_r+0x574>
+  40f3f0:	02602021 	move	a0,s3
+  40f3f4:	8f9980a0 	lw	t9,-32608(gp)
+  40f3f8:	00000000 	nop
+  40f3fc:	0320f809 	jalr	t9
+  40f400:	00000000 	nop
+  40f404:	8fbc0010 	lw	gp,16(sp)
+  40f408:	00402021 	move	a0,v0
+  40f40c:	2403001c 	li	v1,28
+  40f410:	00001021 	move	v0,zero
+  40f414:	ac830000 	sw	v1,0(a0)
+  40f418:	8fbf0044 	lw	ra,68(sp)
+  40f41c:	8fb3003c 	lw	s3,60(sp)
+  40f420:	8fb20038 	lw	s2,56(sp)
+  40f424:	8fb10034 	lw	s1,52(sp)
+  40f428:	8fb00030 	lw	s0,48(sp)
+  40f42c:	03e00008 	jr	ra
+  40f430:	27bd0048 	addiu	sp,sp,72
+  40f434:	02002821 	move	a1,s0
+  40f438:	8f9982c4 	lw	t9,-32060(gp)
+  40f43c:	00000000 	nop
+  40f440:	0320f809 	jalr	t9
+  40f444:	00000000 	nop
+  40f448:	8fbc0010 	lw	gp,16(sp)
+  40f44c:	1000fff2 	b	40f418 <__read_etc_hosts_r+0x558>
+  40f450:	00000000 	nop
+  40f454:	00860019 	multu	a0,a2
+  40f458:	00002010 	mfhi	a0
+  40f45c:	000420c2 	srl	a0,a0,0x3
+  40f460:	308400ff 	andi	a0,a0,0xff
+  40f464:	00860019 	multu	a0,a2
+  40f468:	00001810 	mfhi	v1
+  40f46c:	000318c2 	srl	v1,v1,0x3
+  40f470:	00031080 	sll	v0,v1,0x2
+  40f474:	00431021 	addu	v0,v0,v1
+  40f478:	00021040 	sll	v0,v0,0x1
+  40f47c:	00822023 	subu	a0,a0,v0
+  40f480:	24840030 	addiu	a0,a0,48
+  40f484:	00041600 	sll	v0,a0,0x18
+  40f488:	00021603 	sra	v0,v0,0x18
+  40f48c:	1447ffb9 	bne	v0,a3,40f374 <__read_etc_hosts_r+0x4b4>
+  40f490:	a1240000 	sb	a0,0(t1)
+  40f494:	1000ffb7 	b	40f374 <__read_etc_hosts_r+0x4b4>
+  40f498:	01404021 	move	t0,t2
+  40f49c:	3c1c0fc0 	lui	gp,0xfc0
+  40f4a0:	279c8db4 	addiu	gp,gp,-29260
+  40f4a4:	0399e021 	addu	gp,gp,t9
+  40f4a8:	27bdffd8 	addiu	sp,sp,-40
+  40f4ac:	afbc0010 	sw	gp,16(sp)
+  40f4b0:	00803821 	move	a3,a0
+  40f4b4:	afbf0024 	sw	ra,36(sp)
+  40f4b8:	afbc0020 	sw	gp,32(sp)
+  40f4bc:	80e60000 	lb	a2,0(a3)
+  40f4c0:	00005021 	move	t2,zero
+  40f4c4:	a3a00018 	sb	zero,24(sp)
+  40f4c8:	00004821 	move	t1,zero
+  40f4cc:	27a80018 	addiu	t0,sp,24
+  40f4d0:	10c00015 	beqz	a2,40f528 <__read_etc_hosts_r+0x668>
+  40f4d4:	24e70001 	addiu	a3,a3,1
+  40f4d8:	24c2ffd0 	addiu	v0,a2,-48
+  40f4dc:	2c42000a 	sltiu	v0,v0,10
+  40f4e0:	10400029 	beqz	v0,40f588 <__read_etc_hosts_r+0x6c8>
+  40f4e4:	2402002e 	li	v0,46
+  40f4e8:	91030000 	lbu	v1,0(t0)
+  40f4ec:	00000000 	nop
+  40f4f0:	00032080 	sll	a0,v1,0x2
+  40f4f4:	00832021 	addu	a0,a0,v1
+  40f4f8:	00042040 	sll	a0,a0,0x1
+  40f4fc:	00862021 	addu	a0,a0,a2
+  40f500:	2484ffd0 	addiu	a0,a0,-48
+  40f504:	2c830100 	sltiu	v1,a0,256
+  40f508:	1060000b 	beqz	v1,40f538 <__read_etc_hosts_r+0x678>
+  40f50c:	00001021 	move	v0,zero
+  40f510:	11400017 	beqz	t2,40f570 <__read_etc_hosts_r+0x6b0>
+  40f514:	a1040000 	sb	a0,0(t0)
+  40f518:	80e60000 	lb	a2,0(a3)
+  40f51c:	00000000 	nop
+  40f520:	14c0ffed 	bnez	a2,40f4d8 <__read_etc_hosts_r+0x618>
+  40f524:	24e70001 	addiu	a3,a3,1
+  40f528:	29220004 	slti	v0,t1,4
+  40f52c:	10400006 	beqz	v0,40f548 <__read_etc_hosts_r+0x688>
+  40f530:	00000000 	nop
+  40f534:	00001021 	move	v0,zero
+  40f538:	8fbf0024 	lw	ra,36(sp)
+  40f53c:	00000000 	nop
+  40f540:	03e00008 	jr	ra
+  40f544:	27bd0028 	addiu	sp,sp,40
+  40f548:	00a02021 	move	a0,a1
+  40f54c:	24060004 	li	a2,4
+  40f550:	27a50018 	addiu	a1,sp,24
+  40f554:	8f998254 	lw	t9,-32172(gp)
+  40f558:	00000000 	nop
+  40f55c:	0320f809 	jalr	t9
+  40f560:	00000000 	nop
+  40f564:	8fbc0010 	lw	gp,16(sp)
+  40f568:	1000fff3 	b	40f538 <__read_etc_hosts_r+0x678>
+  40f56c:	24020001 	li	v0,1
+  40f570:	25290001 	addiu	t1,t1,1
+  40f574:	29230005 	slti	v1,t1,5
+  40f578:	1060ffef 	beqz	v1,40f538 <__read_etc_hosts_r+0x678>
+  40f57c:	240a0001 	li	t2,1
+  40f580:	1000ffe5 	b	40f518 <__read_etc_hosts_r+0x658>
+  40f584:	00000000 	nop
+  40f588:	14c2ffea 	bne	a2,v0,40f534 <__read_etc_hosts_r+0x674>
+  40f58c:	25080001 	addiu	t0,t0,1
+  40f590:	1140ffe9 	beqz	t2,40f538 <__read_etc_hosts_r+0x678>
+  40f594:	00001021 	move	v0,zero
+  40f598:	24020004 	li	v0,4
+  40f59c:	1122ffe5 	beq	t1,v0,40f534 <__read_etc_hosts_r+0x674>
+  40f5a0:	00005021 	move	t2,zero
+  40f5a4:	1000ffdc 	b	40f518 <__read_etc_hosts_r+0x658>
+  40f5a8:	a1000000 	sb	zero,0(t0)
+
+0040f5ac <inet_ntop>:
+  40f5ac:	3c1c0fc0 	lui	gp,0xfc0
+  40f5b0:	279c8ca4 	addiu	gp,gp,-29532
+  40f5b4:	0399e021 	addu	gp,gp,t9
+  40f5b8:	27bdffe0 	addiu	sp,sp,-32
+  40f5bc:	afbc0010 	sw	gp,16(sp)
+  40f5c0:	00801821 	move	v1,a0
+  40f5c4:	24020002 	li	v0,2
+  40f5c8:	00a02021 	move	a0,a1
+  40f5cc:	afbf001c 	sw	ra,28(sp)
+  40f5d0:	00c02821 	move	a1,a2
+  40f5d4:	afbc0018 	sw	gp,24(sp)
+  40f5d8:	1062000d 	beq	v1,v0,40f610 <inet_ntop+0x64>
+  40f5dc:	00e03021 	move	a2,a3
+  40f5e0:	8f9980a0 	lw	t9,-32608(gp)
+  40f5e4:	00000000 	nop
+  40f5e8:	0320f809 	jalr	t9
+  40f5ec:	00000000 	nop
+  40f5f0:	8fbc0010 	lw	gp,16(sp)
+  40f5f4:	2403007c 	li	v1,124
+  40f5f8:	ac430000 	sw	v1,0(v0)
+  40f5fc:	00001021 	move	v0,zero
+  40f600:	8fbf001c 	lw	ra,28(sp)
+  40f604:	00000000 	nop
+  40f608:	03e00008 	jr	ra
+  40f60c:	27bd0020 	addiu	sp,sp,32
+  40f610:	8f998018 	lw	t9,-32744(gp)
+  40f614:	00000000 	nop
+  40f618:	2739f260 	addiu	t9,t9,-3488
+  40f61c:	00000000 	nop
+  40f620:	0320f809 	jalr	t9
+  40f624:	00000000 	nop
+  40f628:	8fbc0010 	lw	gp,16(sp)
+  40f62c:	1000fff4 	b	40f600 <inet_ntop+0x54>
+  40f630:	00000000 	nop
+
+0040f634 <inet_pton>:
+  40f634:	3c1c0fc0 	lui	gp,0xfc0
+  40f638:	279c8c1c 	addiu	gp,gp,-29668
+  40f63c:	0399e021 	addu	gp,gp,t9
+  40f640:	27bdffe0 	addiu	sp,sp,-32
+  40f644:	afbc0010 	sw	gp,16(sp)
+  40f648:	00801821 	move	v1,a0
+  40f64c:	24020002 	li	v0,2
+  40f650:	00a02021 	move	a0,a1
+  40f654:	afbf001c 	sw	ra,28(sp)
+  40f658:	afbc0018 	sw	gp,24(sp)
+  40f65c:	1062000d 	beq	v1,v0,40f694 <inet_pton+0x60>
+  40f660:	00c02821 	move	a1,a2
+  40f664:	8f9980a0 	lw	t9,-32608(gp)
+  40f668:	00000000 	nop
+  40f66c:	0320f809 	jalr	t9
+  40f670:	00000000 	nop
+  40f674:	8fbc0010 	lw	gp,16(sp)
+  40f678:	2403007c 	li	v1,124
+  40f67c:	ac430000 	sw	v1,0(v0)
+  40f680:	2402ffff 	li	v0,-1
+  40f684:	8fbf001c 	lw	ra,28(sp)
+  40f688:	00000000 	nop
+  40f68c:	03e00008 	jr	ra
+  40f690:	27bd0020 	addiu	sp,sp,32
+  40f694:	8f998018 	lw	t9,-32744(gp)
+  40f698:	00000000 	nop
+  40f69c:	2739f49c 	addiu	t9,t9,-2916
+  40f6a0:	00000000 	nop
+  40f6a4:	0320f809 	jalr	t9
+  40f6a8:	00000000 	nop
+  40f6ac:	8fbc0010 	lw	gp,16(sp)
+  40f6b0:	1000fff4 	b	40f684 <inet_pton+0x50>
+  40f6b4:	00000000 	nop
+	...
+
+0040f6c0 <__encode_dotted>:
+  40f6c0:	3c1c0fc0 	lui	gp,0xfc0
+  40f6c4:	279c8b90 	addiu	gp,gp,-29808
+  40f6c8:	0399e021 	addu	gp,gp,t9
+  40f6cc:	27bdffc8 	addiu	sp,sp,-56
+  40f6d0:	afbc0010 	sw	gp,16(sp)
+  40f6d4:	afb00018 	sw	s0,24(sp)
+  40f6d8:	00808021 	move	s0,a0
+  40f6dc:	afb40028 	sw	s4,40(sp)
+  40f6e0:	afb30024 	sw	s3,36(sp)
+  40f6e4:	afb20020 	sw	s2,32(sp)
+  40f6e8:	afbf0030 	sw	ra,48(sp)
+  40f6ec:	afbc002c 	sw	gp,44(sp)
+  40f6f0:	afb1001c 	sw	s1,28(sp)
+  40f6f4:	00a09821 	move	s3,a1
+  40f6f8:	00c0a021 	move	s4,a2
+  40f6fc:	12000028 	beqz	s0,40f7a0 <__encode_dotted+0xe0>
+  40f700:	00009021 	move	s2,zero
+  40f704:	82020000 	lb	v0,0(s0)
+  40f708:	00000000 	nop
+  40f70c:	10400024 	beqz	v0,40f7a0 <__encode_dotted+0xe0>
+  40f710:	02002021 	move	a0,s0
+  40f714:	2405002e 	li	a1,46
+  40f718:	8f99805c 	lw	t9,-32676(gp)
+  40f71c:	00000000 	nop
+  40f720:	0320f809 	jalr	t9
+  40f724:	00000000 	nop
+  40f728:	8fbc0010 	lw	gp,16(sp)
+  40f72c:	00408821 	move	s1,v0
+  40f730:	02002021 	move	a0,s0
+  40f734:	1220002a 	beqz	s1,40f7e0 <__encode_dotted+0x120>
+  40f738:	02301823 	subu	v1,s1,s0
+  40f73c:	02921023 	subu	v0,s4,s2
+  40f740:	2442ffff 	addiu	v0,v0,-1
+  40f744:	02723821 	addu	a3,s3,s2
+  40f748:	0062102a 	slt	v0,v1,v0
+  40f74c:	26520001 	addiu	s2,s2,1
+  40f750:	02002821 	move	a1,s0
+  40f754:	02722021 	addu	a0,s3,s2
+  40f758:	00603021 	move	a2,v1
+  40f75c:	1040001e 	beqz	v0,40f7d8 <__encode_dotted+0x118>
+  40f760:	26300001 	addiu	s0,s1,1
+  40f764:	a0e30000 	sb	v1,0(a3)
+  40f768:	02439021 	addu	s2,s2,v1
+  40f76c:	8f998254 	lw	t9,-32172(gp)
+  40f770:	00000000 	nop
+  40f774:	0320f809 	jalr	t9
+  40f778:	00000000 	nop
+  40f77c:	8fbc0010 	lw	gp,16(sp)
+  40f780:	12200007 	beqz	s1,40f7a0 <__encode_dotted+0xe0>
+  40f784:	00000000 	nop
+  40f788:	12000005 	beqz	s0,40f7a0 <__encode_dotted+0xe0>
+  40f78c:	00000000 	nop
+  40f790:	82220001 	lb	v0,1(s1)
+  40f794:	00000000 	nop
+  40f798:	1440ffde 	bnez	v0,40f714 <__encode_dotted+0x54>
+  40f79c:	02002021 	move	a0,s0
+  40f7a0:	1a800005 	blez	s4,40f7b8 <__encode_dotted+0xf8>
+  40f7a4:	2402ffff 	li	v0,-1
+  40f7a8:	02721021 	addu	v0,s3,s2
+  40f7ac:	26520001 	addiu	s2,s2,1
+  40f7b0:	a0400000 	sb	zero,0(v0)
+  40f7b4:	02401021 	move	v0,s2
+  40f7b8:	8fbf0030 	lw	ra,48(sp)
+  40f7bc:	8fb40028 	lw	s4,40(sp)
+  40f7c0:	8fb30024 	lw	s3,36(sp)
+  40f7c4:	8fb20020 	lw	s2,32(sp)
+  40f7c8:	8fb1001c 	lw	s1,28(sp)
+  40f7cc:	8fb00018 	lw	s0,24(sp)
+  40f7d0:	03e00008 	jr	ra
+  40f7d4:	27bd0038 	addiu	sp,sp,56
+  40f7d8:	1000fff7 	b	40f7b8 <__encode_dotted+0xf8>
+  40f7dc:	2402ffff 	li	v0,-1
+  40f7e0:	8f998068 	lw	t9,-32664(gp)
+  40f7e4:	00000000 	nop
+  40f7e8:	0320f809 	jalr	t9
+  40f7ec:	00000000 	nop
+  40f7f0:	8fbc0010 	lw	gp,16(sp)
+  40f7f4:	1000ffd1 	b	40f73c <__encode_dotted+0x7c>
+  40f7f8:	00401821 	move	v1,v0
+  40f7fc:	00000000 	nop
+
+0040f800 <__length_dotted>:
+  40f800:	3c1c0fc0 	lui	gp,0xfc0
+  40f804:	279c8a50 	addiu	gp,gp,-30128
+  40f808:	0399e021 	addu	gp,gp,t9
+  40f80c:	00a03821 	move	a3,a1
+  40f810:	10800015 	beqz	a0,40f868 <__length_dotted+0x68>
+  40f814:	2402ffff 	li	v0,-1
+  40f818:	00851021 	addu	v0,a0,a1
+  40f81c:	90460000 	lbu	a2,0(v0)
+  40f820:	00000000 	nop
+  40f824:	10c0000f 	beqz	a2,40f864 <__length_dotted+0x64>
+  40f828:	24a50001 	addiu	a1,a1,1
+  40f82c:	30c300c0 	andi	v1,a2,0xc0
+  40f830:	240200c0 	li	v0,192
+  40f834:	1062000a 	beq	v1,v0,40f860 <__length_dotted+0x60>
+  40f838:	00000000 	nop
+  40f83c:	00a62821 	addu	a1,a1,a2
+  40f840:	00851021 	addu	v0,a0,a1
+  40f844:	90460000 	lbu	a2,0(v0)
+  40f848:	24a50001 	addiu	a1,a1,1
+  40f84c:	10c00005 	beqz	a2,40f864 <__length_dotted+0x64>
+  40f850:	30c300c0 	andi	v1,a2,0xc0
+  40f854:	240200c0 	li	v0,192
+  40f858:	1462fff8 	bne	v1,v0,40f83c <__length_dotted+0x3c>
+  40f85c:	00000000 	nop
+  40f860:	24a50001 	addiu	a1,a1,1
+  40f864:	00a71023 	subu	v0,a1,a3
+  40f868:	03e00008 	jr	ra
+  40f86c:	00000000 	nop
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.8 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.8
new file mode 100644
index 0000000..9eec627
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.8
@@ -0,0 +1,79 @@
+.\" Jean II - HPLB - 96
+.\" iwspy.8
+.\"
+.TH IWSPY 8 "31 October 1996" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+iwspy \- Get wireless statistics from specific nodes
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.BI "iwspy " interface
+.br
+.BI "iwspy " interface " [+] " DNSNAME " | " IPADDR " | " HWADDR " [...]"
+.br
+.BI "iwspy " interface " off"
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+.B Iwspy
+is used to set a list of addresses in a wireless network interface and
+to read back quality of link information for each of those. This
+information is the same as the one available in
+.I /proc/net/wireless
+: quality of the link, signal strength and noise level.
+.PP
+This information is updated each time a new packet is received, so
+each address of the list add some overhead in the driver.
+.PP
+Note the this functionality work only for node part of the current
+wireless cells.
+.\"
+.\" PARAMETER part
+.\"
+.SH PARAMETERS
+You may set any number of addresses up to 8.
+.TP
+.BR DNSNAME " | " IPADDR
+Set an IP address, or in some cases a DNS name (using the name
+resolver). As the hardware work with hardware addresses,
+.B iwspy
+will translate this IP address through
+.IR ARP .
+In some case, this address might not be in the ARP cache and
+.B iwspy
+will fail. In those case,
+.IR ping (8)
+this name/address and retry.
+.TP
+.B HWADDR
+Set a hardware (MAC) address (this address is not translated & checked
+like the IP one). The address must contain a colon
+.RB ( : )
+to be recognised as a hardware address.
+.TP
+.B +
+Add the new set of addresses at the end of the current list instead of
+replacing it. The address list is unique for each device, so each user
+should use this option to avoid conflicts.
+.TP
+.B off
+Remove the current list of addresses and disable the spy functionality
+.\"
+.\" FILES part
+.\"
+.SH FILES
+.I /proc/net/wireless
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR iwconfig (8),
+.BR ifconfig (8),
+.BR iwlist (8).
+.BR iwpriv (8).
+
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.c
new file mode 100644
index 0000000..21726e6
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/iwspy.c
@@ -0,0 +1,237 @@
+/*
+ *	Wireless Tools
+ *
+ *		Jean II - HPLB '99
+ *
+ * This tool can manipulate the spy list : add addresses and display stat
+ * You need to link this code against "iwlib.c" and "-lm".
+ *
+ * This file is released under the GPL license.
+ *     Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
+ */
+
+#include "iwlib.h"		/* Header */
+
+/* Backward compatibility */
+#ifndef IW_MAX_GET_SPY
+#define IW_MAX_GET_SPY	64
+#endif	/* IW_MAX_GET_SPY */
+
+/************************* DISPLAY ROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Display the spy list of addresses and the associated stats
+ */
+static int
+print_spy_info(int	skfd,
+	       char *	ifname,
+	       char *	args[],
+	       int	count)
+{
+  struct iwreq		wrq;
+  char		buffer[(sizeof(struct iw_quality) +
+			sizeof(struct sockaddr)) * IW_MAX_GET_SPY];
+  char		temp[128];
+  struct sockaddr *	hwa;
+  struct iw_quality *	qual;
+  iwrange	range;
+  int		has_range = 0;
+  int		n;
+  int		i;
+
+  /* Avoid "Unused parameter" warning */
+  args = args; count = count;
+
+  /* Collect stats */
+  wrq.u.data.pointer = (caddr_t) buffer;
+  wrq.u.data.length = IW_MAX_GET_SPY;
+  wrq.u.data.flags = 0;
+  if(iw_get_ext(skfd, ifname, SIOCGIWSPY, &wrq) < 0)
+    {
+      fprintf(stderr, "%-8.8s  Interface doesn't support wireless statistic collection\n\n", ifname);
+      return(-1);
+    }
+
+  /* Number of addresses */
+  n = wrq.u.data.length;
+
+  /* Check if we have valid mac address type */
+  if(iw_check_mac_addr_type(skfd, ifname) < 0)
+    {
+      fprintf(stderr, "%-8.8s  Interface doesn't support MAC addresses\n\n", ifname);
+      return(-2);
+    }
+
+  /* Get range info if we can */
+  if(iw_get_range_info(skfd, ifname, &(range)) >= 0)
+    has_range = 1;
+
+  /* Display it */
+  if(n == 0)
+    printf("%-8.8s  No statistics to collect\n", ifname);
+  else
+    printf("%-8.8s  Statistics collected:\n", ifname);
+ 
+  /* The two lists */
+  hwa = (struct sockaddr *) buffer;
+  qual = (struct iw_quality *) (buffer + (sizeof(struct sockaddr) * n));
+
+  for(i = 0; i < n; i++)
+    {
+      /* Print stats for each address */
+      printf("    %s : ", iw_pr_ether(temp, hwa[i].sa_data));
+      iw_print_stats(temp, &qual[i], &range, has_range);
+      printf("%s\n", temp);
+    }
+#if WIRELESS_EXT > 11
+  if((n > 0) && (has_range))
+    {
+      iw_print_stats(temp, &range.avg_qual, &range, has_range);
+      printf("    typical/average   : %s\n", temp);
+    }
+#endif /* WIRELESS_EXT > 11 */
+
+  printf("\n");
+  return(0);
+}
+
+/************************* SETTING ROUTINES **************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * Set list of addresses specified on command line in the driver.
+ */
+static int
+set_spy_info(int		skfd,		/* The socket */
+	     char *		args[],		/* Command line args */
+	     int		count,		/* Args count */
+	     char *		ifname)		/* Dev name */
+{
+  struct iwreq		wrq;
+  int			i;
+  int			nbr;		/* Number of valid addresses */
+  struct sockaddr	hw_address[IW_MAX_SPY];
+
+  /* Read command line */
+  i = 0;	/* first arg to read */
+  nbr = 0;	/* Number of args read so far */
+
+  /* "off" : disable functionality (set 0 addresses) */
+  if(!strcmp(args[0], "off"))
+    i = 1;	/* skip the "off" */
+  else
+    {
+      /* "+" : add all addresses already in the driver */
+      if(!strcmp(args[0], "+"))
+	{
+	  char	buffer[(sizeof(struct iw_quality) +
+			sizeof(struct sockaddr)) * IW_MAX_SPY];
+
+	  /* Check if we have valid mac address type */
+	  if(iw_check_mac_addr_type(skfd, ifname) < 0)
+	    {
+	      fprintf(stderr, "%-8.8s  Interface doesn't support MAC addresses\n", ifname);
+	      return(-1);
+	    }
+
+	  wrq.u.data.pointer = (caddr_t) buffer;
+	  wrq.u.data.length = 0;
+	  wrq.u.data.flags = 0;
+	  if(iw_get_ext(skfd, ifname, SIOCGIWSPY, &wrq) < 0)
+	    {
+	      fprintf(stderr, "Interface doesn't accept reading addresses...\n");
+	      fprintf(stderr, "SIOCGIWSPY: %s\n", strerror(errno));
+	      return(-1);
+	    }
+
+	  /* Copy old addresses */
+	  nbr = wrq.u.data.length;
+	  memcpy(hw_address, buffer, nbr * sizeof(struct sockaddr));
+
+	  i = 1;	/* skip the "+" */
+	}
+
+      /* Read other args on command line */
+      while((i < count) && (nbr < IW_MAX_SPY))
+	{
+	  /* Get the address and check if the interface supports it */
+	  if(iw_in_addr(skfd, ifname, args[i++], &(hw_address[nbr])) < 0)
+	    continue;
+	  nbr++;
+	}
+
+      /* Check the number of addresses */
+      if(nbr == 0)
+	{
+	  fprintf(stderr, "No valid addresses found : exiting...\n");
+	  return(-1);
+	}
+    }
+
+  /* Check if there is some remaining arguments */
+  if(i < count)
+    {
+      fprintf(stderr, "Got only the first %d arguments, remaining discarded\n", i);
+    }
+
+  /* Time to do send addresses to the driver */
+  wrq.u.data.pointer = (caddr_t) hw_address;
+  wrq.u.data.length = nbr;
+  wrq.u.data.flags = 0;
+  if(iw_set_ext(skfd, ifname, SIOCSIWSPY, &wrq) < 0)
+    {
+      fprintf(stderr, "Interface doesn't accept addresses...\n");
+      fprintf(stderr, "SIOCSIWSPY: %s\n", strerror(errno));
+      return(-1);
+    }
+
+  return(0);
+}
+
+/******************************* MAIN ********************************/
+
+/*------------------------------------------------------------------*/
+/*
+ * The main !
+ */
+int
+main(int	argc,
+     char **	argv)
+{
+  int skfd;			/* generic raw socket desc.	*/
+  int goterr = 0;
+
+  /* Create a channel to the NET kernel. */
+  if((skfd = iw_sockets_open()) < 0)
+    {
+      perror("socket");
+      return(-1);
+    }
+
+  /* No argument : show the list of all device + info */
+  if(argc == 1)
+    iw_enum_devices(skfd, &print_spy_info, NULL, 0);
+  else
+    /* Special cases take one... */
+    /* Help */
+    if((!strcmp(argv[1], "-h")) || (!strcmp(argv[1], "--help")))
+      fprintf(stderr, "Usage: iwspy interface [+] [MAC address] [IP address]\n");
+    else
+      /* Version */
+      if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version"))
+	goterr = iw_print_version_info("iwspy");
+      else
+	/* The device name must be the first argument */
+	/* Name only : show spy list for that device only */
+	if(argc == 2)
+	  print_spy_info(skfd, argv[1], NULL, 0);
+	else
+	  /* Otherwise, it's a list of address to set in the spy list */
+	  goterr = set_spy_info(skfd, argv + 2, argc - 2, argv[1]);
+
+  /* Close the socket. */
+  close(skfd);
+
+  return(goterr);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/macaddr.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/macaddr.c
new file mode 100644
index 0000000..5950fd9
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/macaddr.c
@@ -0,0 +1,53 @@
+/*
+ *	macaddr
+ *
+ *	Program to return the MAC address of an Ethernet
+ *	adapter.  This was written to help configure the
+ *	adapter based on the MAC address rather than the
+ *	name.
+ *
+ *	Version 1.0	Eric Dittman	2001-10-19
+ *
+ *	This is released unther the GPL license.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include "iwlib.h"
+
+int main(int argc, char** argv)
+{
+
+	int devsock;
+	struct ifreq ifbuffer;
+
+	if ((argc != 2) || (argv[1][0] == '-')) {
+		printf("Usage: macaddr interface\n");
+		exit(1);
+	}
+
+	devsock = socket(AF_INET, SOCK_STREAM, 0);
+
+	if (devsock == -1) {
+		perror("Failed opening socket");
+		exit (1);
+	}
+
+	memset(&ifbuffer, 0, sizeof(ifbuffer));
+	strncpy(ifbuffer.ifr_name, argv[1], sizeof(ifbuffer.ifr_name));
+	if (ioctl(devsock, SIOCGIFHWADDR, &ifbuffer) == -1) {
+		fprintf(stderr, "There is no MACADDR for %s\n", argv[1]);
+		exit(1);
+	}
+	close(devsock);
+
+	puts(iw_ether_ntoa((struct ether_addr *) ifbuffer.ifr_ifru.ifru_hwaddr.sa_data));
+
+	exit(0);
+}
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/readme.txt b/package/kernel/realtek-wl/src/Users/wireless_tools.25/readme.txt
new file mode 100644
index 0000000..715d7e8
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/readme.txt
@@ -0,0 +1,4 @@
+1.open Makefile. find keyword¡§CROSS_COMPILE¡¨.

+  then change it into the complier on your platform 

+2.make 

+  If success , you can get the bin file-"iwpriv" under same folder.
\ No newline at end of file
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_enc.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_enc.c
new file mode 100644
index 0000000..a1a90e2
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_enc.c
@@ -0,0 +1,191 @@
+/* Note : this particular snipset of code is available under
+ * the LGPL, MPL or BSD license (at your choice).
+ * Jean II
+ */
+
+/* --------------------------- INCLUDE --------------------------- */
+
+#define MAX_KEY_SIZE	16
+#define	MAX_KEYS	8
+int	key_on = 0;
+int	key_open = 1;
+int	key_current = 0;
+char	key_table[MAX_KEYS][MAX_KEY_SIZE];
+int	key_size[MAX_KEYS];
+
+/* --------------------------- HANDLERS --------------------------- */
+
+static int ioctl_set_encode(struct net_device *dev,
+			    struct iw_request_info *info,
+			    struct iw_point *erq,
+			    char *key)
+{
+  int	index = (erq->flags & IW_ENCODE_INDEX) - 1;
+
+  if (erq->length > 0)
+    {
+      /* Check the size of the key */
+      if(erq->length > MAX_KEY_SIZE)
+	return(-EINVAL);
+
+      /* Check the index */
+      if((index < 0) || (index >= MAX_KEYS))
+	index = key_current;
+
+      /* Copy the key in the driver */
+      memcpy(key_table[index], key, erq->length);
+      key_size[index] = erq->length;
+      key_on = 1;
+    }
+  else
+    {
+      /* Do we want to just set the current key ? */
+      if((index >= 0) && (index < MAX_KEYS))
+	{
+	  if(key_size[index] > 0)
+	    {
+	      key_current = index;
+	      key_on = 1;
+	    }
+	  else
+	    return(-EINVAL);
+	}
+    }
+
+  /* Read the flags */
+  if(erq->flags & IW_ENCODE_DISABLED)
+    key_on = 0;		/* disable encryption */
+  if(erq->flags & IW_ENCODE_RESTRICTED)
+    key_open = 0;	/* disable open mode */
+  if(erq->flags & IW_ENCODE_OPEN)
+    key_open = 1;	/* enable open mode */
+
+  return(0);
+}
+
+static int ioctl_get_encode(struct net_device *dev,
+			    struct iw_request_info *info,
+			    struct iw_point *erq,
+			    char *key)
+{
+  int	index = (erq->flags & IW_ENCODE_INDEX) - 1;
+
+  /* Set the flags */
+  erq->flags = 0;
+  if(key_on == 0)
+    erq->flags |= IW_ENCODE_DISABLED;
+  if(key_open == 0)
+    erq->flags |= IW_ENCODE_RESTRICTED;
+  else
+    erq->flags |= IW_ENCODE_OPEN;
+
+  /* Which key do we want */
+  if((index < 0) || (index >= MAX_KEYS))
+    index = key_current;
+  erq->flags |= index + 1;
+
+  /* Copy the key to the user buffer */
+  erq->length = key_size[index];
+  memcpy(key, key_table[index], key_size[index]);
+
+  return(0);
+}
+
+static int ioctl_get_range(struct net_device *dev,
+			   struct iw_request_info *info,
+			   struct iw_point *rrq,
+			   char *extra)
+{
+  struct iw_range *range = (struct iw_range *) extra;
+
+  rrq->length = sizeof(struct iw_range);
+
+  memset(range, 0, sizeof(struct iw_range));
+
+#if WIRELESS_EXT > 10
+  /* Version we are compiled with */
+  range->we_version_compiled = WIRELESS_EXT;
+  /* Minimum version we recommend */
+  range->we_version_source = 8;
+#endif /* WIRELESS_EXT > 10 */
+
+#if WIRELESS_EXT > 8
+  range->encoding_size[0] = 8;	/* DES = 64 bits key */
+  range->encoding_size[1] = 16;
+  range->num_encoding_sizes = 2;
+  range->max_encoding_tokens = 8;
+#endif /* WIRELESS_EXT > 8 */
+  return(0);
+}
+
+/* --------------------------- BINDING --------------------------- */
+
+#if WIRELESS_EXT > 12
+static const iw_handler		handler_table[] =
+{
+	...
+	(iw_handler) ioctl_set_encode,		/* SIOCSIWENCODE */
+	(iw_handler) ioctl_get_encode,		/* SIOCGIWENCODE */
+};
+#else	/* WIRELESS_EXT < 12 */
+static int
+do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+  struct iwreq *wrq = (struct iwreq *) ifr;
+  int		err = 0;
+
+  switch (cmd)
+    {
+#if WIRELESS_EXT > 8
+    case SIOCSIWENCODE:
+      {
+	char keybuf[MAX_KEY_SIZE];
+	if(wrq->u.encoding.pointer)
+	  {
+	    /* We actually have a key to set */
+	    if(wrq->u.encoding.length > MAX_KEY_SIZE)
+	      {
+		err = -E2BIG;
+		break;
+	      }
+	    if(copy_from_user(keybuf, wrq->u.encoding.pointer,
+			      wrq->u.encoding.length))
+	      {
+		err = -EFAULT;
+		break;
+	      }
+	  }
+	else
+	  if(wrq->u.encoding.length != 0)
+	    {
+	      err = -EINVAL;
+	      break;
+	    }
+	err = ioctl_set_encode(dev, NULL, &(wrq->u.encoding), keybuf);
+      }
+      break;
+
+    case SIOCGIWENCODE:
+      /* only super-user can see encryption key */
+      if(! capable(CAP_NET_ADMIN))
+	{
+	  err = -EPERM;
+	  break;
+	}
+      {
+	char keybuf[MAX_KEY_SIZE];
+	err = ioctl_get_encode(dev, NULL, &(wrq->u.encoding), keybuf);
+	if(wrq->u.encoding.pointer)
+	  {
+	    if (copy_to_user(wrq->u.encoding.pointer, keybuf,
+			     wrq->u.encoding.length))
+	      err= -EFAULT;
+	  }
+      }
+      break;
+#endif	/* WIRELESS_EXT > 8 */
+    }
+  return(err);
+}
+#endif	/* WIRELESS_EXT < 12 */
+
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_pm.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_pm.c
new file mode 100644
index 0000000..8735cc8
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_pm.c
@@ -0,0 +1,215 @@
+/* Note : this particular snipset of code is available under
+ * the LGPL, MPL or BSD license (at your choice).
+ * Jean II
+ */
+
+/* --------------------------- INCLUDE --------------------------- */
+
+/* Backward compatibility for Wireless Extension 9 */
+#ifndef IW_POWER_MODIFIER
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+#endif IW_POWER_MODIFIER
+
+struct net_local {
+  int		pm_on;		// Power Management enabled
+  int		pm_multi;	// Receive multicasts
+  int		pm_period;	// Power Management period
+  int		pm_period_auto;	// Power Management auto mode
+  int		pm_max_period;	// Power Management max period
+  int		pm_min_period;	// Power Management min period
+  int		pm_timeout;	// Power Management timeout
+};
+
+/* --------------------------- HANDLERS --------------------------- */
+
+static int ioctl_set_power(struct net_device *dev,
+			   struct iw_request_info *info,
+			   struct iw_param *prq,
+			   char *extra)
+{
+  /* Disable it ? */
+  if(prq->disabled)
+    {
+      local->pm_on = 0;
+    }
+  else
+    {
+      /* Check mode */
+      switch(prq->flags & IW_POWER_MODE)
+	{
+	case IW_POWER_UNICAST_R:
+	  local->pm_multi = 0;
+	  local->need_commit = 1;
+	  break;
+	case IW_POWER_ALL_R:
+	  local->pm_multi = 1;
+	  local->need_commit = 1;
+	  break;
+	case IW_POWER_ON:	/* None = ok */
+	  break;
+	default:	/* Invalid */
+	  return(-EINVAL);
+	}
+      /* Set period */
+      if(prq->flags & IW_POWER_PERIOD)
+	{
+	  int	period = prq->value/1000000;
+	  /* Hum: check if within bounds... */
+
+	  /* Activate PM */
+	  local->pm_on = 1;
+	  local->need_commit = 1;
+
+	  /* Check min value */
+	  if(prq->flags & IW_POWER_MIN)
+	    {
+	      local->pm_min_period = period;
+	      local->pm_period_auto = 1;
+	    }
+	  else
+	    /* Check max value */
+	    if(prq->flags & IW_POWER_MAX)
+	      {
+		local->pm_max_period = period;
+		local->pm_period_auto = 1;
+	      }
+	    else
+	      {
+		/* Fixed value */
+		local->pm_period = period;
+		local->pm_period_auto = 0;
+	      }
+	}
+      /* Set timeout */
+      if(prq->flags & IW_POWER_TIMEOUT)
+	{
+	  /* Activate PM */
+	  local->pm_on = 1;
+	  local->need_commit = 1;
+	  /* Fixed value in ms */
+	  local->pm_timeout = prq->value/1000;
+	}
+    }
+
+  return(0);
+}
+
+static int ioctl_get_power(struct net_device *dev,
+			   struct iw_request_info *info,
+			   struct iw_param *prq,
+			   char *extra)
+{
+  prq->disabled = !local->pm_on;
+  /* By default, display the period */
+  if(!(prq->flags & IW_POWER_TIMEOUT))
+    {
+      int	inc_flags = prq->flags;
+      prq->flags = IW_POWER_PERIOD | IW_POWER_RELATIVE;
+      /* Check if auto */
+      if(local->pm_period_auto)
+	{
+	  /* By default, the min */
+	  if(!(inc_flags & IW_POWER_MAX))
+	    {
+	      prq->value = local->pm_min_period * 1000000;
+	      prq->flags |= IW_POWER_MIN;
+	    }
+	  else
+	    {
+	      prq->value = local->pm_max_period * 1000000;
+	      prq->flags |= IW_POWER_MAX;
+	    }
+	}
+      else
+	{
+	  /* Fixed value. Check the flags */
+	  if(inc_flags & (IW_POWER_MIN | IW_POWER_MAX))
+	    return(-EINVAL);
+	  else
+	    prq->value = local->pm_period * 1000000;
+	}
+    }
+  else
+    {
+      /* Deal with the timeout - always fixed */
+      prq->flags = IW_POWER_TIMEOUT;
+      prq->value = local->pm_timeout * 1000;
+    }
+  if(local->pm_multi)
+    prq->flags |= IW_POWER_ALL_R;
+  else
+    prq->flags |= IW_POWER_UNICAST_R;
+
+  return(0);
+}
+
+static int ioctl_get_range(struct net_device *dev,
+			   struct iw_request_info *info,
+			   struct iw_point *rrq,
+			   char *extra)
+{
+  struct iw_range *range = (struct iw_range *) extra;
+
+  rrq->length = sizeof(struct iw_range);
+
+  memset(range, 0, sizeof(struct iw_range));
+
+#if WIRELESS_EXT > 10
+  /* Version we are compiled with */
+  range->we_version_compiled = WIRELESS_EXT;
+  /* Minimum version we recommend */
+  range->we_version_source = 8;
+#endif /* WIRELESS_EXT > 10 */
+
+#if WIRELESS_EXT > 9
+      range.min_pmp = 1000000;	/* 1 units */
+      range.max_pmp = 12000000;	/* 12 units */
+      range.min_pmt = 1000;	/* 1 ms */
+      range.max_pmt = 1000000;	/* 1 s */
+      range.pmp_flags = IW_POWER_PERIOD | IW_POWER_RELATIVE |
+        IW_POWER_MIN | IW_POWER_MAX;
+      range.pmt_flags = IW_POWER_TIMEOUT;
+      range.pm_capa = IW_POWER_PERIOD | IW_POWER_TIMEOUT | IW_POWER_UNICAST_R;
+#endif /* WIRELESS_EXT > 9 */
+  return(0);
+}
+
+/* --------------------------- BINDING --------------------------- */
+
+#if WIRELESS_EXT > 12
+/* Use the new driver API, save overhead */
+static const iw_handler		handler_table[] =
+{
+	...
+	(iw_handler) ioctl_set_power,		/* SIOCSIWPOWER */
+	(iw_handler) ioctl_get_power,		/* SIOCGIWPOWER */
+};
+#else	/* WIRELESS_EXT < 12 */
+/* Use old API in the ioctl handler */
+static int
+do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+  struct iwreq *wrq = (struct iwreq *) ifr;
+  int		err = 0;
+
+  switch (cmd)
+    {
+#if WIRELESS_EXT > 8
+      /* Set the desired Power Management mode */
+    case SIOCSIWPOWER:
+      err = ioctl_set_power(dev, NULL, &(wrq->u.power), NULL);
+      break;
+
+      /* Get the power management settings */
+    case SIOCGIWPOWER:
+      err = ioctl_get_power(dev, NULL, &(wrq->u.power), NULL);
+      break;
+#endif	/* WIRELESS_EXT > 8 */
+    }
+  return(err);
+}
+#endif	/* WIRELESS_EXT < 12 */
+
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_priv_addr.c b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_priv_addr.c
new file mode 100644
index 0000000..fd5793d
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/sample_priv_addr.c
@@ -0,0 +1,210 @@
+/* Note : this particular snipset of code is available under
+ * the LGPL, MPL or BSD license (at your choice).
+ * Jean II
+ */
+
+// Require Wireless Tools 25 for sub-ioctl and addr support
+
+/* --------------------------- INCLUDE --------------------------- */
+
+#if WIRELESS_EXT <= 12
+/* Wireless extensions backward compatibility */
+
+/* We need the full definition for private ioctls */
+struct iw_request_info
+{
+	__u16		cmd;		/* Wireless Extension command */
+	__u16		flags;		/* More to come ;-) */
+};
+#endif /* WIRELESS_EXT <= 12 */
+
+#ifndef IW_PRIV_TYPE_ADDR
+#define IW_PRIV_TYPE_ADDR	0x6000
+#endif	/* IW_PRIV_TYPE_ADDR */
+
+/* --------------------------- HANDLERS --------------------------- */
+
+/* First method : using sub-ioctls.
+ * Note that sizeof(int + struct sockaddr) = 20 > 16, therefore the
+ * data is passed in (char *) extra, and sub-ioctl in data->flags. */
+static int sample_ioctl_set_mac(struct net_device *dev,
+				struct iw_request_info *info,
+				struct iw_point *data,
+				struct sockaddr *mac_addr)
+{
+	unsigned char *	addr = (char *) &mac_addr->sa_data;
+
+	switch(data->flags) {
+	case 0:
+		printk(KERN_DEBUG "%s: mac_add %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	case 1:
+		printk(KERN_DEBUG "%s: mac_del %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	case 2:
+		printk(KERN_DEBUG "%s: mac_kick %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	default:
+		printk(KERN_DEBUG "%s: mac_undefined %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	}
+
+	return 0;
+}
+
+/* Second method : bind single handler to multiple ioctls.
+ * Note that sizeof(struct sockaddr) = 16 <= 16, therefore the
+ * data is passed in (struct iwreq) (and also mapped in extra).
+ */
+static int sample_ioctl_set_addr(struct net_device *dev,
+				 struct iw_request_info *info,
+				 struct sockaddr *mac_addr, char *extra)
+{
+	unsigned char *	addr = (char *) &mac_addr->sa_data;
+
+	switch(info->cmd) {
+	case SIOCIWFIRSTPRIV + 28:
+		printk(KERN_DEBUG "%s: addr_add %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	case SIOCIWFIRSTPRIV + 30:
+		printk(KERN_DEBUG "%s: addr_del %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	default:
+		printk(KERN_DEBUG "%s: mac_undefined %02X:%02X:%02X:%02X:%02X:%02X\n", dev->name, addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
+		break;
+	}
+
+	return 0;
+}
+
+// Extra fun for testing
+static int sample_ioctl_get_mac(struct net_device *dev,
+				struct iw_request_info *info,
+				struct iw_point *data,
+				struct sockaddr *mac_addr)
+{
+	unsigned char	fake_addr[6];
+	int		i;
+	int		j;
+
+	for(i = 0; i < 16; i++) {
+		/* Create a fake address */
+		for(j = 0; j < 6; j++)
+			fake_addr[j] = (unsigned char) ((j << 4) + i);
+		/* Put in in the table */
+		memcpy(&(mac_addr[i]).sa_data, fake_addr, ETH_ALEN);
+		mac_addr[i].sa_family = ARPHRD_ETHER;
+	}
+	data->length = 16;
+
+	return 0;
+}
+
+static int sample_ioctl_set_float(struct net_device *dev,
+				  struct iw_request_info *info,
+				  struct iw_freq *freq, char *extra)
+{
+	printk(KERN_DEBUG "%s: set_float %d;%d\n",
+	       dev->name, freq->m, freq->e);
+
+	return 0;
+}
+
+/* --------------------------- BINDING --------------------------- */
+
+static const struct iw_priv_args sample_priv[] = {
+	// *** Method 1 : using sub-ioctls ***
+	/* --- sub-ioctls handler --- */
+	{ SIOCIWFIRSTPRIV + 0,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "" },
+	/* --- sub-ioctls definitions --- */
+	{ 0,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "macadd" },
+	{ 1,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "macdel" },
+	{ 2,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "mackick" },
+	// *** Method 2 : binding one handler to multiple ioctls ***
+	{ SIOCIWFIRSTPRIV + 2,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "addradd" },
+	{ SIOCIWFIRSTPRIV + 4,
+	  IW_PRIV_TYPE_ADDR | IW_PRIV_SIZE_FIXED | 1, 0, "addrdel" },
+	// *** Extra fun ***
+	{ SIOCIWFIRSTPRIV + 1,
+	  0, IW_PRIV_TYPE_ADDR | 16, "macget" },
+	{ SIOCIWFIRSTPRIV + 6,
+	  IW_PRIV_TYPE_FLOAT | IW_PRIV_SIZE_FIXED | 1, 0, "setfloat" },
+};
+
+static const iw_handler sample_private_handler[] =
+{							/* SIOCIWFIRSTPRIV + */
+#if WIRELESS_EXT >= 15
+	/* Various little annoying bugs in the new API before
+	 * version 15 make it difficult to use the new API for those ioctls.
+	 * For example, it doesn't know about the new data type.
+	 * Rather than littering the code with workarounds,
+	 * let's use the regular ioctl handler. - Jean II */
+	(iw_handler) sample_ioctl_set_mac,		/* 0 */
+	(iw_handler) sample_ioctl_get_mac,		/* 1 */
+	(iw_handler) sample_ioctl_set_addr,		/* 2 */
+	(iw_handler) NULL,				/* 3 */
+	(iw_handler) sample_ioctl_set_addr,		/* 4 */
+	(iw_handler) NULL,				/* 5 */
+	(iw_handler) sample_ioctl_set_float,		/* 6 */
+#endif	/* WIRELESS_EXT >= 15 */
+};
+
+#if WIRELESS_EXT < 15
+		/* Various little annoying bugs in the new API before
+		 * version 15 make it difficult to use those ioctls.
+		 * For example, it doesn't know about the new data type.
+		 * Rather than littering the code with workarounds,
+		 * let's use this code that just works. - Jean II */
+	case SIOCIWFIRSTPRIV + 0:
+		if (wrq->u.data.length > 1)
+			ret = -E2BIG;
+		else if (wrq->u.data.pointer) {
+			struct sockaddr mac_addr;
+			if (copy_from_user(&mac_addr, wrq->u.data.pointer,
+					   sizeof(struct sockaddr))) {
+				ret = -EFAULT;
+				break;
+			}
+			ret = sample_ioctl_set_mac(dev, NULL, &wrq->u.data,
+						   &mac_addr);
+		}
+		break;
+	case SIOCIWFIRSTPRIV + 2:
+	case SIOCIWFIRSTPRIV + 4:
+		if (!capable(CAP_NET_ADMIN))
+			ret = -EPERM;
+		else {
+			struct iw_request_info info;
+			info.cmd = cmd;
+			ret = sample_ioctl_set_addr(dev, &info,
+						    &wrq->u.ap_addr,
+						    NULL);
+		}
+		break;
+	case SIOCIWFIRSTPRIV + 1:
+		if (wrq->u.essid.pointer) {
+			struct sockaddr mac_addr[16];
+			char nickbuf[IW_ESSID_MAX_SIZE + 1];
+			ret = sample_ioctl_get_mac(dev, NULL, &wrq->u.data,
+						   mac_addr);
+			if (copy_to_user(wrq->u.data.pointer, nickbuf,
+					 wrq->u.data.length *
+					 sizeof(struct sockaddr)))
+				ret = -EFAULT;
+		}
+		break;
+	case SIOCIWFIRSTPRIV + 6:
+		if (!capable(CAP_NET_ADMIN))
+			ret = -EPERM;
+		else {
+			ret = sample_ioctl_set_float(dev, NULL,
+						     &wrq->u.freq,
+						     NULL);
+		}
+		break;
+#endif	/* WIRELESS_EXT < 15 */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.10.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.10.h
new file mode 100644
index 0000000..c552ff2
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.10.h
@@ -0,0 +1,479 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	9	16.10.99
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	net/core/dev.c (two place + add include)
+ *	net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	net/core/dev.c (two other places)
+ *	include/linux/netdevice.h (one place)
+ *	include/linux/proc_fs.h (one place)
+ *
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/**************************** CONSTANTS ****************************/
+
+/* --------------------------- VERSION --------------------------- */
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	10
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ */
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Basic operations */
+#define SIOCSIWNAME	0x8B00		/* Unused */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+#define SIOCSIWNWID	0x8B02		/* set network id (the cell) */
+#define SIOCGIWNWID	0x8B03		/* get network id */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+
+/* Mobile IP support */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* get list of access point in range */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
+ */
+
+/* Other parameters usefull in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	0x8B30
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCDEVPRIVATE -> SIOCDEVPRIVATE + 0xF
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory alocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__u32		m;		/* Mantissa */
+	__u16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR or better...) */
+	__u8		level;		/* signal level */
+	__u8		noise;		/* noise level */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Wrong nwid */
+	__u32		code;		/* Unable to code/decode */
+	__u32		misc;		/* Others cases */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ *
+ * Note that it should fit on the same memory footprint !
+ * You should check this when increasing the above structures (16 octets)
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part */
+	union
+	{
+		/* Config - generic */
+		char		name[IFNAMSIZ];
+		/* Name : used to verify the presence of  wireless extensions.
+		 * Name of the protocol/provider... */
+
+		struct iw_point	essid;	/* Extended network name */
+		struct iw_param	nwid;	/* network id (or domain - the cell) */
+		struct iw_freq	freq;	/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+		struct iw_param	sens;		/* signal level threshold */
+		struct iw_param	bitrate;	/* default bit rate */
+		struct iw_param	txpower;	/* default transmit power */
+		struct iw_param	rts;		/* RTS threshold threshold */
+		struct iw_param	frag;		/* Fragmentation threshold */
+		__u32		mode;		/* Operation mode */
+
+		struct iw_point	encoding;	/* Encoding stuff : tokens */
+		struct iw_param	power;		/* PM duration/timeout */
+
+		struct sockaddr	ap_addr;	/* Access point address */
+
+		struct iw_point	data;		/* Other large parameters */
+	}	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+};
+
+/*
+ * Private ioctl interface information
+ */
+ 
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.11.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.11.h
new file mode 100644
index 0000000..fe42409
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.11.h
@@ -0,0 +1,510 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	11	28.3.01
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	net/core/dev.c (two place + add include)
+ *	net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	net/core/dev.c (two other places)
+ *	include/linux/netdevice.h (one place)
+ *	include/linux/proc_fs.h (one place)
+ *
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/**************************** CONSTANTS ****************************/
+
+/* --------------------------- VERSION --------------------------- */
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	11
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ */
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Basic operations */
+#define SIOCSIWNAME	0x8B00		/* Unused */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+#define SIOCSIWNWID	0x8B02		/* set network id (the cell) */
+#define SIOCGIWNWID	0x8B03		/* get network id */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+
+/* Mobile IP support */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* get list of access point in range */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
+ */
+
+/* Other parameters usefull in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	0x8B30
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCDEVPRIVATE -> SIOCDEVPRIVATE + 0xF
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory alocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__u32		m;		/* Mantissa */
+	__u16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR or better...) */
+	__u8		level;		/* signal level */
+	__u8		noise;		/* noise level */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Wrong nwid */
+	__u32		code;		/* Unable to code/decode */
+	__u32		misc;		/* Others cases */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ *
+ * Note that it should fit on the same memory footprint !
+ * You should check this when increasing the above structures (16 octets)
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part */
+	union
+	{
+		/* Config - generic */
+		char		name[IFNAMSIZ];
+		/* Name : used to verify the presence of  wireless extensions.
+		 * Name of the protocol/provider... */
+
+		struct iw_point	essid;	/* Extended network name */
+		struct iw_param	nwid;	/* network id (or domain - the cell) */
+		struct iw_freq	freq;	/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+		struct iw_param	sens;		/* signal level threshold */
+		struct iw_param	bitrate;	/* default bit rate */
+		struct iw_param	txpower;	/* default transmit power */
+		struct iw_param	rts;		/* RTS threshold threshold */
+		struct iw_param	frag;		/* Fragmentation threshold */
+		__u32		mode;		/* Operation mode */
+		struct iw_param	retry;		/* Retry limits & lifetime */
+
+		struct iw_point	encoding;	/* Encoding stuff : tokens */
+		struct iw_param	power;		/* PM duration/timeout */
+
+		struct sockaddr	ap_addr;	/* Access point address */
+
+		struct iw_point	data;		/* Other large parameters */
+	}	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+};
+
+/*
+ * Private ioctl interface information
+ */
+ 
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.12.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.12.h
new file mode 100644
index 0000000..4183d4a
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.12.h
@@ -0,0 +1,570 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	12	5.10.01
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	net/core/dev.c (two place + add include)
+ *	net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	net/core/dev.c (two other places)
+ *	include/linux/netdevice.h (one place)
+ *	include/linux/proc_fs.h (one place)
+ *
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/**************************** CONSTANTS ****************************/
+
+/* --------------------------- VERSION --------------------------- */
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	12
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ *
+ * V11 to V12
+ * ----------
+ *	- Add SIOCSIWSTATS to get /proc/net/wireless programatically
+ *	- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
+ *	- Add new statistics (frag, retry, beacon)
+ *	- Add average quality (for user space calibration)
+ */
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Basic operations */
+#define SIOCSIWNAME	0x8B00		/* Unused */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+#define SIOCSIWNWID	0x8B02		/* set network id (the cell) */
+#define SIOCGIWNWID	0x8B03		/* get network id */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+#define SIOCSIWSTATS	0x8B0E		/* Unused */
+#define SIOCGIWSTATS	0x8B0F		/* Get /proc/net/wireless stats */
+
+/* Mobile IP support */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* get list of access point in range */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
+ */
+
+/* Other parameters useful in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
+
+/* These 16 ioctl are wireless device private.
+ * Each driver is free to use them for whatever purpose it chooses,
+ * however the driver *must* export the description of those ioctls
+ * with SIOCGIWPRIV and *must* use arguments as defined below.
+ * If you don't follow those rules, DaveM is going to hate you (reason :
+ * it make mixed 32/64bit operation impossible).
+ */
+#define SIOCIWFIRSTPRIV	0x8BE0
+#define SIOCIWLASTPRIV	0x8BFF
+/* Previously, we were using SIOCDEVPRIVATE, but we know have our
+ * separate range because of collisions with other tools such as
+ * 'mii-tool'.
+ * We now have 32 commands, so a bit more space ;-).
+ * Also, all 'odd' commands are only usable by root and don't return the
+ * content of ifr/iwr to user (but you are not obliged to use the set/get
+ * convention, just use every other two command).
+ * And I repeat : you are not obliged to use them with iwspy, but you
+ * must be compliant with it.
+ */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	SIOCIWLASTPRIV		/* 0x8BFF */
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory allocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__u32		m;		/* Mantissa */
+	__u16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR,
+					   %missed beacons or better...) */
+	__u8		level;		/* signal level (dBm) */
+	__u8		noise;		/* noise level (dBm) */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ *	Note : the list of counter and statistics in net_device_stats
+ *	is already pretty exhaustive, and you should use that first.
+ *	This is only additional stats...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Rx : Wrong nwid/essid */
+	__u32		code;		/* Rx : Unable to code/decode (WEP) */
+	__u32		fragment;	/* Rx : Can't perform MAC reassembly */
+	__u32		retries;	/* Tx : Max MAC retries num reached */
+	__u32		misc;		/* Others cases */
+};
+
+/*
+ *	Packet/Time period missed in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_missed
+{
+	__u32		beacon;		/* Missed beacons/superframe */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+	struct iw_missed	miss;		/* Packet missed counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ *
+ * Note that it should fit on the same memory footprint !
+ * You should check this when increasing the above structures (16 octets)
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part */
+	union
+	{
+		/* Config - generic */
+		char		name[IFNAMSIZ];
+		/* Name : used to verify the presence of  wireless extensions.
+		 * Name of the protocol/provider... */
+
+		struct iw_point	essid;	/* Extended network name */
+		struct iw_param	nwid;	/* network id (or domain - the cell) */
+		struct iw_freq	freq;	/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+		struct iw_param	sens;		/* signal level threshold */
+		struct iw_param	bitrate;	/* default bit rate */
+		struct iw_param	txpower;	/* default transmit power */
+		struct iw_param	rts;		/* RTS threshold threshold */
+		struct iw_param	frag;		/* Fragmentation threshold */
+		__u32		mode;		/* Operation mode */
+		struct iw_param	retry;		/* Retry limits & lifetime */
+
+		struct iw_point	encoding;	/* Encoding stuff : tokens */
+		struct iw_param	power;		/* PM duration/timeout */
+
+		struct sockaddr	ap_addr;	/* Access point address */
+
+		struct iw_point	data;		/* Other large parameters */
+	}	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+
+	/* Average quality of link & SNR */
+	struct iw_quality	avg_qual;	/* Quality of the link */
+	/* This should contain the average/typical values of the quality
+	 * indicator. This should be the threshold between a "good" and
+	 * a "bad" link (example : monitor going from green to orange).
+	 * Currently, user space apps like quality monitors don't have any
+	 * way to calibrate the measurement. With this, they can split
+	 * the range between 0 and max_qual in different quality level
+	 * (using a geometric subdivision centered on the average).
+	 * I expect that people doing the user space apps will feedback
+	 * us on which value we need to put in each driver...
+	 */
+};
+
+/*
+ * Private ioctl interface information
+ */
+ 
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.13.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.13.h
new file mode 100644
index 0000000..fa3c64f
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.13.h
@@ -0,0 +1,599 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	13	6.12.01
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ * Copyright (c) 1997-2001 Jean Tourrilhes, All Rights Reserved.
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Initial APIs (1996 -> onward) :
+ * -----------------------------
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	# net/core/dev.c (two place + add include)
+ *	# net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	# net/core/dev.c (two other places)
+ *	# include/linux/netdevice.h (one place)
+ *	# include/linux/proc_fs.h (one place)
+ *
+ * New driver API (2001 -> onward) :
+ * -------------------------------
+ * This file is only concerned with the user space API and common definitions.
+ * The new driver API is defined and documented in :
+ *	# include/net/iw_handler.h
+ *
+ * Note as well that /proc/net/wireless implementation has now moved in :
+ *	# include/linux/wireless.c
+ *
+ * Other comments :
+ * --------------
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/***************************** VERSION *****************************/
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	13
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ *
+ * V11 to V12
+ * ----------
+ *	- Add SIOCSIWSTATS to get /proc/net/wireless programatically
+ *	- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
+ *	- Add new statistics (frag, retry, beacon)
+ *	- Add average quality (for user space calibration)
+ *
+ * V12 to V13
+ * ----------
+ *	- Document creation of new driver API.
+ *	- Extract union iwreq_data from struct iwreq (for new driver API).
+ *	- Rename SIOCSIWNAME as SIOCSIWCOMMIT
+ */
+
+/**************************** CONSTANTS ****************************/
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Basic operations */
+#define SIOCSIWCOMMIT	0x8B00		/* Commit pending changes to driver */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+#define SIOCSIWNWID	0x8B02		/* set network id (the cell) */
+#define SIOCGIWNWID	0x8B03		/* get network id */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+#define SIOCSIWSTATS	0x8B0E		/* Unused */
+#define SIOCGIWSTATS	0x8B0F		/* Get /proc/net/wireless stats */
+
+/* Mobile IP support */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* get list of access point in range */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
+ */
+
+/* Other parameters useful in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
+
+/* These 16 ioctl are wireless device private.
+ * Each driver is free to use them for whatever purpose it chooses,
+ * however the driver *must* export the description of those ioctls
+ * with SIOCGIWPRIV and *must* use arguments as defined below.
+ * If you don't follow those rules, DaveM is going to hate you (reason :
+ * it make mixed 32/64bit operation impossible).
+ */
+#define SIOCIWFIRSTPRIV	0x8BE0
+#define SIOCIWLASTPRIV	0x8BFF
+/* Previously, we were using SIOCDEVPRIVATE, but we now have our
+ * separate range because of collisions with other tools such as
+ * 'mii-tool'.
+ * We now have 32 commands, so a bit more space ;-).
+ * Also, all 'odd' commands are only usable by root and don't return the
+ * content of ifr/iwr to user (but you are not obliged to use the set/get
+ * convention, just use every other two command).
+ * And I repeat : you are not obliged to use them with iwspy, but you
+ * must be compliant with it.
+ */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	SIOCIWLASTPRIV		/* 0x8BFF */
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory allocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__u32		m;		/* Mantissa */
+	__u16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR,
+					   %missed beacons or better...) */
+	__u8		level;		/* signal level (dBm) */
+	__u8		noise;		/* noise level (dBm) */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ *	Note : the list of counter and statistics in net_device_stats
+ *	is already pretty exhaustive, and you should use that first.
+ *	This is only additional stats...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Rx : Wrong nwid/essid */
+	__u32		code;		/* Rx : Unable to code/decode (WEP) */
+	__u32		fragment;	/* Rx : Can't perform MAC reassembly */
+	__u32		retries;	/* Tx : Max MAC retries num reached */
+	__u32		misc;		/* Others cases */
+};
+
+/*
+ *	Packet/Time period missed in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_missed
+{
+	__u32		beacon;		/* Missed beacons/superframe */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+	struct iw_missed	miss;		/* Packet missed counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * This structure defines the payload of an ioctl, and is used 
+ * below.
+ *
+ * Note that this structure should fit on the memory footprint
+ * of iwreq (which is the same as ifreq), which mean a max size of
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ * You should check this when increasing the structures defined
+ * above in this file...
+ */
+union	iwreq_data
+{
+	/* Config - generic */
+	char		name[IFNAMSIZ];
+	/* Name : used to verify the presence of  wireless extensions.
+	 * Name of the protocol/provider... */
+
+	struct iw_point	essid;		/* Extended network name */
+	struct iw_param	nwid;		/* network id (or domain - the cell) */
+	struct iw_freq	freq;		/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+	struct iw_param	sens;		/* signal level threshold */
+	struct iw_param	bitrate;	/* default bit rate */
+	struct iw_param	txpower;	/* default transmit power */
+	struct iw_param	rts;		/* RTS threshold threshold */
+	struct iw_param	frag;		/* Fragmentation threshold */
+	__u32		mode;		/* Operation mode */
+	struct iw_param	retry;		/* Retry limits & lifetime */
+
+	struct iw_point	encoding;	/* Encoding stuff : tokens */
+	struct iw_param	power;		/* PM duration/timeout */
+
+	struct sockaddr	ap_addr;	/* Access point address */
+
+	struct iw_point	data;		/* Other large parameters */
+};
+
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ * Do I need to remind you about structure size (32 octets) ?
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part (defined just above) */
+	union	iwreq_data	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+
+	/* Average quality of link & SNR */
+	struct iw_quality	avg_qual;	/* Quality of the link */
+	/* This should contain the average/typical values of the quality
+	 * indicator. This should be the threshold between a "good" and
+	 * a "bad" link (example : monitor going from green to orange).
+	 * Currently, user space apps like quality monitors don't have any
+	 * way to calibrate the measurement. With this, they can split
+	 * the range between 0 and max_qual in different quality level
+	 * (using a geometric subdivision centered on the average).
+	 * I expect that people doing the user space apps will feedback
+	 * us on which value we need to put in each driver...
+	 */
+};
+
+/*
+ * Private ioctl interface information
+ */
+ 
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.14.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.14.h
new file mode 100644
index 0000000..226f540
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.14.h
@@ -0,0 +1,669 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	14	25.1.02
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Initial APIs (1996 -> onward) :
+ * -----------------------------
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	# net/core/dev.c (two place + add include)
+ *	# net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	# net/core/dev.c (two other places)
+ *	# include/linux/netdevice.h (one place)
+ *	# include/linux/proc_fs.h (one place)
+ *
+ * New driver API (2002 -> onward) :
+ * -------------------------------
+ * This file is only concerned with the user space API and common definitions.
+ * The new driver API is defined and documented in :
+ *	# include/net/iw_handler.h
+ *
+ * Note as well that /proc/net/wireless implementation has now moved in :
+ *	# include/linux/wireless.c
+ *
+ * Wireless Events (2002 -> onward) :
+ * --------------------------------
+ * Events are defined at the end of this file, and implemented in :
+ *	# include/linux/wireless.c
+ *
+ * Other comments :
+ * --------------
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/***************************** VERSION *****************************/
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	14
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ *
+ * V11 to V12
+ * ----------
+ *	- Add SIOCSIWSTATS to get /proc/net/wireless programatically
+ *	- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
+ *	- Add new statistics (frag, retry, beacon)
+ *	- Add average quality (for user space calibration)
+ *
+ * V12 to V13
+ * ----------
+ *	- Document creation of new driver API.
+ *	- Extract union iwreq_data from struct iwreq (for new driver API).
+ *	- Rename SIOCSIWNAME as SIOCSIWCOMMIT
+ *
+ * V13 to V14
+ * ----------
+ *	- Wireless Events support : define struct iw_event
+ *	- Define additional specific event numbers
+ *	- Add "addr" and "param" fields in union iwreq_data
+ *	- AP scanning stuff (SIOCSIWSCAN and friends)
+ */
+
+/**************************** CONSTANTS ****************************/
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Basic operations */
+#define SIOCSIWCOMMIT	0x8B00		/* Commit pending changes to driver */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+#define SIOCSIWNWID	0x8B02		/* set network id (the cell) */
+#define SIOCGIWNWID	0x8B03		/* get network id */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+#define SIOCSIWSTATS	0x8B0E		/* Unused */
+#define SIOCGIWSTATS	0x8B0F		/* Get /proc/net/wireless stats */
+
+/* Mobile IP support */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* get list of access point in range */
+#define SIOCSIWSCAN	0x8B18		/* trigger scanning */
+#define SIOCGIWSCAN	0x8B19		/* get scanning results */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE...
+ * The "flags" member indicate if the ESSID is active or not (promiscuous).
+ */
+
+/* Other parameters useful in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
+
+/* These 16 ioctl are wireless device private.
+ * Each driver is free to use them for whatever purpose it chooses,
+ * however the driver *must* export the description of those ioctls
+ * with SIOCGIWPRIV and *must* use arguments as defined below.
+ * If you don't follow those rules, DaveM is going to hate you (reason :
+ * it make mixed 32/64bit operation impossible).
+ */
+#define SIOCIWFIRSTPRIV	0x8BE0
+#define SIOCIWLASTPRIV	0x8BFF
+/* Previously, we were using SIOCDEVPRIVATE, but we now have our
+ * separate range because of collisions with other tools such as
+ * 'mii-tool'.
+ * We now have 32 commands, so a bit more space ;-).
+ * Also, all 'odd' commands are only usable by root and don't return the
+ * content of ifr/iwr to user (but you are not obliged to use the set/get
+ * convention, just use every other two command).
+ * And I repeat : you are not obliged to use them with iwspy, but you
+ * must be compliant with it.
+ */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	SIOCIWLASTPRIV		/* 0x8BFF */
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/* Those are *NOT* ioctls, do not issue request on them !!! */
+/* Most events use the same identifier as ioctl requests */
+
+#define IWEVTXDROP	0x8C00		/* Packet dropped to excessive retry */
+#define IWEVQUAL	0x8C01		/* Quality part of statistics */
+
+#define IWEVFIRST	0x8C00
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Scanning request flags */
+#define IW_SCAN_DEFAULT		0x0000	/* Default scan of the driver */
+#define IW_SCAN_ALL_ESSID	0x0001	/* Scan all ESSIDs */
+#define IW_SCAN_THIS_ESSID	0x0002	/* Scan only this ESSID */
+#define IW_SCAN_ALL_FREQ	0x0004	/* Scan all Frequencies */
+#define IW_SCAN_THIS_FREQ	0x0008	/* Scan only this Frequency */
+#define IW_SCAN_ALL_MODE	0x0010	/* Scan all Modes */
+#define IW_SCAN_THIS_MODE	0x0020	/* Scan only this Mode */
+#define IW_SCAN_ALL_RATE	0x0040	/* Scan all Bit-Rates */
+#define IW_SCAN_THIS_RATE	0x0080	/* Scan only this Bit-Rate */
+/* Maximum size of returned data */
+#define IW_SCAN_MAX_DATA	4096	/* In bytes */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory allocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__u32		m;		/* Mantissa */
+	__u16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR,
+					   %missed beacons or better...) */
+	__u8		level;		/* signal level (dBm) */
+	__u8		noise;		/* noise level (dBm) */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ *	Note : the list of counter and statistics in net_device_stats
+ *	is already pretty exhaustive, and you should use that first.
+ *	This is only additional stats...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Rx : Wrong nwid/essid */
+	__u32		code;		/* Rx : Unable to code/decode (WEP) */
+	__u32		fragment;	/* Rx : Can't perform MAC reassembly */
+	__u32		retries;	/* Tx : Max MAC retries num reached */
+	__u32		misc;		/* Others cases */
+};
+
+/*
+ *	Packet/Time period missed in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_missed
+{
+	__u32		beacon;		/* Missed beacons/superframe */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+	struct iw_missed	miss;		/* Packet missed counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * This structure defines the payload of an ioctl, and is used 
+ * below.
+ *
+ * Note that this structure should fit on the memory footprint
+ * of iwreq (which is the same as ifreq), which mean a max size of
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ * You should check this when increasing the structures defined
+ * above in this file...
+ */
+union	iwreq_data
+{
+	/* Config - generic */
+	char		name[IFNAMSIZ];
+	/* Name : used to verify the presence of  wireless extensions.
+	 * Name of the protocol/provider... */
+
+	struct iw_point	essid;		/* Extended network name */
+	struct iw_param	nwid;		/* network id (or domain - the cell) */
+	struct iw_freq	freq;		/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+	struct iw_param	sens;		/* signal level threshold */
+	struct iw_param	bitrate;	/* default bit rate */
+	struct iw_param	txpower;	/* default transmit power */
+	struct iw_param	rts;		/* RTS threshold threshold */
+	struct iw_param	frag;		/* Fragmentation threshold */
+	__u32		mode;		/* Operation mode */
+	struct iw_param	retry;		/* Retry limits & lifetime */
+
+	struct iw_point	encoding;	/* Encoding stuff : tokens */
+	struct iw_param	power;		/* PM duration/timeout */
+	struct iw_quality qual;		/* Quality part of statistics */
+
+	struct sockaddr	ap_addr;	/* Access point address */
+	struct sockaddr	addr;		/* Destination address (hw) */
+
+	struct iw_param	param;		/* Other small parameters */
+	struct iw_point	data;		/* Other large parameters */
+};
+
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ * Do I need to remind you about structure size (32 octets) ?
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part (defined just above) */
+	union	iwreq_data	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+
+	/* Average quality of link & SNR */
+	struct iw_quality	avg_qual;	/* Quality of the link */
+	/* This should contain the average/typical values of the quality
+	 * indicator. This should be the threshold between a "good" and
+	 * a "bad" link (example : monitor going from green to orange).
+	 * Currently, user space apps like quality monitors don't have any
+	 * way to calibrate the measurement. With this, they can split
+	 * the range between 0 and max_qual in different quality level
+	 * (using a geometric subdivision centered on the average).
+	 * I expect that people doing the user space apps will feedback
+	 * us on which value we need to put in each driver...
+	 */
+};
+
+/*
+ * Private ioctl interface information
+ */
+ 
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/*
+ * Wireless events are carried through the rtnetlink socket to user
+ * space. They are encapsulated in the IFLA_WIRELESS field of
+ * a RTM_NEWLINK message.
+ */
+
+/*
+ * A Wireless Event. Contains basically the same data as the ioctl...
+ */
+struct iw_event
+{
+	__u16		len;			/* Real lenght of this stuff */
+	__u16		cmd;			/* Wireless IOCTL */
+	union iwreq_data	u;		/* IOCTL fixed payload */
+};
+
+/* Size of the Event prefix (including padding and alignement junk) */
+#define IW_EV_LCP_LEN	(sizeof(struct iw_event) - sizeof(union iwreq_data))
+/* Size of the various events */
+#define IW_EV_CHAR_LEN	(IW_EV_LCP_LEN + IFNAMSIZ)
+#define IW_EV_UINT_LEN	(IW_EV_LCP_LEN + sizeof(__u32))
+#define IW_EV_FREQ_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_freq))
+#define IW_EV_POINT_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_point))
+#define IW_EV_PARAM_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_param))
+#define IW_EV_ADDR_LEN	(IW_EV_LCP_LEN + sizeof(struct sockaddr))
+#define IW_EV_QUAL_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_quality))
+
+/* Note : in the case of iw_point, the extra data will come at the
+ * end of the event */
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.15.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.15.h
new file mode 100644
index 0000000..e43bdad
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.15.h
@@ -0,0 +1,706 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	15	12.7.02
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Initial APIs (1996 -> onward) :
+ * -----------------------------
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	# net/core/dev.c (two place + add include)
+ *	# net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	# net/core/dev.c (two other places)
+ *	# include/linux/netdevice.h (one place)
+ *	# include/linux/proc_fs.h (one place)
+ *
+ * New driver API (2002 -> onward) :
+ * -------------------------------
+ * This file is only concerned with the user space API and common definitions.
+ * The new driver API is defined and documented in :
+ *	# include/net/iw_handler.h
+ *
+ * Note as well that /proc/net/wireless implementation has now moved in :
+ *	# include/linux/wireless.c
+ *
+ * Wireless Events (2002 -> onward) :
+ * --------------------------------
+ * Events are defined at the end of this file, and implemented in :
+ *	# include/linux/wireless.c
+ *
+ * Other comments :
+ * --------------
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/***************************** VERSION *****************************/
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	15
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ *
+ * V11 to V12
+ * ----------
+ *	- Add SIOCSIWSTATS to get /proc/net/wireless programatically
+ *	- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
+ *	- Add new statistics (frag, retry, beacon)
+ *	- Add average quality (for user space calibration)
+ *
+ * V12 to V13
+ * ----------
+ *	- Document creation of new driver API.
+ *	- Extract union iwreq_data from struct iwreq (for new driver API).
+ *	- Rename SIOCSIWNAME as SIOCSIWCOMMIT
+ *
+ * V13 to V14
+ * ----------
+ *	- Wireless Events support : define struct iw_event
+ *	- Define additional specific event numbers
+ *	- Add "addr" and "param" fields in union iwreq_data
+ *	- AP scanning stuff (SIOCSIWSCAN and friends)
+ *
+ * V14 to V15
+ * ----------
+ *	- Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
+ *	- Make struct iw_freq signed (both m & e), add explicit padding
+ *	- Add IWEVCUSTOM for driver specific event/scanning token
+ *	- Add IW_MAX_GET_SPY for driver returning a lot of addresses
+ *	- Add IW_TXPOW_RANGE for range of Tx Powers
+ *	- Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
+ *	- Add IW_MODE_MONITOR for passive monitor
+ */
+
+/**************************** CONSTANTS ****************************/
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Wireless Identification */
+#define SIOCSIWCOMMIT	0x8B00		/* Commit pending changes to driver */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
+ * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
+ * Don't put the name of your driver there, it's useless. */
+
+/* Basic operations */
+#define SIOCSIWNWID	0x8B02		/* set network id (pre-802.11) */
+#define SIOCGIWNWID	0x8B03		/* get network id (the cell) */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+#define SIOCSIWSTATS	0x8B0E		/* Unused */
+#define SIOCGIWSTATS	0x8B0F		/* Get /proc/net/wireless stats */
+/* SIOCGIWSTATS is strictly used between user space and the kernel, and
+ * is never passed to the driver (i.e. the driver will never see it). */
+
+/* Mobile IP support (statistics per MAC address) */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* Deprecated in favor of scanning */
+#define SIOCSIWSCAN	0x8B18		/* trigger scanning (list cells) */
+#define SIOCGIWSCAN	0x8B19		/* get scanning results */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE... */
+
+/* Other parameters useful in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
+
+/* These 16 ioctl are wireless device private.
+ * Each driver is free to use them for whatever purpose it chooses,
+ * however the driver *must* export the description of those ioctls
+ * with SIOCGIWPRIV and *must* use arguments as defined below.
+ * If you don't follow those rules, DaveM is going to hate you (reason :
+ * it make mixed 32/64bit operation impossible).
+ */
+#define SIOCIWFIRSTPRIV	0x8BE0
+#define SIOCIWLASTPRIV	0x8BFF
+/* Previously, we were using SIOCDEVPRIVATE, but we now have our
+ * separate range because of collisions with other tools such as
+ * 'mii-tool'.
+ * We now have 32 commands, so a bit more space ;-).
+ * Also, all 'odd' commands are only usable by root and don't return the
+ * content of ifr/iwr to user (but you are not obliged to use the set/get
+ * convention, just use every other two command).
+ * And I repeat : you are not obliged to use them with iwspy, but you
+ * must be compliant with it.
+ */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	SIOCIWLASTPRIV		/* 0x8BFF */
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/* Those are *NOT* ioctls, do not issue request on them !!! */
+/* Most events use the same identifier as ioctl requests */
+
+#define IWEVTXDROP	0x8C00		/* Packet dropped to excessive retry */
+#define IWEVQUAL	0x8C01		/* Quality part of statistics (scan) */
+#define IWEVCUSTOM	0x8C02		/* Driver specific ascii string */
+#define IWEVREGISTERED	0x8C03		/* Discovered a new node (AP mode) */
+#define IWEVEXPIRED	0x8C04		/* Expired a node (AP mode) */
+
+#define IWEVFIRST	0x8C00
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000	/* struct iw_freq */
+#define IW_PRIV_TYPE_ADDR	0x6000	/* struct sockaddr */
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+/* Note : if you more than 8 TXPowers, just set the max and min or
+ * a few of them in the struct iw_range. */
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8	/* set */
+#define IW_MAX_GET_SPY		64	/* get */
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+#define IW_MODE_MONITOR	6	/* Passive monitor (listen only) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_TYPE		0x00FF	/* Type of value */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+#define IW_TXPOW_RANGE		0x1000	/* Range of value between min/max */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Scanning request flags */
+#define IW_SCAN_DEFAULT		0x0000	/* Default scan of the driver */
+#define IW_SCAN_ALL_ESSID	0x0001	/* Scan all ESSIDs */
+#define IW_SCAN_THIS_ESSID	0x0002	/* Scan only this ESSID */
+#define IW_SCAN_ALL_FREQ	0x0004	/* Scan all Frequencies */
+#define IW_SCAN_THIS_FREQ	0x0008	/* Scan only this Frequency */
+#define IW_SCAN_ALL_MODE	0x0010	/* Scan all Modes */
+#define IW_SCAN_THIS_MODE	0x0020	/* Scan only this Mode */
+#define IW_SCAN_ALL_RATE	0x0040	/* Scan all Bit-Rates */
+#define IW_SCAN_THIS_RATE	0x0080	/* Scan only this Bit-Rate */
+/* Maximum size of returned data */
+#define IW_SCAN_MAX_DATA	4096	/* In bytes */
+
+/* Max number of char in custom event - use multiple of them if needed */
+#define IW_CUSTOM_MAX		256	/* In bytes */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory allocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__s32		m;		/* Mantissa */
+	__s16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+	__u8		pad;		/* Unused - just for alignement */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR,
+					   %missed beacons or better...) */
+	__u8		level;		/* signal level (dBm) */
+	__u8		noise;		/* noise level (dBm) */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ *	Note : the list of counter and statistics in net_device_stats
+ *	is already pretty exhaustive, and you should use that first.
+ *	This is only additional stats...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Rx : Wrong nwid/essid */
+	__u32		code;		/* Rx : Unable to code/decode (WEP) */
+	__u32		fragment;	/* Rx : Can't perform MAC reassembly */
+	__u32		retries;	/* Tx : Max MAC retries num reached */
+	__u32		misc;		/* Others cases */
+};
+
+/*
+ *	Packet/Time period missed in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_missed
+{
+	__u32		beacon;		/* Missed beacons/superframe */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+	struct iw_missed	miss;		/* Packet missed counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * This structure defines the payload of an ioctl, and is used 
+ * below.
+ *
+ * Note that this structure should fit on the memory footprint
+ * of iwreq (which is the same as ifreq), which mean a max size of
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ * You should check this when increasing the structures defined
+ * above in this file...
+ */
+union	iwreq_data
+{
+	/* Config - generic */
+	char		name[IFNAMSIZ];
+	/* Name : used to verify the presence of  wireless extensions.
+	 * Name of the protocol/provider... */
+
+	struct iw_point	essid;		/* Extended network name */
+	struct iw_param	nwid;		/* network id (or domain - the cell) */
+	struct iw_freq	freq;		/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+	struct iw_param	sens;		/* signal level threshold */
+	struct iw_param	bitrate;	/* default bit rate */
+	struct iw_param	txpower;	/* default transmit power */
+	struct iw_param	rts;		/* RTS threshold threshold */
+	struct iw_param	frag;		/* Fragmentation threshold */
+	__u32		mode;		/* Operation mode */
+	struct iw_param	retry;		/* Retry limits & lifetime */
+
+	struct iw_point	encoding;	/* Encoding stuff : tokens */
+	struct iw_param	power;		/* PM duration/timeout */
+	struct iw_quality qual;		/* Quality part of statistics */
+
+	struct sockaddr	ap_addr;	/* Access point address */
+	struct sockaddr	addr;		/* Destination address (hw) */
+
+	struct iw_param	param;		/* Other small parameters */
+	struct iw_point	data;		/* Other large parameters */
+};
+
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ * Do I need to remind you about structure size (32 octets) ?
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part (defined just above) */
+	union	iwreq_data	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+
+	/* Average quality of link & SNR */
+	struct iw_quality	avg_qual;	/* Quality of the link */
+	/* This should contain the average/typical values of the quality
+	 * indicator. This should be the threshold between a "good" and
+	 * a "bad" link (example : monitor going from green to orange).
+	 * Currently, user space apps like quality monitors don't have any
+	 * way to calibrate the measurement. With this, they can split
+	 * the range between 0 and max_qual in different quality level
+	 * (using a geometric subdivision centered on the average).
+	 * I expect that people doing the user space apps will feedback
+	 * us on which value we need to put in each driver...
+	 */
+};
+
+/*
+ * Private ioctl interface information
+ */
+#if 0
+struct iwprivargs
+{
+	__u32           cmd;            /* Number of the ioctl to issue */
+        __u16           set_args;       /* Type and number of args */
+        __u16           get_args;       /* Type and number of args */
+        char            name[IFNAMSIZ]; /* Name of the extension */
+}
+#endif
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/*
+ * Wireless events are carried through the rtnetlink socket to user
+ * space. They are encapsulated in the IFLA_WIRELESS field of
+ * a RTM_NEWLINK message.
+ */
+
+/*
+ * A Wireless Event. Contains basically the same data as the ioctl...
+ */
+struct iw_event
+{
+	__u16		len;			/* Real lenght of this stuff */
+	__u16		cmd;			/* Wireless IOCTL */
+	union iwreq_data	u;		/* IOCTL fixed payload */
+};
+
+/* Size of the Event prefix (including padding and alignement junk) */
+#define IW_EV_LCP_LEN	(sizeof(struct iw_event) - sizeof(union iwreq_data))
+/* Size of the various events */
+#define IW_EV_CHAR_LEN	(IW_EV_LCP_LEN + IFNAMSIZ)
+#define IW_EV_UINT_LEN	(IW_EV_LCP_LEN + sizeof(__u32))
+#define IW_EV_FREQ_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_freq))
+#define IW_EV_POINT_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_point))
+#define IW_EV_PARAM_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_param))
+#define IW_EV_ADDR_LEN	(IW_EV_LCP_LEN + sizeof(struct sockaddr))
+#define IW_EV_QUAL_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_quality))
+
+/* Note : in the case of iw_point, the extra data will come at the
+ * end of the event */
+
+#endif	/* _LINUX_WIRELESS_H */
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.7 b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.7
new file mode 100644
index 0000000..9ee50cb
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.7
@@ -0,0 +1,100 @@
+.\" Jean Tourrilhes - HPL - 2002
+.\" wireless.7
+.\"
+.TH WIRELESS 7 "12 July 2002" "net-tools" "Linux Programmer's Manual"
+.\"
+.\" NAME part
+.\"
+.SH NAME
+wireless \- Wireless Tools and Wireless Extensions
+.\"
+.\" SYNOPSIS part
+.\"
+.SH SYNOPSIS
+.B iwconfig
+.br
+.B iwpriv -a
+.br
+.\"
+.\" DESCRIPTION part
+.\"
+.SH DESCRIPTION
+The
+.B Wireless Extensions
+is an API allowing you manipulate Wireless LAN networking interfaces.
+It is composed of a variety of tools and configuration files. It is
+documented in more details in the Linux Wireless LAN Howto.
+.br
+The
+.B Wireless Tools
+are use to change configuration on the fly, to get statistics and
+diagnose those interfaces. They are described in their own man page
+(see below).
+.br
+.B Wireless configuration
+is specific to each Linux distribution. This man page will contain in
+the future the configuration procedure for a few common distributions
+(when I get the necessary info from them). For the time being, check
+the various files included with the Wireless Tools package.
+.\"
+.\" DEBIAN 3.0 part
+.\"
+.SH DEBIAN 3.0
+Debian 3.0 (and later) has integrated wireless configuration in their
+network scripts.
+.TP
+.B File :
+.I /etc/network/interfaces
+.TP
+.B Form :
+.RI wireless_ "<function> <value>"
+.br
+wireless_essid Home
+.br
+wireless_mode ad_hoc
+.TP
+.B See also :
+.I /etc/network/if-pre-up.d/wireless-tool
+.br
+.I /usr/share/doc/wireless.##/README.Debian
+.\"
+.\" PCMCIA part
+.\"
+.SH ORIGINAL PCMCIA SCRIPTS
+If you are using the original configuration scripts from the Pcmcia
+package, you can use this method.
+.TP
+.B File :
+.I /etc/pcmcia/wireless.opts
+.TP
+.B Form :
+*,*,*,*)
+.br
+    ESSID="MY_ESSID"
+.br
+    MODE="Managed"
+.br
+    ;;
+.TP
+.B See also :
+.I /etc/pcmcia/wireless
+.br
+File
+.I PCMCIA.txt
+part of Wireless Tools package
+.\"
+.\" AUTHOR part
+.\"
+.SH AUTHOR
+Jean Tourrilhes \- jt@hpl.hp.com
+.br
+.I http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
+.\"
+.\" SEE ALSO part
+.\"
+.SH SEE ALSO
+.BR iwconfig (8),
+.BR iwlist (8),
+.BR iwspy (8),
+.BR iwpriv (8),
+.BR iwevent (8).
diff --git a/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.h b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.h
new file mode 100644
index 0000000..e43bdad
--- /dev/null
+++ b/package/kernel/realtek-wl/src/Users/wireless_tools.25/wireless.h
@@ -0,0 +1,706 @@
+/*
+ * This file define a set of standard wireless extensions
+ *
+ * Version :	15	12.7.02
+ *
+ * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
+ * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
+ */
+
+#ifndef _LINUX_WIRELESS_H
+#define _LINUX_WIRELESS_H
+
+/************************** DOCUMENTATION **************************/
+/*
+ * Initial APIs (1996 -> onward) :
+ * -----------------------------
+ * Basically, the wireless extensions are for now a set of standard ioctl
+ * call + /proc/net/wireless
+ *
+ * The entry /proc/net/wireless give statistics and information on the
+ * driver.
+ * This is better than having each driver having its entry because
+ * its centralised and we may remove the driver module safely.
+ *
+ * Ioctl are used to configure the driver and issue commands.  This is
+ * better than command line options of insmod because we may want to
+ * change dynamically (while the driver is running) some parameters.
+ *
+ * The ioctl mechanimsm are copied from standard devices ioctl.
+ * We have the list of command plus a structure descibing the
+ * data exchanged...
+ * Note that to add these ioctl, I was obliged to modify :
+ *	# net/core/dev.c (two place + add include)
+ *	# net/ipv4/af_inet.c (one place + add include)
+ *
+ * /proc/net/wireless is a copy of /proc/net/dev.
+ * We have a structure for data passed from the driver to /proc/net/wireless
+ * Too add this, I've modified :
+ *	# net/core/dev.c (two other places)
+ *	# include/linux/netdevice.h (one place)
+ *	# include/linux/proc_fs.h (one place)
+ *
+ * New driver API (2002 -> onward) :
+ * -------------------------------
+ * This file is only concerned with the user space API and common definitions.
+ * The new driver API is defined and documented in :
+ *	# include/net/iw_handler.h
+ *
+ * Note as well that /proc/net/wireless implementation has now moved in :
+ *	# include/linux/wireless.c
+ *
+ * Wireless Events (2002 -> onward) :
+ * --------------------------------
+ * Events are defined at the end of this file, and implemented in :
+ *	# include/linux/wireless.c
+ *
+ * Other comments :
+ * --------------
+ * Do not add here things that are redundant with other mechanisms
+ * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
+ * wireless specific.
+ *
+ * These wireless extensions are not magic : each driver has to provide
+ * support for them...
+ *
+ * IMPORTANT NOTE : As everything in the kernel, this is very much a
+ * work in progress. Contact me if you have ideas of improvements...
+ */
+
+/***************************** INCLUDES *****************************/
+
+#include <linux/types.h>		/* for "caddr_t" et al		*/
+#include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+#include <linux/if.h>			/* for IFNAMSIZ and co... */
+
+/***************************** VERSION *****************************/
+/*
+ * This constant is used to know the availability of the wireless
+ * extensions and to know which version of wireless extensions it is
+ * (there is some stuff that will be added in the future...)
+ * I just plan to increment with each new version.
+ */
+#define WIRELESS_EXT	15
+
+/*
+ * Changes :
+ *
+ * V2 to V3
+ * --------
+ *	Alan Cox start some incompatibles changes. I've integrated a bit more.
+ *	- Encryption renamed to Encode to avoid US regulation problems
+ *	- Frequency changed from float to struct to avoid problems on old 386
+ *
+ * V3 to V4
+ * --------
+ *	- Add sensitivity
+ *
+ * V4 to V5
+ * --------
+ *	- Missing encoding definitions in range
+ *	- Access points stuff
+ *
+ * V5 to V6
+ * --------
+ *	- 802.11 support (ESSID ioctls)
+ *
+ * V6 to V7
+ * --------
+ *	- define IW_ESSID_MAX_SIZE and IW_MAX_AP
+ *
+ * V7 to V8
+ * --------
+ *	- Changed my e-mail address
+ *	- More 802.11 support (nickname, rate, rts, frag)
+ *	- List index in frequencies
+ *
+ * V8 to V9
+ * --------
+ *	- Support for 'mode of operation' (ad-hoc, managed...)
+ *	- Support for unicast and multicast power saving
+ *	- Change encoding to support larger tokens (>64 bits)
+ *	- Updated iw_params (disable, flags) and use it for NWID
+ *	- Extracted iw_point from iwreq for clarity
+ *
+ * V9 to V10
+ * ---------
+ *	- Add PM capability to range structure
+ *	- Add PM modifier : MAX/MIN/RELATIVE
+ *	- Add encoding option : IW_ENCODE_NOKEY
+ *	- Add TxPower ioctls (work like TxRate)
+ *
+ * V10 to V11
+ * ----------
+ *	- Add WE version in range (help backward/forward compatibility)
+ *	- Add retry ioctls (work like PM)
+ *
+ * V11 to V12
+ * ----------
+ *	- Add SIOCSIWSTATS to get /proc/net/wireless programatically
+ *	- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
+ *	- Add new statistics (frag, retry, beacon)
+ *	- Add average quality (for user space calibration)
+ *
+ * V12 to V13
+ * ----------
+ *	- Document creation of new driver API.
+ *	- Extract union iwreq_data from struct iwreq (for new driver API).
+ *	- Rename SIOCSIWNAME as SIOCSIWCOMMIT
+ *
+ * V13 to V14
+ * ----------
+ *	- Wireless Events support : define struct iw_event
+ *	- Define additional specific event numbers
+ *	- Add "addr" and "param" fields in union iwreq_data
+ *	- AP scanning stuff (SIOCSIWSCAN and friends)
+ *
+ * V14 to V15
+ * ----------
+ *	- Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
+ *	- Make struct iw_freq signed (both m & e), add explicit padding
+ *	- Add IWEVCUSTOM for driver specific event/scanning token
+ *	- Add IW_MAX_GET_SPY for driver returning a lot of addresses
+ *	- Add IW_TXPOW_RANGE for range of Tx Powers
+ *	- Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
+ *	- Add IW_MODE_MONITOR for passive monitor
+ */
+
+/**************************** CONSTANTS ****************************/
+
+/* -------------------------- IOCTL LIST -------------------------- */
+
+/* Wireless Identification */
+#define SIOCSIWCOMMIT	0x8B00		/* Commit pending changes to driver */
+#define SIOCGIWNAME	0x8B01		/* get name == wireless protocol */
+/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
+ * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
+ * Don't put the name of your driver there, it's useless. */
+
+/* Basic operations */
+#define SIOCSIWNWID	0x8B02		/* set network id (pre-802.11) */
+#define SIOCGIWNWID	0x8B03		/* get network id (the cell) */
+#define SIOCSIWFREQ	0x8B04		/* set channel/frequency (Hz) */
+#define SIOCGIWFREQ	0x8B05		/* get channel/frequency (Hz) */
+#define SIOCSIWMODE	0x8B06		/* set operation mode */
+#define SIOCGIWMODE	0x8B07		/* get operation mode */
+#define SIOCSIWSENS	0x8B08		/* set sensitivity (dBm) */
+#define SIOCGIWSENS	0x8B09		/* get sensitivity (dBm) */
+
+/* Informative stuff */
+#define SIOCSIWRANGE	0x8B0A		/* Unused */
+#define SIOCGIWRANGE	0x8B0B		/* Get range of parameters */
+#define SIOCSIWPRIV	0x8B0C		/* Unused */
+#define SIOCGIWPRIV	0x8B0D		/* get private ioctl interface info */
+#define SIOCSIWSTATS	0x8B0E		/* Unused */
+#define SIOCGIWSTATS	0x8B0F		/* Get /proc/net/wireless stats */
+/* SIOCGIWSTATS is strictly used between user space and the kernel, and
+ * is never passed to the driver (i.e. the driver will never see it). */
+
+/* Mobile IP support (statistics per MAC address) */
+#define SIOCSIWSPY	0x8B10		/* set spy addresses */
+#define SIOCGIWSPY	0x8B11		/* get spy info (quality of link) */
+
+/* Access Point manipulation */
+#define SIOCSIWAP	0x8B14		/* set access point MAC addresses */
+#define SIOCGIWAP	0x8B15		/* get access point MAC addresses */
+#define SIOCGIWAPLIST	0x8B17		/* Deprecated in favor of scanning */
+#define SIOCSIWSCAN	0x8B18		/* trigger scanning (list cells) */
+#define SIOCGIWSCAN	0x8B19		/* get scanning results */
+
+/* 802.11 specific support */
+#define SIOCSIWESSID	0x8B1A		/* set ESSID (network name) */
+#define SIOCGIWESSID	0x8B1B		/* get ESSID */
+#define SIOCSIWNICKN	0x8B1C		/* set node name/nickname */
+#define SIOCGIWNICKN	0x8B1D		/* get node name/nickname */
+/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
+ * within the 'iwreq' structure, so we need to use the 'data' member to
+ * point to a string in user space, like it is done for RANGE... */
+
+/* Other parameters useful in 802.11 and some other devices */
+#define SIOCSIWRATE	0x8B20		/* set default bit rate (bps) */
+#define SIOCGIWRATE	0x8B21		/* get default bit rate (bps) */
+#define SIOCSIWRTS	0x8B22		/* set RTS/CTS threshold (bytes) */
+#define SIOCGIWRTS	0x8B23		/* get RTS/CTS threshold (bytes) */
+#define SIOCSIWFRAG	0x8B24		/* set fragmentation thr (bytes) */
+#define SIOCGIWFRAG	0x8B25		/* get fragmentation thr (bytes) */
+#define SIOCSIWTXPOW	0x8B26		/* set transmit power (dBm) */
+#define SIOCGIWTXPOW	0x8B27		/* get transmit power (dBm) */
+#define SIOCSIWRETRY	0x8B28		/* set retry limits and lifetime */
+#define SIOCGIWRETRY	0x8B29		/* get retry limits and lifetime */
+
+/* Encoding stuff (scrambling, hardware security, WEP...) */
+#define SIOCSIWENCODE	0x8B2A		/* set encoding token & mode */
+#define SIOCGIWENCODE	0x8B2B		/* get encoding token & mode */
+/* Power saving stuff (power management, unicast and multicast) */
+#define SIOCSIWPOWER	0x8B2C		/* set Power Management settings */
+#define SIOCGIWPOWER	0x8B2D		/* get Power Management settings */
+
+/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
+
+/* These 16 ioctl are wireless device private.
+ * Each driver is free to use them for whatever purpose it chooses,
+ * however the driver *must* export the description of those ioctls
+ * with SIOCGIWPRIV and *must* use arguments as defined below.
+ * If you don't follow those rules, DaveM is going to hate you (reason :
+ * it make mixed 32/64bit operation impossible).
+ */
+#define SIOCIWFIRSTPRIV	0x8BE0
+#define SIOCIWLASTPRIV	0x8BFF
+/* Previously, we were using SIOCDEVPRIVATE, but we now have our
+ * separate range because of collisions with other tools such as
+ * 'mii-tool'.
+ * We now have 32 commands, so a bit more space ;-).
+ * Also, all 'odd' commands are only usable by root and don't return the
+ * content of ifr/iwr to user (but you are not obliged to use the set/get
+ * convention, just use every other two command).
+ * And I repeat : you are not obliged to use them with iwspy, but you
+ * must be compliant with it.
+ */
+
+/* ------------------------- IOCTL STUFF ------------------------- */
+
+/* The first and the last (range) */
+#define SIOCIWFIRST	0x8B00
+#define SIOCIWLAST	SIOCIWLASTPRIV		/* 0x8BFF */
+
+/* Even : get (world access), odd : set (root access) */
+#define IW_IS_SET(cmd)	(!((cmd) & 0x1))
+#define IW_IS_GET(cmd)	((cmd) & 0x1)
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/* Those are *NOT* ioctls, do not issue request on them !!! */
+/* Most events use the same identifier as ioctl requests */
+
+#define IWEVTXDROP	0x8C00		/* Packet dropped to excessive retry */
+#define IWEVQUAL	0x8C01		/* Quality part of statistics (scan) */
+#define IWEVCUSTOM	0x8C02		/* Driver specific ascii string */
+#define IWEVREGISTERED	0x8C03		/* Discovered a new node (AP mode) */
+#define IWEVEXPIRED	0x8C04		/* Expired a node (AP mode) */
+
+#define IWEVFIRST	0x8C00
+
+/* ------------------------- PRIVATE INFO ------------------------- */
+/*
+ * The following is used with SIOCGIWPRIV. It allow a driver to define
+ * the interface (name, type of data) for its private ioctl.
+ * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
+ */
+
+#define IW_PRIV_TYPE_MASK	0x7000	/* Type of arguments */
+#define IW_PRIV_TYPE_NONE	0x0000
+#define IW_PRIV_TYPE_BYTE	0x1000	/* Char as number */
+#define IW_PRIV_TYPE_CHAR	0x2000	/* Char as character */
+#define IW_PRIV_TYPE_INT	0x4000	/* 32 bits int */
+#define IW_PRIV_TYPE_FLOAT	0x5000	/* struct iw_freq */
+#define IW_PRIV_TYPE_ADDR	0x6000	/* struct sockaddr */
+
+#define IW_PRIV_SIZE_FIXED	0x0800	/* Variable or fixed nuber of args */
+
+#define IW_PRIV_SIZE_MASK	0x07FF	/* Max number of those args */
+
+/*
+ * Note : if the number of args is fixed and the size < 16 octets,
+ * instead of passing a pointer we will put args in the iwreq struct...
+ */
+
+/* ----------------------- OTHER CONSTANTS ----------------------- */
+
+/* Maximum frequencies in the range struct */
+#define IW_MAX_FREQUENCIES	16
+/* Note : if you have something like 80 frequencies,
+ * don't increase this constant and don't fill the frequency list.
+ * The user will be able to set by channel anyway... */
+
+/* Maximum bit rates in the range struct */
+#define IW_MAX_BITRATES		8
+
+/* Maximum tx powers in the range struct */
+#define IW_MAX_TXPOWER		8
+/* Note : if you more than 8 TXPowers, just set the max and min or
+ * a few of them in the struct iw_range. */
+
+/* Maximum of address that you may set with SPY */
+#define IW_MAX_SPY		8	/* set */
+#define IW_MAX_GET_SPY		64	/* get */
+
+/* Maximum of address that you may get in the
+   list of access points in range */
+#define IW_MAX_AP		8
+
+/* Maximum size of the ESSID and NICKN strings */
+#define IW_ESSID_MAX_SIZE	32
+
+/* Modes of operation */
+#define IW_MODE_AUTO	0	/* Let the driver decides */
+#define IW_MODE_ADHOC	1	/* Single cell network */
+#define IW_MODE_INFRA	2	/* Multi cell network, roaming, ... */
+#define IW_MODE_MASTER	3	/* Synchronisation master or Access Point */
+#define IW_MODE_REPEAT	4	/* Wireless Repeater (forwarder) */
+#define IW_MODE_SECOND	5	/* Secondary master/repeater (backup) */
+#define IW_MODE_MONITOR	6	/* Passive monitor (listen only) */
+
+/* Maximum number of size of encoding token available
+ * they are listed in the range structure */
+#define IW_MAX_ENCODING_SIZES	8
+
+/* Maximum size of the encoding token in bytes */
+#define IW_ENCODING_TOKEN_MAX	32	/* 256 bits (for now) */
+
+/* Flags for encoding (along with the token) */
+#define IW_ENCODE_INDEX		0x00FF	/* Token index (if needed) */
+#define IW_ENCODE_FLAGS		0xFF00	/* Flags defined below */
+#define IW_ENCODE_MODE		0xF000	/* Modes defined below */
+#define IW_ENCODE_DISABLED	0x8000	/* Encoding disabled */
+#define IW_ENCODE_ENABLED	0x0000	/* Encoding enabled */
+#define IW_ENCODE_RESTRICTED	0x4000	/* Refuse non-encoded packets */
+#define IW_ENCODE_OPEN		0x2000	/* Accept non-encoded packets */
+#define IW_ENCODE_NOKEY         0x0800  /* Key is write only, so not present */
+
+/* Power management flags available (along with the value, if any) */
+#define IW_POWER_ON		0x0000	/* No details... */
+#define IW_POWER_TYPE		0xF000	/* Type of parameter */
+#define IW_POWER_PERIOD		0x1000	/* Value is a period/duration of  */
+#define IW_POWER_TIMEOUT	0x2000	/* Value is a timeout (to go asleep) */
+#define IW_POWER_MODE		0x0F00	/* Power Management mode */
+#define IW_POWER_UNICAST_R	0x0100	/* Receive only unicast messages */
+#define IW_POWER_MULTICAST_R	0x0200	/* Receive only multicast messages */
+#define IW_POWER_ALL_R		0x0300	/* Receive all messages though PM */
+#define IW_POWER_FORCE_S	0x0400	/* Force PM procedure for sending unicast */
+#define IW_POWER_REPEATER	0x0800	/* Repeat broadcast messages in PM period */
+#define IW_POWER_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_POWER_MIN		0x0001	/* Value is a minimum  */
+#define IW_POWER_MAX		0x0002	/* Value is a maximum */
+#define IW_POWER_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Transmit Power flags available */
+#define IW_TXPOW_TYPE		0x00FF	/* Type of value */
+#define IW_TXPOW_DBM		0x0000	/* Value is in dBm */
+#define IW_TXPOW_MWATT		0x0001	/* Value is in mW */
+#define IW_TXPOW_RANGE		0x1000	/* Range of value between min/max */
+
+/* Retry limits and lifetime flags available */
+#define IW_RETRY_ON		0x0000	/* No details... */
+#define IW_RETRY_TYPE		0xF000	/* Type of parameter */
+#define IW_RETRY_LIMIT		0x1000	/* Maximum number of retries*/
+#define IW_RETRY_LIFETIME	0x2000	/* Maximum duration of retries in us */
+#define IW_RETRY_MODIFIER	0x000F	/* Modify a parameter */
+#define IW_RETRY_MIN		0x0001	/* Value is a minimum  */
+#define IW_RETRY_MAX		0x0002	/* Value is a maximum */
+#define IW_RETRY_RELATIVE	0x0004	/* Value is not in seconds/ms/us */
+
+/* Scanning request flags */
+#define IW_SCAN_DEFAULT		0x0000	/* Default scan of the driver */
+#define IW_SCAN_ALL_ESSID	0x0001	/* Scan all ESSIDs */
+#define IW_SCAN_THIS_ESSID	0x0002	/* Scan only this ESSID */
+#define IW_SCAN_ALL_FREQ	0x0004	/* Scan all Frequencies */
+#define IW_SCAN_THIS_FREQ	0x0008	/* Scan only this Frequency */
+#define IW_SCAN_ALL_MODE	0x0010	/* Scan all Modes */
+#define IW_SCAN_THIS_MODE	0x0020	/* Scan only this Mode */
+#define IW_SCAN_ALL_RATE	0x0040	/* Scan all Bit-Rates */
+#define IW_SCAN_THIS_RATE	0x0080	/* Scan only this Bit-Rate */
+/* Maximum size of returned data */
+#define IW_SCAN_MAX_DATA	4096	/* In bytes */
+
+/* Max number of char in custom event - use multiple of them if needed */
+#define IW_CUSTOM_MAX		256	/* In bytes */
+
+/****************************** TYPES ******************************/
+
+/* --------------------------- SUBTYPES --------------------------- */
+/*
+ *	Generic format for most parameters that fit in an int
+ */
+struct	iw_param
+{
+  __s32		value;		/* The value of the parameter itself */
+  __u8		fixed;		/* Hardware should not use auto select */
+  __u8		disabled;	/* Disable the feature */
+  __u16		flags;		/* Various specifc flags (if any) */
+};
+
+/*
+ *	For all data larger than 16 octets, we need to use a
+ *	pointer to memory allocated in user space.
+ */
+struct	iw_point
+{
+  caddr_t	pointer;	/* Pointer to the data  (in user space) */
+  __u16		length;		/* number of fields or size in bytes */
+  __u16		flags;		/* Optional params */
+};
+
+/*
+ *	A frequency
+ *	For numbers lower than 10^9, we encode the number in 'm' and
+ *	set 'e' to 0
+ *	For number greater than 10^9, we divide it by the lowest power
+ *	of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
+ *	The power of 10 is in 'e', the result of the division is in 'm'.
+ */
+struct	iw_freq
+{
+	__s32		m;		/* Mantissa */
+	__s16		e;		/* Exponent */
+	__u8		i;		/* List index (when in range struct) */
+	__u8		pad;		/* Unused - just for alignement */
+};
+
+/*
+ *	Quality of the link
+ */
+struct	iw_quality
+{
+	__u8		qual;		/* link quality (%retries, SNR,
+					   %missed beacons or better...) */
+	__u8		level;		/* signal level (dBm) */
+	__u8		noise;		/* noise level (dBm) */
+	__u8		updated;	/* Flags to know if updated */
+};
+
+/*
+ *	Packet discarded in the wireless adapter due to
+ *	"wireless" specific problems...
+ *	Note : the list of counter and statistics in net_device_stats
+ *	is already pretty exhaustive, and you should use that first.
+ *	This is only additional stats...
+ */
+struct	iw_discarded
+{
+	__u32		nwid;		/* Rx : Wrong nwid/essid */
+	__u32		code;		/* Rx : Unable to code/decode (WEP) */
+	__u32		fragment;	/* Rx : Can't perform MAC reassembly */
+	__u32		retries;	/* Tx : Max MAC retries num reached */
+	__u32		misc;		/* Others cases */
+};
+
+/*
+ *	Packet/Time period missed in the wireless adapter due to
+ *	"wireless" specific problems...
+ */
+struct	iw_missed
+{
+	__u32		beacon;		/* Missed beacons/superframe */
+};
+
+/* ------------------------ WIRELESS STATS ------------------------ */
+/*
+ * Wireless statistics (used for /proc/net/wireless)
+ */
+struct	iw_statistics
+{
+	__u16		status;		/* Status
+					 * - device dependent for now */
+
+	struct iw_quality	qual;		/* Quality of the link
+						 * (instant/mean/max) */
+	struct iw_discarded	discard;	/* Packet discarded counts */
+	struct iw_missed	miss;		/* Packet missed counts */
+};
+
+/* ------------------------ IOCTL REQUEST ------------------------ */
+/*
+ * This structure defines the payload of an ioctl, and is used 
+ * below.
+ *
+ * Note that this structure should fit on the memory footprint
+ * of iwreq (which is the same as ifreq), which mean a max size of
+ * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
+ * You should check this when increasing the structures defined
+ * above in this file...
+ */
+union	iwreq_data
+{
+	/* Config - generic */
+	char		name[IFNAMSIZ];
+	/* Name : used to verify the presence of  wireless extensions.
+	 * Name of the protocol/provider... */
+
+	struct iw_point	essid;		/* Extended network name */
+	struct iw_param	nwid;		/* network id (or domain - the cell) */
+	struct iw_freq	freq;		/* frequency or channel :
+					 * 0-1000 = channel
+					 * > 1000 = frequency in Hz */
+
+	struct iw_param	sens;		/* signal level threshold */
+	struct iw_param	bitrate;	/* default bit rate */
+	struct iw_param	txpower;	/* default transmit power */
+	struct iw_param	rts;		/* RTS threshold threshold */
+	struct iw_param	frag;		/* Fragmentation threshold */
+	__u32		mode;		/* Operation mode */
+	struct iw_param	retry;		/* Retry limits & lifetime */
+
+	struct iw_point	encoding;	/* Encoding stuff : tokens */
+	struct iw_param	power;		/* PM duration/timeout */
+	struct iw_quality qual;		/* Quality part of statistics */
+
+	struct sockaddr	ap_addr;	/* Access point address */
+	struct sockaddr	addr;		/* Destination address (hw) */
+
+	struct iw_param	param;		/* Other small parameters */
+	struct iw_point	data;		/* Other large parameters */
+};
+
+/*
+ * The structure to exchange data for ioctl.
+ * This structure is the same as 'struct ifreq', but (re)defined for
+ * convenience...
+ * Do I need to remind you about structure size (32 octets) ?
+ */
+struct	iwreq 
+{
+	union
+	{
+		char	ifrn_name[IFNAMSIZ];	/* if name, e.g. "eth0" */
+	} ifr_ifrn;
+
+	/* Data part (defined just above) */
+	union	iwreq_data	u;
+};
+
+/* -------------------------- IOCTL DATA -------------------------- */
+/*
+ *	For those ioctl which want to exchange mode data that what could
+ *	fit in the above structure...
+ */
+
+/*
+ *	Range of parameters
+ */
+
+struct	iw_range
+{
+	/* Informative stuff (to choose between different interface) */
+	__u32		throughput;	/* To give an idea... */
+	/* In theory this value should be the maximum benchmarked
+	 * TCP/IP throughput, because with most of these devices the
+	 * bit rate is meaningless (overhead an co) to estimate how
+	 * fast the connection will go and pick the fastest one.
+	 * I suggest people to play with Netperf or any benchmark...
+	 */
+
+	/* NWID (or domain id) */
+	__u32		min_nwid;	/* Minimal NWID we are able to set */
+	__u32		max_nwid;	/* Maximal NWID we are able to set */
+
+	/* Frequency */
+	__u16		num_channels;	/* Number of channels [0; num - 1] */
+	__u8		num_frequency;	/* Number of entry in the list */
+	struct iw_freq	freq[IW_MAX_FREQUENCIES];	/* list */
+	/* Note : this frequency list doesn't need to fit channel numbers */
+
+	/* signal level threshold range */
+	__s32	sensitivity;
+
+	/* Quality of link & SNR stuff */
+	struct iw_quality	max_qual;	/* Quality of the link */
+
+	/* Rates */
+	__u8		num_bitrates;	/* Number of entries in the list */
+	__s32		bitrate[IW_MAX_BITRATES];	/* list, in bps */
+
+	/* RTS threshold */
+	__s32		min_rts;	/* Minimal RTS threshold */
+	__s32		max_rts;	/* Maximal RTS threshold */
+
+	/* Frag threshold */
+	__s32		min_frag;	/* Minimal frag threshold */
+	__s32		max_frag;	/* Maximal frag threshold */
+
+	/* Power Management duration & timeout */
+	__s32		min_pmp;	/* Minimal PM period */
+	__s32		max_pmp;	/* Maximal PM period */
+	__s32		min_pmt;	/* Minimal PM timeout */
+	__s32		max_pmt;	/* Maximal PM timeout */
+	__u16		pmp_flags;	/* How to decode max/min PM period */
+	__u16		pmt_flags;	/* How to decode max/min PM timeout */
+	__u16		pm_capa;	/* What PM options are supported */
+
+	/* Encoder stuff */
+	__u16	encoding_size[IW_MAX_ENCODING_SIZES];	/* Different token sizes */
+	__u8	num_encoding_sizes;	/* Number of entry in the list */
+	__u8	max_encoding_tokens;	/* Max number of tokens */
+
+	/* Transmit power */
+	__u16		txpower_capa;	/* What options are supported */
+	__u8		num_txpower;	/* Number of entries in the list */
+	__s32		txpower[IW_MAX_TXPOWER];	/* list, in bps */
+
+	/* Wireless Extension version info */
+	__u8		we_version_compiled;	/* Must be WIRELESS_EXT */
+	__u8		we_version_source;	/* Last update of source */
+
+	/* Retry limits and lifetime */
+	__u16		retry_capa;	/* What retry options are supported */
+	__u16		retry_flags;	/* How to decode max/min retry limit */
+	__u16		r_time_flags;	/* How to decode max/min retry life */
+	__s32		min_retry;	/* Minimal number of retries */
+	__s32		max_retry;	/* Maximal number of retries */
+	__s32		min_r_time;	/* Minimal retry lifetime */
+	__s32		max_r_time;	/* Maximal retry lifetime */
+
+	/* Average quality of link & SNR */
+	struct iw_quality	avg_qual;	/* Quality of the link */
+	/* This should contain the average/typical values of the quality
+	 * indicator. This should be the threshold between a "good" and
+	 * a "bad" link (example : monitor going from green to orange).
+	 * Currently, user space apps like quality monitors don't have any
+	 * way to calibrate the measurement. With this, they can split
+	 * the range between 0 and max_qual in different quality level
+	 * (using a geometric subdivision centered on the average).
+	 * I expect that people doing the user space apps will feedback
+	 * us on which value we need to put in each driver...
+	 */
+};
+
+/*
+ * Private ioctl interface information
+ */
+#if 0
+struct iwprivargs
+{
+	__u32           cmd;            /* Number of the ioctl to issue */
+        __u16           set_args;       /* Type and number of args */
+        __u16           get_args;       /* Type and number of args */
+        char            name[IFNAMSIZ]; /* Name of the extension */
+}
+#endif
+struct	iw_priv_args
+{
+	__u32		cmd;		/* Number of the ioctl to issue */
+	__u16		set_args;	/* Type and number of args */
+	__u16		get_args;	/* Type and number of args */
+	char		name[IFNAMSIZ];	/* Name of the extension */
+};
+
+/* ----------------------- WIRELESS EVENTS ----------------------- */
+/*
+ * Wireless events are carried through the rtnetlink socket to user
+ * space. They are encapsulated in the IFLA_WIRELESS field of
+ * a RTM_NEWLINK message.
+ */
+
+/*
+ * A Wireless Event. Contains basically the same data as the ioctl...
+ */
+struct iw_event
+{
+	__u16		len;			/* Real lenght of this stuff */
+	__u16		cmd;			/* Wireless IOCTL */
+	union iwreq_data	u;		/* IOCTL fixed payload */
+};
+
+/* Size of the Event prefix (including padding and alignement junk) */
+#define IW_EV_LCP_LEN	(sizeof(struct iw_event) - sizeof(union iwreq_data))
+/* Size of the various events */
+#define IW_EV_CHAR_LEN	(IW_EV_LCP_LEN + IFNAMSIZ)
+#define IW_EV_UINT_LEN	(IW_EV_LCP_LEN + sizeof(__u32))
+#define IW_EV_FREQ_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_freq))
+#define IW_EV_POINT_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_point))
+#define IW_EV_PARAM_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_param))
+#define IW_EV_ADDR_LEN	(IW_EV_LCP_LEN + sizeof(struct sockaddr))
+#define IW_EV_QUAL_LEN	(IW_EV_LCP_LEN + sizeof(struct iw_quality))
+
+/* Note : in the case of iw_point, the extra data will come at the
+ * end of the event */
+
+#endif	/* _LINUX_WIRELESS_H */