Function at 0x77d8e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, dword [esp + 0x38]
mov edx, dword [edi]
mov ebx, dword [edi + 4]
cmp edx, 0x20
mov eax, ebx
sbb eax, 0
mov eax, 0x27d4eb2f
mov ecx, 0x165667c5
jb 0x77db67
mov ecx, dword [edi + 8]
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x38]
mov edi, dword [eax + 0xc]
mov dword [esp], edx
mov edx, edi
mov ebx, ecx
shld edx, ecx, 1
mov esi, ecx
shld esi, edi, 1
mov ebp, dword [eax + 0x10]
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x10], ecx
mov eax, ecx
shld eax, ebp, 7
mov dword [esp + 8], ebp
shld ebp, ecx, 7
add ebp, esi
adc eax, edx
mov edx, dword [esp + 0x38]
mov esi, dword [edx + 0x18]
mov dword [esp + 0x14], esi
mov ecx, dword [edx + 0x1c]
mov dword [esp + 0x18], ecx
mov edx, ecx
shld edx, esi, 0xc
shld esi, ecx, 0xc
add esi, ebp
adc edx, eax
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + 0x24]
mov dword [esp + 0x20], eax
mov ebp, eax
shld ebp, ecx, 0x12
shld ecx, eax, 0x12
add ecx, esi
mov dword [esp + 0xc], ecx
adc ebp, edx
mov eax, ebx
mov esi, 0x27d4eb4f
mul esi
mov ecx, ebx
mov ebx, 0xc2b2ae3d
imul ecx, ebx
add ecx, edx
imul edi, esi
add edi, ecx
mov ecx, edi
shld ecx, eax, 0x1f
shld eax, edi, 0x1f
mov esi, eax
mov edi, 0x9e3779b1
imul esi, edi
mov edx, 0x85ebca87
mul edx
add edx, esi
mov esi, 0x85ebca87
imul ecx, esi
add ecx, edx
xor ecx, ebp
xor eax, dword [esp + 0xc]
mov esi, eax
imul esi, edi
mov edx, 0x85ebca87
mul edx
mov edi, eax
add edx, esi
mov eax, 0x85ebca87
imul ecx, eax
add ecx, edx
mov eax, 0xc2b2ae63
add edi, eax
mov eax, 0x85ebca77
adc ecx, eax
mov esi, dword [esp + 8]
mov eax, esi
mov ebp, 0x27d4eb4f
mul ebp
imul esi, ebx
add esi, edx
mov edx, dword [esp + 0x10]
imul edx, ebp
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mov edx, 0x85ebca87
mul edx
add edx, ebp
mov ebx, 0x85ebca87
imul esi, ebx
add esi, edx
xor esi, ecx
xor eax, edi
mov ebp, eax
mov ecx, 0x9e3779b1
imul ebp, ecx
mov ecx, 0x85ebca87
mul ecx
mov edi, eax
mov ecx, edx
add ecx, ebp
mov eax, 0x85ebca87
imul esi, eax
add ecx, esi
mov eax, 0xc2b2ae63
add edi, eax
mov eax, 0x85ebca77
adc ecx, eax
mov esi, dword [esp + 0x14]
mov eax, esi
mov ebp, 0x27d4eb4f
mul ebp
mov ebx, 0xc2b2ae3d
imul esi, ebx
add esi, edx
mov edx, dword [esp + 0x18]
imul edx, ebp
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mov edx, 0x85ebca87
mul edx
add edx, ebp
mov ebx, 0x85ebca87
imul esi, ebx
add esi, edx
xor esi, ecx
xor eax, edi
mov ecx, 0x85ebca87
imul esi, ecx
mov edi, eax
mul ecx
mov ebp, eax
mov ecx, edx
mov eax, 0x9e3779b1
imul edi, eax
add ecx, edi
add ecx, esi
mov eax, 0xc2b2ae63
add ebp, eax
mov eax, 0x85ebca77
adc ecx, eax
mov esi, dword [esp + 0x1c]
mov eax, esi
mov edi, 0x27d4eb4f
mul edi
mov ebx, 0xc2b2ae3d
imul esi, ebx
add esi, edx
mov edx, dword [esp + 0x20]
imul edx, edi
add edx, esi
mov edi, edx
shld edi, eax, 0x1f
shld eax, edx, 0x1f
mov esi, eax
mov edx, 0x9e3779b1
imul esi, edx
mov ebx, 0x9e3779b1
mov edx, 0x85ebca87
mul edx
add edx, esi
mov esi, 0x85ebca87
imul edi, esi
add edi, edx
xor edi, ecx
xor eax, ebp
mov ecx, eax
imul ecx, ebx
mov edx, 0x85ebca87
mul edx
mov ebx, 0x85ebca77
mov ebp, eax
mov eax, 0x85ebca87
mov esi, edx
mov edx, dword [esp]
add esi, ecx
imul edi, eax
add esi, edi
mov edi, dword [esp + 0x38]
mov eax, 0xc2b2ae63
add ebp, eax
adc esi, ebx
mov ebx, dword [esp + 4]
jmp 0x77db71
mov ebp, dword [edi + 0x18]
add ebp, ecx
mov esi, dword [edi + 0x1c]
adc esi, eax
add ebp, edx
adc esi, ebx
add edi, 0x28
and edx, 0x1f
cmp edx, 8
jb 0x77dc2b
nop word cs:[eax + eax]
mov dword [esp + 4], ebp
mov dword [esp], edx
mov eax, dword [edi]
mov ecx, eax
mov ebp, 0x27d4eb4f
mul ebp
mov ebx, edi
mov edi, eax
mov eax, 0xc2b2ae3d
imul ecx, eax
add ecx, edx
mov eax, dword [ebx + 4]
imul eax, ebp
add eax, ecx
mov ecx, eax
shld ecx, edi, 0x1f
shld edi, eax, 0x1f
mov eax, edi
mov edx, 0x85ebca87
mul edx
mov ebp, 0x9e3779b1
imul edi, ebp
add edi, edx
mov edx, 0x85ebca87
imul ecx, edx
mov ebp, 0x85ebca87
add ecx, edi
mov edi, ebx
xor ecx, esi
xor eax, dword [esp + 4]
mov esi, ecx
shld esi, eax, 0x1b
shld eax, ecx, 0x1b
mov ecx, eax
mul ebp
mov ebx, 0x9e3779b1
imul ecx, ebx
add edx, ecx
imul esi, ebp
add esi, edx
mov edx, dword [esp]
add edi, 8
mov ebp, eax
mov eax, 0xc2b2ae63
add ebp, eax
mov eax, 0x85ebca77
adc esi, eax
add edx, 0xfffffff8
cmp edx, 7
ja 0x77db90
mov ebx, 0x85ebca87
cmp edx, 4
jb 0x77dc94
mov ecx, dword [edi]
mov eax, ecx
mov dword [esp], edx
mul ebx
mov ebx, edi
mov edi, eax
mov eax, ecx
mov ecx, 0x9e3779b1
imul eax, ecx
add eax, edx
xor eax, esi
xor edi, ebp
mov esi, eax
shld esi, edi, 0x17
shld edi, eax, 0x17
mov eax, edi
mov edx, 0x27d4eb4f
mul edx
mov ecx, 0xc2b2ae3d
imul edi, ecx
mov ecx, 0x27d4eb4f
add edx, edi
mov edi, ebx
imul esi, ecx
add esi, edx
mov edx, dword [esp]
add edi, 4
mov ebp, eax
mov eax, 0x165667b1
mov ecx, 0x9e3779f9
add ebp, ecx
adc esi, eax
add edx, 0xfffffffc
test edx, edx
je 0x77dda7
test dl, 1
jne 0x77dcb2
mov ecx, edx
cmp edx, 1
mov edx, 0x27d4eb2f
jne 0x77dd08
jmp 0x77dda7
movzx eax, byte [edi]
mov ecx, eax
mov dword [esp], edx
mov edx, 0x27d4eb2f
imul ecx, edx
mov edx, 0x165667c5
mul edx
add ecx, edx
xor ecx, esi
xor eax, ebp
mov esi, ecx
shld esi, eax, 0xb
shld eax, ecx, 0xb
mov ecx, eax
mov ebp, 0x85ebca87
mul ebp
mov ebx, 0x9e3779b1
imul ecx, ebx
add edx, ecx
inc edi
imul esi, ebp
add esi, edx
mov edx, dword [esp]
lea ecx, [edx - 1]
mov ebp, eax
cmp edx, 1
mov edx, 0x27d4eb2f
je 0x77dda7
xor ebx, ebx
mov dword [esp], ecx
nop dword [eax]
movzx eax, byte [edi + ebx]
mov ecx, eax
imul ecx, edx
mov edx, 0x165667c5
mul edx
add ecx, edx
xor ecx, esi
xor eax, ebp
mov esi, ecx
shld esi, eax, 0xb
shld eax, ecx, 0xb
mov ebp, eax
mov ecx, 0x9e3779b1
imul ebp, ecx
mov ecx, 0x85ebca87
mul ecx
mov ecx, eax
add ebp, edx
mov eax, 0x85ebca87
imul esi, eax
add esi, ebp
movzx eax, byte [edi + ebx + 1]
mov ebp, eax
mov edx, 0x27d4eb2f
imul ebp, edx
mov edx, 0x165667c5
mul edx
add ebp, edx
xor ebp, esi
xor eax, ecx
mov esi, ebp
shld esi, eax, 0xb
shld eax, ebp, 0xb
mov ecx, eax
mov edx, 0x85ebca87
mul edx
mov ebp, 0x9e3779b1
imul ecx, ebp
add edx, ecx
mov ecx, dword [esp]
mov ebp, 0x85ebca87
imul esi, ebp
add esi, edx
mov edx, 0x27d4eb2f
add ebx, 2
mov ebp, eax
cmp ecx, ebx
jne 0x77dd10
mov eax, esi
shr eax, 1
xor eax, ebp
mov ebx, 0xc2b2ae3d
imul ebx, eax
mov ebp, 0x27d4eb4f
mul ebp
mov edi, eax
mov ecx, edx
imul esi, ebp
add ecx, esi
add ecx, ebx
mov eax, ecx
shld eax, edi, 3
mov edx, ecx
shr edx, 0x1d
xor ecx, edx
xor edi, eax
mov edx, 0x9e3779f9
imul ecx, edx
mov eax, edi
mul edx
mov esi, 0x165667b1
imul esi, edi
add edx, ecx
add edx, esi
xor eax, edx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret