Function at 0x4c11d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x44]
xorps xmm0, xmm0
cmp edx, 0xc
mov dword [ebp + 0x174], 0
mov dword [ebp + 0x170], 0
movaps xmmword [ebp], xmm0
movaps xmmword [ebp + 0x30], xmm0
movaps xmmword [ebp + 0x40], xmm0
jne 0x4c122c
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 0x4c16e5
xor ecx, ecx
mov edi, ebp
cmp edx, 0x10
jb 0x4c1482
mov ah, cl
mov al, cl
mov ebp, edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp], eax
mov ah, cl
mov al, cl
mov dword [esp + 0x10], eax
mov ah, cl
mov al, cl
mov ecx, 0
mov edx, dword [esp + 0x10]
mov bh, cl
xor ecx, ecx
mov bl, cl
mov ecx, edi
jmp 0x4c132b
bswap eax
bswap ebx
mov esi, ebp
bswap edi
mov ebp, dword [esp + 0x28]
add dword [esp + 0x10], 0x10
mov edx, eax
bswap esi
mov dword [ecx + 4], eax
mov dword [ecx], ebx
mov dword [ecx + 8], edi
shr edx, 0x10
mov dword [ecx + 0xc], esi
mov dword [esp], esi
mov dword [esp + 0xc], edx
mov edx, ebx
shr edx, 0x10
add ebp, 0xfffffff0
mov dword [esp + 0x18], edx
mov edx, eax
shr edx, 0x18
mov dword [esp + 0x24], edx
mov edx, ebx
shr edx, 0x18
mov dword [esp + 0x14], edx
mov edx, esi
shr edx, 0x10
mov dword [esp + 4], edx
mov edx, edi
shr edx, 0x10
mov dword [esp + 0x20], edx
mov edx, esi
mov esi, dword [esp + 0x10]
shr edx, 0x18
mov dword [esp + 8], edx
mov edx, edi
shr edx, 0x18
cmp ebp, 0xf
mov dword [esp + 0x1c], edx
mov edx, edi
jbe 0x4c1495
xor bl, byte [esi]
mov dword [esp + 0x28], ebp
mov ebp, ecx
mov dword [esp + 0x10], esi
mov byte [ecx], bl
xor bh, byte [esi + 1]
mov byte [ecx + 1], bh
mov ecx, dword [esp + 0x18]
xor cl, byte [esi + 2]
mov byte [ebp + 2], cl
mov ecx, dword [esp + 0x14]
xor cl, byte [esi + 3]
mov byte [ebp + 3], cl
mov ecx, ebp
xor al, byte [esi + 4]
mov byte [ebp + 4], al
xor ah, byte [esi + 5]
mov byte [ebp + 5], ah
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], 0xf
xor al, byte [esi + 6]
mov byte [ebp + 6], al
mov eax, dword [esp + 0x24]
xor al, byte [esi + 7]
mov byte [ebp + 7], al
mov eax, dword [esp + 0x20]
xor dl, byte [esi + 8]
mov byte [ebp + 8], dl
xor dh, byte [esi + 9]
mov byte [ebp + 9], dh
xor al, byte [esi + 0xa]
mov byte [ebp + 0xa], al
mov eax, dword [esp + 0x1c]
xor al, byte [esi + 0xb]
mov byte [ebp + 0xb], al
mov eax, dword [esp]
xor al, byte [esi + 0xc]
mov byte [ebp + 0xc], al
xor ah, byte [esi + 0xd]
mov byte [ebp + 0xd], ah
mov eax, dword [esp + 4]
mov dword [esp + 4], 0xf
xor al, byte [esi + 0xe]
mov byte [ebp + 0xe], al
mov eax, dword [esp + 8]
xor al, byte [esi + 0xf]
mov byte [ebp + 0xf], al
movzx eax, al
mov dword [esp + 8], eax
and eax, 0xf
shl eax, 4
mov edx, dword [ebp + eax + 0x6c]
mov edi, dword [ebp + eax + 0x60]
mov ebx, dword [ebp + eax + 0x64]
mov esi, dword [ebp + eax + 0x68]
mov dword [esp], edx
nop dword [eax + eax]
mov edx, dword [esp + 8]
mov eax, ebx
mov ebp, dword [esp]
shr ebx, 4
shld eax, edi, 0x1c
and edx, 0xfffffff0
shld edi, ebp, 0x1c
shld ebp, esi, 0x1c
and esi, 0xf
xor ebx, dword [ecx + edx + 0x64]
xor eax, dword [ecx + edx + 0x60]
xor edi, dword [ecx + edx + 0x6c]
xor ebp, dword [ecx + edx + 0x68]
xor ebx, dword [esi*4 + 0x520ab4]
sub dword [esp + 4], 1
jb 0x4c12b0
mov edx, dword [esp + 0xc]
movzx esi, byte [ecx + edx - 1]
mov edx, ebx
shr ebx, 4
shld edx, eax, 0x1c
shld eax, edi, 0x1c
shld edi, ebp, 0x1c
and ebp, 0xf
mov dword [esp + 8], esi
and esi, 0xf
shl esi, 4
xor edx, dword [ecx + esi + 0x60]
xor edi, dword [ecx + esi + 0x68]
xor ebx, dword [ecx + esi + 0x64]
xor eax, dword [ecx + esi + 0x6c]
mov esi, edi
mov edi, edx
mov edx, dword [esp + 4]
xor ebx, dword [ebp*4 + 0x520ab4]
mov dword [esp], eax
mov dword [esp + 0xc], edx
jmp 0x4c13f0
xor ebx, ebx
mov eax, edx
test eax, eax
je 0x4c14a9
xor ecx, ecx
cmp eax, 0x1f
ja 0x4c14b2
mov ebx, edi
jmp 0x4c14fa
mov edi, ecx
mov ecx, edx
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp]
mov eax, edx
and eax, 0xf
test eax, eax
jne 0x4c148a
mov esi, ebx
mov ebp, edi
jmp 0x4c15ed
lea edx, [esi + eax]
mov ebx, edi
cmp edx, edi
jbe 0x4c14c2
lea edx, [ebx + eax]
cmp esi, edx
jb 0x4c14fa
mov ecx, eax
xor edx, edx
and ecx, 0xffffffe0
nop dword [eax]
movups xmm0, xmmword [esi + edx]
movups xmm2, xmmword [ebx + edx]
movups xmm1, xmmword [esi + edx + 0x10]
movups xmm3, xmmword [ebx + edx + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [ebx + edx], xmm2
movups xmmword [ebx + edx + 0x10], xmm3
add edx, 0x20
cmp ecx, edx
jne 0x4c14d0
jmp 0x4c1501
mov dl, byte [esi + ecx]
xor byte [ebx + ecx], dl
inc ecx
cmp eax, ecx
jne 0x4c14fa
movzx ecx, byte [ebx + 0xf]
mov dword [esp + 4], 0xf
mov dword [esp], 0xf
mov esi, ecx
and esi, 0xf
shl esi, 4
mov edi, dword [ebx + esi + 0x60]
mov eax, dword [ebx + esi + 0x64]
mov edx, dword [ebx + esi + 0x6c]
mov esi, dword [ebx + esi + 0x68]
mov dword [esp + 8], esi
nop word cs:[eax + eax]
nop
mov ebp, eax
and ecx, 0xfffffff0
shr eax, 4
mov esi, dword [esp + 8]
xor eax, dword [ebx + ecx + 0x64]
shld ebp, edi, 0x1c
shld edi, edx, 0x1c
xor ebp, dword [ebx + ecx + 0x60]
xor edi, dword [ebx + ecx + 0x6c]
shld edx, esi, 0x1c
and esi, 0xf
xor eax, dword [esi*4 + 0x520ab4]
xor edx, dword [ebx + ecx + 0x68]
sub dword [esp], 1
jb 0x4c15d0
mov ecx, edx
mov edx, dword [esp + 4]
mov esi, eax
shr eax, 4
shld esi, ebp, 0x1c
shld ebp, edi, 0x1c
shld edi, ecx, 0x1c
and ecx, 0xf
movzx edx, byte [ebx + edx - 1]
mov dword [esp + 0xc], edx
and edx, 0xf
shl edx, 4
xor ebp, dword [ebx + edx + 0x6c]
xor eax, dword [ebx + edx + 0x64]
xor edi, dword [ebx + edx + 0x68]
xor esi, dword [ebx + edx + 0x60]
mov edx, ebp
mov ebp, dword [esp]
xor eax, dword [ecx*4 + 0x520ab4]
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], edi
mov edi, esi
mov dword [esp + 4], ebp
jmp 0x4c1540
bswap eax
bswap ebp
bswap edx
bswap edi
mov dword [ebx + 4], ebp
mov dword [ebx], eax
mov dword [ebx + 0xc], edx
mov esi, edx
mov edx, dword [esp + 0x4c]
mov ebp, ebx
mov ecx, edi
mov dword [ebx + 8], edi
mov eax, edx
shl edx, 3
mov dword [esp + 4], 0xf
mov dword [esp + 8], 0xf
shr eax, 0x1d
bswap edx
bswap eax
xor edx, esi
xor eax, ecx
mov dword [ebp + 0xc], edx
shr edx, 0x18
mov dword [ebp + 8], eax
mov eax, edx
mov dword [esp], edx
shl eax, 4
movzx edx, al
mov eax, dword [ebp + edx + 0x60]
mov ecx, dword [ebp + edx + 0x64]
mov edi, dword [ebp + edx + 0x6c]
mov esi, dword [ebp + edx + 0x68]
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, dword [esp]
mov ebx, ecx
shr ecx, 4
shld ebx, eax, 0x1c
shld eax, edi, 0x1c
shld edi, esi, 0x1c
and esi, 0xf
and edx, 0xfffffff0
xor ecx, dword [ebp + edx + 0x64]
xor ebx, dword [ebp + edx + 0x60]
xor eax, dword [ebp + edx + 0x6c]
xor edi, dword [ebp + edx + 0x68]
xor ecx, dword [esi*4 + 0x520ab4]
sub dword [esp + 8], 1
jb 0x4c16c8
mov edx, dword [esp + 4]
movzx esi, byte [ebp + 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], esi
and esi, 0xf
shl esi, 4
xor ecx, dword [ebp + esi + 0x64]
xor ebx, dword [ebp + esi + 0x6c]
xor edx, dword [ebp + esi + 0x60]
xor eax, dword [ebp + esi + 0x68]
xor ecx, dword [edi*4 + 0x520ab4]
mov edi, ebx
mov ebx, dword [esp + 8]
mov esi, eax
mov eax, edx
mov dword [esp + 4], ebx
jmp 0x4c1640
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 + 0x44]
lea eax, [ebp + 0x20]
push ecx
push eax
push ebp
call dword [ebp + 0x168]
add esp, 0xc
mov dword [ebp + 0xc], edi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret