Function at 0x43e5f6
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebx
push edi
push esi
push eax
mov ecx, dword [esp + 0x14]
mov dword [esp], 0x1060734
mov eax, 0x41
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x41]
mov ebx, edx
and ebx, eax
add bl, bl
sub dl, bl
movzx edx, dl
add edx, eax
add dl, 0xbb
mov byte [esp + eax - 0x41], dl
inc eax
cmp eax, 0x45
jne case.default.0x43e11c
mov eax, dword [esp]
mov eax, dword fs:[eax]
xor edx, edx
test ecx, ecx
sete dl
jmp dword [edx*4 + 0x449450]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [case.0x43e11c.7]
mov edi, dword [edx]
xor ebx, ebx
cmp edi, edx
setne bl
jmp dword [ebx*4 + 0x449458]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
add edx, 0xc
xor eax, eax
mov esi, dword [case.0x43e11c.7]
mov edi, dword [edx]
xor ebx, ebx
cmp edi, edx
setne bl
jmp dword [ebx*4 + 0x449458]
xor ebx, ebx
cmp dword [edi + 0x18], ecx
sete bl
jmp dword [ebx*4 + 0x449460]
mov ebx, 1
jmp case.0x43e11c.5
mov eax, dword [edi + 0x30]
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp esi
jmp dword [ebx*4 + 0x449478]
mov edi, dword [edi]
xor ebx, ebx
cmp edi, edx
setne bl
jmp dword [ebx*4 + 0x449458]
add esp, 4
pop esi
pop edi
pop ebx
ret
mov esi, dword [esp + 8]
inc esi
xor eax, eax
cmp esi, dword [esp + 0x24]
setb al
jmp dword [eax*4 + 0x4494d8]
xor edx, edx
cmp ecx, dword [esp + 0xc]
setb dl
jmp dword [edx*4 + 0x4494f0]
add ebx, eax
xor ecx, ecx
mov eax, ebx
jmp dword [ecx*4 + 0x449508]
xor eax, eax
push eax
push eax
mov edx, esp
sub esp, 8
mov eax, esp
jmp ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], edx
jmp dword [0x449530]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp dword [0x44953c]
mov eax, dword [ebp + 8]
movzx eax, word [eax]
mov dword [ebp - 0x18], eax
mov dword [edx], 0x3f3e8775
mov dword [edx + 4], 0
xor esi, esi
xor ecx, ecx
movzx ebx, byte [edx + ecx]
mov edx, esi
and edx, 4
mov edi, ecx
xor edi, 0xb6a06a8a
add edi, edx
mov eax, edi
not eax
or eax, ebx
mov edx, edi
sub edx, ebx
add edx, eax
not ebx
and ebx, edi
not edx
or edx, ebx
add dl, 0x4e
mov eax, dword [ebp - 0x10]
mov byte [eax + ecx], dl
mov edx, dword [ebp - 0x10]
inc ecx
add esi, 2
cmp ecx, 8
jne case.default.0x43e658
xor ecx, ecx
mov eax, dword [ebp - 0x18]
cmp dword [edx], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x449540]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0x3c]
mov ecx, dword [ecx + esi]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x14]
mov dword [ecx], 0x696aa0d4
mov word [ecx + 4], 0
mov byte [ecx + 6], 0
mov edi, 0x17
mov ebx, 0xe8
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x14]
movzx edx, byte [ecx + edi - 0x17]
lea ecx, [edx + edx]
not ecx
add ecx, edx
and ecx, edi
and edx, ebx
or edx, ecx
add dl, 0x8d
mov ecx, dword [ebp - 0x14]
mov byte [ecx + edi - 0x17], dl
mov ecx, dword [ebp - 0x14]
inc edi
dec ebx
cmp edi, 0x1e
jne case.default.0x43e6c3
mov ecx, dword [ecx]
xor edx, edx
cmp dword [ebp - 0x10], ecx
setne dl
jmp dword [edx*4 + 0x449548]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + esi + 0x80]
cmp dword [edx + esi + 0x84], 0
sete dl
test ecx, ecx
sete dh
or dh, dl
movzx edx, dh
jmp dword [edx*4 + 0x449550]
mov edx, dword [ebp + 8]
mov esi, dword [edx + ecx]
add esi, edx
mov ecx, dword [edx + ecx + 0x10]
add ecx, edx
mov dword [ebp - 0x20], ecx
lea ecx, [edx + 2]
mov dword [ebp - 0x2c], ecx
inc edx
mov dword [ebp - 0x30], edx
mov ebx, dword [esi]
mov ecx, ebx
shr ecx, 0x1f
jmp dword [ecx*4 + 0x449558]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
xor ecx, ecx
mov dword [ebp - 0x28], eax
mov esi, dword [ebp - 0x18]
jmp dword [ecx*4 + 0x449570]
mov ebx, dword [esi]
mov ecx, ebx
shr ecx, 0x1f
xor eax, eax
jmp dword [ecx*4 + 0x449558]
xor ecx, ecx
test ebx, ebx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x449560]
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x2c]
add eax, ebx
add ebx, dword [ebp - 0x30]
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc ebx
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x43e770
mov ecx, eax
not ecx
and ecx, ebx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x1c], 0x62666409
mov edi, 0x66
mov edx, 0x99
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [ebp + edx - 0xb5]
mov ecx, edi
xor ecx, edx
and ecx, esi
xor ecx, edx
add cl, 3
mov byte [ebp + edx - 0xb5], cl
dec edi
inc edx
cmp edi, 0x62
jne 0x43e7a0
mov esi, dword [ebp - 0x10]
add esi, esi
xor ebx, eax
mov ecx, esi
mov edi, 0x3205b60c
sub ecx, ebx
je 0x43e863
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x1c]
mov edx, ecx
not edx
inc ebx
cmp esi, ebx
je 0x43e842
mov ebx, dword [ebp - 0x24]
and ebx, 0xfffffffe
mov dword [ebp - 0x14], edx
nop
mov dword [ebp - 0x10], eax
movsx esi, byte [eax]
xor esi, edi
mov edx, esi
mov eax, dword [ebp - 0x14]
and edx, eax
mov edi, esi
not edi
and edi, ecx
imul edi, edx
mov edx, esi
and edx, ecx
or esi, ecx
imul esi, edx
add esi, edi
mov edx, dword [ebp - 0x10]
movsx edi, byte [edx + 1]
xor edi, esi
mov edx, edi
and edx, eax
mov eax, dword [ebp - 0x10]
mov esi, edi
not esi
and esi, ecx
imul esi, edx
mov edx, edi
and edx, ecx
or edi, ecx
imul edi, edx
add edi, esi
add eax, 2
add ebx, 0xfffffffe
jne 0x43e7f0
mov edx, dword [ebp - 0x14]
test byte [ebp - 0x24], 1
je 0x43e863
movsx eax, byte [eax]
xor edi, eax
and edx, edi
mov eax, edi
not eax
and eax, ecx
imul eax, edx
mov edx, edi
and edx, ecx
or edi, ecx
imul edi, edx
add edi, eax
xor eax, eax
cmp edi, dword [ebp + 0xc]
sete al
jmp dword [eax*4 + 0x449568]
mov esi, dword [ebp - 0x18]
add esi, 4
add dword [ebp - 0x20], 4
mov ecx, 1
mov eax, dword [ebp - 0x28]
jmp dword [ecx*4 + 0x449570]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esi + 0x3c]
lea ecx, [esi + edx]
mov edx, dword [esi + edx]
mov dword [esp + 4], edx
mov dword [esp + 8], 0x191a504c
nop
nop
nop
movzx edx, byte [esp + eax + 8]
lea esi, [eax + 0x37674b3b]
and esi, edx
mov edi, esi
and edi, 2
mov ebp, esi
or ebp, 0xfd
inc ebp
mov ebx, esi
and ebx, 0x3d
imul ebx, ebp
or esi, 2
imul esi, edi
sub ebx, esi
add ebx, eax
add ebx, 0x37674b3b
add bl, dl
add bl, 0xd9
mov byte [esp + eax + 8], bl
lea edx, [eax + eax]
mov esi, edx
and esi, 2
and edx, eax
or esi, eax
xor esi, 1
add esi, edx
mov eax, esi
cmp esi, 4
jb case.default.0x43e963
xor edx, edx
mov eax, dword [esp + 4]
cmp eax, dword [esp + 8]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x449580]
movzx eax, word [ecx + 0x14]
lea esi, [ecx + eax]
add esi, 0x18
movzx ecx, word [ecx + 6]
xor ebp, ebp
xor eax, eax
cmp bp, cx
setb al
mov dword [esp], 1
mov word [esp + 4], cx
jmp dword [eax*4 + 0x449588]
mov edx, 8
mov edi, dword [esp + 0x2c]
mov eax, esi
nop
nop
nop
nop
nop
sub edx, 1
jb 0x43e9d0
movzx ebx, byte [edi]
inc edi
movzx ecx, byte [eax]
inc eax
cmp bl, cl
je 0x43e9b0
sub ebx, ecx
jmp 0x43e9d2
xor ebx, ebx
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x449590]
inc ebp
add esi, 0x28
xor eax, eax
movzx ecx, word [esp + 4]
cmp bp, cx
setb al
jmp dword [eax*4 + 0x449588]
xor eax, eax
mov ecx, dword [esp + 0x30]
test ecx, ecx
setne al
jmp dword [eax*4 + 0x449598]
xor eax, eax
cmp dword [esp + 0x34], 0
setne al
mov dword [esp], 0
jmp dword [eax*4 + 0x4495a0]
mov al, 1
mov ecx, dword [esp]
jmp dword [ecx*4 + 0x4495b8]
xor eax, eax
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x28]
add eax, dword [esi + 0xc]
mov dword [ecx], eax
xor eax, eax
cmp dword [esp + 0x34], 0
setne al
mov dword [esp], 0
jmp dword [eax*4 + 0x4495a0]
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
xor ecx, ecx
mov al, 1
jmp dword [ecx*4 + 0x4495b8]
out 0x43, al
add byte [ebx - 0xfffbc18], cl
out 0x43, al
add byte [ebx + 0x440043e8], cl
out 0x43, eax
add byte [ebx - 0x74ffbc18], cl
call 0xe79895a9
inc ebx
add byte [edx - 0x18], dh
inc ebx
add byte [eax], ah
out 0x43, eax
add byte [ebx + 0x340043e8], cl
out 0x43, eax
add al, ch
call 0xea7495c1
inc ebx
add byte [edx - 0x17], ch
inc ebx
add byte [eax], dh
ljmp 0x43