Function at 0x43aa70
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov dword [ebp - 0x34], 8
mov eax, dword [esi + 0x1c]
mov ebx, dword [esi + 0x28]
mov edi, dword [esi + 0x2c]
mov edx, dword [esi + 0x20]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x38]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov ecx, eax
and ecx, 0x7fff
mov dword [ebp - 4], ebx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x20], ecx
jmp 0x43aac0
mov ecx, dword [esi + 0x88]
mov dword [ebp - 0x2c], ecx
test ecx, ecx
jne 0x43aae1
cmp dword [esi + 0x80], ecx
je 0x43af01
test edx, edx
je 0x43af01
lea ebx, [edx + eax]
mov eax, 0x1000
sub eax, edx
and ebx, 0x7fff
cmp dword [ebp - 0x2c], eax
cmovae ecx, eax
mov eax, dword [ebp - 0x2c]
sub eax, ecx
mov dword [ebp - 0x24], ecx
add edx, ecx
mov dword [esi + 0x88], eax
mov dword [ebp - 0x1c], edx
test ecx, ecx
je 0x43ab83
mov eax, dword [esi + 0x84]
mov edi, 0x8000
sub edi, ebx
cmp edi, ecx
cmovae edi, ecx
push edi
push eax
lea eax, [esi + 0x90]
add eax, ebx
push eax
call fcn.004e74d0
add esp, 0xc
cmp ebx, 0x101
jae 0x43ab5f
mov eax, 0x101
sub eax, ebx
cmp edi, eax
cmovb eax, edi
push eax
push dword [esi + 0x84]
lea eax, [esi + 0x8090]
add eax, ebx
push eax
call fcn.004e74d0
add esp, 0xc
mov ecx, dword [ebp - 0x24]
add ebx, edi
add dword [esi + 0x84], edi
and ebx, 0x7fff
mov eax, dword [esi + 0x84]
sub ecx, edi
mov dword [ebp - 0x24], ecx
jne 0x43ab14
mov edi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c]
mov eax, 0x8000
sub eax, edx
cmp eax, dword [ebp - 0x10]
cmovae eax, dword [ebp - 0x10]
cmp dword [esi + 0x80], 0
mov dword [ebp - 0x10], eax
jne 0x43aba9
cmp edx, 0x1000
jb 0x43aefb
mov dword [ebp - 0x10], eax
cmp edx, 4
jb 0x43ae09
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x20]
jmp 0x43abc0
add eax, 0x90
mov ebx, 1
add eax, esi
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 - 0xc]
and ecx, 0xfff
movzx eax, ax
movzx edx, word [esi + ecx*2 + 0x29272]
mov word [esi + ecx*2 + 0x29272], ax
sub eax, edx
movzx eax, ax
mov dword [ebp - 0x24], eax
cmp eax, dword [ebp - 0x10]
ja 0x43ad30
and edx, 0x7fff
lea edi, [esi + 0x90]
add edi, edx
mov eax, dword [edi]
and eax, 0xffffff
cmp eax, dword [ebp - 0x2c]
jne 0x43ad30
mov eax, dword [ebp - 0x30]
lea esi, [ebx + 0x1f]
movzx ebx, word [eax + 2]
add eax, 2
movzx edx, word [edi + 2]
cmp bx, dx
jne 0x43ac90
movzx edx, word [eax + 2]
add eax, 2
movzx ecx, word [edi + 4]
mov bl, dl
mov byte [ebp - 0x28], cl
cmp dx, cx
jne 0x43ac8d
movzx edx, word [eax + 2]
add eax, 2
movzx ecx, word [edi + 6]
mov bl, dl
mov byte [ebp - 0x28], cl
cmp dx, cx
jne 0x43ac8d
movzx ecx, word [eax + 2]
add eax, 2
movzx edx, word [edi + 8]
add edi, 8
mov dword [ebp - 0x38], edx
mov bl, cl
cmp cx, dx
jne 0x43ac90
movzx edx, word [edi]
sub esi, 1
jne 0x43ac31
jmp 0x43ac90
mov edx, dword [ebp - 0x28]
sub eax, dword [ebp - 0x30]
xor ecx, ecx
mov edi, dword [ebp - 0x24]
sar eax, 1
cmp bl, dl
sete cl
test esi, esi
mov esi, dword [ebp + 8]
lea eax, [ecx + eax*2]
jne 0x43acb4
mov eax, edi
neg eax
sbb eax, eax
and eax, 0x102
cmp eax, 3
jb 0x43ad2b
jne 0x43acc3
cmp edi, 0x2000
jae 0x43ad2b
mov ebx, dword [ebp - 0x1c]
cmp eax, ebx
mov edx, dword [ebp - 4]
cmovb ebx, eax
dec edi
mov dword [ebp - 0x24], edi
mov word [edx + 1], di
mov edi, dword [ebp - 0x18]
lea eax, [ebx - 3]
mov byte [edx], al
mov al, byte [edi]
shr al, 1
or al, 0x80
mov byte [edi], al
mov eax, dword [ebp - 0x24]
and eax, 0x1ff
movzx ecx, byte [eax + 0x51d868]
mov eax, dword [ebp - 0x24]
shr eax, 8
cmp dword [ebp - 0x24], 0x200
movzx eax, byte [eax + 0x51dc68]
cmovb eax, ecx
inc word [esi + eax*2 + 0x83d2]
movzx eax, word [ebx*2 + 0x51d562]
inc word [esi + eax*2 + 0x8192]
mov eax, 3
jmp 0x43ad4a
mov ebx, 1
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x18]
mov byte [edx], al
movzx eax, al
shr byte [edi], 1
inc word [esi + 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, edi
mov edi, eax
lea eax, [edx + 1]
mov dword [ebp - 4], eax
mov ecx, eax
mov eax, dword [ebp - 0x10]
cmovne ecx, edx
add dword [ebp - 0x14], ebx
add eax, ebx
add dword [ebp - 0xc], ebx
mov edx, 0x8000
cmp eax, edx
mov dword [ebp - 0x18], edi
mov dword [ebp - 4], ecx
cmovb edx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], edx
add eax, ebx
mov edx, dword [ebp - 0x1c]
and eax, 0x7fff
sub edx, ebx
mov dword [ebp - 0x20], eax
lea ebx, [esi + 0x1926a]
mov dword [ebp - 0x1c], edx
cmp ecx, ebx
jbe 0x43ae00
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x3c], eax
mov eax, dword [ebp - 8]
push 0
push esi
mov dword [esi + 0x20], edx
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], edi
mov dword [esi + 0x38], eax
call fcn.0043ba40
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x43af2b
mov eax, dword [esi + 0x3c]
mov edi, dword [esi + 0x2c]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x28]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x38]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], edi
cmp edx, 4
jae 0x43abc0
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
test edx, edx
je 0x43aac0
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
lea ecx, [ecx]
mov edx, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x14], eax
lea eax, [ebx + 1]
mov dl, byte [edx + esi + 0x90]
mov byte [ebx], dl
shr byte [edi], 1
sub ecx, 1
mov esi, ecx
mov dword [ebp - 8], ecx
cmove esi, dword [ebp - 0x34]
test ecx, ecx
mov dword [ebp - 8], esi
mov esi, dword [ebp + 8]
cmovne eax, edi
mov edi, eax
neg ecx
movzx eax, dl
mov edx, dword [ebp - 0x1c]
sbb ecx, ecx
inc dword [ebp - 0xc]
add ecx, 2
add ebx, ecx
mov dword [ebp - 0x18], edi
inc word [esi + eax*2 + 0x8192]
mov ecx, 0x8000
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 4], ebx
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x10], ecx
and eax, 0x7fff
dec edx
mov dword [ebp - 0x20], eax
lea eax, [esi + 0x1926a]
mov dword [ebp - 0x1c], edx
cmp ebx, eax
jbe 0x43aee5
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x3c], eax
mov eax, dword [ebp - 8]
push 0
push esi
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], ecx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x2c], edi
mov dword [esi + 0x38], eax
call fcn.0043ba40
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x43af2b
mov eax, dword [esi + 0x3c]
mov ebx, dword [esi + 0x28]
mov edi, dword [esi + 0x2c]
mov ecx, dword [esi + 0x38]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], ebx
mov dword [ebp - 0x18], edi
mov dword [ebp - 8], ecx
jmp 0x43aeeb
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
test edx, edx
jne 0x43ae20
mov eax, dword [ebp - 0xc]
jmp 0x43aac0
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x3c], eax
mov eax, dword [ebp - 8]
mov dword [esi + 0x2c], edi
pop edi
mov dword [esi + 0x28], ebx
mov dword [esi + 0x38], eax
mov eax, 1
mov dword [esi + 0x20], edx
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