Function at 0x477740
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x48]
lea esi, [edi + 0x28]
mov ecx, dword [edi + 4]
add eax, 0x28
mov ebx, dword [edi]
add eax, edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 8], eax
test ecx, ecx
jne 0x477784
cmp ebx, 0x20
jae 0x477784
add ebx, dword [edi + 0x18]
mov edi, dword [edi + 0x1c]
adc edi, ecx
add ebx, 0x165667c5
adc edi, 0x27d4eb2f
jmp 0x477967
mov edx, dword [edi + 8]
mov eax, edx
mov ecx, dword [edi + 0xc]
mov esi, dword [ebp + 8]
mov edi, dword [edi + 0x10]
shld eax, ecx, 1
push 0xc2b2ae3d
mov ebx, dword [esi + 0x14]
mov esi, dword [esi + 0x20]
shld edi, ebx, 7
mov dword [ebp - 0x10], eax
mov eax, ecx
mov ecx, dword [ebp + 8]
shld eax, edx, 1
mov edx, ebx
mov dword [ebp - 0xc], edi
mov edi, dword [ebp + 8]
mov ebx, dword [ecx + 0x18]
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x10]
mov ecx, ebx
shld edx, eax, 7
mov eax, dword [edi + 0x1c]
shld ecx, eax, 0xc
shld eax, ebx, 0xc
mov ebx, esi
mov esi, dword [edi + 0x24]
shld ebx, esi, 0x12
mov esi, edi
mov dword [ebp - 4], ebx
push 0x27d4eb4f
mov ebx, dword [esi + 0x24]
mov esi, dword [edi + 0x20]
shld ebx, esi, 0x12
add dword [ebp - 4], ecx
adc ebx, eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0xc]
adc ebx, edx
add eax, dword [ebp - 0x10]
mov dword [ebp - 4], eax
mov eax, edi
adc ebx, dword [ebp - 0x14]
push dword [eax + 0xc]
push dword [eax + 8]
call fcn.0057de90
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0057de90
xor eax, dword [ebp - 4]
xor edx, ebx
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.0057de90
mov ecx, dword [ebp + 8]
mov edi, eax
push 0xc2b2ae3d
push 0x27d4eb4f
mov ebx, edx
add edi, 0xc2b2ae63
push dword [ecx + 0x14]
mov eax, dword [ecx + 0x10]
adc ebx, 0x85ebca77
push eax
call fcn.0057de90
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0057de90
xor eax, edi
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
push edx
push eax
call fcn.0057de90
mov ecx, dword [ebp + 8]
mov edi, eax
push 0xc2b2ae3d
push 0x27d4eb4f
mov ebx, edx
add edi, 0xc2b2ae63
mov eax, dword [ecx + 0x1c]
push eax
push dword [ecx + 0x18]
adc ebx, 0x85ebca77
call fcn.0057de90
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0057de90
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0057de90
mov ecx, dword [ebp + 8]
mov edi, eax
push 0xc2b2ae3d
push 0x27d4eb4f
mov ebx, edx
add edi, 0xc2b2ae63
mov eax, dword [ecx + 0x24]
push eax
push esi
adc ebx, 0x85ebca77
call fcn.0057de90
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0057de90
push 0x9e3779b1
push 0x85ebca87
xor edx, ebx
xor eax, edi
push edx
push eax
call fcn.0057de90
mov ecx, dword [ebp + 8]
mov edi, edx
mov esi, dword [ebp - 0x18]
add eax, dword [ecx]
adc edi, dword [ecx + 4]
add eax, 0xc2b2ae63
mov ebx, eax
adc edi, 0x85ebca77
mov eax, dword [ebp + 8]
add eax, 0x30
mov dword [ebp - 4], eax
cmp eax, dword [ebp - 8]
ja 0x4779f1
nop word [eax + eax]
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esi + 4]
push dword [esi]
call fcn.0057de90
mov ecx, eax
push 0x9e3779b1
shld ecx, edx, 0x1f
shld edx, eax, 0x1f
push 0x85ebca87
push edx
push ecx
call fcn.0057de90
mov ecx, eax
xor edx, edi
xor ecx, ebx
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0x1b
shld edx, ecx, 0x1b
push 0x85ebca87
push edx
push eax
call fcn.0057de90
mov ebx, eax
mov edi, edx
mov eax, dword [ebp - 4]
add ebx, 0xc2b2ae63
adc edi, 0x85ebca77
add eax, 8
add esi, 8
mov dword [ebp - 4], eax
cmp eax, dword [ebp - 8]
jbe 0x477980
mov eax, dword [ebp - 8]
lea ecx, [esi + 4]
mov dword [ebp - 0x18], ecx
cmp ecx, eax
ja 0x477a47
mov ecx, dword [esi]
mov eax, 0x9e3779b1
mul ecx
push 0xc2b2ae3d
mov esi, eax
mov eax, 0x85ebca87
mul ecx
push 0x27d4eb4f
add esi, edx
xor eax, ebx
xor esi, edi
mov ecx, eax
shld ecx, esi, 0x17
shld esi, eax, 0x17
push esi
push ecx
call fcn.0057de90
mov esi, dword [ebp - 0x18]
mov ebx, eax
mov eax, dword [ebp - 8]
add ebx, 0x9e3779f9
mov edi, edx
adc edi, 0x165667b1
cmp esi, eax
jae 0x477a90
nop dword [eax + eax]
movzx eax, byte [esi]
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.0057de90
mov ecx, eax
xor edx, edi
xor ecx, ebx
mov eax, ecx
push 0x9e3779b1
shld eax, edx, 0xb
shld edx, ecx, 0xb
push 0x85ebca87
push edx
push eax
call fcn.0057de90
inc esi
mov ebx, eax
mov edi, edx
cmp esi, dword [ebp - 8]
jb 0x477a50
push 0xc2b2ae3d
xor eax, eax
mov ecx, edi
push 0x27d4eb4f
shr ecx, 1
xor eax, edi
xor ecx, ebx
push eax
push ecx
call fcn.0057de90
mov esi, eax
mov ecx, edx
shrd esi, ecx, 0x1d
push 0x165667b1
shr ecx, 0x1d
xor esi, eax
push 0x9e3779f9
xor ecx, edx
push ecx
push esi
call fcn.0057de90
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret