Function at 0x43fbd0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov edi, dword [esp + 0x44]
lea eax, [edi - 1]
mov ecx, edi
inc eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x43fbe0
mov ecx, edi
not ecx
and ecx, eax
add ecx, ecx
xor eax, edi
mov edx, ecx
sub edx, eax
lea esi, [edx + edx*2]
shr esi, 2
mov dword [esp], edx
movzx edx, byte [edi + edx - 1]
cmp edx, 0x3d
je 0x43fc0f
cmp edx, 0x2e
jne 0x43fc10
dec esi
mov edx, dword [esp]
movzx edx, byte [edi + edx - 2]
cmp edx, 0x3d
je 0x43fc22
cmp edx, 0x2e
jne 0x43fc23
dec esi
mov dword [esp + 4], esi
mov esi, 0
cmp ecx, eax
mov edi, dword [esp]
jne 0x43fd0f
mov ecx, dword [esp + 4]
cmp esi, ecx
mov eax, 0
jne 0x43fd07
mov ebp, dword [esp + 0x48]
lea esi, [ebp + 0x20]
mov ebx, ebp
mov edx, ecx
not edx
and edx, 0x20
mov eax, ecx
and eax, 0xffffffdf
lea edi, [esp + 0x10]
mov dword [esp + 4], ecx
mov ecx, 8
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x30]
xor ebp, ebp
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 0x48]
sub eax, edx
je 0x43fd03
mov ecx, dword [esp + 4]
mov edi, ecx
and edi, 1
cmp ecx, 0x21
je 0x43fce3
mov edx, eax
sub edx, edi
xor ebp, ebp
nop
mov ecx, esi
mov esi, ebp
and esi, 0x1e
mov bh, byte [esp + esi + 0x10]
mov esi, ecx
movzx ecx, byte [ecx + ebp + 0x20]
mov bl, byte [esi + ebp + 0x21]
mov ch, bh
and ch, cl
add bh, cl
add ch, ch
sub bh, ch
mov byte [esi + ebp], bh
lea ecx, [ebp + 1]
and ecx, 0x1f
movzx ecx, byte [esp + ecx + 0x10]
mov ch, cl
and ch, bl
add cl, bl
add ch, ch
sub cl, ch
mov byte [esi + ebp + 1], cl
add ebp, 2
cmp edx, ebp
jne 0x43fca0
test edi, edi
je 0x43fd03
movzx ecx, byte [esi + ebp + 0x20]
mov edx, ebp
and edx, 0x1f
movzx edx, byte [esp + edx + 0x10]
mov ch, dl
and ch, cl
add dl, cl
add ch, ch
sub dl, ch
mov byte [esi + ebp], dl
mov byte [esi + eax], 0
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
mov ebp, 2
jmp 0x43fd36
lea eax, [ebp + 4]
add ebp, 2
mov esi, dword [esp + 8]
mov ecx, esi
cmp ebp, edi
mov ebp, eax
jae 0x43fc37
mov dword [esp + 0xc], ecx
mov esi, dword [esp + 0x44]
movzx eax, byte [esi + ebp - 2]
push eax
call fcn.00422260
add esp, 4
mov bh, al
movzx eax, byte [esi + ebp - 1]
push eax
call fcn.00422260
add esp, 4
mov bl, al
shl bh, 2
shr al, 4
and al, 3
or al, bh
mov edx, dword [esp + 0xc]
lea ecx, [edx + 1]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x48]
mov byte [ecx + edx], al
cmp ebp, edi
jae 0x43fd20
movzx eax, byte [esi + ebp]
push eax
call fcn.00422260
mov edi, dword [esp + 4]
add esp, 4
cmp al, 0x40
je 0x43fd20
shl bl, 4
mov ecx, eax
shr cl, 2
and cl, 0xf
or cl, bl
mov esi, dword [esp + 0xc]
lea edx, [esi + 2]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x48]
mov byte [edx + esi + 1], cl
mov edi, dword [esp]
lea ecx, [ebp + 1]
cmp ecx, edi
jae 0x43fd20
mov ecx, dword [esp + 0x44]
movzx ecx, byte [ecx + ebp + 1]
push ecx
mov ebx, eax
call fcn.00422260
mov edi, dword [esp + 4]
add esp, 4
cmp al, 0x40
je 0x43fd20
mov ecx, ebx
shl cl, 6
add al, cl
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0xc]
mov byte [ecx + esi + 2], al
add esi, 3
mov dword [esp + 8], esi
jmp 0x43fd20