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

Disassembly:
cmp dword [ecx], 0xffffffff
je 0x4189b7
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov edi, ecx
push 0x1006c792
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
lea ecx, [esp + 0x10]
push 8
push 2
push ecx
push dword [edi]
call eax
test eax, eax
jg 0x4189bc
cmp dword [edi], 0xffffffff
je 0x4189bc
push 0xea8d1240
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
jmp 0x418c0a
xor eax, eax
ret 4
test eax, eax
jle 0x418c0a
movzx eax, byte [esp + 0x11]
mov ecx, eax
and ecx, 0x7f
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], 0
cmp ecx, 0x7f
je 0x418a6e
cmp ecx, 0x7e
jne 0x418afb
mov word [esp], 0
push 0x1006c792
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
mov ecx, esp
push 8
push 2
push ecx
push dword [edi]
call eax
test eax, eax
setg bl
jg 0x418a52
cmp dword [edi], 0xffffffff
je 0x418a52
push 0xea8d1240
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
movzx eax, word [esp]
rol ax, 8
movzx eax, ax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], 0
jmp 0x418af0
mov dword [esp + 4], 0
mov dword [esp], 0
push 0x1006c792
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
mov ecx, esp
push 8
push 8
push ecx
push dword [edi]
call eax
test eax, eax
setg bl
jg 0x418add
cmp dword [edi], 0xffffffff
je 0x418add
push 0xea8d1240
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
mov eax, dword [esp]
mov ecx, dword [esp + 4]
bswap ecx
bswap eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
movzx eax, byte [esp + 0x11]
test al, al
jns 0x418b63
jmp 0x418b01
xor ebx, ebx
test al, al
jns 0x418b63
lea esi, [esp + 0x20]
push 0x1006c792
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 8
push 4
push esi
push dword [edi]
call eax
test eax, eax
setg al
jg 0x418b65
cmp dword [edi], 0xffffffff
je 0x418b65
push 0xea8d1240
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor eax, eax
test bl, bl
je 0x418c0a
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
inc eax
push eax
call fcn.00408350
add esp, 4
mov dword [esp + 0x24], eax
xor esi, esi
xor edx, edx
mov dword [esp + 0x2c], edi
jmp 0x418ba1
add esi, ecx
mov edx, dword [esp + 0x30]
adc edx, 0
test eax, eax
jle 0x418c4c
mov eax, dword [esp + 0x18]
cmp esi, eax
mov ecx, edx
sbb ecx, dword [esp + 0x1c]
jae 0x418c4c
mov dword [esp + 0x30], edx
mov ecx, eax
not ecx
and ecx, esi
mov edi, esi
not edi
and edi, eax
sub edi, ecx
cmp edi, 0xffff
jl 0x418bd2
mov edi, 0xffff
mov ebx, dword [esp + 0x24]
add ebx, esi
push 0x1006c792
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 8
push edi
push ebx
mov edi, dword [esp + 0x38]
push dword [edi]
call eax
test eax, eax
jg 0x418c00
cmp dword [edi], 0xffffffff
jne 0x418c16
mov ecx, eax
test eax, eax
jg 0x418b90
xor ecx, ecx
jmp 0x418b90
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
push 0xea8d1240
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push 2
push dword [edi]
call eax
push 0xa3d60213
push dword [0x4495c8]
call fcn.0043c0e0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
or ecx, eax
setne cl
mov edx, dword [esp + 0x28]
and dl, cl
cmp dl, 1
jne 0x418c95
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x24]
mov esi, ecx
and esi, 3
movzx ebx, byte [esp + esi + 0x20]
xor byte [eax + ecx], bl
add ecx, 1
adc edx, 0
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov esi, edx
sbb esi, dword [esp + 0x1c]
jb 0x418c70
mov ecx, dword [esp + 0x24]
mov byte [ecx + eax], 0
cmp byte [edi + 5], 0
je 0x418cb4
mov eax, esp
mov ecx, edi
lea edx, [esp + 0x10]
push edx
push eax
call fcn.00419d70
jmp 0x418cc3
mov eax, esp
mov ecx, edi
lea edx, [esp + 0x10]
push edx
push eax
call fcn.00419c00
mov eax, dword [esp + 0xc]
mov edx, dword [ebp + 8]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 8]
mov dword [edx + 8], eax
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov dword [edx + 4], ecx
mov dword [edx], eax
mov al, 1
jmp 0x418c0c