Function at 0x4d4300
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0x18]
mov esi, 0xffffffe0
mov edi, 0xf
mov edx, dword [ebx + 0x38]
mov ecx, dword [ebx + 0x3c]
mov dword [esp + 8], eax
add edx, eax
adc ecx, 0
xor eax, eax
cmp esi, edx
sbb edi, ecx
jb 0x4d49a5
mov dword [ebx + 0x38], edx
mov dword [ebx + 0x3c], ecx
cmp dword [ebx + 0x174], 0
je 0x4d43da
movdqu xmm0, xmmword [ebx + 0x40]
pxor xmm2, xmm2
lea edx, [ebx + 0x60]
lea ecx, [esp + 0x18]
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esp + 0x18], xmm0
call fcn.004d4ba0
movdqu xmm0, xmmword [esp + 0x18]
pxor xmm2, xmm2
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [ebx + 0x40], xmm0
mov dword [ebx + 0x174], 0
mov eax, ebx
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov eax, dword [eax + 0x170]
test eax, eax
je 0x4d44be
cmp dword [ebp + 0x18], 0
je 0x4d4997
nop word [eax + eax]
mov edi, dword [ebp + 8]
movzx ecx, byte [ebx]
inc ebx
movzx edx, byte [edi + eax + 0x10]
xor dl, cl
mov byte [esi], dl
xor byte [edi + eax + 0x40], cl
inc eax
inc esi
mov ecx, dword [esp + 8]
and eax, 0xf
cmp ecx, 1
lea ecx, [ecx - 1]
mov dword [esp + 8], ecx
je 0x4d442d
test eax, eax
jne 0x4d4400
test eax, eax
jne 0x4d4997
mov edi, dword [ebp + 8]
pxor xmm2, xmm2
lea ecx, [esp + 0x18]
movdqu xmm0, xmmword [edi + 0x40]
lea edx, [edi + 0x60]
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [esp + 0x18], xmm0
call fcn.004d4ba0
movdqu xmm0, xmmword [esp + 0x18]
pxor xmm2, xmm2
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [edi + 0x40], xmm0
mov edx, dword [ebp + 8]
cmp dword [esp + 8], 0xc00
mov dword [esp + 0xc], esi
mov ecx, dword [edx + 0xc]
bswap ecx
jb 0x4d4683
lea esi, [edx + 0x60]
pxor xmm3, xmm3
jmp 0x4d4589
movdqu xmm0, xmmword [esp + 0x18]
pxor xmm2, xmm2
mov ebx, dword [ebp + 8]
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [ebx + 0x40], xmm0
push ebx
push dword [ebp + 0xc]
push 0xc0
mov ebx, dword [esp + 0x18]
push ebx
push edi
call dword [ebp + 0x1c]
mov edx, dword [ebp + 8]
pxor xmm3, xmm3
add esp, 0x14
mov ecx, dword [esp + 4]
add ebx, 0xc00
mov dword [esp + 0xc], ebx
mov ebx, edi
mov edi, dword [esp + 8]
add ebx, 0xc00
add ecx, 0xc0
add edi, 0xfffff400
mov eax, ecx
bswap eax
cmp edi, 0xbff
mov dword [esp + 8], edi
mov dword [edx + 0xc], eax
jbe 0x4d4683
movdqu xmm0, xmmword [edx + 0x40]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x18]
mov edx, esi
mov edi, ebx
movdqa xmm1, xmm0
movdqa xmm2, xmm0
punpcklbw xmm1, xmm3
punpckhbw xmm2, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm2, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm1
movdqu xmmword [esp + 0x18], xmm2
movdqu xmm1, xmmword [ebx]
pxor xmm1, xmm0
movdqa xmm0, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm0, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm0, xmm0, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm1, xmm0
movdqu xmmword [esp + 0x18], xmm1
call fcn.004d4ba0
pxor xmm3, xmm3
mov ebx, 0xfffff420
nop dword [eax]
movdqu xmm1, xmmword [edi + ebx + 0xbf0]
movdqu xmm0, xmmword [esp + 0x18]
lea ecx, [esp + 0x18]
mov edx, esi
movdqa xmm2, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm2, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm2, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [esp + 0x18], xmm1
call fcn.004d4ba0
test ebx, ebx
je 0x4d44f0
add ebx, 0x10
pxor xmm3, xmm3
jmp 0x4d4620
mov edx, dword [esp + 8]
mov esi, edx
and esi, 0xfffffff0
je 0x4d4989
mov dword [esp + 4], ecx
mov ecx, dword [ebp + 8]
pxor xmm3, xmm3
mov eax, edx
shr eax, 4
mov dword [esp + 0x2c], eax
movdqu xmm0, xmmword [ecx + 0x40]
lea edx, [ecx + 0x60]
lea ecx, [esp + 0x18]
mov dword [esp + 0x14], edx
movdqa xmm1, xmm0
movdqa xmm2, xmm0
punpcklbw xmm1, xmm3
punpckhbw xmm2, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm2, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm1
movdqu xmmword [esp + 0x18], xmm2
movdqu xmm1, xmmword [ebx]
pxor xmm1, xmm0
movdqa xmm0, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm0, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm0, xmm0, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm1, xmm0
movdqu xmmword [esp + 0x18], xmm1
call fcn.004d4ba0
cmp esi, 0x10
mov dword [esp + 0x28], esi
je 0x4d47ab
mov edi, 0x10
lea esi, [ebx + 0x10]
sub edi, dword [esp + 0x28]
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [esi]
pxor xmm3, xmm3
movdqu xmm0, xmmword [esp + 0x18]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x18]
movdqa xmm2, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm2, xmm3
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm2, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [esp + 0x18], xmm1
call fcn.004d4ba0
add esi, 0x10
add edi, 0x10
jne 0x4d4750
movdqu xmm0, xmmword [esp + 0x18]
pxor xmm2, xmm2
mov edi, dword [ebp + 8]
movdqa xmm1, xmm0
punpckhbw xmm0, xmm2
punpcklbw xmm1, xmm2
pshufd xmm0, xmm0, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm0, xmm1
movdqu xmmword [edi + 0x40], xmm0
push edi
push dword [ebp + 0xc]
push dword [esp + 0x34]
mov esi, dword [esp + 0x18]
push esi
push ebx
call dword [ebp + 0x1c]
add esp, 0x14
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x28]
add ecx, dword [esp + 0x2c]
add esi, edx
add ebx, edx
mov edx, dword [esp + 8]
mov eax, ecx
and edx, 0xf
bswap eax
mov dword [edi + 0xc], eax
test edx, edx
je 0x4d4995
mov edi, dword [ebp + 8]
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 8], edx
lea esi, [edi + 0x10]
push dword [ebp + 0xc]
push esi
push edi
mov ebx, ecx
call dword [edi + 0x168]
add esp, 0xc
inc ebx
xor eax, eax
mov dword [esp + 4], 0
bswap ebx
mov dword [edi + 0xc], ebx
mov edi, dword [esp + 8]
cmp edi, 0x10
mov ecx, edi
jb 0x4d494b
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 0xc]
lea ecx, [ecx + edi + 0x40]
lea edx, [ebx + edi]
mov edi, dword [esp + 8]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x14]
cmp edx, esi
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x30]
seta byte [esp + 4]
add edi, ecx
cmp ebx, edx
setb byte [esp + 0x28]
cmp edi, esi
seta byte [esp + 0x13]
cmp ecx, edx
setb byte [esp + 0x30]
cmp ebx, edi
mov edi, dword [esp + 8]
setb bl
cmp ecx, dword [esp + 0x2c]
mov cl, byte [esp + 0x28]
setb dl
test byte [esp + 4], cl
mov ecx, edi
mov dword [esp + 4], 0
jne 0x4d494b
mov cl, byte [esp + 0x30]
mov dword [esp + 4], 0
and byte [esp + 0x13], cl
mov ecx, edi
jne 0x4d494b
and bl, dl
mov ecx, edi
mov dword [esp + 4], 0
jne 0x4d494b
mov ecx, edi
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
xor esi, esi
and ecx, 0xfffffff0
mov dword [esp + 4], ecx
mov ecx, edi
mov edi, dword [ebp + 8]
and ecx, 0xf
nop dword [eax + eax]
movdqu xmm0, xmmword [edx + esi]
movdqu xmm1, xmmword [edi + esi + 0x10]
movdqu xmm2, xmmword [edi + esi + 0x40]
pxor xmm2, xmm0
pxor xmm1, xmm0
movdqu xmmword [edi + esi + 0x40], xmm2
movdqu xmmword [ebx + esi], xmm1
add esi, 0x10
cmp dword [esp + 4], esi
jne 0x4d4910
mov edi, dword [esp + 8]
cmp edi, dword [esp + 4]
jne 0x4d494b
mov eax, edi
jmp 0x4d4997
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 4]
mov esi, dword [ebp + 8]
add edx, edi
lea esi, [esi + edi + 0x40]
mov ebx, edx
mov edx, edi
mov edi, dword [esp + 0xc]
add edi, edx
nop word cs:[eax + eax]
movzx edx, byte [ebx + eax]
xor byte [esi + eax], dl
xor dl, byte [esi + eax - 0x30]
mov byte [edi + eax], dl
inc eax
cmp ecx, eax
jne 0x4d4970
mov eax, dword [esp + 8]
jmp 0x4d4997
mov esi, dword [esp + 0xc]
test edx, edx
jne 0x4d4825
xor eax, eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x170], eax
mov eax, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret