Function at 0x478ba0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0x10]
sub esp, 8
mov ecx, eax
and ecx, 0x80000007
jns 0x478bb6
dec ecx
or ecx, 0xfffffff8
inc ecx
je 0x478bbd
sub eax, ecx
add eax, 8
mov ecx, eax
mov dword [esp + 4], eax
sar ecx, 3
test ecx, ecx
jle 0x47925d
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x10], ecx
mov ecx, dword [edx]
mov edi, dword [eax + 8]
mov esi, ecx
mov ebx, ecx
mov edx, dword [edx + 4]
shr esi, 5
shl ebx, 4
xor esi, ebx
lea ebx, [edi - 0x3910c8e0]
add esi, ecx
xor esi, ebx
sub edx, esi
mov esi, dword [eax + 0xc]
mov ebx, edx
mov ebp, edx
shr ebx, 5
shl ebp, 4
xor ebx, ebp
add esi, 0x28b7bd67
add ebx, edx
xor ebx, esi
sub ecx, ebx
mov ebx, ecx
mov ebp, ecx
shr ebx, 5
shl ebp, 4
xor ebx, ebp
add ebx, ecx
xor ebx, esi
sub edx, ebx
mov esi, edx
mov ebx, edx
shr esi, 5
shl ebx, 4
xor esi, ebx
lea ebx, [edi - 0x757fbc52]
add esi, edx
xor esi, ebx
mov ebx, dword [eax]
sub ecx, esi
mov esi, ecx
mov ebp, ecx
shr esi, 5
shl ebp, 4
xor esi, ebp
lea ebp, [ebx - 0x757fbc52]
add esi, ecx
xor esi, ebp
sub edx, esi
mov esi, dword [eax + 4]
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [esi - 0x13b7360b]
add ebp, edx
xor ebp, eax
sub ecx, ebp
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [esi - 0x13b7360b]
add ebp, ecx
xor ebp, eax
sub edx, ebp
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x4e11503c]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x4e11503c]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shl eax, 4
shr ebp, 5
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0xafd9d683
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi - 0x5026297d]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x11a25cca]
add eax, edx
xor eax, ebp
sub ecx, eax
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, ecx
mov eax, dword [eax + 0xc]
add eax, 0x11a25cca
xor ebp, eax
sub edx, ebp
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi + 0x736ae311]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x736ae311]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx - 0x2acc96a8]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x2acc96a8]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0x36fbef9f
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shl ebp, 4
shr eax, 5
xor eax, ebp
lea ebp, [esi + 0x36fbef9f]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [edi - 0x673b8a1a]
add ebp, edx
xor ebp, eax
sub ecx, ebp
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [edi - 0x673b8a1a]
add ebp, ecx
xor ebp, eax
sub edx, ebp
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x57303d3]
add eax, edx
xor eax, ebp
sub ecx, eax
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, ecx
mov eax, dword [eax + 0xc]
add eax, 0xfa8cfc2d
xor ebp, eax
sub edx, ebp
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [ebx + 0x5c558274]
add ebp, edx
xor ebp, eax
sub ecx, ebp
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [ebx + 0x5c558274]
add ebp, ecx
xor ebp, eax
sub edx, ebp
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0xbe1e08bb
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x41e1f745]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x1fe68f02]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi + 0x1fe68f02]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x7e50eab7]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi - 0x7e50eab7]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx - 0x1c886470]
add eax, edx
xor eax, ebp
sub ecx, eax
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, ecx
mov eax, dword [eax + 0xc]
add eax, 0xe3779b90
xor ebp, eax
sub edx, ebp
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0x454021d7
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x454021d7]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi - 0x58f757e2]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x58f757e2]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [esi + 0x8d12e65]
add ebp, edx
xor ebp, eax
sub ecx, ebp
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [esi + 0x8d12e65]
add ebp, ecx
xor ebp, eax
sub edx, ebp
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x6a99b4ac]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x6a99b4ac]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, dword [esp + 0x24]
mov ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0xcc623af3
mov dword [esp + 0x28], eax
mov eax, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
mov ebp, dword [esp + 0x28]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
mov ebp, dword [esp + 0x28]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x2e2ac13a]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x2e2ac13a]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x700cb87f]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx - 0x700cb87f]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx - 0xe443238]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0xe443238]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0x5384540f
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [edi + 0x5384540f]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
shr eax, 5
mov ebp, edx
shl ebp, 4
xor eax, ebp
lea ebp, [edi - 0x4ab325aa]
add eax, edx
add edi, 0x3c6ef372
xor eax, ebp
sub ecx, eax
mov ebp, ecx
mov eax, ecx
shl eax, 4
shr ebp, 5
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, ecx
mov eax, dword [eax + 0xc]
add eax, 0xb54cda56
xor ebp, eax
sub edx, ebp
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi + 0x1715609d]
add eax, edx
xor eax, ebp
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [ebx + 0x1715609d]
add eax, ecx
xor eax, ebp
sub edx, eax
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [ebx + 0x78dde6e4]
add ebp, edx
xor ebp, eax
sub ecx, ebp
mov ebp, ecx
mov eax, ecx
shr ebp, 5
shl eax, 4
xor ebp, eax
lea eax, [ebx + 0x78dde6e4]
add ebp, ecx
xor ebp, eax
sub edx, ebp
mov ebp, edx
mov eax, edx
shr ebp, 5
shl eax, 4
xor ebp, eax
mov eax, dword [esp + 0x24]
add ebp, edx
mov eax, dword [eax + 0xc]
add eax, 0xdaa66d2b
xor ebp, eax
sub ecx, ebp
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
lea ebp, [esi - 0x255992d5]
add eax, ecx
xor eax, ebp
sub edx, eax
mov eax, edx
mov ebp, edx
shr eax, 5
shl ebp, 4
xor eax, ebp
add eax, edx
xor eax, edi
add esi, 0x9e3779b9
sub ecx, eax
mov eax, ecx
mov ebp, ecx
shr eax, 5
shl ebp, 4
xor eax, ebp
add eax, ecx
xor eax, edi
sub edx, eax
mov eax, edx
mov edi, edx
shr eax, 5
shl edi, 4
xor eax, edi
add eax, edx
xor eax, esi
sub ecx, eax
mov edi, ecx
mov eax, ecx
shr edi, 5
shl eax, 4
xor edi, eax
mov eax, dword [esp + 0x24]
add edi, ecx
mov esi, dword [eax + 0xc]
add esi, 0x9e3779b9
xor edi, esi
sub edx, edi
mov esi, edx
mov edi, edx
shr esi, 5
shl edi, 4
xor esi, edi
add esi, edx
xor esi, ebx
sub ecx, esi
mov esi, dword [esp + 0x1c]
mov dword [esi], ecx
mov ecx, dword [esp + 0x10]
mov dword [esi + 4], edx
mov edx, dword [esp + 0x20]
add esi, 8
add edx, 8
dec ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x10], ecx
jne 0x478bde
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret