Function at 0x444120
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.0x44416b
push ebx
jmp dword [edi*4 + 0x444aa8]
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x444288
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 0x444266
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 0x444277
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 0x4441a5
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x444192
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x4443b6
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 0x444390
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 0x4443a5
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 0x4442d3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x4442c0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x44446c
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 0x444400
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x1c], 1
jne 0x4443f0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x444595
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 0x4444fd
mov dword [esp + 0x1c], 0xff0000
jmp 0x444505
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 0x444539
mov edi, 0xff00
jmp 0x444541
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 0x444572
mov eax, 0xff
jmp 0x444577
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 0x4444b7
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x2c], 1
jne 0x4444a4
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x4446b3
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 0x444631
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 0x44462e
mov edi, 0xff0000
jmp 0x444631
shl edi, 0x10
movzx ebp, byte [esi + 1]
cmp ebp, 0xff
je 0x444668
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 0x444665
mov ebp, 0xff00
jmp 0x444668
shl ebp, 8
movzx edx, byte [esi]
cmp edx, 0xff
je 0x44469a
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 0x44469a
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 0x4445e3
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x4445d0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edx, dword [esp + 0x38]
test edx, edx
jle 0x444aa1
lea edi, [eax*4]
mov esi, edx
test ebp, ebp
jle 0x444700
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 0x4446e6
add ecx, edi
sub esi, 1
jne 0x4446e0
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x4447ba
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 0x44476f
mov edi, 0xff0000
mov ebp, dword [esp + 0x1c]
mov eax, edx
and ebp, 0xff00
and eax, 0xff00
add ebp, eax
cmp ebp, 0xff00
jbe 0x44478f
mov ebp, 0xff00
movzx eax, byte [esp + 0x1c]
movzx edx, dl
add eax, edx
cmp eax, 0xff
jbe 0x4447a5
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 0x444743
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x14], 1
jne 0x444730
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x444864
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 0x444829
xor edx, edx
mov ebx, edi
mov edi, eax
and ebx, 0xff00
and edi, 0xff00
sub edi, ebx
test edi, edi
jns 0x444841
xor edi, edi
movzx ebx, byte [esi]
movzx eax, al
sub eax, ebx
test eax, eax
jns 0x44484f
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 0x444805
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x18], 1
jne 0x4447f2
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x444898
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x4448af
mov edi, dword [esp + 0x34]
mov ebp, dword [esi]
mov dword [ecx], ebp
add ecx, 4
add esi, 4
sub edi, 1
jne 0x4448a0
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x444894
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
add eax, eax
add edx, edx
add eax, eax
add edx, edx
mov ebx, edi
jmp 0x4448d9
mov ebp, dword [esp + 0x34]
test ebp, ebp
jle 0x4448fb
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 0x4448e1
add ecx, eax
add esi, edx
sub ebx, 1
jne 0x4448d5
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x444962
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 0x444932
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub ebp, 1
jne 0x444927
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, dword [esp + 0x38]
test edi, edi
jle 0x444aa1
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 0x444a8e
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 0x444a6c
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 0x444a7d
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 0x4449a7
add ecx, dword [esp + 0x20]
add esi, dword [esp + 0x30]
sub dword [esp + 0x28], 1
jne 0x444994
pop ebx
pop edi
pop esi
pop ebp
ret