Subject: Re: Driver for Analog Devices ADT7467 environmental controller -
To: Michael <macallan18@earthlink.net>
From: Michael <macallan18@earthlink.net>
List: port-macppc
Date: 12/15/2004 13:02:38
This is a multi-part message in MIME format.

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hello,

AARGH, I accidentally hit the send button too early.
Here's the stuff.

have fun
Michael

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5
Content-Type: application/octet-stream;
 name="ki2c.patch"
Content-Disposition: attachment;
 filename="ki2c.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IGNvbmYvZmlsZXMubWFjcHBjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3Ny
Yy9zeXMvYXJjaC9tYWNwcGMvY29uZi9maWxlcy5tYWNwcGMsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNjMKZGlmZiAtdSAtdyAtcjEuNjMgZmlsZXMubWFjcHBjCi0tLSBjb25mL2ZpbGVzLm1hY3Bw
YwkyNSBNYXIgMjAwNCAxODo1MjoyNSAtMDAwMAkxLjYzCisrKyBjb25mL2ZpbGVzLm1hY3BwYwkx
NSBEZWMgMjAwNCAxNzoyOTo0NSAtMDAwMApAQCAtNzIsNiArNzIsMTIgQEAKIGF0dGFjaCB1bmlu
b3J0aCBhdCBtYWluYnVzCiBmaWxlIGFyY2gvbWFjcHBjL3BjaS91bmlub3J0aC5jCQkJdW5pbm9y
dGgKIAorIyBwc2V1ZG9kZXYgZm9yIHRoZSBVbmlOb3J0aCBob3N0IGNvbnRyb2xsZXIKK2RlZmlu
ZSB1bmlfbiB7fQorZGV2aWNlIHVuaV9uOiB1bmlfbgorYXR0YWNoIHVuaV9uIGF0IG1haW5idXMK
K2ZpbGUgYXJjaC9tYWNwcGMvZGV2L3VuaS1uLmMJCQl1bmlfbgorCiAjIFBDSSBidXMgc3VwcG9y
dAogaW5jbHVkZSAiZGV2L3BjaS9maWxlcy5wY2kiCiAKQEAgLTE5NSw4ICsyMDEsOSBAQAogZmls
ZSBhcmNoL21hY3BwYy9tYWNwcGMvcmJ1c19tYWNoZGVwLmMJCWNhcmRidXMKIAogIyBLZXl3ZXN0
IEkyQwotZGV2aWNlIGtpMmMge30KLWF0dGFjaCBraTJjIGF0IG9iaW8KK2RlZmluZSBraTJjIHt9
CitkZXZpY2Uga2kyYzogaTJjYnVzLCBraTJjCithdHRhY2gga2kyYyBhdCBvYmlvLCB1bmlfbgog
ZmlsZSBhcmNoL21hY3BwYy9kZXYva2kyYy5jCQkJa2kyYwogCiAjIHNuYXBwZXIgYXVkaW8KQEAg
LTIwNSwzICsyMTIsMTQgQEAKIGZpbGUgYXJjaC9tYWNwcGMvZGV2L3NuYXBwZXIuYwkJCXNuYXBw
ZXIKIAogaW5jbHVkZSAiYXJjaC9tYWNwcGMvY29uZi9tYWpvcnMubWFjcHBjIgorCitkZWZpbmUg
YWR0NzQ2N2Mge30KK2RldmljZSBhZHQ3NDY3Yzogc3lzbW9uX2VudnN5cworYXR0YWNoIGFkdDc0
NjdjIGF0IGtpMmMKK2ZpbGUgYXJjaC9tYWNwcGMvZGV2L2FkdDc0NjcuYwkJCWFkdDc0NjdjCisK
K2RlZmluZSBkZXEge30KK2RldmljZSBkZXEKK2F0dGFjaCBkZXEgYXQga2kyYworZmlsZSBhcmNo
L21hY3BwYy9kZXYvZGVxLmMJCQkJZGVxCisKSW5kZXg6IGRldi9raTJjLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9hcmNoL21hY3BwYy9kZXYva2kyYy5jLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtdyAtcjEuMSBraTJjLmMKLS0tIGRldi9raTJjLmMJ
MjcgRGVjIDIwMDMgMDI6MTk6MzQgLTAwMDAJMS4xCisrKyBkZXYva2kyYy5jCTE1IERlYyAyMDA0
IDE3OjI5OjQ2IC0wMDAwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSA8dXZtL3V2bV9leHRl
cm4uaD4KICNpbmNsdWRlIDxtYWNoaW5lL2F1dG9jb25mLmg+CiAKKyNpbmNsdWRlIDxkZXYvaTJj
L2kyY3Zhci5oPgorCiAvKiBLZXl3ZXN0IEkyQyBSZWdpc3RlciBvZmZzZXRzICovCiAjZGVmaW5l
IE1PREUJMAogI2RlZmluZSBDT05UUk9MCTEKQEAgLTg2LDYgKzg4LDkgQEAKIAl1X2NoYXIgKnNj
X3JlZzsKIAlpbnQgc2NfcmVnc3RlcDsKIAorCXN0cnVjdCBpMmNfY29udHJvbGxlciBzY19pMmM7
CisJc3RydWN0IGxvY2sgc2NfYnVzbG9jazsKKwogCWludCBzY19mbGFnczsKIAl1X2NoYXIgKnNj
X2RhdGE7CiAJaW50IHNjX3Jlc2lkOwpAQCAtMTA0LDYgKzEwOSwxNCBAQAogaW50IGtpMmNfc3Rh
cnQoc3RydWN0IGtpMmNfc29mdGMgKiwgaW50LCBpbnQsIHZvaWQgKiwgaW50KTsKIGludCBraTJj
X3JlYWQoc3RydWN0IGtpMmNfc29mdGMgKiwgaW50LCBpbnQsIHZvaWQgKiwgaW50KTsKIGludCBr
aTJjX3dyaXRlKHN0cnVjdCBraTJjX3NvZnRjICosIGludCwgaW50LCBjb25zdCB2b2lkICosIGlu
dCk7CitpbnQga2kyY19wcmludCBfX1AoKHZvaWQgKiwgY29uc3QgY2hhciAqKSk7CisKKy8qIEky
QyBnbHVlICovCitzdGF0aWMgaW50IGtpMmNfaTJjX2FjcXVpcmVfYnVzKHZvaWQgKiwgaW50KTsK
K3N0YXRpYyB2b2lkIGtpMmNfaTJjX3JlbGVhc2VfYnVzKHZvaWQgKiwgaW50KTsKK3N0YXRpYyBp
bnQJa2kyY19pMmNfZXhlYyh2b2lkICosIGkyY19vcF90LCBpMmNfYWRkcl90LCBjb25zdCB2b2lk
ICosIHNpemVfdCwKKwkJICAgIHZvaWQgKiwgc2l6ZV90LCBpbnQpOworCiAKIHN0cnVjdCBjZmF0
dGFjaCBraTJjX2NhID0gewogCSJraTJjIiwge30sIHNpemVvZihzdHJ1Y3Qga2kyY19zb2Z0Yyks
IGtpMmNfbWF0Y2gsIGtpMmNfYXR0YWNoCkBAIC0xMzIsNyArMTQ1LDEyIEBACiAJc3RydWN0IGtp
MmNfc29mdGMgKnNjID0gKHN0cnVjdCBraTJjX3NvZnRjICopc2VsZjsKIAlzdHJ1Y3QgY29uZmFy
Z3MgKmNhID0gYXV4OwogCWludCBub2RlID0gY2EtPmNhX25vZGU7Ci0JaW50IHJhdGU7CisJaW50
IHJhdGUsIGNoaWxkLCBuYW1lbGVuOworCXN0cnVjdCBjb25mYXJncyBjX2NhOworCXN0cnVjdCBp
MmNidXNfYXR0YWNoX2FyZ3MgaWJhOworCisJY2hhciBuYW1lWzMyXTsKKwl1X2ludCByZWdbMjBd
OwogCiAJY2EtPmNhX3JlZ1swXSArPSBjYS0+Y2FfYmFzZWFkZHI7CiAKQEAgLTE1Nyw2ICsxNzUs
NTYgQEAKIAogCWtpMmNfc2V0bW9kZShzYywgSTJDX1NURFNVQk1PREUpOwogCWtpMmNfc2V0c3Bl
ZWQoc2MsIEkyQ18xMDBrSHopOwkJLyogWFhYIHJhdGUgKi8KKwkKKwlsb2NraW5pdCgmc2MtPnNj
X2J1c2xvY2ssIFBSSUJJT3xQQ0FUQ0gsIHNjLT5zY19kZXYuZHZfeG5hbWUsIDAsIDApOworCisJ
LyogZmlsbCBpbiB0aGUgaTJjIHRhZyAqLworCXNjLT5zY19pMmMuaWNfY29va2llID0gc2M7CisJ
c2MtPnNjX2kyYy5pY19hY3F1aXJlX2J1cyA9IGtpMmNfaTJjX2FjcXVpcmVfYnVzOworCXNjLT5z
Y19pMmMuaWNfcmVsZWFzZV9idXMgPSBraTJjX2kyY19yZWxlYXNlX2J1czsKKwlzYy0+c2NfaTJj
LmljX3NlbmRfc3RhcnQgPSBOVUxMOworCXNjLT5zY19pMmMuaWNfc2VuZF9zdG9wID0gTlVMTDsK
KwlzYy0+c2NfaTJjLmljX2luaXRpYXRlX3hmZXIgPSBOVUxMOworCXNjLT5zY19pMmMuaWNfcmVh
ZF9ieXRlID0gTlVMTDsKKwlzYy0+c2NfaTJjLmljX3dyaXRlX2J5dGUgPSBOVUxMOworCXNjLT5z
Y19pMmMuaWNfZXhlYz1raTJjX2kyY19leGVjOworCisJaWJhLmliYV9uYW1lID0gImlpYyI7CisJ
aWJhLmliYV90YWcgPSAmc2MtPnNjX2kyYzsKKwkodm9pZCkgY29uZmlnX2ZvdW5kKCZzYy0+c2Nf
ZGV2LCAmaWJhLCBpaWNidXNfcHJpbnQpOworCisKKwlmb3IgKGNoaWxkID0gT0ZfY2hpbGQobm9k
ZSk7IGNoaWxkOyBjaGlsZCA9IE9GX3BlZXIoY2hpbGQpKSB7CisJCW5hbWVsZW4gPSBPRl9nZXRw
cm9wKGNoaWxkLCAibmFtZSIsIG5hbWUsIHNpemVvZihuYW1lKSk7CisJCWlmIChuYW1lbGVuIDwg
MCkKKwkJCWNvbnRpbnVlOworCQlpZiAobmFtZWxlbiA+PSBzaXplb2YobmFtZSkpCisJCQljb250
aW51ZTsKKworCQluYW1lW25hbWVsZW5dID0gMDsKKwkJY19jYS5jYV9uYW1lID0gbmFtZTsKKwkJ
Y19jYS5jYV9ub2RlID0gY2hpbGQ7CisJCWNfY2EuY2FfbnJlZyAgPSBPRl9nZXRwcm9wKGNoaWxk
LCAicmVnIiwgcmVnLCBzaXplb2YocmVnKSk7CisJCWNfY2EuY2FfcmVnID0gcmVnOworCQljX2Nh
LmNhX2Jhc2VhZGRyPSh1X2ludCkmc2MtPnNjX2kyYzsJLyogdWdseSwgYnV0IHdlIG11c3QgcGFz
cyB0aGUgaTJjIHNvbWVob3cgKi8KKwkJY29uZmlnX2ZvdW5kKHNlbGYsICZjX2NhLCBraTJjX3By
aW50KTsKKwl9Cit9CisKK2ludAora2kyY19wcmludChhdXgsIGtpMmMpCisJdm9pZCAqYXV4Owor
CWNvbnN0IGNoYXIgKmtpMmM7Cit7CisJc3RydWN0IGNvbmZhcmdzICpjYSA9IGF1eDsKKworCWlm
IChraTJjKQorCQlhcHJpbnRfbm9ybWFsKCIlcyBhdCAlcyIsIGNhLT5jYV9uYW1lLCBraTJjKTsK
KworCWlmIChjYS0+Y2FfbnJlZyA+IDApCisJCWFwcmludF9ub3JtYWwoIiBhZGRyZXNzIDB4JXgi
LCBjYS0+Y2FfcmVnWzBdKTsKKworCXJldHVybiBVTkNPTkY7CiB9CiAKIHVfaW50CkBAIC0yMzEs
NyArMjk5LDYgQEAKIAl1X2ludCBpc3IsIHg7CiAKIAlpc3IgPSBraTJjX3JlYWRyZWcoc2MsIElT
Uik7Ci0KIAlpZiAoaXNyICYgSTJDX0lOVF9BRERSKSB7CiAjaWYgMAogCQlpZiAoKGtpMmNfcmVh
ZHJlZyhzYywgU1RBVFVTKSAmIEkyQ19TVF9MQVNUQUFLKSA9PSAwKSB7CkBAIC0zNTMsNiArNDIw
LDkgQEAKIAl2b2lkICpkYXRhOwogewogCXNjLT5zY19mbGFncyA9IEkyQ19SRUFESU5HOworCSNp
ZmRlZiBLSTJDX0RFQlVHCisJCXByaW50Zigia2kyY19yZWFkOiAlMDJ4ICVkXG4iLGFkZHIsbGVu
KTsKKwkjZW5kaWYKIAlyZXR1cm4ga2kyY19zdGFydChzYywgYWRkciwgc3ViYWRkciwgZGF0YSwg
bGVuKTsKIH0KIApAQCAtMzYzLDUgKzQzMyw0MSBAQAogCWNvbnN0IHZvaWQgKmRhdGE7CiB7CiAJ
c2MtPnNjX2ZsYWdzID0gMDsKKwkjaWZkZWYgS0kyQ19ERUJVRworCQlwcmludGYoImtpMmNfd3Jp
dGU6ICUwMnggJWRcbiIsYWRkcixsZW4pOworCSNlbmRpZgogCXJldHVybiBraTJjX3N0YXJ0KHNj
LCBhZGRyLCBzdWJhZGRyLCAodm9pZCAqKWRhdGEsIGxlbik7CiB9CisKK3N0YXRpYyBpbnQKK2tp
MmNfaTJjX2FjcXVpcmVfYnVzKHZvaWQgKmNvb2tpZSwgaW50IGZsYWdzKQoreworCXN0cnVjdCBr
aTJjX3NvZnRjICpzYyA9IGNvb2tpZTsKKworCXJldHVybiAobG9ja21ncigmc2MtPnNjX2J1c2xv
Y2ssIExLX0VYQ0xVU0lWRSwgTlVMTCkpOworfQorCitzdGF0aWMgdm9pZAora2kyY19pMmNfcmVs
ZWFzZV9idXModm9pZCAqY29va2llLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGtpMmNfc29mdGMg
KnNjID0gY29va2llOworCisJKHZvaWQpIGxvY2ttZ3IoJnNjLT5zY19idXNsb2NrLCBMS19SRUxF
QVNFLCBOVUxMKTsKK30KKworaW50CitraTJjX2kyY19leGVjKHZvaWQgKmNvb2tpZSwgaTJjX29w
X3Qgb3AsIGkyY19hZGRyX3QgYWRkciwgY29uc3Qgdm9pZCAqdmNtZCwKKyAgICBzaXplX3QgY21k
bGVuLCB2b2lkICp2YnVmLCBzaXplX3QgYnVmbGVuLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGtp
MmNfc29mdGMgKnNjID0gY29va2llOworCQorCWtpMmNfc2V0bW9kZShzYywgSTJDX1NURE1PREUp
OwkvKiB3ZSBoYW5kbGUgdGhlIHN1YmFkZHJlc3Mgc3R1ZmYgb3Vyc2VsdmVzICovCisJaWYoa2ky
Y193cml0ZShzYyxhZGRyLDAsdmNtZCxjbWRsZW4pIT0wKQorCQlyZXR1cm4gLTE7CisJaWYgKEky
Q19PUF9SRUFEX1Aob3ApKQorCXsKKwkJaWYoa2kyY19yZWFkKHNjLGFkZHIsMCx2YnVmLGJ1Zmxl
bikhPTApCisJCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQpJbmRleDogZGV2L3NuYXBw
ZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2FyY2gvbWFjcHBjL2Rl
di9zbmFwcGVyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC13IC1yMS4yIHNu
YXBwZXIuYwotLS0gZGV2L3NuYXBwZXIuYwkyOSBPY3QgMjAwNCAxMjo1NzoxNiAtMDAwMAkxLjIK
KysrIGRldi9zbmFwcGVyLmMJMTUgRGVjIDIwMDQgMTc6Mjk6NDcgLTAwMDAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlIDxzeXMvYXVkaW9pby5oPgogI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4K
ICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiAKICNpbmNs
dWRlIDxkZXYvYXVjb252Lmg+CiAjaW5jbHVkZSA8ZGV2L2F1ZGlvX2lmLmg+CkBAIC01NCw2ICs1
NSw4IEBACiAjIGRlZmluZSBEUFJJTlRGIHdoaWxlICgwKSBwcmludGYKICNlbmRpZgogCisjZGVm
aW5lIFVTRV9NQUxMT0MKKwogc3RydWN0IHNuYXBwZXJfc29mdGMgewogCXN0cnVjdCBkZXZpY2Ug
c2NfZGV2OwogCWludCBzY19mbGFnczsKQEAgLTcwLDE1ICs3MywyMCBAQAogCXVfaW50IHNjX291
dHB1dF9tYXNrOwkJLyogb3V0cHV0IHNvdXJjZSBtYXNrICovCiAKIAl1X2NoYXIgKnNjX3JlZzsK
LQlzdHJ1Y3QgZGV2aWNlICpzY19pMmM7CiAKIAl1X2ludCBzY192b2xfbDsKIAl1X2ludCBzY192
b2xfcjsKIAogCWRiZG1hX3JlZ21hcF90ICpzY19vZG1hOwogCWRiZG1hX3JlZ21hcF90ICpzY19p
ZG1hOworCSNpZmRlZiBVU0VfTUFMTE9DCisJc3RydWN0IGRiZG1hX2NvbW1hbmQgKnNjX29kbWFj
bWQ7CisJc3RydWN0IGRiZG1hX2NvbW1hbmQgKnNjX2lkbWFjbWQ7CisJI2Vsc2UKIAlzdHJ1Y3Qg
ZGJkbWFfY29tbWFuZCBzY19vZG1hY21kWzIwXTsKIAlzdHJ1Y3QgZGJkbWFfY29tbWFuZCBzY19p
ZG1hY21kWzIwXTsKKwkjZW5kaWYKKwlzdHJ1Y3QgZGV2aWNlICpzY19pMmM7CiB9OwogCiBpbnQg
c25hcHBlcl9tYXRjaChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBjZmRhdGEgKiwgdm9pZCAqKTsK
QEAgLTMyMSw5ICszMjksMTkgQEAKIAlpbnQgY2lycSwgb2lycSwgaWlycSwgY2lycV90eXBlLCBv
aXJxX3R5cGUsIGlpcnFfdHlwZTsKIAlpbnQgc291bmRidXMsIGludHJbNl07CiAKKyNpZmRlZiBV
U0VfTUFMTE9DCisJaWYoKHNjLT5zY19vZG1hY21kPW1hbGxvYyg0MCpzaXplb2Yoc3RydWN0IGRi
ZG1hX2NvbW1hbmQpLE1fREVWQlVGLCBNX05PV0FJVCB8IE1fWkVSTykpPT1OVUxMKSB7CisJCXBy
aW50ZigiJXM6IGNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIERCRE1BXG4iLHNlbGYtPmR2X3hu
YW1lKTsKKwkJcmV0dXJuOworCX0KKwlwcmludGYoImRiZG1hOiAlMDh4XG4iLCh1aW50MzJfdClz
Yy0+c2Nfb2RtYWNtZCk7CisJCisJc2MtPnNjX2lkbWFjbWQ9JnNjLT5zY19vZG1hY21kWzIwXTsK
KyNlbmRpZgorCiAjaWZkZWYgRElBR05PU1RJQwogCWlmICgodmFkZHJfdClzYy0+c2Nfb2RtYWNt
ZCAmIDB4MGYpIHsKLQkJcHJpbnRmKCI6IGJhZCBkYmRtYSBhbGlnbm1lbnRcbiIpOworCQlwcmlu
dGYoIjogYmFkIGRiZG1hIGFsaWdubWVudCAoJTA4eClcbiIsKHVpbnQzMl90KXNjLT5zY19vZG1h
Y21kKTsKIAkJcmV0dXJuOwogCX0KICNlbmRpZgpAQCAtMzMzLDkgKzM1MSwxNCBAQAogCWNhLT5j
YV9yZWdbNF0gKz0gY2EtPmNhX2Jhc2VhZGRyOwogCiAJc2MtPnNjX25vZGUgPSBjYS0+Y2Ffbm9k
ZTsKLQlzYy0+c2NfcmVnID0gKHZvaWQgKiljYS0+Y2FfcmVnWzBdOworCXNjLT5zY19yZWcgPSBt
YXBpb2RldihjYS0+Y2FfcmVnWzBdLCBjYS0+Y2FfcmVnWzFdKTsKKworCXNjLT5zY19vZG1hID0g
bWFwaW9kZXYoY2EtPmNhX3JlZ1syXSwgY2EtPmNhX3JlZ1szXSk7IC8qIG91dCAqLworCXNjLT5z
Y19pZG1hID0gbWFwaW9kZXYoY2EtPmNhX3JlZ1s0XSwgY2EtPmNhX3JlZ1s1XSk7IC8qIGluICov
CisKKy8qCXNjLT5zY19yZWcgPSAodm9pZCAqKWNhLT5jYV9yZWdbMF07CiAJc2MtPnNjX29kbWEg
PSAodm9pZCAqKWNhLT5jYV9yZWdbMl07Ci0Jc2MtPnNjX2lkbWEgPSAodm9pZCAqKWNhLT5jYV9y
ZWdbNF07CisJc2MtPnNjX2lkbWEgPSAodm9pZCAqKWNhLT5jYV9yZWdbNF07Ki8KIAogCXNvdW5k
YnVzID0gT0ZfY2hpbGQoY2EtPmNhX25vZGUpOwogCU9GX2dldHByb3Aoc291bmRidXMsICJpbnRl
cnJ1cHRzIiwgaW50ciwgc2l6ZW9mIGludHIpOwpAQCAtMzQ2LDcgKzM2OSw3IEBACiAJb2lycV90
eXBlID0gaW50clszXSA/IElTVF9MRVZFTCA6IElTVF9FREdFOwogCWlpcnFfdHlwZSA9IGludHJb
NV0gPyBJU1RfTEVWRUwgOiBJU1RfRURHRTsKIAotCS8qIGludHJfZXN0YWJsaXNoKGNpcnEsIGNp
cnFfdHlwZSwgSVBMX0FVRElPLCBzbmFwcGVyX2ludHIsIHNjKTsgKi8KKwlpbnRyX2VzdGFibGlz
aChjaXJxLCBjaXJxX3R5cGUsIElQTF9BVURJTywgc25hcHBlcl9pbnRyLCBzYyk7CiAJaW50cl9l
c3RhYmxpc2gob2lycSwgb2lycV90eXBlLCBJUExfQVVESU8sIHNuYXBwZXJfaW50ciwgc2MpOwog
CS8qIGludHJfZXN0YWJsaXNoKGlpcnEsIGlpcnFfdHlwZSwgSVBMX0FVRElPLCBzbmFwcGVyX2lu
dHIsIHNjKTsgKi8KIApAQCAtMzYxLDEwICszODQsMTUgQEAKIAlzdHJ1Y3Qgc25hcHBlcl9zb2Z0
YyAqc2MgPSAoc3RydWN0IHNuYXBwZXJfc29mdGMgKilkZXY7CiAJc3RydWN0IGRldmljZSAqZHY7
CiAKLQlmb3IgKGR2ID0gYWxsZGV2cy50cWhfZmlyc3Q7IGR2OyBkdj1kdi0+ZHZfbGlzdC50cWVf
bmV4dCkKKwkvKmZvciAoZHYgPSBhbGxkZXZzLnRxaF9maXJzdDsgZHY7IGR2PWR2LT5kdl9saXN0
LnRxZV9uZXh0KQogCQlpZiAoc3RybmNtcChkdi0+ZHZfeG5hbWUsICJraTJjIiwgNCkgPT0gMCAm
JgogCQkgICAgc3RybmNtcChkdi0+ZHZfcGFyZW50LT5kdl94bmFtZSwgIm9iaW8iLCA0KSA9PSAw
KQotCQkJc2MtPnNjX2kyYyA9IGR2OworCQkJc2MtPnNjX2kyYyA9IGR2OyovCisJZm9yIChkdiA9
IGFsbGRldnMudHFoX2ZpcnN0OyBkdjsgZHY9ZHYtPmR2X2xpc3QudHFlX25leHQpCisJCWlmIChz
dHJuY21wKGR2LT5kdl94bmFtZSwgImRlcSIsIDMpID09IDAgJiYKKwkJICAgIHN0cm5jbXAoZHYt
PmR2X3BhcmVudC0+ZHZfeG5hbWUsICJraTJjIiwgNCkgPT0gMCkKKwkJCXNjLT5zY19pMmMgPSBk
di0+ZHZfcGFyZW50OworCiAJaWYgKHNjLT5zY19pMmMgPT0gTlVMTCkgewogCQlwcmludGYoIiVz
OiB1bmFibGUgdG8gZmluZCBpMmNcbiIsIHNjLT5zY19kZXYuZHZfeG5hbWUpOwogCQlyZXR1cm47
CkBAIC0zNzMsNyArNDAxLDcgQEAKIAkvKiBYWFggSWYgaTJjIHdhcyBmYWlsZWQgdG8gYXR0YWNo
LCB3aGF0IHNob3VsZCB3ZSBkbz8gKi8KIAogCWF1ZGlvX2F0dGFjaF9taSgmc25hcHBlcl9od19p
Ziwgc2MsICZzYy0+c2NfZGV2KTsKLQorCXByaW50ZigiJXM6IHVzaW5nICVzXG4iLHNjLT5zY19k
ZXYuZHZfeG5hbWUsc2MtPnNjX2kyYy0+ZHZfeG5hbWUpOwogCS8qIGtpMmNfc2V0bW9kZShzYy0+
c2NfaTJjLCBJMkNfU1REU1VCTU9ERSk7ICovCiAJc25hcHBlcl9pbml0KHNjLCBzYy0+c2Nfbm9k
ZSk7CiB9Cg==

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5
Content-Type: application/octet-stream;
 name="adt7467.c"
