Function at 0x4402f0
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.0x44033b
push ebx
jmp dword [edi*4 + 0x440c78]
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440458
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 0x440436
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 0x440447
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 0x440375
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440362
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440586
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 0x440560
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 0x440575
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 0x4404a3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440490
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x44063c
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 0x4405d0
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x1c], 1
jne 0x4405c0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440765
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 0x4406cd
mov dword [esp + 0x1c], 0xff0000
jmp 0x4406d5
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 0x440709
mov edi, 0xff00
jmp 0x440711
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 0x440742
mov eax, 0xff
jmp 0x440747
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 0x440687
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x2c], 1
jne 0x440674
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440883
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 0x440801
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 0x4407fe
mov edi, 0xff0000
jmp 0x440801
shl edi, 0x10
movzx ebp, byte [esi + 1]
cmp ebp, 0xff
je 0x440838
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 0x440835
mov ebp, 0xff00
jmp 0x440838
shl ebp, 8
movzx edx, byte [esi]
cmp edx, 0xff
je 0x44086a
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 0x44086a
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 0x4407b3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x4407a0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edx, dword [esp + 0x38]
test edx, edx
jle 0x440c71
lea edi, [eax*4]
mov esi, edx
test ebp, ebp
jle 0x4408d0
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 0x4408b6
add ecx, edi
sub esi, 1
jne 0x4408b0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x44098a
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 0x44093f
mov edi, 0xff0000
mov ebp, dword [esp + 0x1c]
mov eax, edx
and ebp, 0xff00
and eax, 0xff00
add ebp, eax
cmp ebp, 0xff00
jbe 0x44095f
mov ebp, 0xff00
movzx eax, byte [esp + 0x1c]
movzx edx, dl
add eax, edx
cmp eax, 0xff
jbe 0x440975
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 0x440913
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x14], 1
jne 0x440900
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440a34
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 0x4409f9
xor edx, edx
mov ebx, edi
mov edi, eax
and ebx, 0xff00
and edi, 0xff00
sub edi, ebx
test edi, edi
jns 0x440a11
xor edi, edi
movzx ebx, byte [esi]
movzx eax, al
sub eax, ebx
test eax, eax
jns 0x440a1f
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 0x4409d5
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x4409c2
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x440a68
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x440a7f
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x440a70
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x440a64
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x440aa9
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x440acb
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 0x440ab1
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x440aa5
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440b32
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 0x440b02
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub ebp, 1
jne 0x440af7
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x440c71
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 0x440c5e
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 0x440c3c
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 0x440c4d
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 0x440b77
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x440b64
pop ebx
pop edi
pop esi
pop ebp
ret