Function at 0x443770
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov edi, dword [0x494f90]
mov esi, dword [ebp]
mov ebx, dword [ebp + 4]
mov esi, dword [edi + esi*4]
cmp ebx, dword [esi + 4]
jae 0x443880
mov esi, dword [esi + ebx*4 + 8]
or esi, esi
je 0x443880
cmp dword [esi], 0
je 0x443880
mov edi, dword [0x494f94]
mov ebx, dword [ebp + 0x14]
sub ebx, dword [0x494fb4]
mov eax, dword [esi + 4]
add ebx, dword [esi + 0xc]
lea ecx, [eax + ebx]
cmp ebx, 0
jge 0x4437d7
cmp ecx, 0
jle 0x443880
neg ebx
sub eax, ebx
lea ebx, [esi + ebx*4 + 0x14]
sub ecx, dword [0x494f9c]
jle 0x4437fb
sub eax, ecx
jmp 0x4437fb
cmp ebx, dword [0x494f9c]
jge 0x443880
push eax
mov eax, dword [0x494fa0]
imul ebx
add edi, eax
pop eax
lea ebx, [esi + 0x14]
sub ecx, dword [0x494f9c]
jle 0x4437fb
sub eax, ecx
mov edx, dword [esi]
mov ebp, dword [ebp + 0x10]
sub ebp, dword [0x494fb0]
xchg ebp, eax
add eax, dword [esi + 8]
lea ecx, [edx + eax - 1]
mov esi, dword [0x494fa0]
cmp eax, 0
jge 0x443850
cmp ecx, 0
jl 0x443880
neg eax
mov dword [0x494fac], eax
cmp ecx, dword [0x494f98]
jge 0x443840
sub edx, eax
mov eax, dword [0x494fa4]
jmp 0x443890
mov edx, dword [0x494f98]
jmp 0x443890
mov dword [0x494fac], 0
cmp eax, dword [0x494f98]
jge 0x443880
shl eax, 2
add edi, eax
cmp ecx, dword [0x494f98]
jl 0x443890
add edx, dword [0x494f98]
sub edx, ecx
dec edx
jmp 0x443890
ret
mov dword [0x494fa8], edx
mov dword [0x494fa4], esi
push edi
mov esi, dword [ebx]
push ebx
push ebp
movzx ecx, word [esi]
add esi, 2
shr ecx, 6
mov ebp, esi
je 0x4438c1
sbb ebx, ebx
and ebx, 0x20
add ebp, ebx
mov al, byte [ebp]
mov dl, byte [ebp + 0x20]
add ebp, 0x40
dec ecx
jne 0x4438b5
mov eax, dword [0x494fac]
or eax, eax
je 0x4439f0
inc esi
and esi, 0xfffffffe
movzx ecx, word [esi]
add esi, 2
mov ebp, ecx
mov ebx, ecx
shr ebp, 0xd
and ebx, 0x1800
shr ebx, 0xb
and ecx, 0x7ff
add esi, ebx
or ecx, ecx
je 0x443940
cmp ebp, 2
jb 0x443950
je 0x443970
cmp ebp, 4
jb 0x4439a0
je 0x4439d0
mov ebx, dword [esi]
add esi, 4
sub eax, ecx
ja 0x4438ce
je 0x4439f0
xor ecx, ecx
mov ebp, dword [0x494fa8]
sub ecx, eax
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
mov eax, ebx
jmp 0x443a4d
mov ecx, dword [esi]
add esi, 4
jmp 0x4438f4
sub eax, ecx
ja 0x4438ce
je 0x4439f0
xor ecx, ecx
mov ebp, dword [0x494fa8]
sub ecx, eax
jmp 0x443b70
add esi, ecx
add esi, ecx
add esi, ecx
sub eax, ecx
ja 0x4438ce
je 0x4439f0
lea esi, [esi + eax*2]
xor ecx, ecx
add esi, eax
sub ecx, eax
mov ebp, dword [0x494fa8]
jmp 0x443b80
mov ebx, dword [esi]
add esi, 3
sub eax, ecx
ja 0x4438ce
je 0x4439f0
xor ecx, ecx
mov ebp, dword [0x494fa8]
sub ecx, eax
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
mov eax, ebx
jmp 0x443bbf
lea esi, [esi + ecx*4]
sub eax, ecx
ja 0x4438ce
je 0x4439f0
xor ecx, ecx
mov ebp, dword [0x494fa8]
sub ecx, eax
lea esi, [esi + eax*4]
jmp 0x443be0
mov ebp, dword [0x494fa8]
inc esi
and esi, 0xfffffffe
movzx ecx, word [esi]
add esi, 2
mov eax, ecx
mov ebx, ecx
shr eax, 0xd
and ebx, 0x1800
shr ebx, 0xb
and ecx, 0x7ff
add esi, ebx
or ecx, ecx
je 0x443b60
cmp eax, 2
jb 0x443b70
je 0x443b80
cmp eax, 4
jb 0x443bb0
je 0x443be0
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
mov eax, dword [esi]
add esi, 4
push esi
mov esi, eax
and eax, 0xff
jne 0x443a61
lea edi, [edi + ecx*4]
xor ecx, ecx
jmp 0x443b52
cmp eax, 0xff
jne 0x443a71
mov eax, esi
rep stosd dword es:[edi], eax
jmp 0x443b52
push ebp
mov ebp, eax
movzx ebx, byte [edi]
or ebx, ebx
jne 0x443a82
mov dword [edi], esi
jmp 0x443b47
push ecx
mov edx, 0xff
sub edx, ebp
mov eax, 0xff
sub eax, ebx
mul edx
sub eax, 0xfe01
neg eax
mov edx, 0x10203
mul edx
shr eax, 0x18
mov byte [edi], al
or eax, eax
je 0x443b46
mov ecx, eax
xor edx, edx
mov eax, 0x1000000
div ecx
mov dword [0x494fb8], eax
mov eax, esi
shr eax, 8
and eax, 0xff
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 1]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 1], dl
mov eax, esi
shr eax, 0x10
and eax, 0xff
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 2]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 2], dl
mov eax, esi
shr eax, 0x18
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 3]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 3], dl
pop ecx
add edi, 4
dec ecx
jne 0x443a74
pop ebp
pop esi
or ebp, ebp
jne 0x4439f6
jmp 0x443cdc
mov ecx, dword [esi]
add esi, 4
jmp 0x443a20
lea edi, [edi + ecx*4]
sub ebp, ecx
ja 0x4439f6
jmp 0x443cdc
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
mov eax, dword [esi]
add edi, 4
shl eax, 8
add esi, 3
or eax, 0xff
dec ecx
mov dword [edi - 4], eax
jne 0x443b8a
or ebp, ebp
jne 0x4439f6
jmp 0x443cdc
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
mov eax, dword [esi]
add esi, 3
shl eax, 8
or eax, 0xff
rep stosd dword es:[edi], eax
or ebp, ebp
jne 0x4439f6
jmp 0x443cdc
sub ebp, ecx
sbb eax, eax
and eax, ebp
add ecx, eax
sub ebp, eax
push ebp
movzx ebp, byte [esi]
or ebp, ebp
je 0x443cc6
cmp ebp, 0xff
je 0x443c05
movzx ebx, byte [edi]
or ebx, ebx
jne 0x443c0e
mov eax, dword [esi]
mov dword [edi], eax
jmp 0x443cc6
push ecx
mov edx, 0xff
sub edx, ebp
mov eax, 0xff
sub eax, ebx
mul edx
sub eax, 0xfe01
neg eax
mov edx, 0x10203
mul edx
shr eax, 0x18
mov byte [edi], al
or eax, eax
je 0x443cc5
mov ecx, eax
xor edx, edx
mov eax, 0x1000000
div ecx
mov dword [0x494fb8], eax
movzx eax, byte [esi + 1]
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 1]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 1], dl
movzx eax, byte [esi + 2]
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 2]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 2], dl
movzx eax, byte [esi + 3]
mul ebp
mov ecx, 0xff
mul ecx
mov ecx, eax
mov eax, 0xff
sub eax, ebp
mul ebx
movzx edx, byte [edi + 3]
mul edx
add eax, ecx
mul dword [0x494fb8]
mov byte [edi + 3], dl
pop ecx
add esi, 4
add edi, 4
dec ecx
jne 0x443beb
pop ebp
or ebp, ebp
jne 0x4439f6
pop ebp
pop ebx
mov eax, dword [0x494fa4]
pop edi
add ebx, 4
add edi, eax
dec ebp
jne 0x44389c
ret