      This program was reversed by NBK/MATRiX
      www.matrixvx.org
      nbk_vx@starmail.com
                                    __.___  _.___.___
                         _.____.___ \    <  >___<   /
                   __/\__\.        \|    |  .__|_   |_/\_
                  /      \/   /T    \    :  >   |        \
                 /  /\    \   \|     |   |  |__ <   /T    |
                >   \|     <   |    /    /__\  \|   \|    |
                |    /_.___|  /__._/|          /|    |   /
                /__.___\ /______|AnG>__.___\__/_|.__\___/
                         .:the:smaller:the:better:.

      Copyright (c) 1998-99 by Joergen Ibsen / Jibz, All Rights Reserved

      Some info about how to use aPlib:

      readme.txt   --->   You're here
      depack.asm   --->   The depacker (Source for WASM & TASM 5.0)
      packer.asm   --->   The packer (Source for TASM 5.0)

      After need a small and good algorithm for virus-like things, i
      found aPlib. But the source for the packer isn't included, but
      now it is.

      Don't Forgot to visit the author at: <http://apack.cjb.net/>

      Using packer and depacker:


      packer:

      push 0
      push offset workmemory   ;   (Points to a memory with at least 640 Kb)
      push number_of_bytes     ;   (Number of bytes to compress)
      push offset destination  ;   (Where the data will be compressed)
      push offset source       ;   (Is the data we want to compress)
      call _ap_pack

      ; returns NULL in EAX, if error, or the packed length on success


      depacker:

      push offset destination  ;   (Where decompress the compressed data)
      push offset source       ;   (The compressed data to decompress)
      call _aP_depack_asm

      ; returns in EAX the depacked length

      This program was reversed by NBK/MATRiX
      www.matrixvx.org
      nbk_vx@starmail.com

      My PGP:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.5.3 for non-commercial use <http://www.pgp.com>
Comment: NBK

mQGiBDlHPqMRBAD/847aEyxk+k1np0quonhrjWqplKFaYsSUe9KA52E516eb9ZzJ
uBDGIUgObaKKqOc7IUkvwXaZNVKD/L9OhwaudJAIE5QPRiKUEjbPXOY8G/aLtqj5
qDEjNYJtYJeS6Yu9CIaSwxo9dU5f4jFqk+9XuZIhIFeecgwDEM0wKMGkaQCg/z4n
b/zh2HyBPwS07jA67h53Z+EEAPnkkIcvulbK/eLMgHj9S0VkXMBfvkmQyrtTamoQ
J0m/G69gxj+Qqk+/cYRtAiiTUOw7ZEIYkGMBjAX7jgxbsYMjWd1I0fqESi1XTl4l
1rmMmdkU+7DzDrJlcJQ3JDHX6rCFT/cPEIkvmvPBTVU+eFbojrW27eWjNd0y0T/f
59goA/9MUj+t3kqDmPgHlBOlyFMi8IgU0ECyMSZYpmTcAVPMJKZl9v+PcayCDtdr
4LZvDvObtejbpkvqDrTHprx+Mlhgz+4wOQiSKrU9khH2602yakwL4mwO5oncX0j5
3u1O9L6GNV9bW1mmKsXhglAmeLW4KFs2VJmvZsiD8KOTMHeyKrQZTkJLIDxuYmtf
dnhAc3Rhcm1haWwuY29tPokATgQQEQIADgUCOUc+owQLAwIBAhkBAAoJELpCyRMz
xb/lBgsAnRV7lBMDdmopyOPFa1n+V7tZQqPvAJ0epcWt2A3yJy2papSoBP8DRQxr
X7kCDQQ5Rz6jEAgA9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTp
j0BV89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39
uK50T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1Y
TknbzSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9
fBdXQ6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCb
AkbTCD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwACAgf+K+e2u/MCpcmGy4MwL/2y
73CZ8iAlbKUxJcbTYI45fNQ8AkPwm1UjAnqYbOtBSGsQZEZylUw2XVY2KFBGZQo6
LyWIjVBgC92cYPhCnUgLTs6qN53T9RFJarw8GRuNkFg3hC1SktOaFE/NIoKqgojC
s3oc63St4TJTsM7ynLfPmUzvowvpRzRYyYeoMuuxz6M8FMy2Q8h1JNjpJxyZJhkA
Ra9YDuyJ2K3ruA8Tyin6KpmLHsKtsewcM1v3iRh9FDaPcxLOQ6aold1zUE0hBZa1
srbX6HrtbUpmjvTDYc8JJBq0JRC0rFnBTDi2t2jdEWAwKTmOJuTpRhwFSZDUbwpA
U4kARgQYEQIABgUCOUc+owAKCRC6QskTM8W/5f08AJ9F3nX95m9rFIl5+eoYcGWP
PjYpEQCg499Ws/cp2TEpNRAayN99MW8MbsY=
=Tc1u
-----END PGP PUBLIC KEY BLOCK-----

--[packer.asm]---------------------------------------------------------------->8



;  Disassembly by NBK
;  August, 2000
;  nbk_vx@starmail.com

;  Compile with TASM 5.0

;  Essa porra deu trabalho, foram uns 3 dias
;  de descompilaçao direto.

;  Obs: Os 1024 bytes (400h) depois de <aplib@010>
;  sao extremamente necessarios, nao delete eles.
;  No seu programa, voce pode fazer como eu fiz,
;  remanejando os 400h (o aplib@010 deve ir tambem)
;  para uma area que nao ocupe espaco em disco, so
;  na memoria.

.586p
.model flat, stdcall
locals

.code

start:

_ap_pack:

push ebx
push esi
push edi
push ebp
sub esp, 00000034h
mov ebx, dword ptr [esp+54h]
mov edx, dword ptr [esp+48h]
test edx, edx
je aplib@001   ;   0.0402670
jmp aplib@262

aplib@029:

push ecx
push esi
push edi
push ebp
sub esp, 00000004
mov ecx, eax
mov dword ptr [esp], edx
mov ebp, ebx
xor edi, edi
cmp edx, 0000000Fh
ja aplib@094   ;   0.040116E

aplib@095:

xor eax, eax
mov al, byte ptr [ecx]
test eax, eax
je aplib@096   ;   0.0401177
mov edx, dword ptr [esp]
mov eax, edx
neg eax
mov esi, ecx
add eax, ecx

aplib@111:

mov bl, byte ptr [ecx]
cmp bl, byte ptr [eax]
je aplib@112   ;   0.0401159
inc eax
dec edx
cmp eax, esi
jne aplib@111   ;   0.040114D

aplib@112:

add edi, 00000007
test edx, edx
je aplib@113   ;   0.040117C

aplib@097:

inc ecx
dec ebp
jne aplib@095
mov eax, edi
add esp, 00000004
pop ebp
pop edi
pop esi
pop ecx
ret

aplib@094:

mov dword ptr [esp], 0000000Fh
jmp aplib@095   ;   0.040113A

aplib@096:

add edi, 00000007
jmp aplib@097   ;   0.0401160

aplib@113:

add edi, 00000002
jmp aplib@097

aplib@046:

push ebx
push ecx
push esi
push edi
push ebp
sub esp, 00000008
mov ecx, dword ptr [aplib@015]
mov ebx, dword ptr [aplib@004]
mov esi, dword ptr [aplib@086]
mov ebp, eax
mov edi, edx
xor eax, eax
mov al, byte ptr [ebp+00]
test eax, eax
jne aplib@098   ;   0.040127E
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@114   ;   0.0401239

aplib@115:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@116   ;   0.0401246

aplib@117:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@118   ;   0.0401253

aplib@119:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@120   ;   0.0401260

aplib@121:

mov dl, byte ptr [esi]
add dl, dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@122   ;   0.040126A

aplib@123:

mov dl, byte ptr [esi]
add dl, dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@124   ;   0.0401274

aplib@125:

mov dl, byte ptr [esi]
add dl, dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
jne aplib@126   ;   0.0401218
mov ecx, 00000007
mov esi, ebx
inc ebx

aplib@126:

mov dl, byte ptr [esi]
add dl, dl

aplib@127:

mov byte ptr [esi], dl

aplib@128:

mov dword ptr [aplib@086], esi
mov dword ptr [aplib@004], ebx
mov dword ptr [aplib@015], ecx
add esp, 00000008

aplib@129:

pop ebp
pop edi
pop esi
pop ecx
pop ebx
ret

aplib@114:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@115   ;   0.04011B6

aplib@116:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@117   ;   0.04011C8

aplib@118:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@119   ;   0.04011DA

aplib@120:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@121   ;   0.04011EC

aplib@122:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@123   ;   0.04011F8

aplib@124:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@125   ;   0.0401204

aplib@098:

cmp edx, 0000000Fh
ja aplib@099   ;   0.0401367

aplib@100:

mov eax, edi
neg eax
mov dword ptr [esp+04], ebp
add eax, ebp

aplib@101:

mov dl, byte ptr [ebp+00]
cmp dl, byte ptr [eax]
je aplib@102   ;   0.04012A2
mov edx, dword ptr [esp+04]
inc eax
dec edi
cmp eax, edx
jne aplib@101   ;   0.0401291

aplib@102:

lea eax, dword ptr [ebx+01]
mov dword ptr [esp], eax
lea eax, dword ptr [ecx-01]
test edi, edi
je aplib@103   ;   0.04013E9
mov ecx, eax
cmp eax, 0FFFFFFFFh
je aplib@130

aplib@140:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@131

aplib@141:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@132

aplib@142:

mov dl, byte ptr [esi]
mov eax, edi
add dl, dl
dec ecx
inc dl
and eax, 00000008
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@133

aplib@143:

test eax, eax
je aplib@134
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@144:

mov byte ptr [esi], dl
mov eax, edi
dec ecx
and eax, 00000004
cmp ecx, 0FFFFFFFFh
je aplib@135

aplib@145:

test eax, eax
je aplib@136
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@146:

mov byte ptr [esi], dl
mov eax, edi
dec ecx
and eax, 00000002
cmp ecx, 0FFFFFFFFh
je aplib@137

aplib@147:

test eax, eax
je aplib@138
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@148:

mov byte ptr [esi], dl
dec ecx
and edi, 00000001
cmp ecx, 0FFFFFFFFh
je aplib@139

aplib@149:

test edi, edi
je aplib@126   ;   0.0401218
mov dl, byte ptr [esi]
add dl, dl
inc dl
jmp aplib@127

aplib@099:

mov edi, 0000000Fh
jmp aplib@100   ;   0.0401287

aplib@130:

mov ecx, 00000007
mov esi, ebx
mov ebx, dword ptr [esp]
jmp aplib@140

aplib@131:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@141

aplib@132:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@142

aplib@133:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@143

aplib@134:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@144

aplib@135:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@145

aplib@136:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@146

aplib@137:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@147

aplib@138:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@148

aplib@139:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@149

aplib@103:

mov ecx, eax
cmp eax, 0FFFFFFFFh
jne aplib@104   ;   0.04013FA
mov ecx, 00000007
mov esi, ebx
mov ebx, dword ptr [esp]

aplib@104:

mov dl, byte ptr [esi]
add dl, dl
mov byte ptr [esi], dl
mov al, byte ptr [ebp+00]
mov byte ptr [ebx], al
inc ebx
jmp aplib@128

aplib@025:

push ecx
mov ecx, eax
cmp eax, 00000080h
jnb aplib@106   ;   0.0401434
cmp edx, 00000004
jnb aplib@106
cmp eax, dword ptr [aplib@016]
je aplib@106
test eax, eax
jne aplib@105   ;   0.040142D
mov eax, 00000005
pop ecx
ret

aplib@105:

mov eax, 0000000Bh
pop ecx
ret

aplib@106:

push esi
push ebx
mov esi, dword ptr [aplib@016]
mov ebx, 00000004
cmp ecx, esi
je aplib@107
mov eax, ecx
shr eax, 08
add eax, 00000003
cmp eax, 00000002
jge aplib@150
mov eax, 00000064h

aplib@151:

add eax, 00000006
add ebx, eax
cmp ecx, 00000080h
jnb aplib@152   ;   0.0401565
sub edx, 00000002

aplib@107:

cmp edx, 00000002
jnl aplib@109   ;   0.0401580
mov eax, 00000064h

aplib@108:

add eax, ebx
pop ebx
pop esi
pop ecx
ret

aplib@150:

cmp eax, ebx
jge aplib@168
mov eax, 00000002
jmp aplib@151

aplib@168:

cmp eax, 00000008
jge aplib@167
mov eax, ebx
jmp aplib@151

aplib@167:

cmp eax, 00000010h
jge aplib@166
mov eax, 00000006h
jmp aplib@151

aplib@166:

cmp eax, 00000020h
jge aplib@165
mov eax, 00000008
jmp aplib@151

aplib@165:

cmp eax, 00000040h
jge aplib@164
mov eax, 0000000Ah
jmp aplib@151

aplib@164:

cmp eax, 00000080h
jge aplib@163
mov eax, 0000000Ch
jmp aplib@151

aplib@163:

cmp eax, 00000100h
jge aplib@162
mov eax, 0000000Eh
jmp aplib@151

aplib@162:

cmp eax, 00000200h
jge aplib@161
mov eax, 00000010h
jmp aplib@151

aplib@161:

cmp eax, 00000400h
jge aplib@160
mov eax, 00000012h
jmp aplib@151

aplib@160:

cmp eax, 00000800h
jge aplib@159
mov eax, 00000014h
jmp aplib@151

aplib@159:

cmp eax, 00001000h
jge aplib@158
mov eax, 00000016h
jmp aplib@151

aplib@158:

cmp eax, 00002000h
jge aplib@157
mov eax, 00000018h
jmp aplib@151

aplib@157:

cmp eax, 00004000h
jge aplib@156
mov eax, 0000001Ah
jmp aplib@151

aplib@156:

cmp eax, 00008000h
jge aplib@155
mov eax, 0000001Ch
jmp aplib@151

aplib@155:

cmp eax, 00010000h
jge aplib@154
mov eax, 0000001Eh
jmp aplib@151

aplib@154:

mov eax, 00000020h
jmp aplib@151

aplib@152:

