Function at 0x489fd0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x2c
mov edx, dword [edx]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x40]
mov dword [esp + 0x1c], ecx
test edx, edx
je 0x489ff4
cmp byte [edx], 0x78
je 0x48a168
movzx eax, byte [esi]
mov byte [esp + 0x17], 0
test al, al
je 0x48a1a4
movzx edi, byte [esp + 0x17]
mov edx, 1
mov ecx, 1
xor ebx, ebx
mov byte [esp + 0x10], dl
xor edi, 1
lea esi, [esi]
cmp byte [esp + 0x10], 0
je 0x48a03c
cmp ebx, 0x24
mov byte [esp + 0x10], 0
jg 0x48a03c
cmp byte [ebx + str.http:__www.w3.org_XML_1998_namespace], al
sete byte [esp + 0x10]
mov edx, edi
test cl, dl
je 0x48a052
xor ecx, ecx
cmp ebx, 0x1d
jg 0x48a052
cmp byte [ebx + str.http:__www.w3.org_2000_xmlns_], al
sete cl
add ebx, 1
movzx eax, byte [esi + ebx]
test al, al
jne 0x48a020
movzx edx, byte [esp + 0x10]
cmp ebx, 0x24
movzx edi, byte [esp + 0x17]
sete al
and eax, edx
mov edx, edi
cmp dl, al
je 0x48a093
test dl, dl
mov eax, 0x28
jne 0x48a086
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
add esp, 0x2c
mov eax, 0x26
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 0x1d
jne 0x48a0a1
test cl, cl
mov eax, 0x28
jne 0x48a07e
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 0x174]
cmp byte [eax + 0x1d4], 1
sbb ebx, 0xffffffff
test edi, edi
je 0x48a209
cmp dword [edi + 0x18], ebx
jl 0x48a1d7
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x174], eax
mov eax, dword [edi + 0x10]
mov dword [edi + 0x14], ebx
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + 0x1d4]
test al, al
je 0x48a0ff
mov edx, dword [edi + 0x10]
mov byte [edx + ebx - 1], al
mov eax, dword [esp + 0x1c]
mov dword [edi], ebp
mov dword [edi + 0xc], eax
mov eax, dword [ebp + 4]
mov dword [edi + 8], eax
cmp byte [esi], 0
je 0x48a1b0
mov dword [ebp + 4], edi
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x1c]
mov eax, dword [eax]
test ebx, ebx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov dword [eax], edi
je 0x48a202
mov edi, dword [esp + 0x18]
xor eax, eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x48a07e
mov ecx, dword [ebp + 4]
test ecx, ecx
cmovne eax, esi
mov dword [esp + 8], eax
mov eax, dword [ebp]
mov dword [esp + 4], eax
mov eax, dword [edi + 4]
mov dword [esp], eax
call edx
xor eax, eax
jmp 0x48a07e
cmp byte [edx + 1], 0x6d
jne 0x489ff4
cmp byte [edx + 2], 0x6c
jne 0x489ff4
movzx eax, byte [edx + 3]
cmp al, 0x6e
je 0x48a241
test al, al
movzx eax, byte [esi]
sete dl
mov byte [esp + 0x17], dl
test al, al
jne 0x48a004
test dl, dl
jne 0x48a086
xor ebx, ebx
jmp 0x48a0a1
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x160]
mov dword [esp + 0x10], eax
add eax, 0x98
cmp ebp, eax
jne 0x48a117
mov dword [ebp + 4], 0
jmp 0x48a11a
lea edx, [ebx + 0x18]
mov dword [esp + 4], edx
mov eax, dword [edi + 0x10]
mov dword [esp + 0x10], edx
mov dword [esp], eax
mov eax, dword [esp + 0x18]
call dword [eax + 0x10]
mov edx, dword [esp + 0x10]
test eax, eax
je 0x48a269
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], edx
jmp 0x48a0c6
xor eax, eax
jmp 0x48a07e
mov eax, dword [esp + 0x18]
mov dword [esp], 0x1c
call dword [eax + 0xc]
test eax, eax
mov edi, eax
je 0x48a269
mov eax, dword [esp + 0x18]
lea edx, [ebx + 0x18]
mov dword [esp], edx
mov dword [esp + 0x10], edx
call dword [eax + 0xc]
mov edx, dword [esp + 0x10]
test eax, eax
mov dword [edi + 0x10], eax
je 0x48a25f
mov dword [edi + 0x18], edx
jmp 0x48a0d6
cmp byte [edx + 4], 0x73
jne 0x489ff4
cmp byte [edx + 5], 0
mov eax, 0x27
je 0x48a07e
jmp 0x489ff4
mov eax, dword [esp + 0x18]
mov dword [esp], edi
call dword [eax + 0x14]
mov eax, 1
jmp 0x48a07e