Function at 0x55c200
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc24
mov eax, dword [0x676664]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
lea esi, [edx + 0xd]
sub edx, eax
mov dword [ebp - 0xc20], edx
lea edx, [ebp - 0x402]
sub edx, eax
mov dword [ebp - 0xc18], edx
lea edx, [ebp - 0x3fa]
mov dword [ebp - 0xc24], ecx
lea ecx, [eax + 0xe]
sub edx, eax
push edi
mov dword [ebp - 0xc14], 0
mov dword [ebp - 0xc08], esi
mov dword [ebp - 0xc0c], ecx
mov dword [ebp - 0xc1c], edx
nop
movzx eax, byte [ecx - 7]
cdq
shld edx, eax, 8
shl eax, 8
mov edi, eax
movzx eax, byte [ecx - 8]
mov ebx, edx
cdq
or edi, eax
movzx eax, byte [ecx - 9]
or ebx, edx
shld ebx, edi, 8
cdq
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 0xa]
shld ebx, edi, 8
cdq
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 0xb]
cdq
shld ebx, edi, 8
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 0xc]
cdq
shld ebx, edi, 8
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 0xd]
cdq
shld ebx, edi, 8
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 0xe]
cdq
shld ebx, edi, 8
or ebx, edx
shl edi, 8
or edi, eax
movzx eax, byte [esi - 6]
cdq
shld edx, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [esi - 7]
mov esi, edx
cdq
or ecx, eax
or esi, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx - 8]
shld esi, ecx, 8
shl ecx, 8
cdq
or ecx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax - 9]
or esi, edx
shld esi, ecx, 8
cdq
shl ecx, 8
or ecx, eax
or esi, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx - 0xa]
shld esi, ecx, 8
cdq
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc08]
or esi, edx
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax - 0xb]
cdq
or ecx, eax
or esi, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx - 0xc]
cdq
shld esi, ecx, 8
or esi, edx
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax - 0xd]
cdq
shld esi, ecx, 8
or esi, edx
xor ebx, esi
mov esi, dword [ebp - 0xc0c]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc14]
mov dword [ebp + eax*8 - 0x400], ebx
xor edi, ecx
mov dword [ebp + eax*8 - 0x404], edi
mov ecx, dword [ebp - 0xc20]
movzx eax, byte [esi + ecx]
mov ecx, dword [ebp - 0xc08]
cdq
mov edi, eax
movzx eax, byte [ecx + 2]
mov ebx, edx
cdq
shld edx, eax, 8
shl eax, 8
or edi, eax
movzx eax, byte [ecx]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 1]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 2]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 3]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 4]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [ecx - 5]
or ebx, edx
shld ebx, edi, 8
cdq
shl edi, 8
or edi, eax
movzx eax, byte [esi + 1]
or ebx, edx
cdq
shld edx, eax, 8
shl eax, 8
mov ecx, eax
movzx eax, byte [esi]
mov esi, edx
cdq
or ecx, eax
or esi, edx
shld esi, ecx, 8
mov edx, dword [ebp - 0xc0c]
movzx eax, byte [edx - 1]
cdq
or esi, edx
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc0c]
movzx eax, byte [eax - 2]
shld esi, ecx, 8
cdq
or esi, edx
mov edx, dword [ebp - 0xc0c]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 3]
shld esi, ecx, 8
cdq
or esi, edx
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc0c]
movzx eax, byte [eax - 4]
shld esi, ecx, 8
cdq
or esi, edx
mov edx, dword [ebp - 0xc0c]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 5]
shld esi, ecx, 8
cdq
or esi, edx
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc0c]
movzx eax, byte [eax - 6]
shld esi, ecx, 8
cdq
or esi, edx
xor ebx, esi
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0xc14]
xor edi, ecx
mov ecx, dword [ebp - 0xc0c]
mov dword [ebp + eax*8 - 0x3fc], edi
mov dword [ebp + eax*8 - 0x3f8], ebx
movzx eax, byte [ecx + 9]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 8]
mov edi, edx
cdq
or esi, eax
movzx eax, byte [ecx + 7]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 6]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 5]
or edi, edx
shld edi, esi, 8
cdq
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 4]
or edi, edx
shld edi, esi, 8
shl esi, 8
cdq
or esi, eax
movzx eax, byte [ecx + 3]
or edi, edx
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 2]
mov ecx, dword [ebp - 0xc08]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xa]
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [ecx + 9]
mov ecx, edx
cdq
or ebx, eax
or ecx, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx + 8]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 7]
or ecx, edx
shld ecx, ebx, 8
cdq
or ecx, edx
mov edx, dword [ebp - 0xc08]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 6]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 5]
or ecx, edx
shld ecx, ebx, 8
cdq
or ecx, edx
mov edx, dword [ebp - 0xc08]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 4]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 3]
or ecx, edx
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc18]
xor edi, ecx
mov ecx, dword [ebp - 0xc0c]
xor esi, ebx
mov dword [eax + ecx], esi
mov dword [eax + ecx + 4], edi
movzx eax, byte [ecx + 0x11]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
mov edi, edx
movzx eax, byte [ecx + 0x10]
cdq
or esi, eax
movzx eax, byte [ecx + 0xf]
or edi, edx
shld edi, esi, 8
cdq
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xe]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xd]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xc]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xb]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xa]
mov ecx, dword [ebp - 0xc08]
cdq
shld edi, esi, 8
or edi, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x12]
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [ecx + 0x11]
mov ecx, edx
cdq
or ebx, eax
or ecx, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx + 0x10]
shld ecx, ebx, 8
shl ebx, 8
cdq
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 0xf]
or ecx, edx
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
or ecx, edx
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx + 0xe]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 0xd]
or ecx, edx
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
or ecx, edx
shld ecx, ebx, 8
mov edx, dword [ebp - 0xc08]
movzx eax, byte [edx + 0xc]
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc08]
movzx eax, byte [eax + 0xb]
or ecx, edx
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
mov eax, dword [ebp - 0xc1c]
xor edi, ecx
mov ecx, dword [ebp - 0xc0c]
xor esi, ebx
mov dword [eax + ecx], esi
mov esi, dword [ebp - 0xc08]
mov dword [eax + ecx + 4], edi
mov eax, dword [ebp - 0xc14]
add eax, 4
add esi, 0x20
add ecx, 0x20
mov dword [ebp - 0xc14], eax
mov dword [ebp - 0xc08], esi
mov dword [ebp - 0xc0c], ecx
cmp eax, 0x80
jb 0x55c260
xor esi, esi
lea esp, [esp]
mov eax, 2
lea ecx, [ebp + esi - 0x404]
lea edi, [ebp + esi - 0xc04]
mov edx, eax
call fcn.0055bfa0
sub esi, 0xffffff80
cmp esi, 0x400
jb 0x55c770
xor esi, esi
jmp 0x55c7a0
mov eax, 0x10
lea ecx, [ebp + esi - 0xc04]
lea edi, [ebp + esi - 0x804]
mov edx, eax
call fcn.0055bfa0
add esi, 0x10
cmp esi, 0x80
jb 0x55c7a0
mov eax, dword [ebp - 0xc24]
lea edx, [ebp - 0x7fe]
sub edx, eax
mov dword [ebp - 0xc1c], edx
lea edx, [ebp - 0x3fe]
sub edx, eax
mov dword [ebp - 0xc24], edx
lea edx, [ebp - 0x7f6]
sub edx, eax
mov dword [ebp - 0xc20], edx
lea edx, [ebp - 0x3f6]
sub edx, eax
lea ecx, [eax + 0xa]
mov dword [ebp - 0xc18], edx
xor edi, edi
jmp 0x55c810
movzx eax, byte [ecx - 3]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx - 4]
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx - 5]
or ebx, edx
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 6]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 7]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 8]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 9]
cdq
shld ebx, esi, 8
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 0xa]
mov edx, esi
mov esi, ebx
shld esi, edx, 8
shl edx, 8
mov ebx, edx
cdq
or ebx, eax
xor ebx, dword [ebp + edi - 0x804]
or esi, edx
xor esi, dword [ebp + edi - 0x800]
xor ebx, dword [ebp + edi - 0x404]
xor esi, dword [ebp + edi - 0x400]
mov eax, ebx
mov edx, esi
shrd eax, edx, 8
mov byte [ecx - 9], al
shr edx, 8
mov eax, ebx
mov edx, esi
shrd eax, edx, 0x10
mov byte [ecx - 8], al
mov byte [ecx - 0xa], bl
mov eax, esi
shrd ebx, eax, 0x18
shr eax, 0x18
shr edx, 0x10
mov eax, esi
shr eax, 8
mov byte [ecx - 5], al
mov edx, esi
mov byte [ecx - 6], dl
shr edx, 0x10
mov eax, esi
shr eax, 0x18
mov byte [ecx - 4], dl
mov byte [ecx - 3], al
mov byte [ecx - 7], bl
movzx eax, byte [ecx + 5]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 4]
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx + 3]
or ebx, edx
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 2]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 1]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 1]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx - 2]
mov edx, esi
mov esi, ebx
shld esi, edx, 8
shl edx, 8
mov ebx, edx
cdq
or ebx, eax
xor ebx, dword [ebp + edi - 0x7fc]
or esi, edx
xor esi, dword [ebp + edi - 0x7f8]
xor ebx, dword [ebp + edi - 0x3fc]
xor esi, dword [ebp + edi - 0x3f8]
mov byte [ecx - 2], bl
mov eax, ebx
mov edx, esi
shrd eax, edx, 8
mov byte [ecx - 1], al
shr edx, 8
mov eax, ebx
mov edx, esi
shrd eax, edx, 0x10
mov byte [ecx], al
mov eax, esi
shrd ebx, eax, 0x18
shr eax, 0x18
shr edx, 0x10
mov byte [ecx + 1], bl
mov edx, esi
mov byte [ecx + 2], dl
mov eax, esi
shr eax, 8
mov byte [ecx + 3], al
shr edx, 0x10
mov eax, esi
shr eax, 0x18
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
movzx eax, byte [ecx + 0xd]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
mov ebx, edx
movzx eax, byte [ecx + 0xc]
cdq
or esi, eax
movzx eax, byte [ecx + 0xb]
or ebx, edx
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xa]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 9]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 8]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 7]
cdq
shld ebx, esi, 8
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 6]
mov edx, esi
mov esi, ebx
shld esi, edx, 8
shl edx, 8
mov ebx, edx
cdq
or ebx, eax
mov eax, dword [ebp - 0xc24]
xor ebx, dword [ecx + eax]
or esi, edx
xor esi, dword [ecx + eax + 4]
mov eax, dword [ebp - 0xc1c]
xor esi, dword [ecx + eax + 4]
xor ebx, dword [ecx + eax]
mov edx, esi
mov byte [ecx + 6], bl
mov eax, ebx
shrd eax, edx, 8
mov byte [ecx + 7], al
shr edx, 8
mov eax, ebx
mov edx, esi
shrd eax, edx, 0x10
mov byte [ecx + 8], al
mov eax, esi
shrd ebx, eax, 0x18
shr eax, 0x18
shr edx, 0x10
mov byte [ecx + 9], bl
mov edx, esi
mov byte [ecx + 0xa], dl
mov eax, esi
shr eax, 8
mov byte [ecx + 0xb], al
shr edx, 0x10
mov byte [ecx + 0xc], dl
mov eax, esi
shr eax, 0x18
mov byte [ecx + 0xd], al
movzx eax, byte [ecx + 0x15]
cdq
shld edx, eax, 8
shl eax, 8
mov esi, eax
movzx eax, byte [ecx + 0x14]
mov ebx, edx
cdq
or esi, eax
movzx eax, byte [ecx + 0x13]
or ebx, edx
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x12]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x11]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0x10]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xf]
shld ebx, esi, 8
cdq
or ebx, edx
shl esi, 8
or esi, eax
movzx eax, byte [ecx + 0xe]
mov edx, esi
mov esi, ebx
shld esi, edx, 8
shl edx, 8
mov ebx, edx
cdq
or ebx, eax
mov eax, dword [ebp - 0xc18]
xor ebx, dword [ecx + eax]
or esi, edx
xor esi, dword [ecx + eax + 4]
mov eax, dword [ebp - 0xc20]
xor esi, dword [ecx + eax + 4]
xor ebx, dword [ecx + eax]
mov edx, esi
mov byte [ecx + 0xe], bl
mov eax, ebx
shrd eax, edx, 8
mov byte [ecx + 0xf], al
shr edx, 8
mov eax, ebx
mov edx, esi
shrd eax, edx, 0x10
mov byte [ecx + 0x10], al
mov eax, esi
shrd ebx, eax, 0x18
shr eax, 0x18
shr edx, 0x10
mov byte [ecx + 0x11], bl
mov edx, esi
mov byte [ecx + 0x12], dl
mov eax, esi
shr eax, 8
mov byte [ecx + 0x13], al
shr edx, 0x10
mov eax, esi
shr eax, 0x18
mov byte [ecx + 0x14], dl
mov byte [ecx + 0x15], al
add edi, 0x20
add ecx, 0x20
cmp edi, 0x400
jb 0x55c810
push 0x400
lea ecx, [ebp - 0x404]
push 0
push ecx
call fcn.004173e0
push 0x400
lea edx, [ebp - 0xc04]
push 0
push edx
call fcn.004173e0
push 0x400
lea eax, [ebp - 0x804]
push 0
push eax
call fcn.004173e0
mov ecx, dword [ebp - 4]
add esp, 0x24
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0059af98
mov esp, ebp
pop ebp
ret