Content-Disposition: attachment;
 filename="adt7467.c"
Content-Transfer-Encoding: base64

LyoJJE5ldEJTRDogZmFuLmMsdiAxLjIwIDIwMDQvMTIvMDkgMDM6MTk6NTYgYnJpZ2dzIEV4cCAk
CSovCgovKi0KICogQ29weXJpZ2h0IChDKSAxOTk4CUludGVybmV0IFJlc2VhcmNoIEluc3RpdHV0
ZSwgSW5jLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0
ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAg
bXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKglUaGlzIHByb2R1
Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5CiAqCUludGVybmV0IFJlc2VhcmNoIElu
c3RpdHV0ZSwgSW5jLgogKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKICogICAgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFO
WSBFWFBSRVNTIE9SCiAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKICogT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KICogSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULAogKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQKICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAogKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCgovKiBh
IGRyaXZlciBmb3QgdGhlIEFEVDc0NjcgZW52aXJvbm1lbnRhbCBjb250cm9sbGVyIGZvdW5kIGlu
IHRoZSBpQm9vayBHNCAKICAgYW5kIHByb2JhYmx5IG90aGVyIEFwcGxlIG1hY2hpbmVzICovCgov
KiB0b2RvOiBnZXQgdGhlIHBhcmVudGFsIGludGVyZmFjZSByaWdodCwgdGhpcyBpcyBhbiB1Z2x5
IGhhY2suIFRoZSBkcml2ZXIKICAgc2hvdWxkIHdvcmsgd2l0aCBBTlkgaTJjIGJ1cyBhcyBwYXJl
bnQgKi8KI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgpfX0tFUk5FTF9SQ1NJRCgwLCAiJE5ldEJTRDog
ZmFuLmMsdiAxLjIwIDIwMDQvMTIvMDkgMDM6MTk6NTYgYnJpZ2dzIEV4cCAkIik7CgojaW5jbHVk
ZSA8c3lzL3BhcmFtLmg+CiNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KI2luY2x1ZGUgPHN5cy9rZXJu
ZWwuaD4KI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KI2lu
Y2x1ZGUgPHN5cy9zeXNjdGwuaD4KCiNpbmNsdWRlIDx1dm0vdXZtX2V4dGVybi5oPgoKI2luY2x1
ZGUgPGRldi9vZncvb3BlbmZpcm0uaD4KI2luY2x1ZGUgPGRldi9pMmMvaTJjdmFyLmg+CgojaW5j
bHVkZSA8bWFjaGluZS9hdXRvY29uZi5oPgojaW5jbHVkZSA8ZGV2L3N5c21vbi9zeXNtb252YXIu
aD4KI2luY2x1ZGUgInN5c21vbl9lbnZzeXMuaCIKCgpzdGF0aWMgdm9pZCBhZHQ3NDY3Y19hdHRh
Y2ggX19QKChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSk7CnN0YXRp
YyBpbnQgYWR0NzQ2N2NfbWF0Y2ggX19QKChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBjZmRhdGEg
Kiwgdm9pZCAqKSk7CgpzdHJ1Y3QgYWR0NzQ2N2Nfc29mdGMgewoJc3RydWN0IGRldmljZSBzY19k
ZXY7CglzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7CglpbnQgc2Nfbm9kZSwgYWRkcmVzczsKCWludCBu
dW1fc2Vuc29yczsKCXN0cnVjdCBzeXNtb25fZW52c3lzICpzY19zeXNtb25fY29va2llOwoJc3Ry
dWN0IGkyY19jb250cm9sbGVyICpzY19pMmM7Cgl1aW50OF90IHJlZ3NbMzJdOwp9OwoKc3RydWN0
IGFkdDc0NjdjX3N5c21vbiB7CgkJc3RydWN0IHN5c21vbl9lbnZzeXMgc21lOwoJCXN0cnVjdCBh
ZHQ3NDY3Y19zb2Z0YyAqc2M7CgkJc3RydWN0IGVudnN5c190cmVfZGF0YSBhZHQ3NDY3Y19pbmZv
W107Cgl9OwoKc3RydWN0IHJlZ2Rlc2MgewoJc3RydWN0IGkyY19jb250cm9sbGVyICpyZF9pMmM7
Cgl1aW50MzJfdCByZF9yZWc7Cn07CgpzdGF0aWMgdWludDhfdCBhZHQ3NDY3Y19yZWFkcmVnKHN0
cnVjdCBhZHQ3NDY3Y19zb2Z0YyAqLCB1aW50OF90KTsKc3RhdGljIHZvaWQgYWR0NzQ2N2Nfd3Jp
dGVyZWcoc3RydWN0IGFkdDc0NjdjX3NvZnRjICosIHVpbnQ4X3QsIHVpbnQ4X3QpOwpzdGF0aWMg
dm9pZCBhZHQ3NDY3Y19zZXR1cChzdHJ1Y3QgYWR0NzQ2N2Nfc29mdGMgKik7CmludCBzZW5zb3Jf
dHlwZShjaGFyICopOwppbnQgdGVtcDJtdWsodWludDhfdCk7CmludCByZWcycnBtKHVpbnQxNl90
KTsKaW50IGFkdDc0NjdjX2d0cmVkYXRhKHN0cnVjdCBzeXNtb25fZW52c3lzICosIHN0cnVjdCBl
bnZzeXNfdHJlX2RhdGEgKik7CmludCBhZHQ3NDY3Y19zdHJlaW5mbyhzdHJ1Y3Qgc3lzbW9uX2Vu
dnN5cyAqLCBzdHJ1Y3QgZW52c3lzX2Jhc2ljX2luZm8gKik7CgpDRkFUVEFDSF9ERUNMKGFkdDc0
NjdjLCBzaXplb2Yoc3RydWN0IGFkdDc0NjdjX3NvZnRjKSwKICAgIGFkdDc0NjdjX21hdGNoLCBh
ZHQ3NDY3Y19hdHRhY2gsIE5VTEwsIE5VTEwpOwoKaW50CmFkdDc0NjdjX21hdGNoKHBhcmVudCwg
Y2YsIGF1eCkKCXN0cnVjdCBkZXZpY2UgKnBhcmVudDsKCXN0cnVjdCBjZmRhdGEgKmNmOwoJdm9p
ZCAqYXV4Owp7CglzdHJ1Y3QgY29uZmFyZ3MgKmNhID0gYXV4OwoJY2hhciBjb21wYXRbMzJdOwoJ
aWYgKHN0cmNtcChjYS0+Y2FfbmFtZSwgImZhbiIpICE9IDApCgkJcmV0dXJuIDA7CgoJbWVtc2V0
KGNvbXBhdCwgMCwgc2l6ZW9mKGNvbXBhdCkpOwoJT0ZfZ2V0cHJvcChjYS0+Y2Ffbm9kZSwgImNv
bXBhdGlibGUiLCBjb21wYXQsIHNpemVvZihjb21wYXQpKTsKCWlmIChzdHJjbXAoY29tcGF0LCAi
YWR0NzQ2NyIpICE9IDApCgkJcmV0dXJuIDA7CgkKCXJldHVybiAxOwp9Cgp2b2lkCmFkdDc0Njdj
X2F0dGFjaChwYXJlbnQsIHNlbGYsIGF1eCkKCXN0cnVjdCBkZXZpY2UgKnBhcmVudCwgKnNlbGY7
Cgl2b2lkICphdXg7CnsKCXN0cnVjdCBhZHQ3NDY3Y19zb2Z0YyAqc2MgPSAoc3RydWN0IGFkdDc0
NjdjX3NvZnRjICopc2VsZjsKCXN0cnVjdCBjb25mYXJncyAqY2EgPSBhdXg7CglpbnQgbm9kZTsK
Cglub2RlID0gY2EtPmNhX25vZGU7CglzYy0+c2Nfbm9kZSA9IG5vZGU7CglzYy0+cGFyZW50PXBh
cmVudDsKCXNjLT5hZGRyZXNzPWNhLT5jYV9yZWdbMF0mMHhmZTsKCXByaW50ZigiIEFEVDc0Njcg
dGhlcm1hbCBtb25pdG9yIGFuZCBmYW4gY29udHJvbGxlclxuIik7CglzYy0+c2NfaTJjPShzdHJ1
Y3QgaTJjX2NvbnRyb2xsZXIgKiljYS0+Y2FfYmFzZWFkZHI7CiNpZmRlZiBBRFQ3NDY3X0RFQlVH
CglwcmludGYoIlxuJXM6IG5vZGUgJTA4eFxuIixzYy0+c2NfZGV2LmR2X3huYW1lLG5vZGUpOwoj
ZW5kaWYKCWFkdDc0NjdjX3NldHVwKHNjKTsKI2lmZGVmIEFEVDc0NjdfREVCVUcKCXByaW50Zigi
JWQgJWQgJWRcbiIsYWR0NzQ2N2NfcmVhZHJlZyhzYywweDY4KSxhZHQ3NDY3Y19yZWFkcmVnKHNj
LDB4NjkpLGFkdDc0NjdjX3JlYWRyZWcoc2MsMHg2NykpOwojZW5kaWYKfQoKdWludDhfdCBhZHQ3
NDY3Y19yZWFkcmVnKHN0cnVjdCBhZHQ3NDY3Y19zb2Z0YyAqc2MsIHVpbnQ4X3QgcmVnKQp7Cgl1
aW50OF90IGRhdGE9MDs7CglpaWNfYWNxdWlyZV9idXMoc2MtPnNjX2kyYywwKTsKCWlpY19leGVj
KHNjLT5zY19pMmMsIEkyQ19PUF9SRUFELHNjLT5hZGRyZXNzLCZyZWcsMSwmZGF0YSwxLDApOwoJ
aWljX3JlbGVhc2VfYnVzKHNjLT5zY19pMmMsMCk7CglyZXR1cm4gZGF0YTsKfQoKdm9pZCBhZHQ3
NDY3Y193cml0ZXJlZyhzdHJ1Y3QgYWR0NzQ2N2Nfc29mdGMgKnNjLCB1aW50OF90IHJlZywgdWlu
dDhfdCBkYXRhKQp7Cgl1aW50OF90IG1kYXRhWzJdPXtyZWcsZGF0YX07CglpaWNfYWNxdWlyZV9i
dXMoc2MtPnNjX2kyYywwKTsKCWlpY19leGVjKHNjLT5zY19pMmMsIEkyQ19PUF9XUklURSxzYy0+
YWRkcmVzcywmbWRhdGEsMixOVUxMLDAsMCk7CglpaWNfcmVsZWFzZV9idXMoc2MtPnNjX2kyYyww
KTsKfQoKI2lmIE5TWVNNT05fRU5WU1lTID4gMAoKc3RydWN0IGVudnN5c19yYW5nZSAqYWR0NzQ2
N2NfcmFuZ2VzOwpzdHJ1Y3QgZW52c3lzX2Jhc2ljX2luZm8gKmFkdDc0NjdjX2luZm87CgppbnQg
c2Vuc29yX3R5cGUoY2hhciAqdCkKewoJaWYoc3RyY21wKHQsInRlbXBlcmF0dXJlIik9PTApCgkJ
cmV0dXJuIEVOVlNZU19TVEVNUDsKCWlmKHN0cmNtcCh0LCJ2b2x0YWdlIik9PTApCgkJcmV0dXJu
IEVOVlNZU19TVk9MVFNfREM7CglpZihzdHJjbXAodCwiZmFuc3BlZWQiKT09MCkKCQlyZXR1cm4g
RU5WU1lTX1NGQU5SUE07CglyZXR1cm4gLTE7Cn0KCmludCB0ZW1wMm11ayh1aW50OF90IHQpCnsK
CWludCB0ZW1wPShpbnQ4X3QpdDsKCXJldHVybiB0ZW1wKjEwMDAwMDArMjczMTUwMDAwVTsKfQoK
aW50IHJlZzJycG0odWludDE2X3QgcikKewoJaWYocj09MHhmZmZmKQoJCXJldHVybiAwOwoJcmV0
dXJuICg5MDAwMCo2MCkvKGludClyOwp9CgpTWVNDVExfU0VUVVAoc3lzY3RsX2FkdDc0Njdfc2V0
dXAsICJzeXNjdGwgQURUNzQ2NyBzdWJ0cmVlIHNldHVwIikKewojaWZkZWYgQURUNzQ2N19ERUJV
RwoJcHJpbnRmKCJub2RlIHNldHVwXG4iKTsKI2VuZGlmCglzeXNjdGxfY3JlYXRldihOVUxMLCAw
LCBOVUxMLCBOVUxMLAoJCSAgICAgICBDVExGTEFHX1BFUk1BTkVOVCwKCQkgICAgICAgQ1RMVFlQ
RV9OT0RFLCAibWFjaGRlcCIsIE5VTEwsCgkJICAgICAgIE5VTEwsIDAsIE5VTEwsIDAsCgkJICAg
ICAgIENUTF9NQUNIREVQLCBDVExfRU9MKTsKfQoKc3RhdGljIGludApzeXNjdGxfYWR0NzQ2N190
ZW1wKFNZU0NUTEZOX0FSR1MpCnsKCXN0cnVjdCBzeXNjdGxub2RlIG5vZGUgPSAqcm5vZGU7Cglz
dHJ1Y3QgYWR0NzQ2N2Nfc29mdGMgKnNjPShzdHJ1Y3QgYWR0NzQ2N2Nfc29mdGMgKilub2RlLnN5
c2N0bF9kYXRhOwoJaW50IHJlZz0xMjM0NSwgbmQ9MDsKCWludCAqbnA9KGludCAqKW5ld3A7Cgl1
aW50OF90IGNoaXByZWc9KHVpbnQ4X3QpKG5vZGUuc3lzY3RsX2lkYXRhJjB4ZmYpOwoJcmVnPSh1
aW50MzJfdClhZHQ3NDY3Y19yZWFkcmVnKHNjLGNoaXByZWcpOwoJbm9kZS5zeXNjdGxfaWRhdGE9
cmVnOwoJaWYobnApIHsKCQkvKiB3ZSdyZSBhc2tlZCB0byB3cml0ZSAqLwkKCQluZD0qbnA7CgkJ
bm9kZS5zeXNjdGxfZGF0YT0mcmVnOwoJCWlmKHN5c2N0bF9sb29rdXAoU1lTQ1RMRk5fQ0FMTCgm
bm9kZSkpPT0wKSB7CgkJCWludDhfdCBuZXdfcmVnOwoJCQluZXdfcmVnPShpbnQ4X3QpKG1heCgz
MCxtaW4oODUsbm9kZS5zeXNjdGxfaWRhdGEpKSk7CgkJCWFkdDc0NjdjX3dyaXRlcmVnKHNjLGNo
aXByZWcsbmV3X3JlZyk7CgkJCXJldHVybiAwOwoJCX0KCQlyZXR1cm4gRUlOVkFMOwoJfSBlbHNl
IHsKCQlub2RlLnN5c2N0bF9zaXplPTQ7CgkJcmV0dXJuKHN5c2N0bF9sb29rdXAoU1lTQ1RMRk5f
Q0FMTCgmbm9kZSkpKTsKCX0KfQoKdm9pZAphZHQ3NDY3Y19zZXR1cChzdHJ1Y3QgYWR0NzQ2N2Nf
c29mdGMgKnNjKQp7CglzdHJ1Y3QgYWR0NzQ2N2Nfc3lzbW9uICpkYXRhcDsKCWludCBlcnJvciwg
bnVtLCBjbnQsIHRjbnQsd2NudCwgY190bXAsIGNfcnBtOwoJY2hhciB0eXBlc1sxMDI0XSwgd2hl
cmVbMTAyNF07Cgl1aW50OF90IHRlbXBbXT17MHgyNiwweDI3LDB4MjV9LCBzdHVmZjsKCXN0cnVj
dCBlbnZzeXNfcmFuZ2UgKmN1cl9yOwoJc3RydWN0IGVudnN5c19iYXNpY19pbmZvICpjdXJfaTsK
CXN0cnVjdCBlbnZzeXNfdHJlX2RhdGEgKmN1cl90OwoJaW50IHNlbnNvcl9pZFszMl0sIGkscmV0
OwoJY2hhciB0eXBlWzMyXTsKCXN0cnVjdCBzeXNjdGxub2RlICptZT1OVUxMLCAqbm9kZT1OVUxM
OwoJCgkvKiBsb29rIGZvciBzZW5zb3JzICovCgljbnQ9T0ZfZ2V0cHJvcChzYy0+c2Nfbm9kZSwi
aHdzZW5zb3ItaWQiLHNlbnNvcl9pZCxzaXplb2Yoc2Vuc29yX2lkKSk7CgludW09Y250Pj4yOwoJ
c2MtPm51bV9zZW5zb3JzPW51bTsKCWRhdGFwID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3lzbW9u
X2VudnN5cykrbnVtKnNpemVvZihzdHJ1Y3QgZW52c3lzX3RyZV9kYXRhKStzaXplb2Yodm9pZCAq
KSwgTV9ERVZCVUYsIE1fV0FJVE9LIHwgTV9aRVJPKTsKCWFkdDc0NjdjX3JhbmdlcyA9IG1hbGxv
YyAoc2l6ZW9mKHN0cnVjdCBlbnZzeXNfcmFuZ2UpKm51bSwgTV9ERVZCVUYsIE1fV0FJVE9LIHwg
TV9aRVJPKTsKCWFkdDc0NjdjX2luZm8gPSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgZW52c3lzX2Jh
c2ljX2luZm8pKm51bSwgTV9ERVZCVUYsIE1fV0FJVE9LIHwgTV9aRVJPKTsKCQoJcHJpbnRmKCIl
czogZm91bmQgJWQgc2Vuc29yc1xuIixzYy0+c2NfZGV2LmR2X3huYW1lLG51bSk7CgljbnQ9T0Zf
Z2V0cHJvcChzYy0+c2Nfbm9kZSwiaHdzZW5zb3ItdHlwZSIsdHlwZXMsMTAyNCk7CgljbnQ9T0Zf
Z2V0cHJvcChzYy0+c2Nfbm9kZSwiaHdzZW5zb3ItbG9jYXRpb24iLHdoZXJlLDEwMjQpOwoJdGNu
dD13Y250PTA7CgljX3RtcD0wOwoJY19ycG09MHgyODsKCXJldD1zeXNjdGxfY3JlYXRldihOVUxM
LCAwLCBOVUxMLCAmbWUsCgkgICAgICAgQ1RMRkxBR19SRUFEV1JJVEUsCgkgICAgICAgQ1RMVFlQ
RV9OT0RFLCBzYy0+c2NfZGV2LmR2X3huYW1lLCBOVUxMLAoJICAgICAgIE5VTEwsIDAsIE5VTEws
IDAsCgkgICAgICAgQ1RMX01BQ0hERVAsIENUTF9DUkVBVEUsIENUTF9FT0wpOwojaWZkZWYgQURU
NzQ2N19ERUJVRwoJaWYobWUhPU5VTEwpCgkJcHJpbnRmKCJjcmVhdGUgbm9kZSAlczogJWQgLT4g
JWRcbiIsc2MtPnNjX2Rldi5kdl94bmFtZSxyZXQsbWUtPnN5c2N0bF9udW0pOwoJcHJpbnRmKCJp
MmM6ICUwOHhcbiIsKHVpbnQzMl90KXNjLT5zY19pMmMpOwojZW5kaWYKCWZvciAoaT0wO2k8bnVt
O2krKykKCXsKCQljdXJfcj0mYWR0NzQ2N2NfcmFuZ2VzW2ldOwoJCWN1cl9pPSZhZHQ3NDY3Y19p
bmZvW2ldOwoJCWN1cl90PSZkYXRhcC0+YWR0NzQ2N2NfaW5mb1tpXTsKCQlzdHJuY3B5KGN1cl9p
LT5kZXNjLCZ3aGVyZVt3Y250XSwzMik7CgkJd2NudCs9c3RybGVuKGN1cl9pLT5kZXNjKSsxOwoJ
CXN0cm5jcHkodHlwZSwmdHlwZXNbdGNudF0sMzIpOwoJCXRjbnQrPXN0cmxlbih0eXBlKSsxOwoJ
CWN1cl9pLT51bml0cz1zZW5zb3JfdHlwZSh0eXBlKTsKCQljdXJfaS0+c2Vuc29yPWk7CgkJcHJp
bnRmKCIlMmQ6ICVzICVzXG4iLGkrMSwgdHlwZSwgY3VyX2ktPmRlc2MpOwoJCXN3aXRjaChjdXJf
aS0+dW5pdHMpCgkJewoJCQljYXNlIEVOVlNZU19TVEVNUDoKCQkJCXsKCQkJCQljaGFyIG5hbWVb
MTZdOwoJCQkJCXN0cnVjdCByZWdkZXNjIHJkOwoJCQkJCXNjLT5yZWdzW2ldPXRlbXBbY190bXBd
OwoJCQkJCWN1cl9yLT5sb3c9dGVtcDJtdWsoLTEyNyk7CgkJCQkJY3VyX3ItPmhpZ2g9dGVtcDJt
dWsoMTI3KTsKCQkJCQljdXJfci0+dW5pdHM9RU5WU1lTX1NURU1QOwoJCQkJCXJkLnJkX2kyYz1z
Yy0+c2NfaTJjOwoJCQkJCXJkLnJkX3JlZz1zYy0+cmVnc1tpXSsweDQyOwoJCQkJCXNucHJpbnRm
KG5hbWUsMTYsInRlbXAlZCIsY190bXApOwoJCQkJCXJldD1zeXNjdGxfY3JlYXRldihOVUxMLCAw
LCBOVUxMLCAmbm9kZSwKCQkJCSAgICAgICBDVExGTEFHX1JFQURXUklURXxDVExGTEFHX09XTkRF
U0N8Q1RMRkxBR19JTU1FRElBVEUsCgkJCQkgICAgICAgQ1RMVFlQRV9JTlQsIG5hbWUsIGN1cl9p
LT5kZXNjLAoJCSAgIAkJCSAgICBzeXNjdGxfYWR0NzQ2N190ZW1wLHNjLT5yZWdzW2ldKzB4NDIg
LCBOVUxMLCAwLAoJCSAgIAkJCSAgICBDVExfTUFDSERFUCwgbWUtPnN5c2N0bF9udW0sIENUTF9D
UkVBVEUsIENUTF9FT0wpOwoJCQkJCWlmKG5vZGUhPU5VTEwpIHsKCQkJCQkJbm9kZS0+c3lzY3Rs
X2RhdGE9c2M7CgkJCQkJfQoJCQkJCSNpZmRlZiBBRFQ3NDY3X0RFQlVHCgkJCQkJcHJpbnRmKCJj
cmVhdGUgbm9kZSAlczogJWRcbiIsbmFtZSxyZXQpOwoJCQkJCSNlbmRpZgoJCQkJCWNfdG1wKys7
CgkJCQl9CgkJCQlicmVhazsKCQkJY2FzZSBFTlZTWVNfU1ZPTFRTX0RDOgoJCQkJewoJCQkJCXNj
LT5yZWdzW2ldPTB4MjE7CS8qIHRoZXJlJ3Mgb25seSBvbmUgdm9sdGFnZSBzZW5zb3IgKi8KCQkJ
CQljdXJfci0+bG93PTA7CgkJCQkJY3VyX3ItPmhpZ2g9MjI1MDsJLyogMi4yNXYgKi8KCQkJCQlj
dXJfci0+dW5pdHM9RU5WU1lTX1NWT0xUU19EQzsKCQkJCQljdXJfaS0+cmZhY3Q9MTsKCQkJCX0K
CQkJCWJyZWFrOwoJCQljYXNlIEVOVlNZU19TRkFOUlBNOgoJCQkJewoJCQkJCXNjLT5yZWdzW2ld
PWNfcnBtOwoJCQkJCWN1cl9yLT5sb3c9MDsKCQkJCQljdXJfci0+aGlnaD1yZWcycnBtKDB4ZmZm
ZSk7CgkJCQkJY3VyX3ItPnVuaXRzPUVOVlNZU19TRkFOUlBNOwoJCQkJCWNfcnBtKz0yOwkvKiBm
YW4gb3V0cHV0IGlzIDE2Yml0ICovCgkJCQl9CgkJCQlicmVhazsKCQl9CgkJY3VyX2ktPnZhbGlk
ZmxhZ3M9RU5WU1lTX0ZWQUxJRHxFTlZTWVNfRkNVUlZBTElEOwoJCWN1cl90LT5zZW5zb3IgPSBp
OwoJCWN1cl90LT53YXJuZmxhZ3MgPSBFTlZTWVNfV0FSTl9PSzsKCQljdXJfdC0+dmFsaWRmbGFn
cyA9IEVOVlNZU19GVkFMSUR8RU5WU1lTX0ZDVVJWQUxJRDsKCQljdXJfdC0+dW5pdHM9Y3VyX2kt
PnVuaXRzOwoJfQoJc3R1ZmY9YWR0NzQ2N2NfcmVhZHJlZyhzYywweDQwKTsKCWFkdDc0NjdjX3dy
aXRlcmVnKHNjLDB4NDAsc3R1ZmYpOwoKCXNjLT5zY19zeXNtb25fY29va2llID0gJmRhdGFwLT5z
bWU7CglkYXRhcC0+c21lLnNtZV9uc2Vuc29ycyA9IG51bTsKCWRhdGFwLT5zbWUuc21lX2VudnN5
c192ZXJzaW9uID0gMTAwMDsKCWRhdGFwLT5zbWUuc21lX3JhbmdlcyA9IGFkdDc0NjdjX3Jhbmdl
czsKCWRhdGFwLT5zbWUuc21lX3NlbnNvcl9pbmZvID0gYWR0NzQ2N2NfaW5mbzsKCWRhdGFwLT5z
bWUuc21lX3NlbnNvcl9kYXRhID0gZGF0YXAtPmFkdDc0NjdjX2luZm87CgkKCWRhdGFwLT5zbWUu
c21lX2Nvb2tpZSA9IHNjOwoJZGF0YXAtPnNtZS5zbWVfZ3RyZWRhdGEgPSBhZHQ3NDY3Y19ndHJl
ZGF0YTsKCWRhdGFwLT5zbWUuc21lX3N0cmVpbmZvID0gYWR0NzQ2N2Nfc3RyZWluZm87CglkYXRh
cC0+c21lLnNtZV9mbGFncyA9IDA7CgoJaWYgKChlcnJvciA9IHN5c21vbl9lbnZzeXNfcmVnaXN0
ZXIoJmRhdGFwLT5zbWUpKSAhPSAwKQoJCWFwcmludF9lcnJvcigiJXM6IHVuYWJsZSB0byByZWdp
c3RlciB3aXRoIHN5c21vbiAoJWQpXG4iLAoJCSAgICBzYy0+c2NfZGV2LmR2X3huYW1lLCBlcnJv
cik7Cn0KCgppbnQKYWR0NzQ2N2NfZ3RyZWRhdGEoc3RydWN0IHN5c21vbl9lbnZzeXMgKnNtZSwg
c3RydWN0IGVudnN5c190cmVfZGF0YSAqdHJlZCkKewovLwlzdHJ1Y3QgYWR0NzQ2N2Nfc3lzbW9u
ICpzbT0oc3RydWN0IGFkdDc0NjdjX3N5c21vbiAqKXNtZTsKCXN0cnVjdCBhZHQ3NDY3Y19zb2Z0
YyAqc2M9c21lLT5zbWVfY29va2llOwoJc3RydWN0IGVudnN5c190cmVfZGF0YSAqY3VyX3RyZTsK
CXN0cnVjdCBlbnZzeXNfYmFzaWNfaW5mbyAqY3VyX2k7Cgl1aW50OF90IHJlZzsKCWludCBpOwoJ
Ci8qCWZvcihpPTA7aTxzbWUtPnNtZV9uc2Vuc29ycztpKyspIHsqLwoJaT10cmVkLT5zZW5zb3I7
CgkJY3VyX3RyZT0mc21lLT5zbWVfc2Vuc29yX2RhdGFbaV07CgkJLy9jdXJfdHJlPXRyZWQ7CgkJ
Y3VyX2k9JnNtZS0+c21lX3NlbnNvcl9pbmZvW2ldOwoJCXJlZz1zYy0+cmVnc1tpXTsKCQlzd2l0
Y2goY3VyX3RyZS0+dW5pdHMpCgkJewoJCQljYXNlIEVOVlNZU19TVEVNUDoKCQkJCWN1cl90cmUt
PmN1ci5kYXRhX3M9dGVtcDJtdWsoYWR0NzQ2N2NfcmVhZHJlZyhzYyxyZWcpKTsKCQkJCWJyZWFr
OwoJCQljYXNlIEVOVlNZU19TVk9MVFNfREM6CgkJCQl7CgkJCQkJdWludDMyX3QgdnI9YWR0NzQ2
N2NfcmVhZHJlZyhzYyxyZWcpOwoJCQkJCWN1cl90cmUtPmN1ci5kYXRhX3VzPShpbnQpKCh2cioy
NTAwMDAwKS8weGMwKTsKCQkJCX0KCQkJCWJyZWFrOwoJCQljYXNlIEVOVlNZU19TRkFOUlBNOgoJ
CQkJewoJCQkJCXVpbnQxNl90IGJsYWg9KCgodWludDE2X3QpYWR0NzQ2N2NfcmVhZHJlZyhzYyxy
ZWcpKXwoKHVpbnQxNl90KWFkdDc0NjdjX3JlYWRyZWcoc2MscmVnKzEpPDw4KSk7CgkJCQkJY3Vy
X3RyZS0+Y3VyLmRhdGFfdXM9cmVnMnJwbShibGFoKTsKCQkJCX0KCQkJCWJyZWFrOwoJCX0KCQlj
dXJfdHJlLT52YWxpZGZsYWdzfD1FTlZTWVNfRkNVUlZBTElEfEVOVlNZU19GVkFMSUQ7CgkvL30K
CS8vc21lLT5zbWVfc2Vuc29yX2RhdGEtPmN1ci5kYXRhX3VzID0gKHRocmVzaG9sZCAqIDEwMDAw
MDApICsgMjczMTUwMDAwOwoJKnRyZWQgPSBzbWUtPnNtZV9zZW5zb3JfZGF0YVtpXTsKCXJldHVy
biAwOwp9CgppbnQKYWR0NzQ2N2Nfc3RyZWluZm8oc3RydWN0IHN5c21vbl9lbnZzeXMgKnNtZSwg
c3RydWN0IGVudnN5c19iYXNpY19pbmZvICpiaW5mbykKewoKCS8qIFRoZXJlIGlzIG5vdGhpbmcg
dG8gc2V0IGhlcmUuICovCglyZXR1cm4gKEVJTlZBTCk7Cn0KI2VuZGlmIC8qIE5TWVNNT05fRU5W
U1lTID4gMCAqLwo=

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5
Content-Type: application/octet-stream;
 name="deq.c"
