Function at 0x55adf0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
mov eax, dword [esp + 0x1c]
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov ebx, edx
mov ecx, dword [esp + 0x30]
mov edx, 0x27d4eb4f
mov dword [esp + 0x24], ebx
mov dword [esp + 0x14], edi
mov esi, dword [edi + 0x14]
mov ebp, dword [edi + 0x10]
mov dword [esp + 0x20], esi
test ecx, ecx
jne 0x55ae38
cmp eax, 0x20
jae 0x55ae38
add ebp, eax
adc esi, ecx
add ebp, 0x165667c5
adc esi, 0x27d4eb2f
jmp 0x55b08d
mov ecx, dword [edi]
mov edx, ecx
mov eax, dword [edi + 4]
shld edx, eax, 1
shld eax, ecx, 1
mov ecx, dword [edi + 8]
mov ebp, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0xc]
mov ebx, eax
shld ebp, eax, 7
mov eax, dword [edi + 0x10]
mov edi, eax
shld ebx, ecx, 7
mov ecx, dword [esp + 0x14]
shld edi, esi, 0xc
mov dword [esp + 0x10], edx
mov edx, esi
shld edx, eax, 0xc
mov eax, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x1c]
shld eax, ecx, 0x12
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x14]
mov esi, dword [ebp + 0x18]
mov ebp, dword [esp + 0x18]
shld ecx, esi, 0x12
add dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x1c]
adc ebp, ebx
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
add ebx, edi
adc ebp, edx
add ebx, eax
mov eax, dword [esi]
mov edx, 0x27d4eb4f
adc ebp, ecx
imul edi, dword [esi + 4], 0x27d4eb4f
imul ecx, eax, 0x3d4d51c3
mul edx
sub edi, ecx
xor ecx, ecx
add ecx, eax
mov eax, ecx
adc edi, edx
mov edx, 0x85ebca87
shld eax, edi, 0x1f
shld edi, ecx, 0x1f
imul ecx, edi, 0x7a143579
imul edi, eax, 0x9e3779b1
mul edx
sub edi, ecx
xor ecx, ecx
add ecx, eax
adc edi, edx
xor ebx, ecx
xor ebp, edi
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x10]
imul ecx, ebp, 0x7a143579
xor ebp, ebp
imul ebx, ebx, 0x9e3779b1
sub ebx, ecx
mov ecx, 0x85ebca87
mul ecx
add ebp, eax
mov eax, dword [esi + 8]
adc ebx, edx
add ebp, 0xc2b2ae63
mov edx, 0x27d4eb4f
adc ebx, 0x85ebca77
imul edi, dword [esi + 0xc], 0x27d4eb4f
imul ecx, eax, 0x3d4d51c3
mul edx
sub edi, ecx
xor ecx, ecx
add ecx, eax
mov eax, ecx
adc edi, edx
shld eax, edi, 0x1f
shld edi, ecx, 0x1f
mov esi, 0x85ebca87
imul ecx, edi, 0x7a143579
imul edi, eax, 0x9e3779b1
mul esi
sub edi, ecx
xor ecx, ecx
add ecx, eax
adc edi, edx
xor ebp, ecx
xor ebx, edi
mov eax, ebp
mul esi
imul ecx, ebx, 0x7a143579
imul edi, ebp, 0x9e3779b1
mov ebp, dword [esp + 0x14]
xor ebx, ebx
sub edi, ecx
add ebx, eax
mov eax, dword [ebp + 0x10]
adc edi, edx
add ebx, 0xc2b2ae63
mov edx, 0x27d4eb4f
adc edi, 0x85ebca77
imul esi, dword [esp + 0x20], 0x27d4eb4f
imul ecx, eax, 0x3d4d51c3
mul edx
sub esi, ecx
xor ecx, ecx
add ecx, eax
mov eax, ecx
adc esi, edx
mov edx, 0x85ebca87
shld eax, esi, 0x1f
shld esi, ecx, 0x1f
imul ecx, esi, 0x7a143579
imul esi, eax, 0x9e3779b1
mul edx
sub esi, ecx
xor ecx, ecx
add ecx, eax
adc esi, edx
xor ebx, ecx
xor edi, esi
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x20]
imul ecx, edi, 0x7a143579
imul edi, ebx, 0x9e3779b1
xor ebx, ebx
sub edi, ecx
mov ecx, 0x85ebca87
mul ecx
add ebx, eax
mov eax, dword [ebp + 0x18]
adc edi, edx
add ebx, 0xc2b2ae63
mov edx, 0x27d4eb4f
adc edi, 0x85ebca77
imul esi, dword [ebp + 0x1c], 0x27d4eb4f
imul ecx, eax, 0x3d4d51c3
mul edx
sub esi, ecx
xor ecx, ecx
add ecx, eax
mov eax, ecx
adc esi, edx
mov edx, 0x85ebca87
shld eax, esi, 0x1f
shld esi, ecx, 0x1f
imul ecx, esi, 0x7a143579
imul esi, eax, 0x9e3779b1
mul edx
sub esi, ecx
xor ecx, ecx
add ecx, eax
adc esi, edx
xor ebx, ecx
xor edi, esi
imul esi, ebx, 0x9e3779b1
imul ecx, edi, 0x7a143579
sub esi, ecx
mov eax, ebx
mov ecx, 0x85ebca87
mov ebx, dword [esp + 0x24]
xor ebp, ebp
mul ecx
add ebp, eax
mov eax, dword [esp + 0x2c]
adc esi, edx
add ebp, eax
mov edx, 0x27d4eb4f
adc esi, dword [esp + 0x30]
add ebp, 0xc2b2ae63
adc esi, 0x85ebca77
and eax, 0x1f
mov dword [esp + 0x2c], eax
cmp eax, 8
jb 0x55b141
shr eax, 3
mov dword [esp + 0x14], eax
nop dword [eax]
nop dword [eax + eax]
imul edi, dword [ebx + 4], 0x27d4eb4f
mov eax, dword [ebx]
imul ecx, eax, 0x3d4d51c3
mul edx
sub edi, ecx
xor ecx, ecx
add ecx, eax
mov eax, ecx
adc edi, edx
mov edx, 0x85ebca87
shld eax, edi, 0x1f
shld edi, ecx, 0x1f
add ebx, 8
imul ecx, edi, 0x7a143579
imul edi, eax, 0x9e3779b1
mul edx
sub edi, ecx
xor ecx, ecx
add ecx, eax
adc edi, edx
xor ecx, ebp
xor edi, esi
mov eax, ecx
shld eax, edi, 0x1b
shld edi, ecx, 0x1b
imul esi, eax, 0x9e3779b1
xor ebp, ebp
imul ecx, edi, 0x7a143579
sub esi, ecx
mov ecx, 0x85ebca87
mul ecx
add ebp, eax
mov eax, dword [esp + 0x2c]
adc esi, edx
add ebp, 0xc2b2ae63
mov edx, 0x27d4eb4f
adc esi, 0x85ebca77
sub eax, 8
sub dword [esp + 0x14], 1
mov dword [esp + 0x2c], eax
jne 0x55b0b0
cmp eax, 4
jb 0x55b19e
mov eax, dword [ebx]
mov edx, 0x85ebca87
imul edi, eax, 0x9e3779b1
xor ecx, ecx
mul edx
add ebx, 4
add ecx, eax
adc edi, edx
xor ecx, ebp
xor edi, esi
mov eax, ecx
shld eax, edi, 0x17
shld edi, ecx, 0x17
imul ecx, eax, 0x3d4d51c3
xor ebp, ebp
imul esi, edi, 0x27d4eb4f
sub esi, ecx
mov ecx, 0x27d4eb4f
mul ecx
add ebp, eax
mov eax, dword [esp + 0x2c]
adc esi, edx
add ebp, 0x9e3779f9
adc esi, 0x165667b1
sub eax, 4
mov dword [esp + 0x2c], eax
test eax, eax
je 0x55b1f9
mov edx, 0x165667c5
nop word [eax + eax]
movzx eax, byte [ebx]
lea ebx, [ebx + 1]
imul edi, eax, 0x27d4eb2f
xor ecx, ecx
mul edx
add ecx, eax
adc edi, edx
xor ecx, ebp
xor edi, esi
mov eax, ecx
shld eax, edi, 0xb
shld edi, ecx, 0xb
imul esi, eax, 0x9e3779b1
xor ebp, ebp
imul ecx, edi, 0x7a143579
sub esi, ecx
mov ecx, 0x85ebca87
mul ecx
add ebp, eax
adc esi, edx
sub dword [esp + 0x2c], 1
mov edx, 0x165667c5
jne 0x55b1b0
mov eax, esi
mov ecx, 0x27d4eb4f
shr eax, 1
xor esi, 0
xor ebp, eax
imul esi, esi, 0x27d4eb4f
imul eax, ebp, 0x3d4d51c3
xor edi, edi
sub esi, eax
mov eax, ebp
mul ecx
add edi, eax
mov ecx, edi
adc esi, edx
mov edx, esi
shrd ecx, edx, 0x1d
shr edx, 0x1d
xor edi, ecx
xor esi, edx
mov eax, edi
imul ecx, esi, 0x61c88607
mov edx, 0x9e3779f9
imul esi, edi, 0x165667b1
mul edx
sub esi, ecx
xor ecx, ecx
add ecx, eax
pop edi
adc esi, edx
xor edx, edx
mov eax, esi
xor eax, ecx
xor edx, esi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 8