cmp ecx, 00000500h
jb aplib@153   ;   0.040156E
dec edx

aplib@153:

cmp ecx, 00007D00h
jb aplib@107
dec edx
jmp aplib@107

aplib@109:

cmp edx, 00000004
jge aplib@110   ;   0.040158F
mov eax, 00000002
jmp aplib@108

aplib@110:

cmp edx, 00000008
jge aplib@169
mov eax, 00000004
jmp aplib@108

aplib@169:

cmp edx, 00000010h
jge aplib@170
mov eax, 00000006
jmp aplib@108

aplib@170:

cmp edx, 00000020h
jge aplib@171
mov eax, 00000008
jmp aplib@108

aplib@171:

cmp edx, 00000040h
jge aplib@172
mov eax, 0000000Ah
jmp aplib@108

aplib@172:

cmp edx, 00000080h
jge aplib@173
mov eax, 0000000Ch
jmp aplib@108

aplib@173:

cmp edx, 00000100h
jge aplib@174
mov eax, 0000000Eh
jmp aplib@108

aplib@174:

cmp edx, 00000200h
jge aplib@175
mov eax, 00000010h
jmp aplib@108

aplib@175:

cmp edx, 00000400h
jge aplib@176
mov eax, 00000012h
jmp aplib@108

aplib@176:

cmp edx, 00000800h
jge aplib@177
mov eax, 00000014h
jmp aplib@108

aplib@177:

cmp edx, 00001000h
jge aplib@178
mov eax, 00000016h
jmp aplib@108

aplib@178:

cmp edx, 00002000h
jge aplib@179
mov eax, 00000018h
jmp aplib@108

aplib@179:

cmp edx, 00004000h
jge aplib@180
mov eax, 0000001Ah
jmp aplib@108

aplib@180:

cmp edx, 00008000h
jge aplib@181
mov eax, 0000001Ch
jmp aplib@108

aplib@181:

cmp edx, 00010000h
jge aplib@182
mov eax, 0000001Eh
jmp aplib@108

aplib@182:

mov eax, 00000020h
jmp aplib@108

aplib@058:

push ebx
push ecx
push esi
push edi
push ebp
sub esp, 00000010h
mov ecx, dword ptr [aplib@015]
mov ebx, dword ptr [aplib@004]
mov esi, dword ptr [aplib@086]
mov dword ptr [esp+0Ch], eax
mov dword ptr [esp+08], edx
cmp eax, 00000080h
jnb aplib@183
cmp edx, 00000004
jnb aplib@183
cmp eax, dword ptr [aplib@016]
je aplib@183
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@184

aplib@185:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@186

aplib@187:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
jne aplib@188
mov ecx, 00000007
mov esi, ebx
inc ebx

aplib@188:

mov edi, dword ptr [esp+08]
mov eax, dword ptr [esp+0Ch]
mov dl, byte ptr [esi]
sub edi, 00000002
add dl, dl
add eax, eax
and edi, 00000001
mov byte ptr [esi], dl
add eax, edi
mov byte ptr [ebx], al
mov eax, dword ptr [esp+0Ch]
inc ebx
mov dword ptr [aplib@016], eax

aplib@189:

mov dword ptr [aplib@086], esi
mov dword ptr [aplib@004], ebx
mov dword ptr [aplib@015], ecx
add esp, 00000010h
jmp aplib@129

aplib@184:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@185

aplib@186:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@187

aplib@183:

dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@190

aplib@201:

mov dl, byte ptr [esi]
add dl, dl
inc dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@191

aplib@202:

mov dl, byte ptr [esi]
mov eax, dword ptr [esp+0Ch]
add dl, dl
mov ebp, dword ptr [aplib@016]
mov byte ptr [esi], dl
cmp eax, ebp
je aplib@192
mov ebp, eax
shr ebp, 08
xor eax, eax
add ebp, 00000003

aplib@193:

add edi, edi
inc eax
mov dword ptr [esp+04], edi
mov edi, ebp
mov edx, dword ptr [esp+04]
and edi, 00000001
shr ebp, 1
add edi, edx
cmp ebp, 00000001
ja aplib@193

aplib@200:

mov ebp, edi
dec eax
and ebp, 00000001
test eax, eax
je aplib@194
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@195

aplib@196:

test ebp, ebp
je aplib@197
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@217:

mov byte ptr [esi], dl
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@198

aplib@199:

mov dl, byte ptr [esi]
add dl, dl
inc dl
shr edi, 1
mov byte ptr [esi], dl
jmp aplib@200

aplib@190:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@201

aplib@191:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@202

aplib@192:

dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@203

aplib@204:

mov dl, byte ptr [esi]
add dl, dl
dec ecx
mov byte ptr [esi], dl
cmp ecx, 0FFFFFFFFh
je aplib@205

aplib@206:

mov dl, byte ptr [esi]
add dl, dl
mov byte ptr [esi], dl

aplib@207:

mov ebp, dword ptr [esp+08]
xor eax, eax

aplib@208:

mov edx, dword ptr [esp]
mov edi, ebp
inc eax
add edx, edx
and edi, 00000001
add edx, edi
shr ebp, 1
mov dword ptr [esp], edx
cmp ebp, 00000001
ja aplib@208

aplib@209:

mov edi, dword ptr [esp]
dec eax
and edi, 00000001
test eax, eax
je aplib@210
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@211

aplib@212:

test edi, edi
je aplib@213
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@214:

mov byte ptr [esi], dl
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@215

aplib@216:

mov dl, byte ptr [esi]
add dl, dl
inc dl
mov byte ptr [esi], dl
shr dword ptr [esp], 1
jmp aplib@209

aplib@203:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@204

aplib@205:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@206

aplib@195:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@196

aplib@197:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@217

aplib@198:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@199

aplib@194:

dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@218

aplib@219:

test ebp, ebp
je aplib@220
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@221:

mov byte ptr [esi], dl
dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@222

aplib@223:

mov dl, byte ptr [esi]
add dl, dl
mov al, byte ptr [esp+0Ch]
mov byte ptr [esi], dl
mov byte ptr [ebx], al
mov eax, dword ptr [esp+0Ch]
inc ebx
mov dword ptr [aplib@016], eax
cmp eax, 00000080h
jnb aplib@224
sub dword ptr [esp+08], 00000002
jmp aplib@207

aplib@218:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@219

aplib@220:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@221

aplib@222:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@223

aplib@224:

cmp eax, 00000500h
jb aplib@225
dec dword ptr [esp+08]

aplib@225:

cmp dword ptr [esp+0Ch], 00007D00h
jb aplib@207
dec dword ptr [esp+08]
jmp aplib@207

aplib@211:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@212

aplib@213:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@214

aplib@215:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@216

aplib@210:

dec ecx
cmp ecx, 0FFFFFFFFh
je aplib@226

aplib@227:

test edi, edi
je aplib@228
mov dl, byte ptr [esi]
add dl, dl
inc dl

aplib@229:

mov byte ptr [esi], dl
dec ecx
cmp ecx, 0FFFFFFFFh
jne aplib@230
mov ecx, 00000007
mov esi, ebx
inc ebx

aplib@230:

mov dl, byte ptr [esi]
add dl, dl
mov byte ptr [esi], dl
jmp aplib@189

aplib@226:

mov ecx, 00000007
mov esi, ebx
inc ebx
jmp aplib@227

aplib@228:

mov dl, byte ptr [esi]
add dl, dl
jmp aplib@229

aplib@023:

push esi
push edi
push ebp
sub esp, 0000002Ch
mov edi, dword ptr [aplib@014]
mov dword ptr [esp+04], eax
mov dword ptr [esp+20h], edx
mov dword ptr [esp+14h], ebx
mov dword ptr [esp+0Ch], ecx
xor edx, edx
mov ecx, dword ptr [aplib@013]
mov dword ptr [esp+24h], edx
mov dword ptr [esp+10h], edx
mov edx, dword ptr [aplib@013]
add ecx, 00016800h
dec edx

aplib@231:

mov ebx, dword ptr [esp+20h]
mov eax, dword ptr [aplib@017]
cmp eax, ebx
jnb aplib@232
xor ebx, ebx
mov bl, byte ptr [eax]
mov al, byte ptr [eax+01]
and eax, 000000FFh
mov ebx, dword ptr [4*ebx+aplib@010]
shl eax, 02
add ebx, eax
mov eax, dword ptr [aplib@013]
cmp ecx, eax
jbe aplib@233
cmp eax, edi
jbe aplib@234

aplib@235:

sub eax, edi

aplib@236:

mov esi, dword ptr [aplib@009]
mov ebx, dword ptr [ebx]
mov dword ptr [esi+4*eax], ebx
mov eax, dword ptr [aplib@017]
xor ebx, ebx
movzx esi, byte ptr [eax+01]
mov bl, byte ptr [eax]
shl esi, 02
mov ebx, dword ptr [4*ebx+aplib@010]
inc ecx
add ebx, esi
mov esi, dword ptr [aplib@013]
inc eax
mov dword ptr [ebx], esi
lea ebx, dword ptr [esi+01]
mov dword ptr [aplib@017], eax
mov eax, ebx
inc edx
sub eax, edi
mov dword ptr [aplib@013], ebx
cmp eax, 00016800h
jbe aplib@231
mov edi, edx
jmp aplib@231

aplib@234:

mov eax, ecx
jmp aplib@235

aplib@233:

xor eax, eax
jmp aplib@236

aplib@232:

cmp dword ptr [esp+0Ch], 00016700h
jbe aplib@237
mov [esp+0Ch], 00016700h

aplib@237:

mov edx, dword ptr [esp+20h]
xor eax, eax
mov ecx, dword ptr [esp+20h]
mov al, byte ptr [edx]
xor edx, edx
mov dl, byte ptr [ecx+01]
mov ecx, dword ptr [4*eax+aplib@010]
mov ecx, dword ptr [ecx+4*edx]
test ecx, ecx
je aplib@238
cmp dword ptr [esp+0Ch], 00000001
jbe aplib@238
mov edx, 00000800h
mov esi, dword ptr [esp+20h]
mov ebp, dword ptr [aplib@005]
mov ebx, dword ptr [aplib@013]
mov dword ptr [esp+28h], edx

aplib@246:

add ebp, ecx
cmp ebp, esi
jb aplib@241
test ecx, ecx
je aplib@241
lea eax, dword ptr [ecx+00016800h]
cmp eax, ebx
jbe aplib@242
cmp ecx, edi
jbe aplib@243

aplib@245:

sub ecx, edi

aplib@244:

mov eax, ecx
mov ecx, dword ptr [aplib@009]
mov ebp, dword ptr [aplib@005]
mov ecx, dword ptr [ecx+4*eax]
jmp aplib@246

aplib@243:

mov ecx, eax
jmp aplib@245

aplib@242:

xor ecx, ecx
jmp aplib@244

aplib@241:

cmp dword ptr [esp+14h], 00016700h
ja aplib@260

aplib@240:

mov eax, dword ptr [esp+0Ch]
mov dword ptr [esp+08], eax

aplib@239:

test ecx, ecx
je aplib@238
mov eax, dword ptr [esp+20h]
mov esi, dword ptr [esp+14h]
sub eax, ebp
cmp eax, esi
ja aplib@238
mov esi, dword ptr [esp+24h]
mov edx, dword ptr [esp+20h]
add edx, esi
mov dword ptr [esp], edx
mov dl, byte ptr [esi+ebp]
mov esi, dword ptr [esp]
mov ebx, 00000002
mov dh, byte ptr [esi]
mov dword ptr [esp+1Ch], eax
cmp dl, dh
je aplib@247
cmp eax, dword ptr [aplib@016]
jne aplib@248

aplib@247:

mov edx, dword ptr [esp+08]
mov esi, dword ptr [esp+20h]
add edx, ebp
add esi, ebx
mov dword ptr [esp+18h], edx
lea eax, dword ptr [ebx+ebp]

aplib@261:

mov dl, byte ptr [eax]
cmp dl, byte ptr [esi]
jne aplib@259
cmp eax, dword ptr [esp+18h]
jnb aplib@259
inc esi
inc eax
inc ebx
jmp aplib@261

aplib@260:

mov [esp+14h], 00016700h
jmp aplib@240

aplib@259:

mov esi, dword ptr [esp+0Ch]
cmp ebx, esi
jne aplib@258
mov eax, dword ptr [esp+1Ch]
mov dword ptr [esp+24h], esi
xor ecx, ecx
mov dword ptr [esp+10h], eax
jmp aplib@239

aplib@258:

mov ebp, dword ptr [esp+24h]
mov dword ptr [aplib@014], edi
cmp ebx, ebp
jbe aplib@257
mov eax, dword ptr [esp+1Ch]
mov edx, ebx
call aplib@025
mov esi, eax
mov edx, ebp
mov eax, dword ptr [esp+10h]
call aplib@025
mov edx, esi
sub edx, eax
add edx, edx
mov esi, 0000000Dh
mov eax, edx
sar edx, 1Fh
idiv esi
add eax, ebp
cmp ebx, eax
jbe aplib@257

aplib@255:

mov eax, dword ptr [esp+1Ch]
mov dword ptr [esp+24h], ebx
mov dword ptr [esp+10h], eax

aplib@256:

mov edx, dword ptr [aplib@013]
lea eax, dword ptr [ecx+00016800h]
mov edi, dword ptr [aplib@014]
cmp eax, edx
jbe aplib@254
cmp ecx, edi
jbe aplib@253
mov eax, ecx

aplib@253:

sub eax, edi

aplib@252:

mov ecx, dword ptr [aplib@009]
mov ebp, dword ptr [aplib@005]
mov ecx, dword ptr [ecx+4*eax]
mov ebx, dword ptr [esp+28h]
add ebp, ecx
dec ebx
mov dword ptr [esp+28h], ebx
jne aplib@239
xor ecx, ecx
jmp aplib@239

aplib@257:

mov eax, dword ptr [esp+1Ch]
cmp eax, dword ptr [aplib@016]
jne aplib@256
mov edx, dword ptr [esp+24h]
mov eax, dword ptr [esp+10h]
call aplib@025
mov esi, eax
mov edx, ebx
mov eax, dword ptr [esp+1Ch]
call aplib@025
mov edx, esi
sub edx, eax
mov esi, 00000006
mov eax, edx
sar edx, 1Fh
idiv esi
mov ebp, dword ptr [esp+24h]
add eax, ebx
cmp eax, ebp
jb aplib@256
jmp aplib@255

aplib@254:

xor eax, eax
jmp aplib@252

aplib@248:

mov ebx, dword ptr [aplib@013]
lea eax, dword ptr [ecx+00016800h]
cmp eax, ebx
jbe aplib@249
cmp ecx, edi
jbe aplib@251
mov eax, ecx

aplib@251:

sub eax, edi

aplib@250:

mov ecx, dword ptr [aplib@009]
mov ebp, dword ptr [aplib@005]
mov ecx, dword ptr [ecx+4*eax]
mov esi, dword ptr [esp+28h]
add ebp, ecx
dec esi
mov dword ptr [esp+28h], esi
jne aplib@239

aplib@238:

mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp+24h]
mov dword ptr [edx+04], eax
mov eax, dword ptr [esp+10h]
mov dword ptr [edx], eax
mov dword ptr [aplib@014], edi
add esp, 0000002Ch
pop ebp
pop edi
pop esi
ret

aplib@249:

xor eax, eax
jmp aplib@250

aplib@262:

mov ecx, dword ptr [esp+4Ch]
test ecx, ecx
je aplib@002   ;   0.0402672
cmp dword ptr [esp+50h], 00000002
jb aplib@001
test ebx, ebx
je aplib@001
mov edi, 0FEEDABEEh
mov dword ptr [aplib@003], edx   ;   0.0403514
lea eax, dword ptr [edx-01]
mov dword ptr [aplib@004], ecx   ;   0.0403510
mov dword ptr [aplib@005], eax   ;   0.0403520
mov eax, ecx
mov dword ptr [esp+24h], edi
xor eax, ecx

aplib@007:

mov ecx, dword ptr [esp+24h]
mov edx, dword ptr [esp+24h]
shr ecx, 1Fh
add edx, edx
or edx, ecx
xor ecx, ecx
mov cl, byte ptr [eax+aplib@006]   ;   0.0403000
xor edx, ecx
inc eax
mov dword ptr [esp+24h], edx
cmp eax, 00000100h
jb aplib@007   ;   0.0401D0D
test edx, edx
jne aplib@008  ;   0.040202A
mov dword ptr [aplib@009], ebx   ;   0.0403100
mov edx, ebx
xor edi, edi
xor ebx, ebx

aplib@012:

lea eax, dword ptr [edx+0005A018h]
mov esi, edi
mov dword ptr [edi+aplib@010], eax   ;   0.0403104
mov eax, ebx

aplib@011:

mov ecx, dword ptr [esi+aplib@010]
mov dword ptr [ecx+eax], ebx
add eax, 00000004
cmp eax, 00000400h
jne aplib@011   ;   0.0401D56
add edi, 00000004
add edx, eax
cmp edi, eax
jne aplib@012   ;   0.0401D46
mov ecx, 00000001
mov ebp, 0FFFFFFFFh
mov edx, dword ptr [aplib@009]
xor esi, esi
xor edi, eax
mov eax, 0FFFFFFFFh
mov dword ptr [esp+20h], esi
mov dword ptr [aplib@013], ecx   ;   0.0403504
mov dword ptr [aplib@014], esi   ;   0.040350C
mov dword ptr [esp+1Ch], ebp
mov dword ptr [aplib@015], esi   ;   0.040351C
mov dword ptr [edx], esi
mov edx, dword ptr [aplib@004]
mov dword ptr [aplib@016], eax   ;   0.0403524
mov eax, dword ptr [aplib@003]
mov ebp, ecx
mov dword ptr [aplib@017], eax   ;   0.0403508
mov bl, byte ptr [eax]
add eax, ecx
mov byte ptr [edx], bl
add edx, ecx
mov dword ptr [aplib@003], eax
mov dword ptr [aplib@004], edx

aplib@036:

cmp ebp, dword ptr [esp+50h]
jnb aplib@018   ;   0.04024CD
cmp dword ptr [esp+58h], 00000000
je aplib@019   ;   0.0401E14
inc dword ptr [esp+20h]
test byte ptr [esp+20h], 7Fh
jne aplib@019
mov ecx, dword ptr [esp+4Ch]
mov eax, dword ptr [aplib@004]
sub eax, ecx
mov ebx, dword ptr [esp+48h]
push eax
mov eax, dword ptr [aplib@003]
sub eax, ebx
push eax
call [esp+60h]
add esp, 00000008
test eax, eax
je aplib@001

aplib@019:

cmp ebp, dword ptr [esp+1Ch]
jne aplib@020   ;   0.0402031
mov eax, dword ptr [esp+14h]
mov dword ptr [esp+04], eax
mov eax, dword ptr [esp+10h]
mov dword ptr [esp], eax

aplib@037:

cmp dword ptr [esp+04], 00000002
jl aplib@021   ;   0.04023E8
mov eax, dword ptr [esp]
xor ebx, ebx
mov edx, dword ptr [aplib@016]
mov dword ptr [esp+2Ch], ebx
cmp eax, edx
je aplib@022   ;   0.040204B

aplib@039:

mov ecx, dword ptr [esp+50h]
lea eax, dword ptr [ebp+01]
mov edx, dword ptr [aplib@003]
mov dword ptr [esp+18h], eax
inc edx
mov ebx, eax
sub ecx, eax
lea eax, dword ptr [esp+10h]
call aplib@023   ;   0.040197B
mov eax, dword ptr [esp+18h]
mov ecx, dword ptr [esp]
mov dword ptr [esp+1Ch], eax
cmp ecx, dword ptr [esp+10h]
jg aplib@024   ;   0.0402144
mov edx, dword ptr [esp+04]
mov eax, ecx
call aplib@025   ;   0.040140B
mov edx, dword ptr [esp+14h]
mov ecx, eax
mov eax, dword ptr [esp+10h]
call aplib@025
mov edx, ecx
sub edx, eax
add edx, edx
mov ecx, 00000009
mov eax, edx
sar edx, 1Fh
idiv ecx

aplib@049:

mov ebx, dword ptr [esp+14h]
mov edx, dword ptr [esp+04]
add eax, ebx
cmp eax, edx
jle aplib@026   ;   0.0401EC5
mov dword ptr [esp+2Ch], 00000001

aplib@026:

test esi, esi
jbe aplib@027   ;   0.0401EF8
mov eax, dword ptr [esp+14h]
cmp eax, dword ptr [esp+04]
jl aplib@027
mov edx, eax
mov eax, dword ptr [esp+10h]
call aplib@025
mov edx, dword ptr [esp+04]
mov ecx, eax
mov eax, dword ptr [esp]
call aplib@025
cmp ecx, eax
jge aplib@027
mov dword ptr [esp+2Ch], 00000001

aplib@027:

