Function at 0x443470
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x34], 8
mov dword [ebp - 0x38], edi
mov ecx, dword [edi + 0x24]
mov edx, dword [edi + 0x1c]
mov eax, dword [edi + 0x20]
mov ebx, dword [edi + 0x28]
mov esi, dword [edi + 0x2c]
mov dword [ebp - 0x10], ecx
mov ecx, dword [edi + 0x3c]
mov dword [ebp - 0x14], edx
and edx, 0x7fff
mov dword [ebp - 0x18], ecx
mov ecx, dword [edi + 0x38]
mov dword [ebp - 4], eax
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x24], edx
nop dword [eax + eax]
mov edx, dword [edi + 0x88]
test edx, edx
jne 0x4434de
cmp dword [edi + 0x80], edx
je 0x4438ea
test eax, eax
je 0x4438ea
mov ebx, dword [ebp - 0x14]
mov ecx, edx
add ebx, eax
mov eax, 0x1000
sub eax, dword [ebp - 4]
and ebx, 0x7fff
cmp edx, eax
cmovae ecx, eax
add dword [ebp - 4], ecx
sub edx, ecx
mov dword [ebp - 0x2c], ecx
mov dword [edi + 0x88], edx
test ecx, ecx
je 0x44357c
mov eax, dword [edi + 0x84]
mov esi, 0x8000
sub esi, ebx
cmp esi, ecx
cmovae esi, ecx
push esi
push eax
lea eax, [edi + 0x90]
add eax, ebx
push eax
call fcn.005aeb10
add esp, 0xc
cmp ebx, 0x101
jae 0x44355b
mov eax, 0x101
sub eax, ebx
cmp esi, eax
cmovb eax, esi
push eax
push dword [edi + 0x84]
lea eax, [edi + 0x8090]
add eax, ebx
push eax
call fcn.005aeb10
add esp, 0xc
mov ecx, dword [ebp - 0x2c]
add ebx, esi
add dword [edi + 0x84], esi
and ebx, 0x7fff
mov eax, dword [edi + 0x84]
sub ecx, esi
mov dword [ebp - 0x2c], ecx
jne 0x443510
mov esi, dword [ebp - 0x1c]
mov eax, 0x8000
sub eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x10]
cmovae eax, dword [ebp - 0x10]
cmp dword [edi + 0x80], 0
mov ecx, eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
jne 0x4435a7
cmp eax, 0x1000
jb 0x4438e4
mov dword [ebp - 0x10], ecx
cmp eax, 4
jb 0x443804
mov dword [ebp - 0x10], ecx
nop word [eax + eax]
mov eax, dword [ebp - 0x24]
mov ebx, 1
add eax, 0x90
add eax, edi
mov dword [ebp - 0x30], eax
mov eax, dword [eax]
and eax, 0xffffff
mov ecx, eax
mov dword [ebp - 0x2c], eax
shr ecx, 0x11
xor ecx, eax
mov eax, dword [ebp - 0x14]
and ecx, 0xfff
movzx eax, ax
movzx edx, word [edi + ecx*2 + 0x29272]
mov word [edi + ecx*2 + 0x29272], ax
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x20], eax
cmp eax, dword [ebp - 0x10]
ja 0x443733
and edx, 0x7fff
lea esi, [edi + 0x90]
add esi, edx
mov eax, dword [esi]
and eax, 0xffffff
cmp eax, dword [ebp - 0x2c]
jne 0x443733
mov eax, dword [ebp - 0x30]
lea edi, [ebx + 0x1f]
movzx ebx, word [eax + 2]
add eax, 2
movzx edx, word [esi + 2]
cmp bx, dx
jne 0x443693
movzx edx, word [eax + 2]
add eax, 2
movzx ecx, word [esi + 4]
mov bl, dl
mov byte [ebp - 0x28], cl
cmp dx, cx
jne 0x443690
movzx edx, word [eax + 2]
add eax, 2
movzx ecx, word [esi + 6]
mov bl, dl
mov byte [ebp - 0x28], cl
cmp dx, cx
jne 0x443690
movzx ecx, word [eax + 2]
add eax, 2
movzx edx, word [esi + 8]
add esi, 8
mov dword [ebp - 0x3c], edx
mov bl, cl
cmp cx, dx
jne 0x443693
movzx edx, word [esi]
sub edi, 1
jne 0x443634
jmp 0x443693
mov edx, dword [ebp - 0x28]
sub eax, dword [ebp - 0x30]
xor ecx, ecx
mov esi, dword [ebp - 0x20]
sar eax, 1
cmp bl, dl
sete cl
test edi, edi
mov edi, dword [ebp - 0x38]
lea eax, [ecx + eax*2]
jne 0x4436b7
mov eax, esi
neg eax
sbb eax, eax
and eax, 0x102
cmp eax, 3
jb 0x44372e
jne 0x4436c6
cmp esi, 0x2000
jae 0x44372e
mov ebx, dword [ebp - 4]
cmp eax, ebx
mov edx, dword [ebp - 0xc]
cmovb ebx, eax
dec esi
mov dword [ebp - 0x20], esi
mov word [edx + 1], si
mov esi, dword [ebp - 0x1c]
lea eax, [ebx - 3]
mov byte [edx], al
mov al, byte [esi]
shr al, 1
or al, 0x80
mov byte [esi], al
mov eax, dword [ebp - 0x20]
and eax, 0x1ff
movzx ecx, byte [eax + 0x641ec8]
mov eax, dword [ebp - 0x20]
shr eax, 8
cmp dword [ebp - 0x20], 0x200
movzx eax, byte [eax + 0x6418c0]
cmovb eax, ecx
inc word [edi + eax*2 + 0x83d2]
movzx eax, word [ebx*2 + 0x641cc2]
inc word [edi + eax*2 + 0x8192]
mov eax, 3
jmp 0x44374d
mov ebx, 1
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x1c]
mov byte [edx], al
movzx eax, al
shr byte [esi], 1
inc word [edi + eax*2 + 0x8192]
mov eax, ebx
add edx, eax
mov eax, dword [ebp - 8]
sub eax, 1
mov ecx, eax
cmove eax, dword [ebp - 0x34]
test ecx, ecx
mov dword [ebp - 8], eax
mov eax, edx
cmovne eax, esi
mov esi, eax
lea eax, [edx + 1]
mov dword [ebp - 0xc], eax
mov ecx, eax
mov eax, dword [ebp - 0x10]
cmovne ecx, edx
add dword [ebp - 0x18], ebx
add eax, ebx
add dword [ebp - 0x14], ebx
mov edx, 0x8000
cmp eax, edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0xc], ecx
cmovb edx, eax
mov eax, dword [ebp - 0x24]
add eax, ebx
mov dword [ebp - 0x10], edx
and eax, 0x7fff
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 4]
sub eax, ebx
lea ebx, [edi + 0x1926a]
mov dword [ebp - 4], eax
cmp ecx, ebx
jbe 0x4437fb
mov ebx, dword [ebp - 0x14]
mov dword [edi + 0x20], eax
mov eax, dword [ebp - 0x18]
mov dword [edi + 0x24], edx
xor edx, edx
mov dword [edi + 0x3c], eax
mov eax, dword [ebp - 8]
mov dword [edi + 0x28], ecx
mov ecx, edi
mov dword [edi + 0x1c], ebx
mov dword [edi + 0x2c], esi
mov dword [edi + 0x38], eax
call fcn.00442f30
mov ecx, eax
test ecx, ecx
jne 0x443914
mov eax, dword [edi + 0x3c]
mov esi, dword [edi + 0x2c]
mov dword [ebp - 0x18], eax
mov eax, dword [edi + 0x28]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x38]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x1c], esi
cmp eax, 4
jae 0x4435c0
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
test eax, eax
je 0x4434c0
mov eax, dword [ebp - 0x24]
inc dword [ebp - 0x18]
mov dl, byte [eax + edi + 0x90]
lea eax, [ebx + 1]
mov byte [ebx], dl
shr byte [esi], 1
sub ecx, 1
mov edi, ecx
mov dword [ebp - 8], ecx
cmove edi, dword [ebp - 0x34]
test ecx, ecx
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0x38]
cmovne eax, esi
mov esi, eax
neg ecx
movzx eax, dl
mov edx, 0x8000
sbb ecx, ecx
mov dword [ebp - 0x1c], esi
inc dword [ebp - 0x14]
add ecx, 2
add ebx, ecx
lea ecx, [edi + 0x1926a]
inc word [edi + eax*2 + 0x8192]
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0xc], ebx
cmp eax, edx
cmovb edx, eax
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x10], edx
and eax, 0x7fff
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 4]
dec eax
mov dword [ebp - 4], eax
cmp ebx, ecx
jbe 0x4438d4
mov ecx, dword [ebp - 0x14]
mov dword [edi + 0x20], eax
mov eax, dword [ebp - 0x18]
mov dword [edi + 0x1c], ecx
mov ecx, edi
mov dword [edi + 0x24], edx
xor edx, edx
mov dword [edi + 0x3c], eax
mov eax, dword [ebp - 8]
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
mov dword [edi + 0x38], eax
call fcn.00442f30
mov ecx, eax
test ecx, ecx
jne 0x443914
mov eax, dword [edi + 0x3c]
mov ebx, dword [edi + 0x28]
mov esi, dword [edi + 0x2c]
mov ecx, dword [edi + 0x38]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 8], ecx
jmp 0x4438d7
mov ecx, dword [ebp - 8]
test eax, eax
jne 0x443812
jmp 0x4434c0
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
mov dword [edi + 0x20], eax
mov eax, dword [ebp - 0x10]
mov dword [edi + 0x24], eax
mov eax, dword [ebp - 0x18]
mov dword [edi + 0x3c], eax
mov eax, 1
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
mov dword [edi + 0x1c], edx
mov dword [edi + 0x38], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
test ecx, ecx
pop edi
pop esi
setns al
pop ebx
mov esp, ebp
pop ebp
ret