Function at 0x45a790
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov esi, dword [ebp + 0xc]
cmp esi, 0x1000000
push edi
jb 0x45aa17
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [eax + 8]
mov dword [ebp - 0x20], edx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x1c], ecx
lea eax, [ebp - 0x24]
mov ecx, ebx
mov dword [ebp - 0x18], edx
call fcn.00459570
cmp eax, 3
je 0x45aa17
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
sub edi, eax
cmp esi, 0xff000000
mov dword [ebp - 0xc], edi
jae 0x45a8f4
mov ecx, dword [ebp - 0x20]
cmp ecx, dword [ebp - 0x18]
mov dword [ebp - 8], ecx
jge 0x45aa0c
jmp 0x45a809
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0xc]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebx + 4]
mov esi, dword [ebx + 0x10]
imul edx, ecx
add edx, eax
cmp byte [0x59e12d], 0
lea esi, [esi + edx*4]
mov dword [ebp - 0x14], esi
je 0x45a889
cmp edi, 0x10
jbe 0x45a889
mov edx, dword [ebp + 0xc]
mov eax, edi
test eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
je 0x45a8e0
lea eax, [ebp - 4]
mov dword [ebp - 0x10], eax
pxor mm7, mm7
movq mm5, qword [0x556b78]
mov eax, dword [ebp - 8]
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
movd mm1, dword [esi]
punpcklbw mm1, mm7
movq mm4, mm1
punpckhwd mm4, mm4
punpckhdq mm4, mm4
movd mm0, dword [edi]
punpcklbw mm0, mm7
movq mm2, mm4
pxor mm2, mm5
pmullw mm0, mm2
psrlw mm0, 8
paddw mm0, mm1
packuswb mm0, mm7
movd dword [edi], mm0
add edi, 4
dec dword [ebp - 8]
jg 0x45a863
jmp 0x45a8e0
cmp eax, dword [ebp - 0x1c]
jge 0x45a8e0
mov ecx, dword [ebp + 0xc]
shr ecx, 0x18
mov edx, 0x100
sub edx, ecx
jmp 0x45a8a0
mov eax, dword [esi]
mov ecx, eax
and eax, 0xff00ff
shr ecx, 8
imul eax, edx
mov ebx, ecx
and ebx, 0xffff00ff
imul ebx, edx
and ecx, 0xff00ff
imul ecx, edx
shr eax, 8
xor eax, ebx
and eax, 0xff00ff
xor eax, ecx
add eax, dword [ebp + 0xc]
add esi, 4
sub edi, 1
mov dword [esi - 4], eax
jne 0x45a8a0
mov ecx, dword [ebp - 8]
add ecx, 1
cmp ecx, dword [ebp - 0x18]
mov dword [ebp - 8], ecx
jl 0x45a800
jmp 0x45aa0c
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x18]
mov esi, eax
mov dword [ebp - 8], eax
jge 0x45aa0c
jmp 0x45a90d
mov ebx, dword [ebp + 8]
mov edi, dword [ebp - 0xc]
mov eax, dword [ebx + 4]
mov ecx, dword [ebp + 0xc]
imul eax, esi
add eax, dword [ebp - 0x24]
cmp byte [0x59e12f], 0
mov edx, edi
mov edi, dword [ebx + 0x10]
lea eax, [edi + eax*4]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 4], eax
jne 0x45a94c
cmp byte [0x59e130], 0
jne 0x45a94c
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
mov edi, dword [ebp - 4]
rep stosd dword es:[edi], eax
jmp 0x45a9fd
test edx, edx
je 0x45a9fd
mov ebx, eax
and ebx, 3
je 0x45a97d
mov esi, 4
sub esi, ebx
je 0x45a974
mov byte [eax], cl
add eax, 1
ror ecx, 8
sub esi, 1
jne 0x45a964
mov dword [ebp - 0x34], ecx
mov esi, dword [ebp - 8]
mov dword [ebp - 4], eax
sub edx, 1
test al, 0xf
je 0x45a997
test edx, edx
je 0x45a9e3
mov dword [eax], ecx
mov eax, dword [ebp - 4]
add eax, 4
sub edx, 1
test al, 0xf
mov dword [ebp - 4], eax
jne 0x45a981
test edx, edx
je 0x45a9e3
mov eax, edx
shr eax, 2
mov dword [ebp - 8], eax
movss xmm0, dword [ebp - 0x34]
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 8]
punpckldq xmm0, xmm0
punpcklqdq xmm0, xmm0
test eax, eax
je 0x45a9c6
movdqa xmmword [edi], xmm0
add edi, 0x10
dec dword [ebp - 8]
jg 0x45a9ba
mov dword [ebp - 4], edi
and edx, 3
mov eax, dword [ebp - 4]
je 0x45a9e3
mov dword [eax], ecx
mov eax, dword [ebp - 4]
sub edx, 1
add eax, 4
test edx, edx
mov dword [ebp - 4], eax
jne 0x45a9d1
test ebx, ebx
jbe 0x45a9fd
mov edx, ebx
lea esp, [esp]
mov byte [eax], cl
add eax, 1
ror ecx, 8
sub edx, 1
jne 0x45a9f0
add esi, 1
cmp esi, dword [ebp - 0x18]
mov dword [ebp - 8], esi
jl 0x45a907
cmp byte [0x59e12d], 0
je 0x45aa17
emms
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 8