test esi, esi
jne aplib@028   ;   0.0402174
mov eax, dword ptr [esp+14h]
cmp eax, dword ptr [esp+04]
jnl aplib@028
mov edx, eax
mov eax, dword ptr [esp+10h]
mov ebx, 00000001
call aplib@025
mov ecx, eax
mov edx, ebp
mov eax, dword ptr [aplib@003]
call aplib@029   ;   0.0401125
mov edx, dword ptr [esp+04]
add ecx, eax
mov eax, dword ptr [esp]
call aplib@025
lea edx, dword ptr [ecx+01]
cmp edx, eax
jle aplib@028
mov dword ptr [esp+2Ch], esi

aplib@050:

cmp dword ptr [esp+04], 00000002
jle aplib@030   ;   0.0402095
mov ecx, dword ptr [esp+50h]
lea eax, dword ptr [esp+08]
mov edx, dword ptr [aplib@003]
lea ebx, dword ptr [ebp+02]
add edx, 00000002
sub ecx, ebx
call aplib@023
mov eax, dword ptr [esp+08]
cmp eax, dword ptr [esp]
jl aplib@031   ;   0.0402184
mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp]
call aplib@025
mov edx, dword ptr [esp+0Ch]
mov ecx, eax
mov eax, dword ptr [esp+08]
call aplib@025
mov edx, ecx
sub edx, eax
mov eax, edx
sar edx, 1Fh
shl edx, 02
sbb eax, edx
sar eax, 02
mov edx, dword ptr [esp+0Ch]
mov ecx, dword ptr [esp+04]
add eax, edx
cmp eax, ecx

aplib@051:

jle aplib@032   ;   0.0401FBE
mov dword ptr [esp+2Ch], 00000001

aplib@032:

test esi, esi
jbe aplib@033   ;   0.04021C2
mov eax, dword ptr [esp+0Ch]
cmp eax, dword ptr [esp+04]
jl aplib@033
mov edx, eax
mov eax, dword ptr [esp+08]
call aplib@025
mov edx, dword ptr [esp+04]
mov ecx, eax
mov eax, dword ptr [esp]
call aplib@025
cmp ecx, eax
jnl aplib@033

aplib@040:

test esi, esi
jne aplib@034   ;   0.040200E
mov eax, dword ptr [esp+04]
mov dword ptr [esp+28h], eax
mov eax, dword ptr [esp]
mov edi, dword ptr [aplib@003]
mov dword ptr [esp+30h], eax

aplib@034:

mov edx, dword ptr [aplib@003]
inc edx
inc esi
mov dword ptr [aplib@003], edx

aplib@066:

test esi, esi
jne aplib@035   ;   0.0402406

aplib@069:

inc ebp
jmp aplib@036   ;   0.0401DD1

aplib@008:

mov ecx, edx
jmp aplib@002

aplib@020:

mov ecx, dword ptr [esp+50h]
mov eax, esp
mov edx, dword ptr [aplib@003]
mov ebx, ebp
sub ecx, ebp
call aplib@023
jmp aplib@037   ;   0.0401E2D

aplib@022:

cmp esi, 00000001
jbe aplib@030
mov eax, dword ptr [esp+30h]
cmp eax, edx
je aplib@030
mov edx, esi
call aplib@025
mov ebx, esi
mov ecx, eax
mov edx, ebp
mov eax, edi
call aplib@029
cmp ecx, eax
jge aplib@030
cmp dword ptr [esp+30h], 00000500h
jnl aplib@038   ;   0.0402136

aplib@048:

cmp dword ptr [esp+30h], 00007D00h
jl aplib@039   ;   0.0401E4F
cmp esi, 00000003
jne aplib@039

aplib@030:

cmp dword ptr [esp+2Ch], 00000000
jne aplib@040   ;   0.0401FF5
test esi, esi
je aplib@041   ;   0.0402343
cmp esi, 00000001
jbe aplib@042   ;   0.0402394
mov ecx, ebp
mov eax, dword ptr [esp+50h]
sub ecx, esi
sub eax, ecx
mov ecx, eax
cmp eax, esi
jbe aplib@043   ;   0.04020C3
mov ecx, esi

aplib@043:

lea eax, dword ptr [esp+08]
mov ebx, ebp
mov edx, edi
sub ebx, esi
call aplib@023
cmp esi, dword ptr [esp+0Ch]
ja aplib@044   ;   0.0402104
mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@025
mov ecx, eax
mov edx, esi
mov eax, dword ptr [esp+08]
call aplib@025
cmp ecx, eax
jle aplib@044
mov eax, dword ptr [esp+08]
mov dword ptr [esp+30h], eax
mov eax, dword ptr [esp+0Ch]
mov dword ptr [esp+28h], eax

aplib@044:

mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@025
mov ebx, esi
mov ecx, eax
mov edx, ebp
mov eax, edi
call aplib@029
cmp ecx, eax
jl aplib@045   ;   0.04022BC

aplib@047:

mov edx, ebp
mov eax, edi
call aplib@046   ;   0.0401181
inc edi
dec esi
jne aplib@047   ;   0.0402124
jmp aplib@041

aplib@038:

cmp esi, 00000002
jne aplib@048   ;   0.040207E
jmp aplib@030

aplib@024:

mov edx, dword ptr [esp+04]
mov eax, ecx
call aplib@025
mov edx, dword ptr [esp+14h]
mov ecx, eax
mov eax, dword ptr [esp+10h]
call aplib@025
mov edx, ecx
sub edx, eax
mov eax, edx
sar edx, 1Fh
shl edx, 02
sbb eax, edx
sar eax, 02
jmp aplib@049   ;   0.0401EAF

aplib@028:

cmp dword ptr [esp+2Ch], 00000000
je aplib@050   ;   0.0401F49
jmp aplib@030

aplib@031:

mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp]
call aplib@025
mov edx, dword ptr [esp+0Ch]
mov ecx, eax
mov eax, dword ptr [esp+08]
call aplib@025
mov edx, ecx
sub edx, eax
add edx, edx
mov ecx, 0000000Bh
mov eax, edx
sar edx, 1Fh
idiv ecx
mov ecx, dword ptr [esp+0Ch]
mov ebx, dword ptr [esp+04]
add eax, ecx
cmp eax, ebx
jmp aplib@051   ;   0.0401FB4

aplib@033:

cmp dword ptr [esp+2Ch], 00000000
jne aplib@030
cmp dword ptr [esp+04], 00000003
jle aplib@030
mov ecx, dword ptr [esp+50h]
lea eax, dword ptr [esp+08]
mov edx, dword ptr [aplib@003]
lea ebx, dword ptr [ebp+03]
add edx, 00000003
sub ecx, ebx
call aplib@023
mov eax, dword ptr [esp+08]
cmp eax, dword ptr [esp]
jl aplib@052   ;   0.040227E
mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp]
call aplib@025
mov edx, dword ptr [esp+0Ch]
mov ecx, eax
mov eax, dword ptr [esp+08]
call aplib@025

mov edx, ecx
sub edx, eax
mov eax, edx
sar edx, 1Fh
shl edx, 02
sbb eax, edx
sar eax, 02
mov edx, dword ptr [esp+0Ch]
mov ecx, dword ptr [esp+04]
add eax, edx
cmp eax, ecx

aplib@054:

jle aplib@053   ;   0.0402242
mov dword ptr [esp+2Ch], 00000001

