Function at 0x5516e0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push 0xffffffffffffffff
push 0x6c8fce
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18c
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x54], ecx
lea ecx, [esp + 0x14]
mov dword [esp + 0x1a4], 1
mov byte [esp + 0x1b], 0
call fcn.0061d780
lea ecx, [esp + 0x68]
mov byte [esp + 0x1a4], 2
call fcn.0061aaa0
lea ecx, [esp + 0x40]
mov byte [esp + 0x1a4], 3
call fcn.0063bb20
lea ecx, [esp + 0x10]
mov byte [esp + 0x1a4], 4
call fcn.0061d780
mov ebx, dword [esp + 0x5c]
mov byte [esp + 0x1a4], 5
mov byte [esp + 0x60], 0
mov byte [esp + 0x38], 0
mov eax, dword [esp + 0x60]
and eax, 0xff
sub eax, 0
je 0x551bfa
dec eax
jne case.0x551c0c.3
mov eax, dword [esp + 0x3c]
and eax, 0xff
cmp eax, 5
ja case.0x551c0c.3
jmp dword [eax*4 + 0x552084]
push ecx
lea ecx, [esp + 0x6c]
mov eax, esp
mov dword [esp + 0x54], esp
push eax
call fcn.0061afb0
lea ecx, [esp + 0x14]
call fcn.0061dab0
lea ecx, [esp + 0x10]
call fcn.0061dc40
test ax, ax
jle 0x551f7f
push 3
lea ecx, [esp + 0x14]
call fcn.0061daa0
cmp al, 0x10
push 3
lea ecx, [esp + 0x14]
jne 0x551859
call fcn.0061daa0
and al, 0xf
push 4
lea ecx, [esp + 0x14]
mov byte [esp + 0xa4], al
call fcn.0061daa0
movzx cx, byte [esp + 0xa0]
xor dx, dx
push 1
shl ecx, 8
mov dl, al
mov byte [esp + 0xa5], al
add ecx, edx
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x14]
call fcn.0061daa0
push 2
lea ecx, [esp + 0x14]
mov byte [esp + 0xa2], al
call fcn.0061daa0
mov byte [esp + 0x9f], al
xor esi, esi
lea edi, [esp + 0xa2]
lea eax, [esi + 5]
lea ecx, [esp + 0x10]
push eax
call fcn.0061daa0
mov byte [edi], al
inc esi
inc edi
cmp si, 6
jl 0x551838
mov byte [esp + 0x3c], 3
jmp case.0x551c0c.3
call fcn.0061daa0
movzx bp, al
add ebp, 4
push 3
lea ecx, [esp + 0x14]
mov dword [esp + 0x34], ebp
mov byte [esp + 0xa0], 0
call fcn.0061daa0
add al, 4
push 1
lea ecx, [esp + 0x14]
mov byte [esp + 0xa1], al
call fcn.0061daa0
push 2
lea ecx, [esp + 0x14]
mov byte [esp + 0xa2], al
call fcn.0061daa0
push 3
lea ecx, [esp + 0x14]
mov byte [esp + 0xa3], al
mov byte [esp + 0xa4], 0
xor esi, esi
call fcn.0061daa0
and eax, 0xff
inc eax
test eax, eax
jle 0x5518f7
xor edi, edi
lea ecx, [esi + 3]
push ecx
lea ecx, [esp + 0x14]
call fcn.0061daa0
inc esi
mov byte [esp + edi + 0xa1], al
push 3
lea ecx, [esp + 0x14]
movsx edi, si
call fcn.0061daa0
and eax, 0xff
inc eax
cmp edi, eax
jl 0x5518ca
mov ecx, dword [esp + 0x1b0]
add ebp, 2
lea edx, [esp + 0x9c]
push ebp
push edx
call fcn.0061dd00
mov byte [esp + 0x3c], 5
jmp case.0x551c0c.3
mov eax, dword [esp + 0x30]
sub eax, 6
movsx ecx, ax
mov dword [esp + 0x30], eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
mov ebp, edx
mov ecx, 7
cdq
idiv ecx
mov dword [esp + 0x64], ebp
test edx, edx
je 0x551953
inc ebp
mov dword [esp + 0x64], ebp
lea ecx, [esp + 0x1b4]
call fcn.0061dc40
mov esi, dword [esp + 0x54]
mov ebx, eax
mov al, bl
mov dl, bl
add al, 4
inc dl
xor ecx, ecx
mov byte [esp + 0x21], dl
mov cl, byte [esi + 0x1d]
mov dl, byte [esi + 0x1c]
xor esi, esi
mov byte [esp + 0x20], al
test bx, bx
mov byte [esp + 0x22], cl
mov byte [esp + 0x23], dl
mov byte [esp + 0x24], bl
jle 0x5519ae
lea edi, [esp + 0x25]
push esi
lea ecx, [esp + 0x1b8]
call fcn.0061daa0
mov byte [edi], al
inc esi
inc edi
cmp si, bx
jl 0x551994
mov al, byte [esp + 0x20]
movzx ax, al
lea ecx, [esp + 0x21]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0061dd00
lea ecx, [esp + 0x40]
call fcn.0062dac0
push ebp
lea ecx, [esp + 0x44]
call fcn.0062daa0
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x54], esp
push edx
call fcn.0061d790
lea ecx, [esp + 0x44]
call fcn.0062d730
sub esp, 0x24
lea ecx, [esp + 0x64]
mov eax, esp
mov dword [esp + 0x74], esp
push 0
push ecx
push eax
mov ecx, 0x72baa8
call fcn.00628090
lea ecx, [esp + 0x8c]
call fcn.0061ac40
mov byte [esp + 0x3c], 4
jmp case.0x551c0c.3
lea ecx, [esp + 0x68]
call fcn.0061b070
test ax, ax
jle 0x551f7f
push 0
lea ecx, [esp + 0x6c]
call fcn.0061b060
mov esi, eax
mov ecx, dword [esi + 4]
mov dl, byte [esi]
test ecx, ecx
mov byte [esp + 0x8c], dl
jne 0x551a52
xor eax, eax
jmp 0x551a5a
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
test eax, eax
jge 0x551a60
xor eax, eax
shl eax, 2
push eax
call fcn.006a6832
mov ebp, eax
mov eax, dword [esi + 8]
mov esi, dword [esi + 4]
add esp, 4
mov edi, ebp
cmp esi, eax
mov dword [esp + 0x90], ebp
mov dword [esp + 0x34], eax
mov dword [esp + 0x50], edi
je 0x551ab3
mov dword [esp + 0x1c], edi
test edi, edi
mov byte [esp + 0x1a4], 6
je 0x551aa5
push esi
mov ecx, edi
call fcn.0061d790
mov eax, dword [esp + 0x34]
add esi, 4
add edi, 4
cmp esi, eax
mov dword [esp + 0x50], edi
jne 0x551a89
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], edi
test ebp, ebp
mov byte [esp + 0x1a4], 7
jne 0x551ad1
xor eax, eax
jmp 0x551ad8
mov eax, edi
sub eax, ebp
sar eax, 2
cmp ax, word [esp + 0x64]
jl 0x551f5a
mov eax, dword [esp + 0x30]
test ax, ax
jle 0x551b62
movsx ecx, ax
xor esi, esi
mov dword [esp + 0x34], ecx
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
movsx ecx, dx
push ecx
push 0
lea ecx, [esp + 0x70]
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
mov eax, esi
mov ecx, 7
cdq
idiv ecx
lea ecx, [esp + 0x10]
add edx, 4
push edx
call fcn.0061daa0
mov byte [esp + esi + 0xa8], al
mov eax, dword [esp + 0x34]
inc esi
dec eax
mov dword [esp + 0x34], eax
jne 0x551af5
mov eax, dword [esp + 0x30]
add eax, 0xa
movsx ecx, ax
mov dword [esp + 0x30], eax
mov eax, ecx
cdq
and edx, 0xff
add eax, edx
sar eax, 8
and ecx, 0x800000ff
mov byte [esp + 0x9c], al
jns 0x551b91
dec ecx
or ecx, 0xffffff00
inc ecx
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x9c]
add edx, 2
mov byte [esp + 0x9d], cl
mov ecx, dword [esp + 0x1b0]
push edx
push eax
call fcn.0061dd00
cmp ebp, edi
mov byte [esp + 0x3c], 5
mov byte [esp + 0x1a4], 5
mov esi, ebp
je 0x551bd5
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x551bc7
push ebp
call fcn.006a64d0
add esp, 4
xor eax, eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
jmp case.0x551c0c.3
mov eax, dword [esp + 0x38]
and eax, 0xff
cmp eax, 4
ja case.0x551c0c.3
jmp dword [eax*4 + 0x55209c]
lea ecx, [esp + 0x1ac]
call fcn.0061dc40
mov ebx, eax
cmp bx, 8
jge 0x551cbf
mov esi, dword [esp + 0x54]
mov al, bl
mov cl, bl
add al, 4
inc cl
xor edx, edx
mov dl, byte [esi + 0x1d]
mov byte [esp + 0x21], cl
mov cl, byte [esi + 0x1c]
xor esi, esi
test bx, bx
mov byte [esp + 0x20], al
mov byte [esp + 0x22], dl
mov byte [esp + 0x23], cl
mov byte [esp + 0x24], bl
jle 0x551c78
lea edi, [esp + 0x25]
push esi
lea ecx, [esp + 0x1b0]
call fcn.0061daa0
mov byte [edi], al
inc esi
inc edi
cmp si, bx
jl 0x551c5e
mov al, byte [esp + 0x20]
xor dx, dx
lea ecx, [esp + 0x14]
mov dl, al
lea eax, [esp + 0x21]
push edx
push eax
call fcn.0061dd00
push 1
lea ecx, [esp + 0x44]
call fcn.0062daa0
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x20], esp
push edx
call fcn.0061d790
lea ecx, [esp + 0x44]
call fcn.0062d730
sub esp, 0x24
mov eax, esp
mov dword [esp + 0x40], esp
jmp 0x551f23
mov eax, dword [esp + 0x54]
xor edx, edx
movsx ecx, bx
mov dl, byte [eax + 0x1d]
mov al, byte [eax + 0x1c]
mov byte [esp + 0x23], al
mov eax, ecx
mov byte [esp + 0x22], dl
mov byte [esp + 0x20], 0xb
cdq
and edx, 0xff
mov byte [esp + 0x21], 8
add eax, edx
sar eax, 8
or al, 0x10
and ecx, 0x800000ff
mov byte [esp + 0x24], al
jns 0x551d04
dec ecx
or ecx, 0xffffff00
inc ecx
mov byte [esp + 0x25], cl
xor esi, esi
lea edi, [esp + 0x26]
push esi
lea ecx, [esp + 0x1b0]
call fcn.0061daa0
mov byte [edi], al
inc esi
inc edi
cmp si, 6
jl 0x551d0e
movzx cx, byte [esp + 0x20]
lea edx, [esp + 0x21]
push ecx
push edx
lea ecx, [esp + 0x1c]
call fcn.0061dd00
push 1
lea ecx, [esp + 0x44]
call fcn.0062daa0
push ecx
lea eax, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x44]
call fcn.0062d730
sub esp, 0x24
lea edx, [esp + 0x64]
mov ecx, esp
mov dword [esp + 0x40], esp
push 0
push edx
push ecx
mov ecx, 0x72baa8
call fcn.00628090
lea ecx, [esp + 0x8c]
call fcn.0061ac40
mov byte [esp + 0x38], 1
jmp case.0x551c0c.3
push ecx
lea ecx, [esp + 0x6c]
mov eax, esp
mov dword [esp + 0x20], esp
push eax
call fcn.0061afb0
lea ecx, [esp + 0x14]
call fcn.0061dab0
lea ecx, [esp + 0x10]
call fcn.0061dc40
test ax, ax
jle 0x551f7f
push 3
lea ecx, [esp + 0x14]
call fcn.0061daa0
and al, 0x30
cmp al, 0x30
jne 0x551f7f
lea ecx, [ebx - 6]
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], ecx
mov byte [esp + 0x38], 2
jmp case.0x551c0c.3
mov al, byte [esp + 0x1b]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
inc al
mov byte [esp + 0x1b], al
sub ebx, ebp
or al, 0x20
cmp bx, 7
mov byte [esp + 0x24], al
jle 0x551eab
lea esi, [ebp + 6]
lea edi, [esp + 0x25]
mov dword [esp + 0x34], 7
push esi
lea ecx, [esp + 0x1b0]
call fcn.0061daa0
mov byte [edi], al
mov eax, dword [esp + 0x34]
inc esi
inc edi
dec eax
mov dword [esp + 0x34], eax
jne 0x551e1d
movzx dx, byte [esp + 0x20]
lea eax, [esp + 0x21]
push edx
push eax
lea ecx, [esp + 0x1c]
call fcn.0061dd00
push 0
lea ecx, [esp + 0x44]
call fcn.0062daa0
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x20], esp
push edx
call fcn.0061d790
lea ecx, [esp + 0x44]
call fcn.0062d730
sub esp, 0x24
lea ecx, [esp + 0x64]
mov eax, esp
mov dword [esp + 0x40], esp
push 0
push ecx
push eax
mov ecx, 0x72baa8
call fcn.00628090
lea ecx, [esp + 0x8c]
call fcn.0061ac40
add ebp, 7
mov byte [esp + 0x38], 2
mov dword [esp + 0x58], ebp
jmp case.0x551c0c.3
mov al, bl
mov dl, bl
add al, 4
inc dl
test bx, bx
mov byte [esp + 0x20], al
mov byte [esp + 0x21], dl
jle 0x551ee2
lea esi, [ebp + 6]
lea edi, [esp + 0x25]
movsx ebp, bx
push esi
lea ecx, [esp + 0x1b0]
call fcn.0061daa0
mov byte [edi], al
inc esi
inc edi
dec ebp
jne 0x551eca
mov al, byte [esp + 0x20]
movzx ax, al
lea ecx, [esp + 0x21]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0061dd00
push 1
lea ecx, [esp + 0x44]
call fcn.0062daa0
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x20], esp
push edx
call fcn.0061d790
lea ecx, [esp + 0x44]
call fcn.0062d730
sub esp, 0x24
mov eax, esp
mov dword [esp + 0x40], esp
lea ecx, [esp + 0x64]
push 0
push ecx
push eax
mov ecx, 0x72baa8
call fcn.00628090
lea ecx, [esp + 0x8c]
call fcn.0061ac40
mov byte [esp + 0x38], 4
jmp case.0x551c0c.3
mov byte [esp + 0x60], 1
mov byte [esp + 0x3c], 0
jmp case.0x551c0c.3
cmp ebp, edi
mov byte [esp + 0x1a4], 5
mov esi, ebp
je 0x551f76
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x551f68
push ebp
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov byte [esp + 0x1a4], 4
call fcn.0061d8c0
lea ecx, [esp + 0x40]
mov byte [esp + 0x1a4], 3
call fcn.0062d500
lea ecx, [esp + 0x68]
mov byte [esp + 0x1a4], 2
call fcn.0061ab90
lea ecx, [esp + 0x14]
mov byte [esp + 0x1a4], 1
call fcn.0061d8c0
lea ecx, [esp + 0x1ac]
mov byte [esp + 0x1a4], 0
call fcn.0061d8c0
lea ecx, [esp + 0x1b4]
mov dword [esp + 0x1a4], 0xffffffff
call fcn.0061d8c0
xor ax, ax
mov ecx, dword [esp + 0x19c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x198
ret 0xc
lea ecx, [esp + 0x10]
mov byte [esp + 0x1a4], 4
call fcn.0061d8c0
lea ecx, [esp + 0x40]
mov byte [esp + 0x1a4], 3
call fcn.0062d500
lea ecx, [esp + 0x68]
mov byte [esp + 0x1a4], 2
call fcn.0061ab90
lea ecx, [esp + 0x14]
mov byte [esp + 0x1a4], 1
call fcn.0061d8c0
lea ecx, [esp + 0x1ac]
mov byte [esp + 0x1a4], 0
call fcn.0061d8c0
lea ecx, [esp + 0x1b4]
mov dword [esp + 0x1a4], 0xffffffff
call fcn.0061d8c0
mov ax, 1
jmp 0x551ff1