Function at 0x556d18
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffff0
mov ebx, eax
cmp byte [ebx + 0x4d4], 0
je 0x556e05
mov edx, 0xa
mov eax, dword [ebx + 0x24c]
call fcn.00445978
mov edx, 0xf
mov eax, dword [ebx + 0x24c]
call fcn.00445954
mov edx, 0xa
mov eax, dword [ebx + 0x250]
call fcn.00445978
mov eax, dword [ebx + 0x250]
mov edx, dword [ebx + 0x48]
sub edx, dword [eax + 0x48]
sub edx, 0xf
call fcn.00445954
mov edx, 9
mov eax, dword [ebx + 0x254]
call fcn.00445978
mov eax, dword [ebx + 0x254]
mov edx, dword [ebx + 0x48]
sub edx, dword [eax + 0x48]
sar edx, 1
jns 0x556d95
adc edx, 0
call fcn.00445954
mov edx, dword [ebx + 0x48]
mov eax, dword [ebx + 0x258]
call fcn.004459a0
mov dl, 1
mov eax, dword [ebx + 0x24c]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x24c]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x250]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x250]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x254]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x254]
call fcn.0044612c
mov dl, 1
mov eax, dword [ebx + 0x258]
call fcn.0044612c
jmp 0x556e60
xor edx, edx
mov eax, dword [ebx + 0x24c]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x24c]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x250]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x250]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x254]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x254]
call fcn.0044612c
xor edx, edx
mov eax, dword [ebx + 0x258]
call fcn.0044612c
mov ecx, dword [ebx + 0x48]
sub ecx, 0xa
mov eax, ecx
mov esi, 7
cdq
idiv esi
mov ebp, eax
cmp ebp, 0x14
jge 0x556e7c
mov ebp, 0x14
mov eax, ecx
mov ecx, 7
cdq
idiv ecx
sar edx, 1
jns 0x556e8d
adc edx, 0
mov dword [esp], edx
xor edi, edi
mov eax, edi
mov esi, eax
and esi, 0xff
mov eax, dword [ebx + esi*4 + 0x260]
mov edx, ebp
call fcn.004459a0
mov edx, edi
mov eax, ebp
imul dx, ax
add dl, byte [esp]
add dl, 5
and edx, 0xff
mov eax, dword [ebx + esi*4 + 0x260]
call fcn.00445954
cmp byte [ebx + 0x4d4], 0
je 0x556ee6
mov eax, dword [ebx + esi*4 + 0x260]
mov edx, 0x2d
call fcn.00445978
jmp 0x556ef8
mov eax, dword [ebx + esi*4 + 0x260]
mov edx, dword [ebx + 0x4d8]
call fcn.00445978
inc edi
cmp edi, 7
jne 0x556e92
mov eax, dword [ebx + 0x260]
mov ecx, dword [eax + 0x4c]
mov dword [esp + 0xc], ecx
mov eax, dword [eax + 0x44]
add eax, dword [esp + 0xc]
add eax, 5
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x4c]
sub eax, 0x28
mov edx, ecx
add edx, edx
lea edx, [edx + edx*2]
sub eax, edx
sub eax, dword [esp + 8]
mov ecx, 6
cdq
idiv ecx
mov dword [esp + 4], eax
cmp dword [esp + 4], 0
jge 0x556f45
xor eax, eax
mov dword [esp + 4], eax
xor edi, edi
xor esi, esi
mov eax, esi
mov ebp, eax
and ebp, 0xff
mov eax, edi
and eax, 0xff
mov edx, eax
shl eax, 3
sub eax, edx
lea eax, [ebx + eax*4]
mov eax, dword [eax + ebp*4 + 0x27c]
mov edx, edi
imul edx, dword [esp + 0xc]
lea ecx, [edi + 1]
imul ecx, dword [esp + 4]
add edx, ecx
add edx, dword [esp + 8]
call fcn.00445978
mov eax, edi
and eax, 0xff
mov edx, eax
shl eax, 3
sub eax, edx
lea eax, [ebx + eax*4]
mov eax, dword [eax + ebp*4 + 0x27c]
mov edx, dword [ebx + ebp*4 + 0x260]
mov edx, dword [edx + 0x48]
call fcn.004459a0
mov eax, edi
and eax, 0xff
mov edx, eax
shl eax, 3
sub eax, edx
lea eax, [ebx + eax*4]
mov eax, dword [eax + ebp*4 + 0x27c]
mov edx, dword [ebx + ebp*4 + 0x260]
mov edx, dword [edx + 0x40]
call fcn.00445954
inc esi
cmp esi, 7
jne 0x556f49
inc edi
cmp edi, 6
jne 0x556f47
xor eax, eax
mov al, byte [ebx + 0x4dc]
xor edx, edx
mov dl, byte [ebx + 0x4e0]
mov ecx, edx
shl edx, 3
sub edx, ecx
lea edx, [ebx + edx*4]
mov eax, dword [edx + eax*4 + 0x27c]
mov edx, dword [eax + 0x40]
mov eax, dword [ebx + 0x498]
call fcn.00445954
xor eax, eax
mov al, byte [ebx + 0x4dc]
xor edx, edx
mov dl, byte [ebx + 0x4e0]
mov ecx, edx
shl edx, 3
sub edx, ecx
lea edx, [ebx + edx*4]
mov eax, dword [edx + eax*4 + 0x27c]
mov edx, dword [eax + 0x44]
mov eax, dword [ebx + 0x498]
call fcn.00445978
xor eax, eax
mov al, byte [ebx + 0x4dc]
xor edx, edx
mov dl, byte [ebx + 0x4e0]
mov ecx, edx
shl edx, 3
sub edx, ecx
lea edx, [ebx + edx*4]
mov eax, dword [edx + eax*4 + 0x27c]
mov edx, dword [eax + 0x48]
mov eax, dword [ebx + 0x498]
call fcn.004459a0
mov eax, dword [ebx + 0x308]
mov edx, dword [eax + 0x44]
add edx, dword [eax + 0x4c]
add edx, dword [esp + 4]
add edx, 5
mov eax, dword [ebx + 0x49c]
call fcn.00445978
mov eax, dword [ebx + 0x260]
mov edx, dword [eax + 0x40]
add edx, 0xa
mov eax, dword [ebx + 0x49c]
call fcn.00445954
mov eax, dword [ebx + 0x308]
mov edx, dword [eax + 0x44]
add edx, dword [eax + 0x4c]
add edx, dword [esp + 4]
add edx, 5
mov eax, dword [ebx + 0x4a0]
call fcn.00445978
mov eax, dword [ebx + 0x49c]
mov edx, dword [eax + 0x40]
add edx, dword [eax + 0x48]
add edx, 8
mov eax, dword [ebx + 0x4a0]
call fcn.00445954
mov dl, byte [ebx + 0x4d5]
mov eax, dword [ebx + 0x49c]
call fcn.0044612c
mov dl, byte [ebx + 0x4d5]
mov eax, dword [ebx + 0x4a0]
call fcn.0044612c
add esp, 0x10
pop ebp
pop edi
pop esi
pop ebx
ret