Function at 0x5114d0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc
call fcn.005c5c30
mov eax, dword [esp + 0x10]
test eax, eax
je 0x511b85
cmp dword [esp + 0x14], 0
je 0x511b85
push esi
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x511b84
mov ecx, dword [esi + 0x110]
mov dword [esp + 8], ecx
cmp ecx, 0xc
je 0x51151b
cmp ecx, 0xe
je 0x51151b
cmp ecx, 0x10
jne 0x511b84
movzx ecx, byte [eax]
movzx edx, byte [eax + 1]
shl ecx, 8
xor ecx, edx
movzx edx, byte [eax + 2]
shl ecx, 8
xor ecx, edx
movzx edx, byte [eax + 3]
push ebx
shl ecx, 8
xor ecx, edx
movzx edx, byte [eax + 4]
xor ecx, dword [esi]
movzx ebx, byte [eax + 0xc]
push ebp
push edi
movzx edi, byte [eax + 5]
shl edx, 8
xor edx, edi
movzx edi, byte [eax + 6]
shl edx, 8
xor edx, edi
movzx edi, byte [eax + 7]
shl edx, 8
xor edx, edi
xor edx, dword [esi + 4]
movzx esi, byte [eax + 8]
movzx edi, byte [eax + 9]
shl esi, 8
xor esi, edi
movzx edi, byte [eax + 0xa]
shl esi, 8
xor esi, edi
movzx edi, byte [eax + 0xb]
shl esi, 8
xor esi, edi
mov edi, dword [esp + 0x28]
xor esi, dword [edi + 8]
shl ebx, 8
mov dword [esp + 0x20], esi
movzx esi, byte [eax + 0xd]
xor ebx, esi
movzx esi, byte [eax + 0xe]
movzx eax, byte [eax + 0xf]
shl ebx, 8
xor ebx, esi
shl ebx, 8
xor ebx, eax
mov eax, dword [esp + 0x20]
xor ebx, dword [edi + 0xc]
shr eax, 0x18
mov ebp, dword [eax*4 + 0x6097a8]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x20]
shr eax, 8
shr ecx, 0x10
movzx eax, al
movzx esi, cl
xor ebp, dword [esi*4 + 0x609ba8]
mov ecx, ebx
xor ebp, dword [eax*4 + 0x609fa8]
movzx eax, byte [esp + 0x20]
xor ebp, dword [eax*4 + 0x60a3a8]
mov eax, ebx
shr eax, 0x18
mov esi, dword [eax*4 + 0x6097a8]
mov eax, ebx
shr ecx, 0x10
shr eax, 8
movzx ecx, cl
xor esi, dword [ecx*4 + 0x609ba8]
movzx eax, al
xor esi, dword [eax*4 + 0x609fa8]
movzx eax, bl
xor esi, dword [eax*4 + 0x60a3a8]
mov eax, edx
mov ebx, edx
shr eax, 0x18
shr ebx, 0x10
movzx ebx, bl
mov eax, dword [eax*4 + 0x6097a8]
xor eax, dword [ebx*4 + 0x609ba8]
mov ecx, dword [esp + 0x18]
mov ebx, edx
shr ebx, 8
movzx ebx, bl
xor eax, dword [ebx*4 + 0x609fa8]
movzx edx, dl
xor eax, dword [edx*4 + 0x60a3a8]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov edx, ecx
shr edx, 0x18
mov edx, dword [edx*4 + 0x6097a8]
xor edx, dword [ebx*4 + 0x609ba8]
xor eax, ebp
mov ebx, ecx
shr ebx, 8
xor ebp, esi
movzx ebx, bl
xor edx, dword [ebx*4 + 0x609fa8]
xor esi, eax
movzx ecx, cl
xor edx, dword [ecx*4 + 0x60a3a8]
mov ebx, esi
xor edx, eax
xor ebp, edx
xor eax, ebp
rol ebp, 0x10
mov ecx, ebp
mov ebp, esi
shr ebp, 0x10
and ebx, 0xff0000
xor ebx, ebp
mov ebp, esi
shl esi, 0x10
and ebp, 0xff00
xor ebp, esi
shr ebx, 8
shl ebp, 8
xor ebx, ebp
mov esi, eax
mov ebp, eax
shr esi, 8
shl ebp, 8
xor esi, ebp
shl eax, 8
and esi, 0xff00ff
xor esi, eax
mov eax, dword [edi + 0x14]
xor esi, ecx
xor ecx, ebx
xor edx, esi
xor ecx, edx
xor edx, dword [edi + 0x10]
xor ebx, esi
xor ebx, dword [edi + 0x1c]
xor eax, ecx
xor ecx, dword [edi + 0x18]
mov dword [esp + 0x20], esi
xor dword [esp + 0x20], eax
add edi, 0x20
sub dword [esp + 0x14], 2
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], edi
je 0x5119bb
mov edi, edi
mov ebx, ecx
shr ebx, 0x10
movzx esi, bl
mov eax, ecx
mov ebx, ecx
shr ebx, 8
shr eax, 0x18
mov eax, dword [eax*4 + 0x609fa8]
xor eax, dword [esi*4 + 0x60a3a8]
movzx esi, bl
xor eax, dword [esi*4 + 0x6097a8]
movzx ecx, cl
xor eax, dword [ecx*4 + 0x609ba8]
mov ecx, dword [esp + 0x10]
mov ebx, ecx
shr ebx, 0x10
movzx edi, bl
mov esi, ecx
shr esi, 0x18
mov esi, dword [esi*4 + 0x609fa8]
xor esi, dword [edi*4 + 0x60a3a8]
mov ebx, ecx
shr ebx, 8
movzx edi, bl
xor esi, dword [edi*4 + 0x6097a8]
mov edi, dword [esp + 0x20]
movzx ecx, cl
xor esi, dword [ecx*4 + 0x609ba8]
mov ebx, edi
shr ebx, 0x10
movzx ebx, bl
mov ecx, edi
shr ecx, 0x18
mov ecx, dword [ecx*4 + 0x609fa8]
xor ecx, dword [ebx*4 + 0x60a3a8]
mov ebx, edi
shr ebx, 8
movzx edi, bl
xor ecx, dword [edi*4 + 0x6097a8]
movzx edi, byte [esp + 0x20]
xor ecx, dword [edi*4 + 0x609ba8]
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + 0x609fa8]
xor edi, dword [ebx*4 + 0x60a3a8]
mov ebx, edx
shr ebx, 8
movzx ebx, bl
xor edi, dword [ebx*4 + 0x6097a8]
xor ecx, eax
xor eax, esi
xor esi, ecx
movzx edx, dl
xor edi, dword [edx*4 + 0x609ba8]
mov edx, esi
mov ebx, esi
shl ebx, 8
shr edx, 8
xor edx, ebx
shl esi, 8
xor edi, ecx
xor eax, edi
xor ecx, eax
and edx, 0xff00ff
xor edx, esi
mov ebx, ecx
and ebx, 0xff0000
mov esi, ecx
shr esi, 0x10
xor ebx, esi
mov esi, ecx
and esi, 0xff00
shl ecx, 0x10
xor esi, ecx
shr ebx, 8
shl esi, 8
xor ebx, esi
xor ebx, eax
xor eax, edx
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
xor edx, ebx
rol edi, 0x10
xor edi, ebx
xor eax, edi
mov dword [esp + 0x10], edi
xor dword [esp + 0x10], ecx
mov edi, dword [esp + 0x18]
mov ecx, dword [edi + 4]
xor ecx, eax
xor eax, dword [edi + 8]
xor edx, dword [edi + 0xc]
xor ebx, ecx
mov ecx, eax
shr ecx, 0x18
mov ebp, dword [ecx*4 + 0x6097a8]
mov dword [esp + 0x20], ebx
mov ebx, eax
mov ecx, eax
shr ebx, 0x10
shr ecx, 8
movzx esi, bl
xor ebp, dword [esi*4 + 0x609ba8]
mov ebx, dword [esp + 0x20]
movzx ecx, cl
xor ebp, dword [ecx*4 + 0x609fa8]
movzx eax, al
xor ebp, dword [eax*4 + 0x60a3a8]
mov ecx, edx
mov eax, edx
shr eax, 0x10
shr ecx, 0x18
mov esi, dword [ecx*4 + 0x6097a8]
mov ecx, edx
movzx eax, al
xor esi, dword [eax*4 + 0x609ba8]
shr ecx, 8
movzx eax, cl
xor esi, dword [eax*4 + 0x609fa8]
movzx ecx, dl
xor esi, dword [ecx*4 + 0x60a3a8]
mov eax, ebx
mov edx, ebx
shr edx, 0x18
shr eax, 0x10
movzx ecx, al
mov eax, dword [edx*4 + 0x6097a8]
xor eax, dword [ecx*4 + 0x609ba8]
mov edx, ebx
shr edx, 8
movzx ecx, dl
xor eax, dword [ecx*4 + 0x609fa8]
mov ecx, dword [esp + 0x10]
movzx edx, bl
xor eax, dword [edx*4 + 0x60a3a8]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov edx, ecx
shr edx, 0x18
mov edx, dword [edx*4 + 0x6097a8]
xor edx, dword [ebx*4 + 0x609ba8]
mov ebx, ecx
shr ebx, 8
movzx ebx, bl
xor edx, dword [ebx*4 + 0x609fa8]
xor eax, ebp
movzx ecx, cl
xor edx, dword [ecx*4 + 0x60a3a8]
xor ebp, esi
xor edx, eax
xor esi, eax
xor ebp, edx
xor eax, ebp
rol ebp, 0x10
mov ebx, esi
mov ecx, ebp
and ebx, 0xff0000
mov ebp, esi
shr ebp, 0x10
xor ebx, ebp
mov ebp, esi
shl esi, 0x10
and ebp, 0xff00
xor ebp, esi
shr ebx, 8
shl ebp, 8
xor ebx, ebp
mov esi, eax
mov ebp, eax
shr esi, 8
shl ebp, 8
shl eax, 8
xor esi, ebp
and esi, 0xff00ff
xor eax, esi
xor eax, ecx
xor ecx, ebx
xor edx, eax
xor ebx, eax
xor ebx, dword [edi + 0x1c]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x14]
xor ecx, edx
xor edx, dword [edi + 0x10]
xor eax, ecx
xor ecx, dword [edi + 0x18]
xor dword [esp + 0x20], eax
add edi, 0x20
sub dword [esp + 0x14], 2
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], edi
jne 0x511710
mov eax, edx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + 0x60a3a8]
shr eax, 8
movzx ebp, al
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x609fa8]
shl eax, 8
or ebp, eax
mov eax, edx
shr eax, 8
movzx eax, al
movzx eax, byte [eax*4 + 0x6097a8]
shl ebp, 8
movzx edx, dl
mov dword [esp + 0x18], ebp
or ebp, eax
movzx eax, byte [edx*4 + 0x609ba8]
shl ebp, 8
or ebp, eax
xor ebp, dword [edi]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x20]
mov edx, ebp
shr edx, 0x10
movzx eax, dl
mov edx, dword [eax*4 + 0x60a3a8]
shr ebp, 0x18
movzx eax, byte [ebp*4 + 0x609fa8]
shl eax, 8
shr edx, 8
movzx edx, dl
or edx, eax
mov eax, dword [esp + 0x20]
shr eax, 8
movzx eax, al
movzx eax, byte [eax*4 + 0x6097a8]
shl edx, 8
or edx, eax
movzx eax, byte [esp + 0x20]
movzx eax, byte [eax*4 + 0x609ba8]
shl edx, 8
or edx, eax
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + 0x60a3a8]
shr eax, 8
movzx ebp, al
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x609fa8]
shl eax, 8
or ebp, eax
mov eax, ecx
shr eax, 8
xor edx, dword [edi + 4]
movzx eax, al
movzx eax, byte [eax*4 + 0x6097a8]
shl ebp, 8
movzx ecx, cl
mov dword [esp + 0x20], ebp
or ebp, eax
movzx eax, byte [ecx*4 + 0x609ba8]
shl ebp, 8
or ebp, eax
xor ebp, dword [edi + 8]
mov ecx, ebx
shr ecx, 0x10
movzx eax, cl
mov ecx, dword [eax*4 + 0x60a3a8]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x609fa8]
shr ecx, 8
mov dword [esp + 0x20], ebp
movzx ecx, cl
shl eax, 8
or ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
movzx eax, byte [eax*4 + 0x6097a8]
shl ecx, 8
or ecx, eax
movzx eax, bl
movzx eax, byte [eax*4 + 0x609ba8]
shl ecx, 8
or ecx, eax
xor ecx, dword [edi + 0xc]
mov eax, dword [esp + 0x10]
mov ebx, eax
shr ebx, 0x18
mov byte [esi], bl
mov ebx, eax
mov byte [esi + 3], al
shr ebx, 0x10
mov byte [esi + 1], bl
mov ebx, eax
mov eax, edx
shr eax, 0x18
mov byte [esi + 4], al
mov eax, edx
shr eax, 0x10
mov byte [esi + 5], al
mov eax, edx
shr eax, 8
mov byte [esi + 7], dl
mov byte [esi + 6], al
mov eax, ebp
mov edx, eax
shr edx, 0x18
mov byte [esi + 8], dl
mov edx, eax
shr edx, 0x10
mov byte [esi + 9], dl
mov edx, eax
mov byte [esi + 0xb], al
shr edx, 8
mov eax, ecx
shr eax, 0x18
mov byte [esi + 0xa], dl
mov byte [esi + 0xc], al
shr ebx, 8
mov edx, ecx
pop edi
shr edx, 0x10
mov eax, ecx
shr eax, 8
pop ebp
mov byte [esi + 2], bl
mov byte [esi + 0xd], dl
mov byte [esi + 0xe], al
mov byte [esi + 0xf], cl
pop ebx
pop esi
add esp, 0xc
ret