Function at 0x551d40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 8]
xor ecx, ecx
xor edx, edx
push ebx
mov ch, byte [eax + 1]
mov dh, byte [eax + 3]
mov cl, byte [eax]
mov dl, byte [eax + 2]
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
xor ecx, ecx
xor edx, edx
mov ch, byte [eax + 5]
mov dh, byte [eax + 7]
mov cl, byte [eax + 4]
mov dl, byte [eax + 6]
mov eax, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], 8
mov si, word [eax]
mov cx, word [eax + 2]
xor si, word [ebp - 8]
add eax, 2
add eax, 2
xor cx, word [ebp - 0xc]
and esi, 0xffff
mov di, word [eax]
and ecx, 0xffff
xor di, dx
mov edx, esi
and edi, 0xffff
and edx, 0x36
mov ebx, edi
mov dword [ebp + 0xc], ecx
and ebx, 0x6900
add eax, 2
or edx, ebx
mov ebx, ecx
and ebx, 0x6c0
and ecx, 0x4828
or edx, ebx
add eax, 2
add eax, 2
mov bl, byte [edx*2 + 0x811784]
mov edx, edi
and edx, 0x10c4
and ebx, 0xf
or ecx, edx
mov edx, esi
and edx, 0x8601
add eax, 2
or ecx, edx
mov edx, esi
and edx, 0x5048
and esi, 0x2980
mov cx, word [ecx*2 + 0x811784]
and ecx, 0x3300
or ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x2106
or edx, ecx
mov ecx, edi
and ecx, 0x8411
and edi, 0x22a
or edx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x9011
mov dl, byte [edx*2 + 0x811784]
or esi, ecx
or esi, edi
and edx, 0xf0
mov di, word [eax - 2]
or ebx, edx
mov cx, word [esi*2 + 0x811784]
mov si, word [eax - 6]
mov edx, dword [ebp - 4]
and ecx, 0xcc00
xor si, word [ebp - 0xc]
or ebx, ecx
mov cx, word [eax - 4]
xor edx, ebx
xor cx, word [ebp - 0x10]
xor di, dx
and edi, 0xffff
and esi, 0xffff
mov dword [ebp - 4], edx
mov edx, esi
mov ebx, edi
and edx, 0x36
and ebx, 0x6900
and ecx, 0xffff
or edx, ebx
mov ebx, ecx
and ebx, 0x6c0
mov dword [ebp + 0xc], ecx
or edx, ebx
mov bl, byte [edx*2 + 0x811784]
mov edx, edi
and ebx, 0xf
and ecx, 0x4828
and edx, 0x10c4
add eax, 2
or ecx, edx
mov edx, esi
and edx, 0x8601
add eax, 2
or ecx, edx
mov edx, esi
and edx, 0x5048
and esi, 0x2980
mov cx, word [ecx*2 + 0x811784]
add eax, 2
and ecx, 0x3300
or ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x2106
or edx, ecx
mov ecx, edi
and ecx, 0x8411
and edi, 0x22a
or edx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x9011
mov dl, byte [edx*2 + 0x811784]
or esi, ecx
or esi, edi
and edx, 0xf0
mov di, word [eax - 2]
or ebx, edx
mov cx, word [esi*2 + 0x811784]
mov si, word [eax - 6]
mov edx, dword [ebp - 8]
and ecx, 0xcc00
xor si, word [ebp - 0x10]
or ebx, ecx
mov cx, word [eax - 4]
xor edx, ebx
xor cx, word [ebp - 4]
xor di, dx
and edi, 0xffff
and esi, 0xffff
mov dword [ebp - 8], edx
mov edx, esi
mov ebx, edi
and edx, 0x36
and ebx, 0x6900
and ecx, 0xffff
or edx, ebx
mov ebx, ecx
and ebx, 0x6c0
mov dword [ebp + 0xc], ecx
or edx, ebx
and ecx, 0x4828
mov bl, byte [edx*2 + 0x811784]
mov edx, edi
and edx, 0x10c4
and ebx, 0xf
or ecx, edx
mov edx, esi
and edx, 0x8601
or ecx, edx
mov edx, esi
and edx, 0x5048
and esi, 0x2980
mov cx, word [ecx*2 + 0x811784]
and ecx, 0x3300
or ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x2106
or edx, ecx
mov ecx, edi
and ecx, 0x8411
and edi, 0x22a
or edx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x9011
mov dl, byte [edx*2 + 0x811784]
or esi, ecx
and edx, 0xf0
or ebx, edx
or esi, edi
mov cx, word [esi*2 + 0x811784]
mov si, word [eax]
mov edx, dword [ebp - 0xc]
and ecx, 0xcc00
xor si, word [ebp - 4]
add eax, 2
or ebx, ecx
mov cx, word [eax]
mov di, word [eax + 2]
add eax, 2
xor cx, word [ebp - 8]
xor edx, ebx
and esi, 0xffff
xor di, dx
mov dword [ebp - 0xc], edx
and edi, 0xffff
mov edx, esi
mov ebx, edi
and edx, 0x36
and ebx, 0x6900
and ecx, 0xffff
or edx, ebx
mov ebx, ecx
and ebx, 0x6c0
mov dword [ebp + 0xc], ecx
or edx, ebx
and ecx, 0x4828
add eax, 2
mov bl, byte [edx*2 + 0x811784]
mov edx, edi
and edx, 0x10c4
and ebx, 0xf
or ecx, edx
mov edx, esi
and edx, 0x8601
or ecx, edx
mov edx, esi
and edx, 0x5048
and esi, 0x2980
mov cx, word [ecx*2 + 0x811784]
and ecx, 0x3300
or ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x2106
or edx, ecx
mov ecx, edi
and ecx, 0x8411
and edi, 0x22a
or edx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0x9011
mov dl, byte [edx*2 + 0x811784]
or esi, ecx
or esi, edi
and edx, 0xf0
or ebx, edx
mov edx, dword [ebp - 0x10]
mov cx, word [esi*2 + 0x811784]
and ecx, 0xcc00
or ebx, ecx
mov ecx, dword [ebp - 0x14]
xor edx, ebx
dec ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], ecx
jne 0x551d81
mov eax, dword [ebp - 4]
mov esi, dword [ebp + 8]
xor ecx, ecx
pop edi
mov cl, ah
mov byte [esi], al
mov eax, dword [ebp - 8]
mov byte [esi + 1], cl
xor ecx, ecx
mov byte [esi + 2], al
mov cl, ah
mov eax, dword [ebp - 0xc]
mov byte [esi + 3], cl
xor ecx, ecx
mov byte [esi + 4], al
mov cl, ah
xor eax, eax
mov byte [esi + 5], cl
mov al, dh
mov byte [esi + 6], dl
mov byte [esi + 7], al
pop esi
pop ebx
mov esp, ebp
pop ebp
ret