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

Disassembly:
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
shr eax, 2
mov ecx, eax
imul ecx, dword [esp + 0xc]
add ecx, dword [esp + 8]
push ebp
mov ebp, dword [esp + 0x28]
push esi
mov esi, dword [esp + 0xc]
shr edx, 2
lea ecx, [esi + ecx*4]
mov esi, edx
imul esi, dword [esp + 0x24]
add esi, dword [esp + 0x20]
push edi
mov edi, dword [esp + 0x20]
lea esi, [edi + esi*4]
mov edi, dword [esp + 0x38]
sub eax, ebp
sub edx, ebp
cmp edi, 0xc
ja case.default.0x440f0b
push ebx
jmp dword [edi*4 + 0x441848]
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x441028
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebx, dword [esi]
mov ebp, dword [ecx]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x18
mov edx, 0xff
sub edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebp
shr edx, 7
mov ebp, edi
sub ebp, edx
add ebp, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
je 0x441006
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
mov edx, ebx
shr edx, 0x10
and edx, 0xff
imul edx, edi
add eax, edx
xor edx, edx
div ebp
shl ebp, 8
movzx edx, bh
imul edx, edi
movzx ebx, bl
imul ebx, edi
or eax, ebp
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x1d]
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
or edx, eax
movzx eax, byte [esp + 0x1c]
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, ebx
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x441017
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x440f45
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440f32
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x441156
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebp, dword [ecx]
mov ebx, dword [esi]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x18
mov edx, 0xff
sub edx, ebp
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
sub edi, edx
add edi, ebp
mov dword [esp + 0x14], edi
je 0x441130
mov edx, dword [esp + 0x1c]
shr edx, 0x10
and edx, 0xff
imul edx, ebp
mov eax, ebx
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div edi
movzx edx, byte [esp + 0x1d]
shl edi, 8
imul edx, ebp
or eax, edi
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, bh
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
movzx edi, byte [esp + 0x1c]
imul edi, ebp
or edx, eax
movzx eax, bl
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, edi
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x441145
mov eax, dword [esp + 0x1c]
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x441073
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x441060
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x1c], edi
mov edi, edi
cmp dword [esp + 0x34], 0
jle 0x44120c
mov edi, dword [esp + 0x34]
nop
mov ebx, dword [ecx]
mov edx, dword [esi]
shr edx, 0x10
and edx, 0xff
mov eax, ebx
shr eax, 0x10
and eax, 0xff
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
mov ebp, edx
movzx edx, byte [esi + 1]
movzx eax, bh
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
shl ebp, 8
or ebp, edx
movzx edx, byte [esi]
movzx eax, bl
imul edx, eax
mov eax, 0x80808081
mul edx
shl ebp, 8
shr edx, 7
or ebp, edx
and ebx, 0xff000000
or ebp, ebx
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x4411a0
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x1c], 1
jne 0x441190
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], edi
cmp dword [esp + 0x34], 0
jle 0x441335
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov ebp, dword [ecx]
mov ebx, dword [esi]
mov edi, ebp
and edi, 0xff0000
and ebx, 0xff0000
mov edx, edi
imul edx, ebx
mov eax, ebp
and eax, 0xff000000
mov dword [esp + 0x14], eax
mov eax, 0x80808081
mul edx
shr edx, 7
sub edi, edx
add edi, ebx
cmp edi, 0xff0000
mov dword [esp + 0x1c], edi
jbe 0x44129d
mov dword [esp + 0x1c], 0xff0000
jmp 0x4412a5
and dword [esp + 0x1c], 0xff0000
mov edi, dword [esi]
mov ebx, ebp
and ebx, 0xff00
and edi, 0xff00
mov edx, ebx
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
sub ebx, edx
add ebx, edi
mov edi, ebx
cmp edi, 0xff00
jbe 0x4412d9
mov edi, 0xff00
jmp 0x4412e1
and dword [esp + 0x1c], 0xff00
mov ebx, dword [esi]
and ebx, 0xff
and ebp, 0xff
mov edx, ebx
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
sub ebx, edx
add ebx, ebp
mov eax, ebx
cmp eax, 0xff
jbe 0x441312
mov eax, 0xff
jmp 0x441317
and eax, 0xff
or eax, edi
or eax, dword [esp + 0x1c]
add ecx, 4
or eax, dword [esp + 0x14]
add esi, 4
sub dword [esp + 0x18], 1
mov dword [ecx - 4], eax
jne 0x441257
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x2c], 1
jne 0x441244
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], edi
lea ecx, [ecx]
cmp dword [esp + 0x34], 0
jle 0x441453
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov edi, dword [esi]
mov eax, dword [ecx]
shr edi, 0x10
mov ebx, eax
and ebx, 0xff000000
and edi, 0xff
cmp edi, 0xff
mov dword [esp + 0x14], ebx
je 0x4413d1
shr eax, 0x10
and eax, 0xff
imul eax, eax, 0xff
mov ebp, 0xff
sub ebp, edi
xor edx, edx
div ebp
mov edi, eax
cmp edi, 0xff
jbe 0x4413ce
mov edi, 0xff0000
jmp 0x4413d1
shl edi, 0x10
movzx ebp, byte [esi + 1]
cmp ebp, 0xff
je 0x441408
movzx eax, byte [ecx + 1]
imul eax, eax, 0xff
mov edx, 0xff
sub edx, ebp
mov ebp, edx
xor edx, edx
div ebp
mov ebp, eax
cmp ebp, 0xff
jbe 0x441405
mov ebp, 0xff00
jmp 0x441408
shl ebp, 8
movzx edx, byte [esi]
cmp edx, 0xff
je 0x44143a
movzx eax, byte [ecx]
imul eax, eax, 0xff
mov ebx, 0xff
sub ebx, edx
xor edx, edx
div ebx
mov ebx, dword [esp + 0x14]
mov edx, eax
cmp edx, 0xff
jbe 0x44143a
mov edx, 0xff
or edx, ebp
or edx, edi
or edx, ebx
mov dword [ecx], edx
add ecx, 4
add esi, 4
sub dword [esp + 0x1c], 1
jne 0x441383
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x441370
pop ebx
pop edi
pop esi
pop ebp
ret
mov edx, dword [esp + 0x38]
test edx, edx
jle 0x441841
lea edi, [eax*4]
mov esi, edx
test ebp, ebp
jle 0x4414a0
mov edx, ebp
mov eax, dword [ecx]
mov ebx, eax
not ebx
xor ebx, eax
and ebx, 0xffffff
xor ebx, eax
mov dword [ecx], ebx
add ecx, 4
sub edx, 1
jne 0x441486
add ecx, edi
sub esi, 1
jne 0x441480
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x14], edi
lea esp, [esp]
cmp dword [esp + 0x34], 0
jle 0x44155a
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov edx, dword [ecx]
mov edi, dword [esi]
mov dword [esp + 0x1c], edi
mov eax, edx
and edi, 0xff0000
and eax, 0xff0000
mov ebx, edx
add edi, eax
and ebx, 0xff000000
cmp edi, 0xff0000
jbe 0x44150f
mov edi, 0xff0000
mov ebp, dword [esp + 0x1c]
mov eax, edx
and ebp, 0xff00
and eax, 0xff00
add ebp, eax
cmp ebp, 0xff00
jbe 0x44152f
mov ebp, 0xff00
movzx eax, byte [esp + 0x1c]
movzx edx, dl
add eax, edx
cmp eax, 0xff
jbe 0x441545
mov eax, 0xff
or eax, ebp
or eax, edi
or eax, ebx
mov dword [ecx], eax
add ecx, 4
add esi, 4
sub dword [esp + 0x18], 1
jne 0x4414e3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x14], 1
jne 0x4414d0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], edi
cmp dword [esp + 0x34], 0
jle 0x441604
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx]
mov edi, dword [esi]
mov ebx, edi
mov edx, eax
and ebx, 0xff0000
and edx, 0xff0000
mov ebp, eax
sub edx, ebx
and ebp, 0xff000000
test edx, edx
jns 0x4415c9
xor edx, edx
mov ebx, edi
mov edi, eax
and ebx, 0xff00
and edi, 0xff00
sub edi, ebx
test edi, edi
jns 0x4415e1
xor edi, edi
movzx ebx, byte [esi]
movzx eax, al
sub eax, ebx
test eax, eax
jns 0x4415ef
xor eax, eax
or eax, edi
or eax, edx
or eax, ebp
mov dword [ecx], eax
add ecx, 4
add esi, 4
sub dword [esp + 0x1c], 1
jne 0x4415a5
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x441592
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x441638
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x44164f
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x441640
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x441634
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x441679
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x44169b
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
xor ebp, dword [ecx]
add ecx, 4
and ebp, 0xffffff
xor ebp, dword [esi]
add esi, 4
sub edi, 1
mov dword [ecx - 4], ebp
jne 0x441681
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x441675
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov ebp, edi
cmp dword [esp + 0x34], 0
jle 0x441702
mov ebx, dword [esp + 0x34]
mov edi, dword [ecx]
movzx edx, byte [esi + 3]
mov eax, edi
shr eax, 0x18
imul edx, eax
mov eax, 0x80808081
mul edx
shr edx, 7
shl edx, 0x18
and edi, 0xffffff
or edx, edi
mov dword [ecx], edx
add ecx, 4
add esi, 4
sub ebx, 1
jne 0x4416d2
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub ebp, 1
jne 0x4416c7
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x441841
add eax, eax
add eax, eax
add edx, edx
add edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edi
cmp dword [esp + 0x34], 0
jle 0x44182e
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov ebx, dword [esi]
mov ebp, dword [ecx]
mov dword [esp + 0x1c], ebp
shr ebp, 0x18
mov edi, ebx
shr edi, 0x19
mov edx, 0xff
sub edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x18], edx
mov edx, edi
imul edx, ebp
mov eax, 0x80808081
mul edx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebp
shr edx, 7
mov ebp, edi
sub ebp, edx
add ebp, dword [esp + 0x14]
mov dword [esp + 0x14], ebp
je 0x44180c
shr eax, 0x10
and eax, 0xff
imul eax, dword [esp + 0x18]
mov edx, ebx
shr edx, 0x10
and edx, 0xff
imul edx, edi
add eax, edx
xor edx, edx
div ebp
shl ebp, 8
movzx edx, bh
imul edx, edi
movzx ebx, bl
imul ebx, edi
or eax, ebp
shl eax, 8
mov dword [esp + 0x24], eax
movzx eax, byte [esp + 0x1d]
imul eax, dword [esp + 0x18]
add eax, edx
xor edx, edx
div dword [esp + 0x14]
mov edx, dword [esp + 0x24]
or edx, eax
movzx eax, byte [esp + 0x1c]
imul eax, dword [esp + 0x18]
shl edx, 8
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, ebx
div dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
or edx, eax
mov dword [ecx], edx
jmp 0x44181d
and ebx, 0xfefefe
and eax, 0xfefefe
add ebx, eax
shr ebx, 1
mov dword [ecx], ebx
add ecx, 4
add esi, 4
sub dword [esp + 0x2c], 1
jne 0x441747
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x441734
pop ebx
pop edi
pop esi
pop ebp
ret