Content-Disposition: attachment;
 filename="deq.c"
Content-Transfer-Encoding: base64

LyoJJE5ldEJTRDogZmFuLmMsdiAxLjIwIDIwMDQvMTIvMDkgMDM6MTk6NTYgYnJpZ2dzIEV4cCAk
CSovCgovKi0KICogQ29weXJpZ2h0IChDKSAxOTk4CUludGVybmV0IFJlc2VhcmNoIEluc3RpdHV0
ZSwgSW5jLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCiAqIGFyZSBtZXQ6CiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQogKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0
ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKICogICAg
bXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgogKglUaGlzIHByb2R1
Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5CiAqCUludGVybmV0IFJlc2VhcmNoIElu
c3RpdHV0ZSwgSW5jLgogKiA0LiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKICogICAgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFO
WSBFWFBSRVNTIE9SCiAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKICogT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KICogSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULAogKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQKICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAogKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCgovKiBh
IGRyaXZlciBmb3QgdGhlIEFEVDc0NjcgZW52aXJvbm1lbnRhbCBjb250cm9sbGVyIGZvdW5kIGlu
IHRoZSBpQm9vayBHNCAKICAgYW5kIHByb2JhYmx5IG90aGVyIEFwcGxlIG1hY2hpbmVzICovCgov
KiB0b2RvOiBnZXQgdGhlIHBhcmVudGFsIGludGVyZmFjZSByaWdodCwgdGhpcyBpcyBhbiB1Z2x5
IGhhY2suIFRoZSBkcml2ZXIKICAgc2hvdWxkIHdvcmsgd2l0aCBBTlkgaTJjIGJ1cyBhcyBwYXJl
bnQgKi8KI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgpfX0tFUk5FTF9SQ1NJRCgwLCAiJE5ldEJTRDog
ZmFuLmMsdiAxLjIwIDIwMDQvMTIvMDkgMDM6MTk6NTYgYnJpZ2dzIEV4cCAkIik7CgojaW5jbHVk
ZSA8c3lzL3BhcmFtLmg+CiNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KI2luY2x1ZGUgPHN5cy9rZXJu
ZWwuaD4KI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KCiNp
bmNsdWRlIDx1dm0vdXZtX2V4dGVybi5oPgoKI2luY2x1ZGUgPGRldi9vZncvb3BlbmZpcm0uaD4K
I2luY2x1ZGUgPGRldi9pMmMvaTJjdmFyLmg+CgojaW5jbHVkZSA8bWFjaGluZS9hdXRvY29uZi5o
PgoKc3RhdGljIHZvaWQgZGVxX2F0dGFjaCBfX1AoKHN0cnVjdCBkZXZpY2UgKiwgc3RydWN0IGRl
dmljZSAqLCB2b2lkICopKTsKc3RhdGljIGludCBkZXFfbWF0Y2ggX19QKChzdHJ1Y3QgZGV2aWNl
ICosIHN0cnVjdCBjZmRhdGEgKiwgdm9pZCAqKSk7CgpzdHJ1Y3QgZGVxX3NvZnRjIHsKCXN0cnVj
dCBkZXZpY2Ugc2NfZGV2OwoJc3RydWN0IGRldmljZSAqcGFyZW50OwoJaW50IHNjX25vZGUsIGFk
ZHJlc3M7CglzdHJ1Y3QgaTJjX2NvbnRyb2xsZXIgKnNjX2kyYzsKfTsKCkNGQVRUQUNIX0RFQ0wo
ZGVxLCBzaXplb2Yoc3RydWN0IGRlcV9zb2Z0YyksCiAgICBkZXFfbWF0Y2gsIGRlcV9hdHRhY2gs
IE5VTEwsIE5VTEwpOwoKaW50CmRlcV9tYXRjaChwYXJlbnQsIGNmLCBhdXgpCglzdHJ1Y3QgZGV2
aWNlICpwYXJlbnQ7CglzdHJ1Y3QgY2ZkYXRhICpjZjsKCXZvaWQgKmF1eDsKewoJc3RydWN0IGNv
bmZhcmdzICpjYSA9IGF1eDsKCWNoYXIgY29tcGF0WzMyXTsKCWlmIChzdHJjbXAoY2EtPmNhX25h
bWUsICJkZXEiKSAhPSAwKQoJCXJldHVybiAwOwoKCW1lbXNldChjb21wYXQsIDAsIHNpemVvZihj
b21wYXQpKTsKCWlmKE9GX2dldHByb3AoY2EtPmNhX25vZGUsICJpMmMtYWRkcmVzcyIsIGNvbXBh
dCwgc2l6ZW9mKGNvbXBhdCkpKQoJCXJldHVybiAxOwoJcmV0dXJuIDA7Cn0KCnZvaWQKZGVxX2F0
dGFjaChwYXJlbnQsIHNlbGYsIGF1eCkKCXN0cnVjdCBkZXZpY2UgKnBhcmVudCwgKnNlbGY7Cgl2
b2lkICphdXg7CnsKCXN0cnVjdCBkZXFfc29mdGMgKnNjID0gKHN0cnVjdCBkZXFfc29mdGMgKilz
ZWxmOwoJc3RydWN0IGNvbmZhcmdzICpjYSA9IGF1eDsKCWludCBub2RlOwoKCW5vZGUgPSBjYS0+
Y2Ffbm9kZTsKCXNjLT5zY19ub2RlID0gbm9kZTsKCXNjLT5wYXJlbnQ9cGFyZW50OwoJc2MtPmFk
ZHJlc3M9Y2EtPmNhX3JlZ1swXSYweGZlOwoJc2MtPnNjX2kyYz0oc3RydWN0IGkyY19jb250cm9s
bGVyICopY2EtPmNhX2Jhc2VhZGRyOwoJcHJpbnRmKCIgQXBwbGUgRGlnaXRhbCBFcXVhbGl6ZXJc
biIpOwoJLy9wcmludGYoIiVzOiBub2RlICUwOHhcbiIsc2MtPnNjX2Rldi5kdl94bmFtZSxub2Rl
KTsKfQo=

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5
Content-Type: application/octet-stream;
 name="uni-n.c"
Content-Disposition: attachment;
 filename="uni-n.c"
Content-Transfer-Encoding: base64

LyoJJE5ldEJTRDogdW5pXy0uYyx2IDEuMjAgMjAwNC8xMi8wOSAwMzoxOTo1NiBicmlnZ3MgRXhw
ICQJKi8KCi8qLQogKiBDb3B5cmlnaHQgKEMpIDE5OTgJSW50ZXJuZXQgUmVzZWFyY2ggSW5zdGl0
dXRlLCBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKICogYXJlIG1ldDoKICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAog
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqIDMuIEFsbCBhZHZlcnRpc2luZyBt
YXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQogKiAg
ICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6CiAqCVRoaXMgcHJv
ZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkKICoJSW50ZXJuZXQgUmVzZWFyY2gg
SW5zdGl0dXRlLCBJbmMuCiAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogKiAgICBkZXJpdmVkIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoK
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQg
QU5ZIEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwogKiBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgogKiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsCiAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAogKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQogKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KCiNp
bmNsdWRlIDxzeXMvY2RlZnMuaD4KX19LRVJORUxfUkNTSUQoMCwgIiROZXRCU0Q6IHVuaS1uLmMs
diAxLjIwIDIwMDQvMTIvMDkgMDM6MTk6NTYgYnJpZ2dzIEV4cCAkIik7CgojaW5jbHVkZSA8c3lz
L3BhcmFtLmg+CiNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4K
I2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4KCiNpbmNsdWRlIDxkZXYvb2Z3L29wZW5maXJtLmg+Cgoj
aW5jbHVkZSA8bWFjaGluZS9hdXRvY29uZi5oPgoKc3RhdGljIHZvaWQgdW5pX25fYXR0YWNoIF9f
UCgoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgZGV2aWNlICosIHZvaWQgKikpOwpzdGF0aWMgaW50
IHVuaV9uX21hdGNoIF9fUCgoc3RydWN0IGRldmljZSAqLCBzdHJ1Y3QgY2ZkYXRhICosIHZvaWQg
KikpOwpzdGF0aWMgaW50IHVuaV9uX3ByaW50IF9fUCgodm9pZCAqLCBjb25zdCBjaGFyICopKTsK
CnN0cnVjdCB1bmlfbl9zb2Z0YyB7CglzdHJ1Y3QgZGV2aWNlIHNjX2RldjsKCWludCBzY19ub2Rl
Owp9OwoKCkNGQVRUQUNIX0RFQ0wodW5pX24sIHNpemVvZihzdHJ1Y3QgdW5pX25fc29mdGMpLAog
ICAgdW5pX25fbWF0Y2gsIHVuaV9uX2F0dGFjaCwgTlVMTCwgTlVMTCk7CgppbnQKdW5pX25fbWF0
Y2gocGFyZW50LCBjZiwgYXV4KQoJc3RydWN0IGRldmljZSAqcGFyZW50OwoJc3RydWN0IGNmZGF0
YSAqY2Y7Cgl2b2lkICphdXg7CnsKCXN0cnVjdCBjb25mYXJncyAqY2EgPSBhdXg7CgljaGFyIGNv
bXBhdFszMl07CglpZiAoc3RyY21wKGNhLT5jYV9uYW1lLCAidW5pLW4iKSAhPSAwKQoJCXJldHVy
biAwOwoKCW1lbXNldChjb21wYXQsIDAsIHNpemVvZihjb21wYXQpKTsKCU9GX2dldHByb3AoY2Et
PmNhX25vZGUsICJjb21wYXRpYmxlIiwgY29tcGF0LCBzaXplb2YoY29tcGF0KSk7CglpZiAoc3Ry
Y21wKGNvbXBhdCwgInVuaS1ub3J0aCIpICE9IDApCgkJcmV0dXJuIDA7CgoJcmV0dXJuIDE7Cn0K
Ci8qCiAqIEF0dGFjaCBhbGwgdGhlIHN1Yi1kZXZpY2VzIHdlIGNhbiBmaW5kCiAqLwp2b2lkCnVu
aV9uX2F0dGFjaChwYXJlbnQsIHNlbGYsIGF1eCkKCXN0cnVjdCBkZXZpY2UgKnBhcmVudCwgKnNl
bGY7Cgl2b2lkICphdXg7CnsKCXN0cnVjdCB1bmlfbl9zb2Z0YyAqc2MgPSAoc3RydWN0IHVuaV9u
X3NvZnRjICopc2VsZjsKCXN0cnVjdCBjb25mYXJncyAqb3VyX2NhID0gYXV4OwoJc3RydWN0IGNv
bmZhcmdzIGNhOwoJaW50IG5vZGUsIGNoaWxkLCBuYW1lbGVuOwoJdV9pbnQgcmVnWzIwXTsKCWlu
dCBpbnRyWzZdOwoJY2hhciBuYW1lWzMyXTsKCglub2RlID0gT0ZfZmluZGRldmljZSgiL3VuaS1u
Iik7CglzYy0+c2Nfbm9kZSA9IG5vZGU7CglwcmludGYoIiBhZGRyZXNzIDB4JTA4eFxuIixvdXJf
Y2EtPmNhX3JlZ1swXSk7CgkvL3ByaW50ZigiJXM6IG5vZGUgJTA4eFxuIixzYy0+c2NfZGV2LmR2
X3huYW1lLG5vZGUpOwoJCglmb3IgKGNoaWxkID0gT0ZfY2hpbGQobm9kZSk7IGNoaWxkOyBjaGls
ZCA9IE9GX3BlZXIoY2hpbGQpKSB7CgkJbmFtZWxlbiA9IE9GX2dldHByb3AoY2hpbGQsICJuYW1l
IiwgbmFtZSwgc2l6ZW9mKG5hbWUpKTsKCQlpZiAobmFtZWxlbiA8IDApCgkJCWNvbnRpbnVlOwoJ
CWlmIChuYW1lbGVuID49IHNpemVvZihuYW1lKSkKCQkJY29udGludWU7CgoJCW5hbWVbbmFtZWxl
bl0gPSAwOwoJCWNhLmNhX25hbWUgPSBuYW1lOwoJCWNhLmNhX25vZGUgPSBjaGlsZDsKCgkJY2Eu
Y2FfbnJlZyAgPSBPRl9nZXRwcm9wKGNoaWxkLCAicmVnIiwgcmVnLCBzaXplb2YocmVnKSk7CgkJ
Y2EuY2FfbmludHIgPSBPRl9nZXRwcm9wKGNoaWxkLCAiQUFQTCxpbnRlcnJ1cHRzIiwgaW50ciwK
CQkJCXNpemVvZihpbnRyKSk7CgkJaWYgKGNhLmNhX25pbnRyID09IC0xKQoJCQljYS5jYV9uaW50
ciA9IE9GX2dldHByb3AoY2hpbGQsICJpbnRlcnJ1cHRzIiwgaW50ciwKCQkJCQlzaXplb2YoaW50
cikpOwoKCQljYS5jYV9yZWcgPSByZWc7CgkJY2EuY2FfaW50ciA9IGludHI7CgoJCWNvbmZpZ19m
b3VuZChzZWxmLCAmY2EsIHVuaV9uX3ByaW50KTsKCX0KfQoKaW50CnVuaV9uX3ByaW50KGF1eCwg
dW5pX24pCgl2b2lkICphdXg7Cgljb25zdCBjaGFyICp1bmlfbjsKewoJc3RydWN0IGNvbmZhcmdz
ICpjYSA9IGF1eDsKCWlmICh1bmlfbikKCQlhcHJpbnRfbm9ybWFsKCIlcyBhdCAlcyIsIGNhLT5j
YV9uYW1lLCB1bmlfbik7CgoJaWYgKGNhLT5jYV9ucmVnID4gMCkKCQlhcHJpbnRfbm9ybWFsKCIg
YWRkcmVzcyAweCV4IiwgY2EtPmNhX3JlZ1swXSk7CgoJcmV0dXJuIFVOQ09ORjsKfQo=

--Multipart=_Wed__15_Dec_2004_13_02_38_-0500_waqhUa1BC05yLxS5--