Function at 0x46c980
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
cmp ebx, 0xc
mov dword [edx + 0x174], 0
mov dword [edx + 0x170], 0
mov dword [edx + 4], 0
mov dword [edx], 0
mov dword [edx + 0xc], 0
mov dword [edx + 8], 0
mov dword [edx + 0x34], 0
mov dword [edx + 0x30], 0
mov dword [edx + 0x3c], 0
mov dword [edx + 0x38], 0
mov dword [edx + 0x44], 0
mov dword [edx + 0x40], 0
mov dword [edx + 0x4c], 0
mov dword [edx + 0x48], 0
jne 0x46ca21
mov eax, dword [edi + 8]
mov esi, edx
mov dword [edx + 8], eax
movsd xmm0, qword [edi]
mov edi, 2
movsd qword [edx], xmm0
mov byte [edx + 0xf], 1
jmp 0x46ce88
xor edx, edx
xor ecx, ecx
cmp ebx, 0x10
jb 0x46cc67
mov ah, cl
mov al, cl
mov esi, dword [esp + 0x3c]
mov dh, cl
mov dl, cl
mov dword [esp + 0x24], ebx
xor ebx, ebx
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 dword [esp + 4], eax
mov ah, cl
mov al, cl
xor ecx, ecx
mov dword [esp + 0x10], eax
xor eax, eax
mov ah, al
mov al, cl
nop dword [eax + eax]
xor al, byte [edi]
mov ecx, dword [esp + 0x1c]
mov byte [esi], al
xor ah, byte [edi + 1]
mov byte [esi + 1], ah
mov eax, dword [esp + 0x10]
xor cl, byte [edi + 2]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x18]
xor cl, byte [edi + 3]
mov byte [esi + 3], cl
xor al, byte [edi + 4]
mov byte [esi + 4], al
xor ah, byte [edi + 5]
mov byte [esi + 5], ah
mov eax, dword [esp + 8]
xor al, byte [edi + 6]
mov byte [esi + 6], al
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], edi
xor al, byte [edi + 7]
mov byte [esi + 7], al
mov eax, dword [esp + 0x20]
xor dl, byte [edi + 8]
mov byte [esi + 8], dl
xor dh, byte [edi + 9]
mov byte [esi + 9], dh
xor al, byte [edi + 0xa]
mov byte [esi + 0xa], al
mov eax, dword [esp + 0x14]
xor al, byte [edi + 0xb]
mov byte [esi + 0xb], al
mov eax, dword [esp + 4]
xor al, byte [edi + 0xc]
mov byte [esi + 0xc], al
xor ah, byte [edi + 0xd]
mov byte [esi + 0xd], ah
mov eax, dword [esp]
mov dword [esp], 0xf
xor al, byte [edi + 0xe]
mov byte [esi + 0xe], al
xor bl, byte [edi + 0xf]
movzx eax, bl
mov byte [esi + 0xf], bl
mov ecx, eax
mov dword [esp + 8], eax
and ecx, 0xf
shl ecx, 4
mov edi, dword [esi + ecx + 0x6c]
mov edx, dword [esi + ecx + 0x60]
mov eax, dword [esi + ecx + 0x64]
mov ebx, dword [esi + ecx + 0x68]
mov dword [esp + 4], edi
mov edi, esi
jmp 0x46cb9a
mov edi, dword [esp]
dec dword [esp]
movzx ebx, byte [esi + edi - 1]
mov edi, esi
mov esi, eax
shr eax, 4
shld esi, ecx, 0x1c
shld ecx, edx, 0x1c
shld edx, ebp, 0x1c
and ebp, 0xf
mov dword [esp + 8], ebx
and ebx, 0xf
shl ebx, 4
xor eax, dword [edi + ebx + 0x64]
xor ecx, dword [edi + ebx + 0x6c]
xor esi, dword [edi + ebx + 0x60]
xor edx, dword [edi + ebx + 0x68]
xor eax, dword [ebp*4 + 0x593524]
mov ebx, edx
mov dword [esp + 4], ecx
mov edx, esi
mov esi, dword [esp + 8]
mov ecx, eax
mov ebp, dword [esp + 4]
shr eax, 4
shld ecx, edx, 0x1c
and esi, 0xfffffff0
shld edx, ebp, 0x1c
shld ebp, ebx, 0x1c
and ebx, 0xf
xor eax, dword [edi + esi + 0x64]
xor ecx, dword [edi + esi + 0x60]
xor edx, dword [edi + esi + 0x6c]
xor ebp, dword [edi + esi + 0x68]
mov esi, edi
xor eax, dword [ebx*4 + 0x593524]
cmp dword [esp], 0
jne 0x46cb50
bswap ecx
bswap eax
mov edi, dword [esp + 0xc]
bswap ebp
bswap edx
add dword [esp + 0x24], 0xfffffff0
mov ebx, ecx
mov dword [esi + 4], ecx
mov dword [esp + 0x10], ecx
mov dword [esi], eax
mov dword [esi + 0xc], ebp
mov dword [esi + 8], edx
mov dword [esp + 4], ebp
shr ebx, 0x10
mov dword [esp + 8], ebx
mov ebx, eax
shr ebx, 0x10
add edi, 0x10
mov dword [esp + 0x1c], ebx
mov ebx, ecx
mov ecx, edx
shr ebx, 0x18
shr ecx, 0x18
mov dword [esp + 0xc], ebx
mov ebx, eax
mov dword [esp + 0x14], ecx
shr ebx, 0x18
mov dword [esp + 0x18], ebx
mov ebx, ebp
shr ebx, 0x10
mov dword [esp], ebx
mov ebx, edx
shr ebx, 0x10
mov dword [esp + 0x20], ebx
mov ebx, ebp
shr ebx, 0x18
cmp dword [esp + 0x24], 0xf
ja 0x46ca90
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 4]
mov eax, ebx
and eax, 0xf
test eax, eax
jne 0x46cc71
jmp 0x46cd97
mov eax, ebx
test eax, eax
je 0x46cd97
xor ecx, ecx
cmp eax, 0x1f
ja 0x46cc7e
mov esi, dword [esp + 0x3c]
jmp 0x46ccca
mov esi, dword [esp + 0x3c]
lea edx, [edi + eax]
cmp edx, esi
jbe 0x46cc90
lea edx, [esi + eax]
cmp edi, edx
jb 0x46ccca
mov ecx, eax
xor edx, edx
and ecx, 0xffffffe0
nop word [eax + eax]
movups xmm0, xmmword [edi + edx]
movups xmm2, xmmword [esi + edx]
movups xmm1, xmmword [edi + edx + 0x10]
movups xmm3, xmmword [esi + edx + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esi + edx], xmm2
movups xmmword [esi + edx + 0x10], xmm3
add edx, 0x20
cmp ecx, edx
jne 0x46cca0
jmp 0x46ccd1
mov dl, byte [edi + ecx]
xor byte [esi + ecx], dl
inc ecx
cmp eax, ecx
jne 0x46ccca
movzx ebp, byte [esi + 0xf]
mov dword [esp], 0xf
mov edx, ebp
and edx, 0xf
shl edx, 4
mov edi, dword [esi + edx + 0x60]
mov eax, dword [esi + edx + 0x64]
mov ecx, dword [esi + edx + 0x6c]
mov ebx, dword [esi + edx + 0x68]
mov edx, edi
mov edi, ebp
jmp 0x46cd4c
mov edi, dword [esp]
mov ebx, edx
dec dword [esp]
movzx edi, byte [esi + edi - 1]
mov edx, edi
mov dword [esp + 4], edi
mov edi, eax
shr eax, 4
and edx, 0xf
shld edi, ebp, 0x1c
shld ebp, ebx, 0x1c
shld ebx, ecx, 0x1c
and ecx, 0xf
shl edx, 4
xor eax, dword [esi + edx + 0x64]
xor edi, dword [esi + edx + 0x60]
xor ebp, dword [esi + edx + 0x6c]
xor ebx, dword [esi + edx + 0x68]
xor eax, dword [ecx*4 + 0x593524]
mov edx, edi
mov edi, dword [esp + 4]
mov ecx, ebp
mov ebp, eax
and edi, 0xfffffff0
shr eax, 4
xor eax, dword [esi + edi + 0x64]
shld ebp, edx, 0x1c
shld edx, ecx, 0x1c
shld ecx, ebx, 0x1c
and ebx, 0xf
xor ebp, dword [esi + edi + 0x60]
xor edx, dword [esi + edi + 0x6c]
xor ecx, dword [esi + edi + 0x68]
xor eax, dword [ebx*4 + 0x593524]
cmp dword [esp], 0
jne 0x46cd00
mov ebx, dword [esp + 0x48]
bswap eax
bswap ebp
bswap edx
bswap ecx
mov dword [esi + 4], ebp
mov dword [esi], eax
mov dword [esi + 0xc], ecx
mov dword [esi + 8], edx
mov eax, ebx
shl ebx, 3
mov dword [esp], 0xf
bswap ebx
shr eax, 0x1d
xor ebx, ecx
mov ecx, dword [esp + 0x3c]
bswap eax
xor eax, edx
mov dword [ecx + 0xc], ebx
shr ebx, 0x18
mov esi, ecx
mov dword [ecx + 8], eax
mov edx, ebx
mov dword [esp + 4], ebx
and edx, 0xf
shl edx, 4
mov eax, dword [ecx + edx + 0x60]
mov ecx, dword [ecx + edx + 0x64]
mov edi, dword [esi + edx + 0x6c]
mov ebp, dword [esi + edx + 0x68]
jmp 0x46ce2a
mov edx, dword [esp]
mov esi, dword [esp + 0x3c]
dec dword [esp]
movzx ebp, byte [esi + edx - 1]
mov edx, ecx
shr ecx, 4
shld edx, ebx, 0x1c
shld ebx, eax, 0x1c
shld eax, edi, 0x1c
and edi, 0xf
mov dword [esp + 4], ebp
and ebp, 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 + 0x593524]
mov ebp, eax
mov edi, ebx
mov eax, edx
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x3c]
mov ebx, ecx
shr ecx, 4
shld ebx, eax, 0x1c
shld eax, edi, 0x1c
shld edi, ebp, 0x1c
and ebp, 0xf
and esi, 0xfffffff0
xor ecx, dword [edx + esi + 0x64]
xor ebx, dword [edx + esi + 0x60]
xor eax, dword [edx + esi + 0x6c]
xor edi, dword [edx + esi + 0x68]
xor ecx, dword [ebp*4 + 0x593524]
cmp dword [esp], 0
jne 0x46cde0
mov esi, dword [esp + 0x3c]
bswap ecx
bswap ebx
bswap eax
mov dword [esi], ecx
mov ecx, edi
mov dword [esi + 4], ebx
inc edi
mov dword [esi + 8], eax
bswap ecx
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x40]
lea eax, [esi + 0x20]
push ecx
push eax
push esi
call dword [esi + 0x168]
add esp, 0xc
bswap edi
mov dword [esi + 0xc], edi
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret