Function at 0x43f1e0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov edi, dword [esp + 0x44]
mov ebx, 0xffffffff
mov esi, ebx
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x43f1f0
mov eax, ebx
and eax, 0xfffffffc
mov ecx, ebx
and ecx, 3
mov edx, ebx
or edx, 3
imul edx, ecx
xor ecx, 3
imul ecx, eax
add edx, ecx
shr edx, 2
movzx eax, byte [edi + ebx - 1]
cmp eax, 0x3d
je 0x43f228
cmp eax, 0x2e
jne 0x43f229
dec edx
movzx eax, byte [edi + ebx - 2]
cmp eax, 0x3d
je 0x43f238
cmp eax, 0x2e
jne 0x43f239
dec edx
mov dword [esp], edx
mov edx, 0
test ebx, ebx
je 0x43f33a
xor ecx, ecx
mov ebp, 2
mov dword [esp + 8], ebx
jmp 0x43f276
mov edx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [ebp + 4]
add ebp, 2
mov ecx, edx
mov ebx, dword [esp + 8]
cmp ebp, ebx
mov ebp, eax
jae 0x43f33a
mov dword [esp + 0xc], ecx
mov esi, dword [esp + 0x44]
movzx eax, byte [esi + ebp - 2]
push eax
call fcn.00420710
add esp, 4
mov edi, ebx
mov bh, al
movzx eax, byte [esi + ebp - 1]
mov esi, dword [esp + 0xc]
push eax
call fcn.00420710
add esp, 4
mov bl, al
lea edx, [esi + 1]
shl bh, 2
shr al, 4
and al, 3
or al, bh
mov ecx, dword [esp + 0x48]
mov byte [ecx + esi], al
cmp ebp, edi
jae 0x43f260
mov eax, dword [esp + 0x44]
movzx eax, byte [eax + ebp]
push eax
mov dword [esp + 8], edx
call fcn.00420710
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x43f260
shl bl, 4
mov ecx, eax
shr cl, 2
and cl, 0xf
or cl, bl
lea ebx, [esi + 2]
mov edx, dword [esp + 0x48]
mov byte [edx + esi + 1], cl
lea ecx, [ebp + 1]
cmp ecx, dword [esp + 8]
jae 0x43f256
mov ecx, dword [esp + 0x44]
movzx ecx, byte [ecx + ebp + 1]
push ecx
mov byte [esp + 8], al
call fcn.00420710
add esp, 4
movzx ecx, byte [esp + 4]
cmp al, 0x40
mov edx, ebx
je 0x43f260
shl cl, 6
add al, cl
mov ecx, dword [esp + 0x48]
mov byte [ecx + esi + 2], al
add esi, 3
mov edx, esi
jmp 0x43f260
mov ecx, dword [esp]
cmp edx, ecx
mov eax, 0
jne 0x43f407
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], 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 0x43f403
mov ecx, dword [esp]
mov edi, ecx
and edi, 1
cmp ecx, 0x21
je 0x43f3e3
mov edx, eax
sub edx, edi
xor ebp, ebp
nop
nop
nop
nop
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 0x43f3a0
test edi, edi
je 0x43f403
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