Function at 0x610b80
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov dword [esp + 0x18], edx
mov edx, dword [edx]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], ecx
mov esi, dword [esp + 0x40]
test edx, edx
je 0x610ba6
cmp byte [edx], 0x78
je 0x610d11
movzx eax, byte [esi]
xor ebp, ebp
test al, al
je 0x610d50
mov edi, ebp
mov edx, 1
xor ebx, ebx
xor edi, 1
mov ecx, edi
mov edi, 1
mov byte [esp + 0x10], cl
jmp 0x610c02
mov ecx, edi
test cl, cl
je 0x610c07
cmp byte [ebx + str.http:__www.w3.org_XML_1998_namespace], al
sete cl
mov edi, ecx
test byte [esp + 0x10], dl
je 0x610bf7
xor edx, edx
cmp ebx, 0x1d
jg 0x610bf7
cmp byte [ebx + str.http:__www.w3.org_2000_xmlns_], al
sete dl
add ebx, 1
movzx eax, byte [esi + ebx]
test al, al
je 0x610c10
cmp ebx, 0x24
jle 0x610bd0
xor edi, edi
jmp 0x610be1
cmp ebx, 0x24
mov ecx, edi
sete al
and ecx, eax
mov eax, ebp
cmp al, cl
je 0x610c32
cmp al, 1
sbb eax, eax
and eax, 2
add eax, 0x26
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
test dl, dl
je 0x610c40
cmp ebx, 0x1d
mov eax, 0x28
je 0x610c2a
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
cmp byte [ebp + 0x1d8], 1
mov edi, dword [ebp + 0x178]
mov dword [esp + 0x10], eax
sbb ebx, 0xffffffff
test edi, edi
je 0x610da8
cmp dword [edi + 0x18], ebx
jl 0x610d76
mov eax, dword [edi + 4]
mov dword [ebp + 0x178], 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
mov dword [esp + 0x14], edx
call sub.msvcrt.dll_memcpy
movzx eax, byte [ebp + 0x1d8]
mov edx, dword [esp + 0x14]
test al, al
je 0x610caa
mov ecx, dword [edi + 0x10]
mov byte [ecx + ebx - 1], al
mov eax, dword [esp + 0x10]
mov dword [edi], edx
mov dword [edi + 0xc], eax
mov eax, dword [edx + 4]
mov dword [edi + 8], eax
cmp byte [esi], 0
je 0x610d57
mov dword [edx + 4], edi
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax]
test ecx, ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov dword [eax], edi
je 0x610da1
mov ecx, dword [ebp + 0x64]
test ecx, ecx
je 0x610da1
mov eax, dword [edx + 4]
test eax, eax
mov eax, 0
cmove esi, eax
mov dword [esp + 8], esi
mov eax, dword [edx]
mov dword [esp + 4], eax
mov eax, dword [ebp + 4]
mov dword [esp], eax
call ecx
xor eax, eax
jmp 0x610c2a
cmp byte [edx + 1], 0x6d
jne 0x610ba6
cmp byte [edx + 2], 0x6c
jne 0x610ba6
movzx eax, byte [edx + 3]
cmp al, 0x6e
je 0x610de0
test al, al
movzx eax, byte [esi]
sete dl
mov ebp, edx
test al, al
jne 0x610bb3
test dl, dl
mov eax, 0x26
jne 0x610c2a
xor ebx, ebx
jmp 0x610c40
mov eax, dword [ebp + 0x164]
add eax, 0x98
cmp edx, eax
jne 0x610cc2
mov dword [edx + 4], 0
jmp 0x610cc5
lea ecx, [ebx + 0x18]
mov dword [esp + 4], ecx
mov eax, dword [edi + 0x10]
mov dword [esp + 0x14], ecx
mov dword [esp], eax
call dword [ebp + 0x10]
test eax, eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
je 0x610e04
mov dword [edi + 0x10], eax
mov dword [edi + 0x18], ecx
jmp 0x610c71
xor eax, eax
jmp 0x610c2a
mov dword [esp + 0x18], edx
mov dword [esp], 0x1c
call dword [ebp + 0xc]
test eax, eax
mov edi, eax
je 0x610e04
lea ecx, [ebx + 0x18]
mov dword [esp], ecx
mov dword [esp + 0x14], ecx
call dword [ebp + 0xc]
test eax, eax
mov dword [edi + 0x10], eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
je 0x610dfe
mov dword [edi + 0x18], ecx
jmp 0x610c7d
cmp byte [edx + 4], 0x73
jne 0x610ba6
cmp byte [edx + 5], 0
mov eax, 0x27
je 0x610c2a
jmp 0x610ba6
mov dword [esp], edi
call dword [ebp + 0x14]
mov eax, 1
jmp 0x610c2a