aplib@053:

test esi, esi
jbe aplib@030
mov eax, dword ptr [esp+0Ch]
cmp eax, dword ptr [esp+04]
jl aplib@030
mov edx, eax
mov eax, dword ptr [esp+08]
call aplib@025
mov edx, dword ptr [esp+04]
mov ecx, eax
mov eax, dword ptr [esp]
call aplib@025
cmp ecx, eax
jnl aplib@030
jmp aplib@040

aplib@052:

mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp]
call aplib@025
mov edx, dword ptr [esp+0Ch]
mov ecx, eax
mov eax, dword ptr [esp+08]
call aplib@025
mov edx, ecx
sub edx, eax
add edx, edx
mov ecx, 0000000Bh
mov eax, edx
sar edx, 1Fh
idiv ecx
mov ecx, dword ptr [esp+0Ch]
mov ebx, dword ptr [esp+04]
add eax, ecx
cmp eax, ebx
jmp aplib@054   ;   0.0402238

aplib@045:

mov eax, dword ptr [esp]
cmp eax, dword ptr [aplib@016]
jne aplib@055   ;   0.0402307
mov ebx, esi
mov edx, ebp
mov eax, edi
call aplib@029
mov edx, dword ptr [esp+04]
mov ecx, eax
mov eax, dword ptr [esp]
call aplib@025
mov edx, esi
lea ebx, dword ptr [ecx+eax]
mov eax, dword ptr [esp+30h]
call aplib@025
mov ecx, eax
mov eax, dword ptr [esp]
mov edx, dword ptr [esp+04]
inc eax
call aplib@025
add eax, ecx
cmp ebx, eax
jle aplib@047

aplib@055:

mov eax, dword ptr [esp+30h]
cmp eax, dword ptr [aplib@016]
je aplib@056   ;   0.0402336
cmp eax, 00000500h
jl aplib@057   ;   0.0402323
cmp esi, 00000002
je aplib@047

aplib@057:

cmp dword ptr [esp+30h], 00007D00h
jl aplib@056
cmp esi, 00000003
je aplib@047

aplib@056:

mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@058   ;   0.0401689

aplib@063:

xor esi, esi

aplib@041:

mov eax, dword ptr [esp+04]
cmp eax, 00000003
jg aplib@059   ;   0.04023C1
mov edx, eax
mov eax, dword ptr [esp]
call aplib@025
mov ebx, dword ptr [esp+04]
mov ecx, eax
mov edx, ebp
mov eax, dword ptr [aplib@003]
call aplib@029
cmp ecx, eax
jle aplib@060   ;   0.040239F

aplib@065:

mov ecx, dword ptr [esp+04]

aplib@062:

test ecx, ecx
je aplib@061   ;   0.04023DE
mov eax, dword ptr [aplib@003]
mov edx, ebp
call aplib@046
mov ebx, dword ptr [aplib@003]
inc ebx
dec ecx
mov dword ptr [aplib@003], ebx
jmp aplib@062   ;   0.0402374

aplib@042:

mov edx, ebp
mov eax, edi
call aplib@046
jmp aplib@063   ;   0.0402341

aplib@060:

mov eax, dword ptr [esp]
cmp eax, dword ptr [aplib@016]
je aplib@059
cmp eax, 00000500h
jl aplib@064   ;   0.04023B8
cmp dword ptr [esp+04], 00000002
je aplib@065   ;   0.0402370

aplib@064:

cmp dword ptr [esp], 00007D00h
jge aplib@065

aplib@059:

mov edx, dword ptr [esp+04]
mov eax, dword ptr [esp]
call aplib@058
mov edx, dword ptr [esp+04]
mov eax, dword ptr [aplib@003]
add edx, eax
mov dword ptr [aplib@003], edx

aplib@061:

add ebp, dword ptr [esp+04]
dec ebp
jmp aplib@066   ;   0.040201C

aplib@021:

test esi, esi
je aplib@067   ;   0.04023F8
inc esi

aplib@068:

inc dword ptr [aplib@003]
jmp aplib@066

aplib@067:

mov eax, dword ptr [aplib@003]
mov edx, ebp
call aplib@046
jmp aplib@068   ;   0.04023ED

aplib@035:

mov eax, dword ptr [esp+28h]
cmp esi, eax
jne aplib@069   ;   0.0402024
mov ecx, ebp
sub ecx, eax
mov eax, dword ptr [esp+50h]
sub eax, ecx
mov ecx, eax
cmp eax, esi
jbe aplib@070   ;   0.0402424
mov ecx, esi

aplib@070:

lea eax, dword ptr [esp+08]
mov ebx, ebp
mov edx, edi
sub ebx, esi
call aplib@023
cmp esi, dword ptr [esp+0Ch]
ja aplib@071   ;   0.0402465
mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@025
mov ecx, eax
mov edx, esi
mov eax, dword ptr [esp+08]
call aplib@025
cmp ecx, eax
jle aplib@071
mov eax, dword ptr [esp+08]
mov dword ptr [esp+30h], eax
mov eax, dword ptr [esp+0Ch]
mov dword ptr [esp+28h], eax

aplib@071:

mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@025
mov ebx, esi
mov ecx, eax
mov edx, ebp
mov eax, edi
call aplib@029
cmp ecx, eax
jl aplib@072   ;   0.0402494

aplib@073:

mov edx, ebp
mov eax, edi
call aplib@046
inc edi
dec esi
je aplib@069
jmp aplib@073   ;   0.0402481

aplib@072:

mov eax, dword ptr [esp+30h]
cmp eax, dword ptr [aplib@016]
je aplib@074   ;   0.04024BB
cmp eax, 00000500h
jl aplib@075   ;   0.04024AC
cmp esi, 00000002
je aplib@073

aplib@075:

cmp dword ptr [esp+30h], 00007D00h
jl aplib@074
cmp esi, 00000003
je aplib@073

aplib@074:

mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@058
xor esi, esi
jmp aplib@069

aplib@018:

test esi, esi
je aplib@076   ;   0.040253F
cmp esi, 00000001
jbe aplib@077   ;   0.0402562
mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@025
mov ebx, esi
mov ecx, eax
mov edx, ebp
mov eax, edi
call aplib@029
cmp ecx, eax
jle aplib@078   ;   0.040250D

aplib@082:

xor ebx, ebx

aplib@079:

cmp ebx, esi
jnb aplib@076
mov edx, ebp
mov eax, edi
call aplib@046
inc ebx
inc edi
jmp aplib@079   ;   0.04024FC

aplib@078:

mov eax, dword ptr [esp+30h]
cmp eax, dword ptr [aplib@016]
je aplib@080   ;   0.0402534
cmp eax, 00000500h
jl aplib@081   ;   0.0402525
cmp esi, 00000002
je aplib@082   ;   0.04024FA

aplib@081:

cmp dword ptr [esp+30h], 00007D00h
jl aplib@080
cmp esi, 00000003
je aplib@082

aplib@080:

mov eax, dword ptr [esp+30h]
mov edx, esi
call aplib@058

aplib@076:

cmp dword ptr [esp+24h], 00000000
je aplib@083   ;   0.040256D

aplib@089:

cmp dword ptr [esp+58h], 00000000
jne aplib@084   ;   0.0402649

aplib@093:

mov ebx, dword ptr [esp+4Ch]
mov ecx, dword ptr [aplib@004]
sub ecx, ebx
jmp aplib@002

aplib@077:

mov edx, ebp
mov eax, edi
call aplib@046
jmp aplib@076

aplib@083:

mov ebx, dword ptr [aplib@015]
dec ebx
mov dword ptr [aplib@015], ebx
cmp ebx, 0FFFFFFFFh
je aplib@085   ;   0.04025E9

aplib@090:

mov eax, dword ptr [aplib@086]   ;   0.0403518
mov dl, byte ptr [eax]
mov ebp, dword ptr [aplib@015]
add dl, dl
dec ebp
inc dl
mov dword ptr [aplib@015], ebp
mov byte ptr [eax], dl
cmp ebp, 0FFFFFFFFh
je aplib@087   ;   0.0402609

aplib@091:

mov eax, dword ptr [aplib@086]
mov dl, byte ptr [eax]
mov ecx, dword ptr [aplib@015]
add dl, dl
dec ecx
inc dl
mov dword ptr [aplib@015], ecx
mov byte ptr [eax], dl
cmp ecx, 0FFFFFFFFh
je aplib@088   ;   0.0402629

aplib@092:

mov eax, dword ptr [aplib@086]
mov dl, byte ptr [eax]
add dl, dl
mov byte ptr [eax], dl
mov edx, dword ptr [aplib@004]
mov byte ptr [edx], 00
mov cl, byte ptr [aplib@015]
mov bl, byte ptr [eax]
inc edx
shl bl, cl
mov dword ptr [aplib@004], edx
mov byte ptr [eax], bl
jmp aplib@089   ;   0.0402546

aplib@085:

mov eax, dword ptr [aplib@004]
mov edi, 00000007
mov dword ptr [aplib@086], eax
inc eax
mov dword ptr [aplib@015], edi
mov dword ptr [aplib@004], eax
jmp aplib@090   ;   0.040257F

aplib@087:

mov eax, dword ptr [aplib@004]
mov edx, 00000007
mov dword ptr [aplib@086], eax
inc eax
mov dword ptr [aplib@015], edx
mov dword ptr [aplib@004], eax
jmp aplib@091   ;   0.040259E

aplib@088:

mov eax, dword ptr [aplib@004]
mov esi, 00000007
mov dword ptr [aplib@086], eax
inc eax
mov dword ptr [aplib@015], esi
mov dword ptr [aplib@004], eax
jmp aplib@092   ;   0.04025BD

aplib@084:

mov ebp, dword ptr [esp+4Ch]
mov eax, dword ptr [aplib@004]
sub eax, ebp
mov edx, dword ptr [esp+48h]
push eax
mov eax, dword ptr [aplib@003]
sub eax, edx
push eax
call [esp+60h]
add esp, 00000008
test eax, eax
jne aplib@093   ;   0.0402551

aplib@001:

xor ecx, ecx

aplib@002:

mov eax, ecx
add esp, 34h
pop ebp
pop edi
pop esi
pop ebx
ret 0014h

.data

aplib@006 label   ;   0.0403000h
db 13,10,13,10,'aPLib v0.22b  -  the smaller the better :)',13,10
db 'Copyright (c) 1998-99 by Joergen Ibsen / Jibz, All Rights Reserved',13,10,13,10
db 'This copy of aPLib is free for non-profitable use.',13,10,13,10
db 'For more information: http://apack.cjb.net/',13,10,13,10,0,0,0,0,0
db 04Fh, 01Bh, 079h, 029h, 0EBh, 0C9h, 0E5h, 042h, 0A5h, 040h, 0CEh, 0B0h
db 011h, 0EDh, 02Ch, 024h, 035h, 060h, 07Dh, 0B4h, 0D4h, 029h, 001h, 080h
db 039h, 0FFh, 0B2h, 080h, 0C8h, 039h, 09Ch, 01Ch

aplib@009 dd 0   ;   0.0403100

aplib@013 dd 362a3620h   ;   0.0403504
aplib@017 dd 0    ; 0.0403508
aplib@014 dd 0    ; 0.040350c
aplib@004 dd 0    ; 0.0403510
aplib@003 dd 0    ; 0.0403514
aplib@086 dd 0    ; 0.0403518
aplib@015 dd 0    ; 0.040351c
aplib@005 dd 0    ; 0.0403520
aplib@016 dd 0    ; 0.0403524

.data?

aplib@010 dd ?   ;   0.0403104
db 400h dup (?)

end start
end

--[depack.asm]---------------------------------------------------------------->8

;***************************************************************
;*         aPLib v0.22b  -  the smaller the better :)          *
;*               WASM & TASM assembler depacker                *
;*                                                             *
;*   Copyright (c) 1998-99 by  - Jibz -  All Rights Reserved   *
;***************************************************************

.386p
.MODEL flat

.CODE

PUBLIC _aP_depack_asm

_aP_depack_asm:
    push   ebp
    mov    ebp, esp
    pushad
    push   ebp

    mov    esi, [ebp + 8]     ; C calling convention
    mov    edi, [ebp + 12]

    cld
    mov    dl, 80h

literal:
    movsb
nexttag:
    call   getbit
    jnc    literal

    xor    ecx, ecx
    call   getbit
    jnc    codepair
    xor    eax, eax
    call   getbit
    jnc    shortmatch
    mov    al, 10h
getmorebits:
    call   getbit
    adc    al, al
    jnc    getmorebits
    jnz    domatch_with_inc
    stosb
    jmp    short nexttag
codepair:
    call   getgamma_no_ecx
    dec    ecx
    loop   normalcodepair
    mov    eax,ebp
    call   getgamma
    jmp    short domatch

shortmatch:
    lodsb
    shr    eax, 1
    jz     donedepacking
    adc    ecx, 2
    mov    ebp, eax
    jmp    short domatch

normalcodepair:
    xchg   eax, ecx
    dec    eax
    shl    eax, 8
    lodsb
    mov    ebp, eax
    call   getgamma
    cmp    eax, 32000
    jae    domatch_with_2inc
    cmp    eax, 1280
    jae    domatch_with_inc
    cmp    eax, 7fh
    ja     domatch

domatch_with_2inc:
    inc    ecx

domatch_with_inc:
    inc    ecx
domatch:
    push   esi
    mov    esi, edi
    sub    esi, eax
    rep    movsb
    pop    esi
    jmp    short nexttag

getbit:
    add     dl, dl
    jnz     stillbitsleft
    mov     dl, [esi]
    inc     esi
    adc     dl, dl
stillbitsleft:
    ret

getgamma:
    xor    ecx, ecx
getgamma_no_ecx:
    inc    ecx
getgammaloop:
    call   getbit
    adc    ecx, ecx
    call   getbit
    jc     getgammaloop
    ret

donedepacking:
    pop    ebp
    sub    edi, [ebp + 12]
    mov    [ebp - 4], edi     ; return unpacked length in eax

    popad
    pop    ebp
    ret

END

; NBK/MATRiX (c) 2000