Function at 0x47cbf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
mov ebp, dword [esp + 0x3c]
xorps xmm0, xmm0
cmp edx, 0xc
movlps qword [ebp + 0x170], xmm0
movaps xmmword [ebp], xmm0
movaps xmmword [ebp + 0x40], xmm0
movaps xmmword [ebp + 0x30], xmm0
jne 0x47cc3f
mov eax, dword [esi + 8]
mov edi, 0x2000000
mov dword [ebp + 8], eax
movsd xmm0, qword [esi]
movsd qword [ebp], xmm0
mov byte [ebp + 0xf], 1
jmp 0x47d095
xor ecx, ecx
cmp edx, 0x10
jb 0x47ce74
xor ecx, ecx
mov dword [esp + 0x24], edx
xor edx, edx
mov dword [esp], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov ah, cl
mov al, cl
mov dword [esp + 4], eax
xor eax, eax
mov ch, al
mov bh, al
mov bl, al
mov cl, al
xor eax, eax
mov dword [esp + 0x10], ebx
mov bh, al
xor eax, eax
mov bl, al
nop word [eax + eax]
xor bl, byte [esi]
mov eax, dword [esp + 0x1c]
mov byte [ebp], bl
xor bh, byte [esi + 1]
mov byte [ebp + 1], bh
xor al, byte [esi + 2]
mov byte [ebp + 2], al
mov eax, dword [esp + 0x18]
xor al, byte [esi + 3]
mov byte [ebp + 3], al
mov eax, dword [esp + 0x10]
xor al, byte [esi + 4]
mov byte [ebp + 4], al
xor ah, byte [esi + 5]
mov byte [ebp + 5], ah
mov eax, dword [esp + 8]
xor al, byte [esi + 6]
mov byte [ebp + 6], al
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], esi
xor al, byte [esi + 7]
mov byte [ebp + 7], al
mov eax, dword [esp + 0x20]
xor cl, byte [esi + 8]
mov byte [ebp + 8], cl
xor ch, byte [esi + 9]
mov byte [ebp + 9], ch
xor al, byte [esi + 0xa]
mov byte [ebp + 0xa], al
mov eax, dword [esp + 0x14]
xor al, byte [esi + 0xb]
mov byte [ebp + 0xb], al
mov eax, dword [esp + 4]
xor al, byte [esi + 0xc]
mov byte [ebp + 0xc], al
xor ah, byte [esi + 0xd]
mov byte [ebp + 0xd], ah
mov eax, dword [esp]
mov dword [esp], 0xf
xor al, byte [esi + 0xe]
mov byte [ebp + 0xe], al
xor dl, byte [esi + 0xf]
mov byte [ebp + 0xf], dl
movzx edx, dl
mov dword [esp + 8], edx
and edx, 0xf
shl edx, 4
mov esi, dword [ebp + edx + 0x6c]
mov ecx, dword [ebp + edx + 0x60]
mov ebx, dword [ebp + edx + 0x64]
mov edx, dword [ebp + edx + 0x68]
mov dword [esp + 4], esi
jmp 0x47cda8
mov edx, dword [esp]
mov esi, ebx
shr ebx, 4
dec dword [esp]
shld esi, eax, 0x1c
shld eax, ecx, 0x1c
shld ecx, edi, 0x1c
and edi, 0xf
movzx edx, byte [ebp + edx - 1]
mov dword [esp + 8], edx
and edx, 0xf
shl edx, 4
xor ebx, dword [ebp + edx + 0x64]
xor eax, dword [ebp + edx + 0x6c]
xor esi, dword [ebp + edx + 0x60]
xor ecx, dword [ebp + edx + 0x68]
xor ebx, dword [edi*4 + 0x522730]
mov edx, ecx
mov dword [esp + 4], eax
mov ecx, esi
mov esi, dword [esp + 8]
mov eax, ebx
mov edi, dword [esp + 4]
shr ebx, 4
shld eax, ecx, 0x1c
and esi, 0xfffffff0
shld ecx, edi, 0x1c
shld edi, edx, 0x1c
and edx, 0xf
xor ebx, dword [ebp + esi + 0x64]
xor eax, dword [ebp + esi + 0x60]
xor ecx, dword [ebp + esi + 0x6c]
xor edi, dword [ebp + esi + 0x68]
xor ebx, dword [edx*4 + 0x522730]
cmp dword [esp], 0
jne 0x47cd60
bswap eax
bswap ebx
mov esi, dword [esp + 0xc]
bswap edi
bswap ecx
add dword [esp + 0x24], 0xfffffff0
mov edx, eax
mov dword [ebp + 4], eax
mov dword [esp + 0x10], eax
mov dword [ebp], ebx
mov dword [ebp + 0xc], edi
mov dword [ebp + 8], ecx
mov dword [esp + 4], edi
shr edx, 0x10
mov dword [esp + 8], edx
mov edx, ebx
shr edx, 0x10
add esi, 0x10
mov dword [esp + 0x1c], edx
mov edx, eax
mov eax, ecx
shr edx, 0x18
shr eax, 0x18
mov dword [esp + 0xc], edx
mov edx, ebx
mov dword [esp + 0x14], eax
shr edx, 0x18
mov dword [esp + 0x18], edx
mov edx, edi
shr edx, 0x10
mov dword [esp], edx
mov edx, ecx
shr edx, 0x10
mov dword [esp + 0x20], edx
mov edx, edi
shr edx, 0x18
cmp dword [esp + 0x24], 0xf
ja 0x47ccb0
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 4]
mov eax, edx
and eax, 0xf
test eax, eax
jne 0x47ce80
jmp 0x47cfab
xor ebx, ebx
mov eax, edx
test eax, eax
je 0x47cfab
xor ecx, ecx
cmp eax, 0x1f
jbe 0x47cece
lea edx, [esi + eax]
cmp edx, ebp
jbe 0x47ce96
lea edx, [ebp + eax]
cmp esi, edx
jb 0x47cece
mov ecx, eax
xor edx, edx
and ecx, 0xffffffe0
nop dword [eax]
movups xmm0, xmmword [esi + edx]
movups xmm2, xmmword [ebp + edx]
movups xmm1, xmmword [esi + edx + 0x10]
movups xmm3, xmmword [ebp + edx + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [ebp + edx], xmm2
movups xmmword [ebp + edx + 0x10], xmm3
add edx, 0x20
cmp ecx, edx
jne 0x47cea0
cmp eax, ecx
je 0x47ced8
mov dl, byte [esi + ecx]
xor byte [ebp + ecx], dl
inc ecx
jmp 0x47ceca
movzx edi, byte [ebp + 0xf]
mov dword [esp], 0xf
mov ecx, edi
and ecx, 0xf
shl ecx, 4
mov esi, dword [ebp + ecx + 0x60]
mov eax, dword [ebp + ecx + 0x64]
mov ebx, dword [ebp + ecx + 0x6c]
mov edx, dword [ebp + ecx + 0x68]
mov ecx, esi
jmp 0x47cf52
mov edx, dword [esp]
mov esi, dword [esp + 0x3c]
dec dword [esp]
movzx edi, byte [esi + edx - 1]
mov edx, ecx
mov ecx, edi
mov dword [esp + 4], edi
mov edi, ebx
mov ebx, eax
shr eax, 4
and ecx, 0xf
shld ebx, ebp, 0x1c
shld ebp, edx, 0x1c
shld edx, edi, 0x1c
and edi, 0xf
shl ecx, 4
xor eax, dword [esi + ecx + 0x64]
xor ebx, dword [esi + ecx + 0x60]
xor ebp, dword [esi + ecx + 0x6c]
xor edx, dword [esi + ecx + 0x68]
xor eax, dword [edi*4 + 0x522730]
mov edi, dword [esp + 4]
mov ecx, ebx
mov ebx, ebp
mov esi, dword [esp + 0x3c]
mov ebp, eax
and edi, 0xfffffff0
shr eax, 4
shld ebp, ecx, 0x1c
shld ecx, ebx, 0x1c
shld ebx, edx, 0x1c
and edx, 0xf
xor eax, dword [esi + edi + 0x64]
xor ebp, dword [esi + edi + 0x60]
xor ecx, dword [esi + edi + 0x6c]
xor ebx, dword [esi + edi + 0x68]
xor eax, dword [edx*4 + 0x522730]
cmp dword [esp], 0
jne 0x47cf00
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x48]
bswap ebp
bswap eax
bswap ecx
bswap ebx
mov dword [esi + 4], ebp
mov ebp, esi
mov dword [esi], eax
mov dword [esi + 0xc], ebx
mov dword [esi + 8], ecx
mov eax, edx
shl edx, 3
mov esi, ebp
mov dword [esp], 0xf
bswap edx
shr eax, 0x1d
xor edx, ebx
bswap eax
mov dword [ebp + 0xc], edx
shr edx, 0x18
xor eax, ecx
mov dword [esp + 4], edx
and edx, 0xf
mov dword [ebp + 8], eax
shl edx, 4
mov eax, dword [ebp + edx + 0x60]
mov ecx, dword [ebp + edx + 0x64]
mov edi, dword [ebp + edx + 0x6c]
mov ebp, dword [ebp + edx + 0x68]
jmp 0x47d03a
mov edx, dword [esp]
mov esi, ebp
dec dword [esp]
movzx edx, byte [ebp + edx - 1]
mov ebp, edx
mov dword [esp + 4], edx
mov edx, ecx
shr ecx, 4
and ebp, 0xf
shld edx, ebx, 0x1c
shld ebx, eax, 0x1c
shld eax, edi, 0x1c
and edi, 0xf
shl ebp, 4
xor ecx, dword [esi + ebp + 0x64]
xor edx, dword [esi + ebp + 0x60]
xor ebx, dword [esi + ebp + 0x6c]
xor eax, dword [esi + ebp + 0x68]
xor ecx, dword [edi*4 + 0x522730]
mov ebp, eax
mov edi, ebx
mov eax, edx
mov edx, dword [esp + 4]
mov ebx, ecx
shr ecx, 4
shld ebx, eax, 0x1c
shld eax, edi, 0x1c
shld edi, ebp, 0x1c
and ebp, 0xf
and edx, 0xfffffff0
xor ecx, dword [esi + edx + 0x64]
xor ebx, dword [esi + edx + 0x60]
xor eax, dword [esi + edx + 0x6c]
xor edi, dword [esi + edx + 0x68]
xor ecx, dword [ebp*4 + 0x522730]
cmp dword [esp], 0
mov ebp, esi
jne 0x47cff0
bswap ecx
bswap ebx
bswap eax
mov dword [ebp], ecx
mov ecx, edi
mov dword [ebp + 4], ebx
inc edi
mov dword [ebp + 8], eax
bswap ecx
bswap edi
mov dword [ebp + 0xc], ecx
mov ecx, dword [esp + 0x40]
lea eax, [ebp + 0x20]
push ecx
push eax
push ebp
call dword [ebp + 0x168]
add esp, 0xc
mov dword [ebp + 0xc], edi
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret