Function at 0x4545a0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x1d8
mov eax, dword [ebx + 0xc]
push esi
push edi
mov edi, dword [ebx + 8]
mov cl, byte [eax + 0x1f]
push eax
shr cl, 7
lea esi, [edi + 0x30]
mov byte [ebp - 1], cl
push esi
call fcn.0044d9c0
movaps xmm0, xmmword [0x5a2280]
lea eax, [ebp - 0x110]
movaps xmm1, xmmword [0x5a2290]
movaps xmm2, xmmword [0x5a22a0]
push 1
movups xmmword [edi + 0x60], xmm0
push esi
movups xmmword [edi + 0x70], xmm1
push eax
movups xmmword [edi + 0x80], xmm2
call fcn.0044e2c0
push 0x5a0ff0
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.0044dab0
movups xmm0, xmmword [edi + 0x60]
movaps xmm2, xmmword [ebp - 0x110]
paddd xmm2, xmmword [0x5a2610]
movups xmm1, xmmword [edi + 0x70]
psubd xmm2, xmm0
movaps xmm3, xmmword [0x5a2570]
movaps xmm6, xmm2
movups xmmword [ebp - 0x30], xmm0
movaps xmm0, xmmword [ebp - 0x100]
paddd xmm0, xmmword [0x5a2620]
psubd xmm0, xmm1
punpcklqdq xmm6, xmm0
punpckhqdq xmm2, xmm0
movaps xmm4, xmm6
movups xmmword [ebp - 0xb0], xmm1
movups xmm1, xmmword [edi + 0x80]
andps xmm4, xmm3
movups xmmword [ebp - 0x90], xmm1
movaps xmm1, xmm2
psrlq xmm6, 0x20
movaps xmm0, xmm4
psrlq xmm2, 0x20
psrlq xmm0, 0x1a
andps xmm1, xmm3
paddq xmm6, xmm0
movaps xmm0, xmm1
psrlq xmm0, 0x1a
movaps xmmword [ebp - 0x20], xmm6
paddq xmm2, xmm0
movaps xmm0, xmmword [0x5a25a0]
movaps xmm5, xmm0
movaps xmmword [ebp - 0x50], xmm0
movaps xmm0, xmm6
movaps xmmword [ebp - 0xa0], xmm2
psrlq xmm0, 0x19
andps xmm5, xmm1
psrlq xmm2, 0x19
paddq xmm5, xmm0
xorps xmm0, xmm0
movaps xmm7, xmm0
movaps xmm0, xmmword [ebp - 0xf0]
paddd xmm0, xmmword [0x5a2630]
psubd xmm0, xmmword [ebp - 0x90]
punpcklqdq xmm7, xmm0
movaps xmm6, xmm7
psrlq xmm7, 0x20
andps xmm6, xmm3
paddq xmm6, xmm2
movaps xmm0, xmm6
psrlq xmm0, 0x1a
paddq xmm7, xmm0
movaps xmm1, xmm7
psrlq xmm1, 0x19
pmuludq xmm1, xmmword [0x5a25e0]
lea eax, [ebp - 0x80]
movaps xmm3, xmmword [ebp - 0x50]
pslldq xmm2, 8
movaps xmm0, xmm3
andps xmm0, xmm4
movaps xmm4, xmm3
push 1
punpckhqdq xmm1, xmm2
movaps xmm2, xmm5
paddq xmm1, xmm0
psrlq xmm2, 0x1a
andps xmm4, xmm1
movaps xmm0, xmm1
movaps xmmword [ebp - 0x40], xmm4
movaps xmm4, xmm3
psrlq xmm0, 0x1a
andps xmm4, xmm5
movaps xmm5, xmmword [0x5a25b0]
movaps xmm1, xmm5
movaps xmm3, xmm5
andps xmm1, xmmword [ebp - 0xa0]
andps xmm5, xmm7
andps xmm3, xmmword [ebp - 0x20]
paddq xmm1, xmm2
movaps xmm2, xmmword [ebp - 0x40]
paddq xmm3, xmm0
punpckldq xmm2, xmm3
movaps xmm0, xmm4
movaps xmmword [ebp - 0x20], xmm2
movaps xmm2, xmmword [ebp - 0x20]
punpckldq xmm0, xmm1
punpcklqdq xmm2, xmm0
movaps xmmword [ebp - 0x20], xmm2
movaps xmm0, xmmword [ebp - 0x20]
movaps xmm2, xmmword [ebp - 0x40]
movaps xmmword [ebp - 0x110], xmm0
movaps xmm0, xmmword [ebp - 0x50]
punpckhdq xmm2, xmm3
andps xmm0, xmm6
punpckhdq xmm4, xmm1
movaps xmm1, xmmword [ebp - 0x60]
paddd xmm1, xmmword [ebp - 0x90]
punpcklqdq xmm2, xmm4
punpckhdq xmm0, xmm5
movaps xmmword [ebp - 0x40], xmm2
movaps xmmword [ebp - 0x100], xmm2
movaps xmm2, xmmword [ebp - 0x70]
paddd xmm2, xmmword [ebp - 0xb0]
movaps xmmword [ebp - 0x50], xmm0
movaps xmmword [ebp - 0xf0], xmm0
movaps xmm0, xmmword [ebp - 0x80]
paddd xmm0, xmmword [ebp - 0x30]
push eax
lea eax, [ebp - 0xe0]
movaps xmmword [ebp - 0x80], xmm0
push eax
movaps xmmword [ebp - 0x70], xmm2
movaps xmmword [ebp - 0x60], xmm1
call fcn.0044e2c0
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0x1d0]
push eax
call fcn.0044dab0
push 1
lea eax, [ebp - 0x1d0]
push eax
push edi
call fcn.0044e2c0
add esp, 0x44
lea eax, [ebp - 0x80]
push eax
push edi
push edi
call fcn.0044dab0
lea eax, [ebp - 0x110]
push eax
push edi
push edi
call fcn.0044dab0
push 1
lea eax, [ebp - 0x1a0]
push edi
push eax
call fcn.0044e2c0
push 2
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x170]
push eax
call fcn.0044e2c0
push edi
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0044e110
lea eax, [ebp - 0x1a0]
push eax
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x1a0]
push eax
call fcn.0044e110
add esp, 0x48
lea eax, [ebp - 0x1a0]
push 1
push eax
lea eax, [ebp - 0x170]
push eax
call fcn.0044e2c0
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0044e110
lea eax, [ebp - 0x140]
push eax
call fcn.0044e120
lea eax, [ebp - 0x140]
push 2
push eax
push eax
call fcn.0044e2c0
push edi
lea eax, [ebp - 0x140]
push eax
push edi
call fcn.0044e110
lea eax, [ebp - 0x1d0]
push eax
push edi
push edi
call fcn.0044dab0
add esp, 0x40
lea eax, [ebp - 0x110]
push eax
push edi
push edi
call fcn.0044dab0
push 1
lea eax, [ebp - 0xe0]
push edi
push eax
call fcn.0044e2c0
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0xe0]
push eax
push eax
call fcn.0044dab0
movaps xmm1, xmmword [ebp - 0xe0]
movaps xmm0, xmmword [ebp - 0xd0]
movaps xmm4, xmmword [ebp - 0xc0]
movaps xmmword [ebp - 0xb0], xmm1
movaps xmmword [ebp - 0xa0], xmm0
movaps xmmword [ebp - 0x90], xmm4
paddd xmm0, xmmword [0x5a2620]
lea eax, [ebp - 0x170]
psubd xmm0, xmmword [ebp - 0x40]
xorps xmm5, xmm5
paddd xmm1, xmmword [0x5a2610]
psubd xmm1, xmmword [ebp - 0x20]
movaps xmm2, xmmword [0x5a2570]
movaps xmm7, xmm1
punpcklqdq xmm7, xmm0
punpckhqdq xmm1, xmm0
movaps xmm3, xmm7
andps xmm3, xmm2
psrlq xmm7, 0x20
movaps xmm6, xmm1
movaps xmm0, xmm3
psrlq xmm0, 0x1a
andps xmm6, xmm2
psrlq xmm1, 0x20
paddq xmm7, xmm0
andps xmm3, xmmword [0x5a25a0]
movaps xmm0, xmm6
andps xmm6, xmmword [0x5a25a0]
psrlq xmm0, 0x1a
push eax
paddq xmm1, xmm0
lea eax, [ebp - 0x70]
movaps xmm0, xmm7
movaps xmmword [ebp - 0x30], xmm1
psrlq xmm0, 0x19
psrlq xmm1, 0x19
paddq xmm6, xmm0
andps xmm7, xmmword [0x5a25b0]
movaps xmm0, xmm4
paddd xmm0, xmmword [0x5a2630]
psubd xmm0, xmmword [ebp - 0x50]
punpcklqdq xmm5, xmm0
movaps xmm4, xmm5
psrlq xmm5, 0x20
andps xmm4, xmm2
paddq xmm4, xmm1
pslldq xmm1, 8
movaps xmm0, xmm4
andps xmm4, xmmword [0x5a25a0]
psrlq xmm0, 0x1a
push eax
paddq xmm5, xmm0
movaps xmm2, xmm5
andps xmm5, xmmword [0x5a25b0]
psrlq xmm2, 0x19
punpckhdq xmm4, xmm5
pmuludq xmm2, xmmword [0x5a25e0]
movaps xmmword [ebp - 0x150], xmm4
punpckhqdq xmm2, xmm1
movaps xmm1, xmm6
andps xmm6, xmmword [0x5a25a0]
paddq xmm2, xmm3
movaps xmm3, xmmword [ebp - 0x30]
movaps xmm0, xmm2
andps xmm2, xmmword [0x5a25a0]
andps xmm3, xmmword [0x5a25b0]
psrlq xmm0, 0x1a
psrlq xmm1, 0x1a
paddq xmm7, xmm0
movaps xmm0, xmm6
paddq xmm3, xmm1
movaps xmm1, xmm2
punpckldq xmm0, xmm3
punpckldq xmm1, xmm7
punpckhdq xmm2, xmm7
punpckhdq xmm6, xmm3
punpcklqdq xmm1, xmm0
punpcklqdq xmm2, xmm6
movaps xmmword [ebp - 0x170], xmm1
movaps xmmword [ebp - 0x160], xmm2
call fcn.0044d570
xor edi, edi
add esp, 0x2c
xor edx, edx
lea esi, [edi + 0x20]
mov edi, edi
movzx ecx, byte [edx + 0x5a22b0]
lea edx, [edx + 1]
movzx eax, byte [ebp + edx - 0x71]
xor ecx, eax
or edi, ecx
sub esi, 1
jne 0x454ad0
lea eax, [edi - 1]
mov edi, dword [ebx + 8]
test eax, 0x100
jne 0x454ca0
movaps xmm1, xmmword [ebp - 0xb0]
lea eax, [ebp - 0xe0]
paddd xmm1, xmmword [ebp - 0x20]
movaps xmm2, xmmword [ebp - 0xa0]
movaps xmm0, xmm1
paddd xmm2, xmmword [ebp - 0x40]
punpcklqdq xmm0, xmm2
movaps xmm3, xmm0
punpckhqdq xmm1, xmm2
andps xmm3, xmmword [0x5a2570]
movaps xmm2, xmm1
andps xmm2, xmmword [0x5a2570]
movaps xmm7, xmm3
psrlq xmm0, 0x20
movaps xmm6, xmm2
andps xmm2, xmmword [0x5a25a0]
psrlq xmm7, 0x1a
psrlq xmm1, 0x20
paddq xmm7, xmm0
andps xmm3, xmmword [0x5a25a0]
movaps xmm0, xmm7
psrlq xmm6, 0x1a
psrlq xmm0, 0x19
paddq xmm6, xmm1
andps xmm7, xmmword [0x5a25b0]
paddq xmm2, xmm0
movaps xmm1, xmm6
xorps xmm0, xmm0
psrlq xmm1, 0x19
movaps xmm5, xmm0
andps xmm6, xmmword [0x5a25b0]
movaps xmm0, xmmword [ebp - 0x90]
paddd xmm0, xmmword [ebp - 0x50]
punpcklqdq xmm5, xmm0
movaps xmm4, xmm5
movaps xmmword [ebp - 0x30], xmm2
andps xmm4, xmmword [0x5a2570]
paddq xmm4, xmm1
psrlq xmm5, 0x20
movaps xmm0, xmm4
pslldq xmm1, 8
psrlq xmm0, 0x1a
andps xmm4, xmmword [0x5a25a0]
paddq xmm5, xmm0
movaps xmm2, xmm5
andps xmm5, xmmword [0x5a25b0]
psrlq xmm2, 0x19
push eax
pmuludq xmm2, xmmword [0x5a25e0]
lea eax, [ebp - 0x70]
punpckhdq xmm4, xmm5
push eax
movaps xmmword [ebp - 0xc0], xmm4
punpckhqdq xmm2, xmm1
paddq xmm2, xmm3
movaps xmm3, xmmword [ebp - 0x30]
movaps xmm0, xmm2
movaps xmm1, xmm3
andps xmm2, xmmword [0x5a25a0]
andps xmm3, xmmword [0x5a25a0]
psrlq xmm0, 0x1a
psrlq xmm1, 0x1a
paddq xmm7, xmm0
movaps xmm0, xmm3
paddq xmm6, xmm1
movaps xmm1, xmm2
punpckldq xmm0, xmm6
punpckldq xmm1, xmm7
punpckhdq xmm2, xmm7
punpckhdq xmm3, xmm6
punpcklqdq xmm1, xmm0
punpcklqdq xmm2, xmm3
movaps xmmword [ebp - 0xe0], xmm1
movaps xmmword [ebp - 0xd0], xmm2
call fcn.0044d570
xor edi, edi
add esp, 8
xor eax, eax
lea esi, [edi + 0x20]
movzx edx, byte [eax + 0x5a22b0]
lea eax, [eax + 1]
movzx ecx, byte [ebp + eax - 0x71]
xor edx, ecx
or edi, edx
sub esi, 1
jne 0x454c61
lea eax, [edi - 1]
test eax, 0x100
jne 0x454c8e
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov edi, dword [ebx + 8]
push 0x5a1050
push edi
push edi
call fcn.0044dab0
add esp, 0xc
lea eax, [ebp - 0x70]
push edi
push eax
call fcn.0044d570
mov al, byte [ebp - 0x70]
add esp, 8
and al, 1
cmp al, byte [ebp - 1]
jne 0x454df3
movaps xmm4, xmmword [0x5a2610]
xorps xmm2, xmm2
psubd xmm4, xmmword [edi]
movaps xmm5, xmmword [0x5a2620]
movaps xmm0, xmm4
psubd xmm5, xmmword [edi + 0x10]
punpcklqdq xmm0, xmm5
movaps xmm3, xmm0
punpckhqdq xmm4, xmm5
andps xmm3, xmmword [0x5a2570]
movaps xmm7, xmm4
andps xmm7, xmmword [0x5a2570]
movaps xmm6, xmm3
psrlq xmm0, 0x20
movaps xmm5, xmm7
andps xmm7, xmmword [0x5a25a0]
psrlq xmm6, 0x1a
psrlq xmm4, 0x20
paddq xmm6, xmm0
andps xmm3, xmmword [0x5a25a0]
movaps xmm0, xmm6
psrlq xmm5, 0x1a
psrlq xmm0, 0x19
paddq xmm5, xmm4
andps xmm6, xmmword [0x5a25b0]
paddq xmm7, xmm0
movaps xmm1, xmm5
movaps xmm0, xmmword [0x5a2630]
psubd xmm0, xmmword [edi + 0x20]
punpcklqdq xmm2, xmm0
movaps xmm4, xmm2
psrlq xmm1, 0x19
andps xmm4, xmmword [0x5a2570]
paddq xmm4, xmm1
andps xmm5, xmmword [0x5a25b0]
psrlq xmm2, 0x20
movaps xmm0, xmm4
psrlq xmm0, 0x1a
pslldq xmm1, 8
paddq xmm2, xmm0
movaps xmmword [ebp - 0x30], xmm2
psrlq xmm2, 0x19
pmuludq xmm2, xmmword [0x5a25e0]
punpckhqdq xmm2, xmm1
movaps xmm1, xmm7
paddq xmm2, xmm3
psrlq xmm1, 0x1a
movaps xmm3, xmmword [0x5a25a0]
movaps xmm0, xmm2
psrlq xmm0, 0x1a
paddq xmm5, xmm1
andps xmm2, xmm3
andps xmm7, xmm3
paddq xmm6, xmm0
movaps xmm1, xmm2
movaps xmm0, xmm7
punpckldq xmm1, xmm6
punpckldq xmm0, xmm5
andps xmm4, xmm3
punpcklqdq xmm1, xmm0
movaps xmm0, xmmword [ebp - 0x30]
andps xmm0, xmmword [0x5a25b0]
punpckhdq xmm2, xmm6
punpckhdq xmm7, xmm5
movups xmmword [edi], xmm1
punpcklqdq xmm2, xmm7
punpckhdq xmm4, xmm0
movups xmmword [edi + 0x10], xmm2
movups xmmword [edi + 0x20], xmm4
lea eax, [edi + 0x30]
push eax
lea eax, [edi + 0x90]
push edi
push eax
call fcn.0044dab0
add esp, 0xc
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret