Function at 0x77ad80
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov ebx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x50]
mov ebp, 0x27d4eb4f
mov eax, 0x27d4eb2f
mov ecx, 0x165667c5
test edi, edi
je 0x77b1e5
mov esi, dword [esp + 0x54]
cmp esi, 0x20
jb 0x77b1f0
lea eax, [edi + esi]
add eax, 0xffffffe1
mov dword [esp + 0x30], eax
mov eax, edx
add eax, 0xadc0b5d6
mov dword [esp + 8], eax
mov eax, ebx
adc eax, 0x60ea27ee
mov dword [esp + 0x1c], eax
mov eax, edx
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, ebx
mov ecx, 0xc2b2ae3d
adc eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 4], edx
mov eax, edx
add eax, 0x7a143579
mov dword [esp + 0xc], eax
mov ecx, ebx
adc ecx, 0x61c8864e
mov dword [esp + 0x10], ebx
nop word [eax + eax]
mov dword [esp + 0x18], ecx
mov dword [esp], edi
mov esi, dword [edi]
mov eax, esi
mov edx, 0x27d4eb4f
mul edx
mov ebx, 0x27d4eb4f
mov ebp, 0xc2b2ae3d
imul esi, ebp
add edx, esi
mov esi, dword [edi + 4]
imul esi, ebx
add esi, edx
add eax, dword [esp + 8]
adc esi, dword [esp + 0x1c]
mov ebx, esi
shld ebx, eax, 0x1f
shrd esi, eax, 1
mov eax, esi
mov ecx, 0x85ebca87
mul ecx
mov edi, esi
mov ebp, 0x9e3779b1
imul edi, ebp
add edx, edi
mov dword [esp + 0x28], ebx
mov edi, ebx
imul edi, ecx
add edi, edx
mov dword [esp + 0x1c], edi
mov ecx, dword [esp]
mov edx, dword [ecx + 8]
mov edi, edx
mov ecx, 0xc2b2ae3d
imul edi, ecx
mov dword [esp + 8], eax
mov eax, edx
mov ebx, 0x27d4eb4f
mul ebx
add edx, edi
mov ecx, dword [esp]
mov ebp, dword [ecx + 0xc]
imul ebp, ebx
add ebp, edx
add eax, dword [esp + 0x20]
adc ebp, dword [esp + 0x14]
mov ecx, ebp
shld ecx, eax, 0x1f
shrd ebp, eax, 1
mov eax, ebp
mov edx, 0x85ebca87
mul edx
mov edi, ebp
mov ebx, 0x9e3779b1
imul edi, ebx
add edx, edi
mov dword [esp + 0x2c], ecx
mov edi, 0x85ebca87
imul ecx, edi
add ecx, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp]
mov edi, dword [ecx + 0x10]
mov dword [esp + 0x20], eax
mov eax, edi
mov ebx, 0x27d4eb4f
mul ebx
mov ecx, 0xc2b2ae3d
imul edi, ecx
add edx, edi
mov ecx, dword [esp]
mov ecx, dword [ecx + 0x14]
imul ecx, ebx
add ecx, edx
add eax, dword [esp + 4]
adc ecx, dword [esp + 0x10]
mov edi, ecx
shld edi, eax, 0x1f
shrd ecx, eax, 1
mov eax, ecx
mov edx, 0x85ebca87
mul edx
mov dword [esp + 0x24], ecx
mov ebx, 0x9e3779b1
imul ecx, ebx
add edx, ecx
mov dword [esp + 0x34], edi
mov ecx, 0x85ebca87
imul edi, ecx
add edi, edx
mov dword [esp + 0x10], edi
mov ecx, dword [esp]
mov edx, dword [ecx + 0x18]
mov edi, edx
mov ecx, 0xc2b2ae3d
imul edi, ecx
mov dword [esp + 4], eax
mov eax, edx
mov ecx, 0x27d4eb4f
mul ecx
mov ebx, eax
add edx, edi
mov ecx, dword [esp]
mov eax, dword [ecx + 0x1c]
mov ecx, 0x27d4eb4f
imul eax, ecx
add eax, edx
add ebx, dword [esp + 0xc]
adc eax, dword [esp + 0x18]
mov ecx, eax
shld ecx, ebx, 0x1f
shrd eax, ebx, 1
mov edi, eax
mov edx, 0x9e3779b1
imul edi, edx
mov dword [esp + 0x38], eax
mov edx, 0x85ebca87
mul edx
mov ebx, 0x85ebca87
add edx, edi
mov edi, dword [esp]
mov dword [esp + 0x18], ecx
imul ecx, ebx
add ecx, edx
add edi, 0x20
mov dword [esp + 0xc], eax
cmp edi, dword [esp + 0x30]
jb 0x77ae10
mov edx, dword [esp + 0x1c]
mov ebx, edx
mov eax, dword [esp + 8]
shld ebx, eax, 1
mov dword [esp], ebx
shld eax, edx, 1
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
shld ebx, edx, 7
mov eax, dword [esp + 0x14]
shld edx, eax, 7
add edx, dword [esp + 8]
adc ebx, dword [esp]
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x10]
mov dword [esp], eax
mov eax, dword [esp + 4]
shld dword [esp], eax, 0xc
mov ebx, dword [esp + 0x10]
shld eax, ebx, 0xc
add eax, edx
mov edx, dword [esp + 8]
adc dword [esp], edx
mov ebx, ecx
mov edx, dword [esp + 0xc]
shld ebx, edx, 0x12
shld edx, ecx, 0x12
add edx, eax
mov dword [esp + 0xc], edx
adc ebx, dword [esp]
mov dword [esp + 4], ebx
mov ecx, 0xf796ca9
mov eax, esi
mul ecx
imul esi, esi, 0xdef35b01
add esi, edx
imul edx, dword [esp + 0x28], 0xf796ca9
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov dword [esp], edi
mov edi, eax
mov ecx, 0x9e3779b1
imul edi, ecx
mov ebx, 0x85ebca87
mul ebx
add edx, edi
imul esi, ebx
add esi, edx
xor esi, dword [esp + 4]
xor eax, dword [esp + 0xc]
mov edi, eax
imul edi, ecx
mul ebx
add edx, edi
imul esi, ebx
add esi, edx
mov ecx, 0xc2b2ae63
add eax, ecx
mov dword [esp + 4], eax
mov eax, 0x85ebca77
adc esi, eax
mov eax, ebp
mov edx, 0xf796ca9
mul edx
imul edi, ebp, 0xdef35b01
add edi, edx
imul edx, dword [esp + 0x2c], 0xf796ca9
add edx, edi
mov ebp, edx
shld ebp, eax, 0x1f
shld eax, edx, 0x1f
mov edi, eax
mov ecx, 0x9e3779b1
imul edi, ecx
mul ebx
add edx, edi
imul ebp, ebx
add ebp, edx
xor ebp, esi
xor eax, dword [esp + 4]
mov esi, eax
imul esi, ecx
mul ebx
mov ecx, eax
mov edi, edx
add edi, esi
imul ebp, ebx
add edi, ebp
mov eax, 0xc2b2ae63
add ecx, eax
mov dword [esp + 4], ecx
mov eax, 0x85ebca77
adc edi, eax
mov esi, dword [esp + 0x24]
mov eax, esi
mov ecx, 0xf796ca9
mul ecx
imul esi, esi, 0xdef35b01
add esi, edx
imul edx, dword [esp + 0x34], 0xf796ca9
add edx, esi
mov ebx, edx
shld ebx, eax, 0x1f
shld eax, edx, 0x1f
mov esi, eax
mov ebp, 0x9e3779b1
imul esi, ebp
mov ecx, 0x85ebca87
mul ecx
add edx, esi
imul ebx, ecx
add ebx, edx
xor ebx, edi
xor eax, dword [esp + 4]
mov edi, eax
imul edi, ebp
mul ecx
mov ebp, eax
mov esi, edx
add esi, edi
imul ebx, ecx
add esi, ebx
mov eax, 0xc2b2ae63
add ebp, eax
mov eax, 0x85ebca77
adc esi, eax
mov ecx, dword [esp + 0x38]
mov eax, ecx
mov edx, 0xf796ca9
mul edx
mov ebx, eax
imul eax, ecx, 0xdef35b01
add eax, edx
imul ecx, dword [esp + 0x18], 0xf796ca9
add ecx, eax
mov edi, ecx
shld edi, ebx, 0x1f
shld ebx, ecx, 0x1f
mov eax, ebx
mov ecx, 0x85ebca87
mul ecx
mov ecx, 0x9e3779b1
imul ebx, ecx
add edx, ebx
mov ecx, 0x85ebca87
imul edi, ecx
add edi, edx
xor edi, esi
xor eax, ebp
imul edi, ecx
mov edx, 0x85ebca87
mov ecx, eax
mov esi, 0x9e3779b1
imul ecx, esi
mul edx
add edx, ecx
add edx, edi
mov ebp, dword [esp]
mov esi, dword [esp + 0x54]
mov ecx, esi
mov edi, 0xc2b2ae63
add ecx, edi
mov edi, 0x85ebca77
adc edi, 0
add ecx, eax
adc edi, edx
and esi, 0x1f
mov ebx, esi
cmp esi, 8
jae 0x77b210
jmp 0x77b2b0
add edx, ecx
adc ebx, eax
mov ecx, edx
jmp 0x77b43f
mov ebp, edi
add edx, ecx
mov ecx, edx
adc ebx, eax
add ecx, esi
adc ebx, 0
mov edi, ebx
and esi, 0x1f
mov ebx, esi
cmp esi, 8
jb 0x77b2b0
nop dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], ebp
mov eax, dword [ebp]
mov ebp, eax
mov ecx, 0x27d4eb4f
mul ecx
mov esi, eax
mov eax, 0xc2b2ae3d
imul ebp, eax
add ebp, edx
mov eax, dword [esp]
mov eax, dword [eax + 4]
imul eax, ecx
add eax, ebp
mov ebp, eax
shld ebp, esi, 0x1f
shld esi, eax, 0x1f
mov eax, esi
mov ecx, 0x85ebca87
mul ecx
mov ecx, 0x9e3779b1
imul esi, ecx
add esi, edx
mov ecx, 0x85ebca87
imul ebp, ecx
add ebp, esi
xor ebp, edi
xor eax, dword [esp + 4]
mov edi, ebp
shld edi, eax, 0x1b
shld eax, ebp, 0x1b
mov ebp, dword [esp]
mov ecx, eax
mov edx, 0x85ebca87
mul edx
mov esi, 0x9e3779b1
imul ecx, esi
add edx, ecx
mov ecx, 0x85ebca87
imul edi, ecx
add edi, edx
add ebp, 8
mov ecx, eax
mov eax, 0xc2b2ae63
add ecx, eax
mov eax, 0x85ebca77
adc edi, eax
add ebx, 0xfffffff8
cmp ebx, 7
ja 0x77b210
mov esi, ebp
mov ebp, edi
mov edx, 0x85ebca87
cmp ebx, 4
jb 0x77b337
mov dword [esp + 4], ecx
mov ecx, esi
mov edi, dword [esi]
mov eax, edi
mul edx
mov esi, eax
mov eax, 0x9e3779b1
imul edi, eax
add edi, edx
xor edi, ebp
xor esi, dword [esp + 4]
mov ebp, edi
shld ebp, esi, 0x17
shld esi, edi, 0x17
mov edi, ecx
mov eax, esi
mov ecx, 0x27d4eb4f
mul ecx
mov ecx, 0xc2b2ae3d
imul esi, ecx
add edx, esi
mov ecx, 0x27d4eb4f
imul ebp, ecx
add ebp, edx
add edi, 4
mov ecx, eax
mov eax, 0x9e3779f9
add ecx, eax
mov eax, 0x165667b1
adc ebp, eax
add ebx, 0xfffffffc
test ebx, ebx
je 0x77b33d
test bl, 1
jne 0x77b344
mov esi, ebx
cmp ebx, 1
mov edx, 0x27d4eb2f
mov ebx, ebp
jne 0x77b3a1
jmp 0x77b43f
mov edi, esi
test ebx, ebx
jne 0x77b31f
mov ebx, ebp
jmp 0x77b43f
movzx eax, byte [edi]
mov esi, eax
mov dword [esp + 4], ecx
mov ecx, 0x27d4eb2f
imul esi, ecx
mov ecx, 0x165667c5
mul ecx
add esi, edx
xor esi, ebp
xor eax, dword [esp + 4]
mov ebp, esi
shld ebp, eax, 0xb
shld eax, esi, 0xb
mov ecx, eax
mov edx, 0x85ebca87
mul edx
mov esi, 0x9e3779b1
imul ecx, esi
add edx, ecx
inc edi
mov ecx, 0x85ebca87
imul ebp, ecx
add ebp, edx
lea esi, [ebx - 1]
mov ecx, eax
cmp ebx, 1
mov edx, 0x27d4eb2f
mov ebx, ebp
je 0x77b43f
mov eax, edi
xor edi, edi
mov dword [esp], eax
mov dword [esp + 4], esi
nop dword [eax]
mov eax, dword [esp]
movzx eax, byte [eax + edi]
mov ebp, eax
imul ebp, edx
mov edx, 0x165667c5
mul edx
add ebp, edx
xor ebp, ebx
xor eax, ecx
mov ebx, ebp
shld ebx, eax, 0xb
shld eax, ebp, 0xb
mov ebp, eax
mov ecx, 0x9e3779b1
imul ebp, ecx
mov esi, 0x85ebca87
mul esi
mov ecx, eax
add ebp, edx
imul ebx, esi
add ebx, ebp
mov eax, dword [esp]
movzx eax, byte [eax + edi + 1]
mov ebp, eax
mov edx, 0x27d4eb2f
imul ebp, edx
mov edx, 0x165667c5
mul edx
add ebp, edx
xor ebp, ebx
xor eax, ecx
mov ebx, ebp
shld ebx, eax, 0xb
shld eax, ebp, 0xb
mov ecx, eax
mul esi
mov ebp, 0x9e3779b1
imul ecx, ebp
add edx, ecx
imul ebx, esi
add ebx, edx
mov edx, 0x27d4eb2f
mov esi, dword [esp + 4]
add edi, 2
mov ecx, eax
cmp esi, edi
jne 0x77b3b0
mov eax, ebx
shr eax, 1
xor eax, ecx
mov ecx, 0xc2b2ae3d
imul ecx, eax
mov ebp, ebx
mov ebx, 0x27d4eb4f
mul ebx
mov esi, eax
mov edi, edx
imul ebp, ebx
add edi, ebp
add edi, ecx
mov eax, edi
shld eax, esi, 3
mov ecx, edi
shr ecx, 0x1d
xor edi, ecx
xor esi, eax
mov ecx, 0x9e3779f9
imul edi, ecx
mov eax, esi
mul ecx
mov ecx, 0x165667b1
imul ecx, esi
add edx, edi
add edx, ecx
xor eax, edx
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret