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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov dword [esp + 0x10], 0x4ba74dbb
mov dword [esp + 0x14], 0x576a49b1
mov dword [esp + 0x18], 0x53be5566
mov dword [esp + 0x1c], 0x5f5e51be
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2b], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1e
ja 0x417637
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0xc986020a
add ecx, 0xc986020a
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xba
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp eax, 0x1f
jb 0x4175f0
lea esi, [esp + 0x10]
push esi
push edi
push ebx
call fcn.00414950
add esp, 0xc
mov byte [esp + 0xf], al
mov dword [esp + 0x10], 0x33d731d3
mov dword [esp + 0x14], 0x37c235c6
mov dword [esp + 0x18], 0xcbf4c901
mov dword [esp + 0x1c], 0xcf2ccd28
mov word [esp + 0x20], 0xc1c0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 0x2a], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov byte [esp + 0x36], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x26
ja 0x4176e8
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0x76d94578
add ecx, 0x76d94578
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xb8
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x27
jb 0x4176b0
push esi
push edi
push ebx
call fcn.00414950
add esp, 0xc
mov byte [esp + 0xe], al
mov dword [esp + 0x10], 0x338d3196
mov dword [esp + 0x14], 0x378b3586
mov dword [esp + 0x18], 0xbb309b0
mov dword [esp + 0x1c], 0xfba0dbf
mov dword [esp + 0x20], 0x3b001bf
mov dword [esp + 0x24], 0x7f8058d
mov dword [esp + 0x28], 0x1bab19ab
mov dword [esp + 0x2c], 0x1fa71da0
mov dword [esp + 0x30], 0x13b711a4
mov word [esp + 0x34], 0x1514
mov dword [esp + 0x36], 0
mov dword [esp + 0x3a], 0
mov dword [esp + 0x3e], 0
mov dword [esp + 0x42], 0
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov byte [esp + 0x4e], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x3e
ja 0x4177c8
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0x2d55bc58
add ecx, 0x2d55bc58
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x98
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x3f
jb 0x417790
push esi
push edi
mov edi, ebx
push ebx
call fcn.00414950
add esp, 0xc
mov bh, al
mov dword [esp + 0x10], 0x1b8d19bb
mov dword [esp + 0x14], 0x7ad0593
mov dword [esp + 0x18], 0x3af01a9
mov dword [esp + 0x1c], 0xf580d9f
mov dword [esp + 0x20], 0xb9b099b
mov dword [esp + 0x24], 0x77df75e0
mov dword [esp + 0x28], 0x73df71ec
mov word [esp + 0x2c], 0x7d7c
mov dword [esp + 0x2e], 0
mov dword [esp + 0x31], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x24
ja 0x417878
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0x99090f2c
add ecx, 0x99090f2c
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xcc
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x25
jb 0x417840
push esi
push dword [ebp + 0xc]
push edi
call fcn.00414950
add esp, 0xc
mov byte [esp + 0xd], al
mov dword [esp + 0x10], 0x33a535a2
mov dword [esp + 0x14], 0x2fa731ab
mov dword [esp + 0x18], 0x2ba12dbc
mov dword [esp + 0x1c], 0x27be2978
mov dword [esp + 0x20], 0x23b525ab
mov dword [esp + 0x24], 0x5f2021b0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x2f
ja 0x417938
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0xe76f97a9
add ecx, 0xe76f97a9
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x61
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x30
jb 0x417900
push esi
push dword [ebp + 0xc]
push edi
call fcn.00414950
add esp, 0xc
mov bl, al
mov dword [esp + 0x10], 0x3b9439a6
mov dword [esp + 0x14], 0x3f993d99
mov dword [esp + 0x18], 0x23b52199
mov dword [esp + 0x1c], 0x27b1254c
mov dword [esp + 0x20], 0x2b8429b5
mov dword [esp + 0x24], 0x2fb82d81
mov dword [esp + 0x28], 0x13101189
mov dword [esp + 0x2c], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1f
ja 0x4179cf
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 7]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add al, 0xd6
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x20
jb 0x4179a0
movzx eax, byte [esp + 0xf]
or al, byte [esp + 0xe]
or bh, byte [esp + 0xd]
or bh, al
push esi
push dword [ebp + 0xc]
push edi
call fcn.00414950
add esp, 0xc
or al, bl
or al, bh
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret