Function at 0x556ed0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.0045cf80
mov edx, dword [esp + 0x10]
push ebx
push ebp
push esi
movzx eax, byte [edx + 1]
mov esi, 0x64899c
movzx ebx, byte [edx + 4]
movzx ecx, byte [edx + 9]
push edi
movzx edi, byte [edx]
shl edi, 8
or edi, eax
movzx ebp, byte [edx + 0xc]
movzx eax, byte [edx + 2]
shl edi, 8
or edi, eax
shl ebx, 8
movzx eax, byte [edx + 3]
shl edi, 8
or edi, eax
shl ebp, 8
movzx eax, byte [edx + 5]
xor edi, 0xa3b1bac6
or ebx, eax
mov dword [esp + 0x10], esi
movzx eax, byte [edx + 6]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 7]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 8]
shl eax, 8
xor ebx, 0x56aa3350
or eax, ecx
movzx ecx, byte [edx + 0xa]
shl eax, 8
or eax, ecx
movzx ecx, byte [edx + 0xb]
shl eax, 8
or eax, ecx
movzx ecx, byte [edx + 0xd]
or ebp, ecx
xor eax, 0x677d9197
movzx ecx, byte [edx + 0xe]
shl ebp, 8
or ebp, ecx
movzx ecx, byte [edx + 0xf]
shl ebp, 8
or ebp, ecx
mov ecx, dword [esp + 0x24]
xor ebp, 0xb27022dc
lea edx, [ecx + 8]
mov dword [esp + 0x20], edx
mov edx, 0x648998
sub edx, ecx
mov dword [esp + 0x14], edx
mov edx, esi
sub edx, ecx
mov dword [esp + 0x18], edx
nop dword [eax + eax]
mov edx, dword [esi - 4]
xor edx, ebp
xor edx, eax
xor edx, ebx
mov ecx, edx
shr ecx, 0x18
movzx esi, byte [ecx + 0x648488]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
movzx ecx, dl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov edx, esi
mov ecx, esi
ror ecx, 9
rol edx, 0xd
xor edx, ecx
mov ecx, dword [esp + 0x10]
xor edi, edx
xor edi, esi
mov edx, edi
xor edx, ebp
xor edx, eax
xor edx, dword [ecx]
mov ecx, edx
shr ecx, 0x18
movzx esi, byte [ecx + 0x648488]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
movzx ecx, dl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov edx, esi
mov ecx, esi
ror ecx, 9
rol edx, 0xd
xor edx, ecx
mov ecx, dword [esp + 0x14]
xor ebx, edx
mov edx, dword [esp + 0x20]
xor ebx, esi
mov edx, dword [ecx + edx]
xor edx, ebx
xor edx, ebp
xor edx, edi
mov ecx, edx
shr ecx, 0x18
movzx esi, byte [ecx + 0x648488]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov ecx, edx
shl esi, 8
shr ecx, 8
movzx ecx, cl
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
movzx ecx, dl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov edx, esi
mov ecx, esi
ror ecx, 9
rol edx, 0xd
xor edx, ecx
mov ecx, dword [esp + 0x20]
xor eax, edx
mov edx, dword [esp + 0x18]
xor eax, esi
mov edx, dword [edx + ecx]
xor edx, eax
xor edx, ebx
xor edx, edi
mov ecx, edx
shr ecx, 0x18
movzx esi, byte [ecx + 0x648488]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
movzx ecx, dl
shl esi, 8
movzx ecx, byte [ecx + 0x648488]
or esi, ecx
mov edx, esi
mov ecx, esi
ror ecx, 9
rol edx, 0xd
xor edx, ecx
mov ecx, dword [esp + 0x20]
xor ebp, edx
xor ebp, esi
mov esi, dword [esp + 0x10]
add esi, 0x10
mov dword [ecx - 8], edi
mov dword [ecx - 4], ebx
mov dword [ecx], eax
mov dword [ecx + 4], ebp
add ecx, 0x10
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ecx
cmp esi, 0x648a1c
jl 0x556fa0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xc
ret