Function at 0x15e6a
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
and byte [ebp - 0x10], 0
push ebx
push esi
push edi
xor eax, eax
lea edi, [ebp - 0xf]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
push 6
mov dword [ebp - 0x50], 0xa5a5
stosb byte es:[edi], al
mov word [ebp - 0x34], 0xa
xor esi, esi
pop ebx
mov eax, esi
xor ecx, ecx
sub eax, ecx
je 0x15edd
dec eax
je 0x15ed2
dec eax
je 0x15ec7
dec eax
je 0x15ebf
dec eax
je 0x15eb9
dec eax
jne 0x15ef0
inc word [ebp - 0x40]
jp 0x15eb7
jnp 0x15eb7
jmp 0x15ef0
jmp 0x15ef0
mov word [ebp - 0x30], cx
jmp 0x15ef0
or word [ebp - 0x36], 0xffff
jmp 0x15ef0
mov word [ebp - 0x46], cx
jns 0x15ed0
js 0x15ed0
and eax, 0x89661eeb
dec ebp
sar byte [ebx + eax + 0x7d], cl
add dword [edi], esp
jmp 0x15ef0
mov word [ebp - 0x2e], cx
jl 0x15edb
jge 0x15edb
daa
jmp 0x15ef0
push 3
lea ecx, [ebp - 0x4c]
pop edx
xor eax, eax
mov edi, ecx
stosd dword es:[edi], eax
add ecx, 8
dec edx
stosw word es:[edi], ax
jne 0x15ee3
inc esi
dec ebx
jne 0x15e97
mov esi, dword [ebp + 8]
xor edi, edi
cmp di, 3
jae case.0x162ad.0
movzx ecx, di
mov eax, ecx
imul eax, ecx
imul eax, ecx
imul eax, ecx
add eax, 7
sub eax, 7
je 0x15f66
dec eax
je 0x15f23
sub eax, 0xf
je 0x15f72
jmp 0x15f6f
movzx ecx, word [ebp - 0x2e]
mov eax, ecx
push 5
cdq
pop ebx
idiv ebx
xor ebx, ebx
mov eax, ecx
push 3
pop ecx
cmp edx, 2
cdq
setne bl
idiv ecx
dec edx
neg edx
sbb edx, edx
neg edx
or ebx, edx
je 0x15f5f
mov ax, word [ebp - 0x30]
mov word [ebp - 0x32], 1
mov word [ebp - 0x36], ax
jns 0x15f5d
js 0x15f5d
add eax, 0x836610eb
into
add bl, ch
or dword [esi - 1], esp
inc ebp
sal byte [ebp + 3], cl
jmp 0x15f6f
and word [ebp - 0x32], 0
jmp 0x15f6f
inc word [ebp - 0x2e]
jne 0x15f6f
je 0x15f6f
add eax, dword [edi - 0x15]
xchg dword [esi + 3], esi
inc edi
jmp 0x15ef9
jbe 0x15f77
ja 0x15f77
add al, 0x8b
pop ebp
movsb byte es:[edi], byte [esi]
mov ebx, dword [ebp - 0x5c]
xor ecx, ecx
cmp cx, 8
jae 0x1647f
movzx eax, cx
lea edx, [eax + 1]
imul edx, eax
lea eax, [edx + 1]
cmp eax, 0x15
jg 0x1603e
je 0x16023
dec eax
je 0x16008
dec eax
dec eax
je 0x15ff0
sub eax, 4
je 0x15fd6
sub eax, 6
jne 0x1608b
cmp dword [ebp - 0x58], 0
je 0x1608b
mov eax, dword [ebp - 0x54]
imul eax, dword [ebp - 0x58]
and eax, 0xffff
add ebx, eax
mov dword [ebp - 0x5c], ebx
jmp 0x1608b
mov ebx, dword [ebp - 0x60]
imul ebx, dword [ebp - 0x68]
and ebx, 0xffff
mov dword [ebp - 0x5c], ebx
jb 0x15feb
jae 0x15feb
adc ch, cl
wait
add byte [eax], al
add bh, al
inc ebp
cwde
pop edx
add dword [eax], eax
add byte [esi + 3], dh
jmp 0x1608b
mov dword [ebp - 0x68], 0x15a
jbe 0x15ffc
ja 0x15ffc
adc al, 0xc7
inc ebp
lodsb al, byte [esi]
xor eax, 0xe900004e
add dword [eax], 0
add byte [ebx - 0x173e4fbb], cl
adc byte [ecx + 0x375a845], cl
mov dword [ebp - 0x54], 0x4e35
jmp 0x1608b
mov eax, dword [ebp - 0x50]
shr eax, 0x10
mov dword [ebp - 0x58], eax
jne 0x16016
je 0x16016
adc ecx, dword [ebx - 0xda4fbb]
inc dword [eax]
add byte [ecx + 0x68eba045], cl
mov eax, dword [ebp - 0x50]
and eax, 0xffff
mov dword [ebp - 0x60], eax
jmp 0x1608b
mov eax, dword [ebp - 0x54]
mov edx, ebx
imul eax, dword [ebp - 0x60]
and edx, 0xffff
shl edx, 0x10
lea eax, [eax + edx + 1]
mov dword [ebp + 8], eax
jmp 0x1608b
cmp eax, 0x1f
je 0x16079
cmp eax, 0x2b
je 0x16065
cmp eax, 0x39
jne 0x1608b
movzx eax, word [ebp - 0x32]
push 2
cdq
pop edi
idiv edi
sub edx, 0
je 0x16091
dec edx
je 0x16335
jmp 0x1608b
and dword [ebp + 8], 0x7fff
jns 0x16071
js 0x16071
adc eax, 0x8908458b
inc ebp
fsub st(3), st(0)
adc cl, byte [ebx + 0x45890845]
mov al, 0xeb
add dword [eax], edx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x24], eax
jmp 0x1608b
mov eax, dword [ebp + 8]
mov dword [ebp - 0x50], eax
jmp 0x16082
shr dword [ebp + 8], 0x10
jo 0x1608b
jno 0x1608b
adc dword [ecx - 0x17], eax
inc ecx
jmp 0x15f7c
jmp 0x1608d
movzx ecx, word [ebp - 0x24]
mov eax, ecx
push 0xb
cdq
pop edi
idiv edi
mov eax, ecx
push 7
pop ecx
mov edi, edx
sub edi, 5
neg edi
cdq
sbb edi, edi
idiv ecx
inc edi
dec edx
dec edx
neg edx
sbb edx, edx
inc edx
or edi, edx
je 0x160cd
mov ax, word [ebp - 0x30]
mov word [ebp - 0x32], 1
mov word [ebp - 0x36], ax
jmp 0x15f7a
movzx eax, word [ebp - 0x46]
cmp eax, 9
ja case.default.0x160da
jmp dword [eax*4 + 0x16489]
mov eax, dword [esi + 0xf]
xor dword [esi + 2], eax
jle 0x160ec
jg 0x160ec
cmp byte [ebx + 0x46310f46], cl
pop es
mov eax, dword [esi + 0xf]
xor dword [esi + 7], eax
push ecx
xor ecx, ecx
jecxz 0x160f8
cmp dword [ecx - 0x17], ebx
in eax, dx
add byte [eax], al
add byte [ebx + 0x1138e], cl
mov ecx, dword [esi + 0x113]
lea eax, [esi + 0x113]
xor dword [esi + 2], ecx
jo 0x16112
pop ecx
jmp 0x161eb
mov ecx, dword [esi + 0x113]
lea eax, [esi + 0x113]
xor dword [esi + 2], ecx
jo 0x16112
jno 0x16112
inc ecx
mov ecx, dword [eax]
xor dword [esi + 7], ecx
jb 0x1611c
jae 0x1611c
inc edx
mov eax, dword [eax]
xor dword [esi + 0xf], eax
jne 0x16126
je 0x16126
inc ebx
jmp 0x161eb
jb 0x16130
jae 0x16130
xor dh, byte [ebx]
leave
xor ecx, ecx
mov eax, ecx
push 4
cdq
pop edi
idiv edi
mov al, byte [edx + esi + 0x113]
xor byte [esi + ecx + 0x13], al
inc ecx
cmp ecx, 0xff
jl 0x16132
jmp 0x161eb
mov al, byte [esi + 2]
xor byte [esi], al
jmp 0x1615b
mov al, byte [esi + 3]
xor byte [esi + 1], al
jo 0x16166
jno 0x16166
add ecx, ebp
add byte [eax], 0
add byte [ebp - 0x17af0fbb], cl
lea eax, [ebp - 0x10]
push eax
invalid
inc esp
out dx, eax
invalid
jmp 0x161eb
lea eax, [ebp - 0x10]
push eax
call fcn.000150b8
jmp 0x161eb
xor eax, eax
lea edi, [ebp - 0x20]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
jbe 0x16184
ja 0x16184
inc esp
lea eax, [ebp - 0x20]
push eax
call fcn.000152b8
jns 0x16192
js 0x16192
inc ebp
lea eax, [ebp - 0x178]
lea ecx, [ebp - 0x20]
push eax
xor eax, eax
push eax
push eax
push ecx
push eax
push eax
call fcn.000103c8
jp 0x161ad
jnp 0x161ad
inc esi
mov dword [ebp - 0x64], 0x120
jl 0x161b9
jge 0x161b9
inc edi
jmp 0x161eb
jne case.default.0x160da
je case.default.0x160da
xor ecx, dword [ebx + 0x46310746]
add dh, byte [esi + 3]
mov eax, dword [esi + 7]
xor dword [esi + 2], eax
jbe 0x161cb
ja 0x161cb
xor al, 0x8a
inc esi
pop es
mov al, byte [esi + 7]
xor byte [esi + 6], al
jns 0x161d6
js 0x161d6
xor eax, 0x3007468a
push es
mov al, byte [esi + 7]
xor byte [esi], al
jp 0x161e0
jnp 0x161e0
mov al, byte ss:[esi + 8]
mov al, byte [esi + 8]
xor byte [esi + 1], al
jl 0x161eb
jge 0x161eb
aaa
xor edi, edi
movzx ecx, di
lea eax, [ecx + 3]
imul eax, ecx
inc eax
dec eax
je 0x162b4
sub eax, 4
je 0x16294
sub eax, 6
je 0x16289
sub eax, 8
je 0x15f7a
jmp case.default.0x162ad
mov eax, dword [ebp - 0x10]
mov dword [esi + 2], eax
jle 0x16225
jg 0x16225
sub byte [ebx + 0x4689f445], cl
pop es
mov eax, dword [ebp - 0xc]
mov dword [esi + 7], eax
push ecx
xor ecx, ecx
jecxz 0x16231
sub dword [ecx - 0x75], ebx
inc ebp
clc
pop ecx
mov eax, dword [ebp - 8]
mov dword [esi + 0xf], eax
jmp 0x1623b
mov eax, dword [ebp - 4]
mov dword [esi + 0x113], eax
jo 0x16249
jno 0x16249
xor ebx, ebp
mov al, byte [0x113868a]
mov al, byte [esi + 0x113]
jmp 0x161eb
mov al, byte [esi + 0x113]
xor byte [esi], al
jp 0x16258
jnp 0x16258
push es
mov al, byte [esi + 0x114]
xor byte [esi + 1], al
jl 0x16266
jge 0x16266
pop es
mov al, byte [esi + 0x113]
xor byte [esi + 6], al
jle 0x16274
jg 0x16274
or byte [ebx + 0x11386], cl
add byte [ecx], dh
inc esi
or edx, dword [ecx + 0x31]
leave
mov eax, dword [esi + 0x113]
xor dword [esi + 0xb], eax
push ecx
xor ecx, ecx
jecxz 0x16283
or dword [ecx - 0x17], ebx
invalid
pop ecx
jmp 0x161eb
mov word [ebp - 0x32], 1
jmp 0x16292
jmp case.default.0x162ad
mov ax, word [ebp - 0x46]
cmp ax, word [ebp - 0x34]
jne case.default.0x162ad
movzx eax, word [ebp - 0x2e]
push 9
cdq
pop ecx
idiv ecx
cmp edx, 8
ja case.default.0x162ad
jmp dword [edx*4 + 0x164b1]
inc word [ebp - 0x46]
jle case.default.0x162ad
jg case.default.0x162ad
dec eax
inc edi
cmp di, 4
jb 0x161ed
mov al, byte [esi + 0xf]
xor byte [esi + 6], al
jo 0x162d3
jno 0x162d3
push ecx
mov eax, dword [esi + 0xf]
xor dword [esi + 0xb], eax
jb 0x162de
jae 0x162de
push edx
mov al, byte [esi + 0xf]
xor byte [esi], al
jne 0x162e8
je 0x162e8
push ebx
mov al, byte [esi + 0x10]
xor byte [esi + 1], al
jbe 0x162f3
ja 0x162f3
push esp
jmp 0x161eb
jb 0x162fd
jae 0x162fd
add ch, bl
pop es
jmp case.0x162ad.0
push ecx
xor ecx, ecx
jecxz 0x16305
dec ecx
pop ecx
lea eax, [ebp - 0x178]
push eax
mov eax, dword [ebp - 0x64]
push dword [ebp + 0xc]
shl eax, 3
push eax
push esi
call fcn.000104a6
jl 0x16322
jge 0x16322
push edi
pop edi
pop esi
pop ebx
leave
ret 8
jp 0x1632e
jnp 0x1632e
push esi
jmp case.0x162ad.0
jmp 0x16333
jmp case.0x162ad.0
xor edi, edi
movzx ecx, di
mov eax, ecx
imul eax, ecx
imul eax, ecx
inc eax
dec eax
je 0x1643f
dec eax
je 0x1642b
sub eax, 7
je case.default.0x16381
sub eax, 0x13
je 0x163ca
sub eax, 0x25
je 0x163a4
sub eax, 0x3d
je 0x16388
sub eax, 0x5b
jne 0x1645b
movzx eax, word [ebp - 0x24]
push 9
cdq
pop ecx
idiv ecx
cmp edx, 8
ja case.default.0x16381
jmp dword [edx*4 + 0x164d5]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
lea ecx, [ecx + eax*2]
add eax, ecx
mov dword [ebp - 0x24], eax
jbe 0x1639b
ja 0x1639b
and al, 0x66
mov dword [ebp - 0x30], eax
mov word [ebp - 0x30], ax
jmp 0x1645b
movzx eax, word [ebp - 0x28]
movzx ecx, word [ebp - 0x2c]
lea eax, [ecx + eax*4]
inc word [ebp + eax*2 - 0x4c]
lea eax, [ebp + eax*2 - 0x4c]
jl 0x163bd
jge 0x163bd
pop ss
mov ax, word [ebp - 0x30]
mov word [ebp - 0x36], ax
jmp 0x1645b
movzx eax, word [ebp - 0x28]
xor edx, edx
shl eax, 2
lea ecx, [ebp + eax*2 - 0x4c]
push ecx
xor ecx, ecx
jecxz 0x163dd
sbb dword [ecx + 0xf], ebx
mov bh, 0x5d
aam 3
fsub dword [esi - 0x75]
pop esp
pop ebp
mov ah, 0x66
cmp ebx, dword [ecx]
pop ecx
movzx ebx, word [ebp - 0x2c]
add ebx, eax
mov bx, word [ebp + ebx*2 - 0x4c]
cmp bx, word [ecx]
jbe 0x163f1
mov dword [ebp - 0x2c], edx
inc edx
inc ecx
inc ecx
cmp dx, 3
jb 0x163d7
jmp 0x1645b
movzx eax, word [ebp - 0x2c]
xor edx, edx
lea ecx, [ebp + eax*2 - 0x4c]
jne 0x1640b
je 0x1640b
and ecx, dword [edi]
mov bh, 0x5d
fmul dword [ebp - 0x749967e4]
pop esp
pop ebp
mov ah, 0x66
cmp ebx, dword [ecx]
movzx ebx, word [ebp - 0x28]
lea ebx, [eax + ebx*4]
mov bx, word [ebp + ebx*2 - 0x4c]
cmp bx, word [ecx]
jbe 0x1641f
mov dword [ebp - 0x28], edx
inc edx
add ecx, 8
cmp dx, 3
jb 0x16406
jmp 0x1645b
movzx eax, word [ebp - 0x24]
push 3
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x2c], edx
jle 0x1643d
jg 0x1643d
sbb bl, ch
sbb al, 0xf
mov bh, 0x45
fsubr qword [edx + 9]
jmp 0x1645b
movzx eax, word [ebp - 0x24]
push 9
cdq
pop ecx
idiv ecx
push 3
pop ecx
movzx eax, dx
mov dword [ebp - 0x24], edx
cdq
idiv ecx
mov dword [ebp - 0x28], eax
jmp 0x1645b
inc edi
cmp di, 7
jb 0x16337
jmp case.0x16381.1
jo 0x16470
jno 0x16470
and ecx, ebp
cmp dl, 0xff
push dword [edx + 3]
jb 0x1647a
jmp case.0x16381.1
jb 0x1647a
jae 0x1647a
and bh, byte [ecx + 3]
jns 0x1647f
js 0x1647f
push ebp
jp 0x16484
jnp 0x16484
push ss
jmp case.0x16381.1