Function at 0x457e90
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x28]
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x10], edx
movzx ebp, byte [ebx + 0x23]
push edi
mov dword [esp + 0x24], ebp
test byte [esi], 4
je 0x457f1d
xor ecx, ecx
test ebp, ebp
je 0x457f10
cmp ebp, 0x10
jb 0x457f10
movaps xmm2, xmmword [str._a_a_a_a8888]
lea eax, [esi + 0x20]
mov edx, ebp
and edx, 0xfffffff0
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x10
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax - 0x60], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x50]
pxor xmm0, xmm2
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
pxor xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, edx
jl 0x457ed0
cmp ecx, ebp
jge 0x457f1d
xor dword [esi + ecx*4], 7
inc ecx
cmp ecx, ebp
jl 0x457f14
mov edi, dword [esp + 0x38]
test edi, edi
jne 0x458114
test byte [esi], 0x20
je 0x457fa0
xor eax, eax
test ebp, ebp
je 0x457f93
cmp ebp, 0x10
jb 0x457f93
movaps xmm2, xmmword [0x4e0f40]
lea ecx, [esi + 0x20]
mov edx, ebp
and edx, 0xfffffff0
nop dword [eax + eax]
movups xmm0, xmmword [ecx - 0x20]
lea ecx, [ecx + 0x40]
add eax, 0x10
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [ecx - 0x60], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [ecx - 0x50]
pxor xmm0, xmm2
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [ecx - 0x40]
pxor xmm1, xmm0
movups xmmword [ecx - 0x40], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [ecx - 0x30]
pxor xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp eax, edx
jl 0x457f50
cmp eax, ebp
jge 0x457fa0
xor dword [esi + eax*4], 0x38
inc eax
cmp eax, ebp
jl 0x457f97
xor ecx, ecx
test ebp, ebp
je 0x457ff2
nop word [eax + eax]
mov eax, dword [esi + ecx*4]
mov al, byte [eax + 0x4d0c90]
test al, al
jne 0x457fc4
inc ecx
cmp ecx, ebp
jl 0x457fb0
jmp 0x457ff2
jle 0x457ff2
xor eax, eax
cmp byte [ebx + 0x28], al
sete al
add eax, 2
cmp ecx, eax
jge 0x457ff2
xor ecx, ecx
nop word [eax + eax]
mov eax, dword [esi + ecx*4]
movzx eax, byte [eax + 0x4d0c50]
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, ebp
jl 0x457fe0
cmp byte [ebx + 0x28], 0
je 0x45802b
mov eax, dword [esi]
mov ebx, 2
mov dword [esp + 0x10], ebx
movzx eax, byte [eax + 0x4d1318]
shl eax, 6
add eax, dword [esi + 4]
movsx edx, word [eax*2 + 0x4d0d50]
mov eax, dword [esp + 0x14]
mov edi, dword [eax + 4]
imul edi, edx
mov dword [esp + 0x38], edi
jmp 0x45844f
mov ecx, dword [esi]
xor eax, eax
mov edx, dword [esi + 4]
cmp edx, ecx
mov edi, dword [esi + 8]
setg al
xor ebx, ebx
cmp edi, edx
mov dword [esp + 0x38], eax
setg bl
xor eax, eax
cmp edi, ecx
setg al
add ebx, eax
cmp byte [ecx + 0x4d0c90], 0
je 0x45807a
movzx eax, byte [ecx + 0x4d1318]
mov ecx, eax
shl ecx, 6
sub ecx, eax
sub ecx, dword [esp + 0x38]
add ecx, edx
mov edx, ecx
shl edx, 5
sub edx, ecx
add edx, edx
sub edx, ebx
add edx, edi
jmp 0x4580f8
movzx ebp, byte [ecx + 0x4d12b0]
lea eax, [ebp*8]
sub eax, ebp
cmp byte [edx + 0x4d0c90], 0
je 0x4580b2
movzx ecx, byte [edx + 0x4d1250]
lea eax, [eax*4 + 0x17a]
add eax, ecx
mov edx, eax
shl edx, 5
sub edx, eax
add edx, edx
sub edx, ebx
add edx, edi
jmp 0x4580f8
movzx edx, byte [edx + 0x4d12b0]
add edx, eax
sub edx, dword [esp + 0x38]
cmp byte [edi + 0x4d0c90], 0
je 0x4580e3
movzx eax, byte [edi + 0x4d1250]
add edx, 0x43d
lea ecx, [edx*8]
sub ecx, edx
lea edx, [eax + ecx*4]
jmp 0x4580f8
movzx eax, byte [edi + 0x4d12b0]
add edx, 0x144a
lea ecx, [edx + edx*2]
lea edx, [eax + ecx*2]
sub edx, ebx
mov eax, dword [esp + 0x14]
mov ebx, 3
mov dword [esp + 0x10], ebx
mov edi, dword [eax + 4]
imul edi, edx
mov dword [esp + 0x38], edi
jmp 0x45844f
movzx ebx, byte [ebx + 0x28]
mov dword [esp + 0x10], ebx
cmp ebx, 1
jbe 0x458192
mov eax, 2
lea edx, [ebx - 1]
mov dword [esp + 0x1c], eax
lea ebp, [esi + 4]
mov dword [esp + 0x20], edx
mov ecx, eax
cmp eax, ebx
jge 0x458181
mov eax, edi
shl eax, 6
lea eax, [eax + str._t_n_v_f_r]
mov dword [esp + 0x18], eax
nop dword [eax]
mov edi, dword [ebp]
mov ebx, dword [esp + 0x18]
mov edx, dword [esi + ecx*4]
mov al, byte [eax + edi]
cmp al, byte [edx + ebx]
mov ebx, dword [esp + 0x10]
jae 0x45816c
mov dword [ebp], edx
mov dword [esi + ecx*4], edi
mov eax, dword [esp + 0x18]
inc ecx
cmp ecx, ebx
jl 0x458150
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x38]
inc eax
add ebp, 4
sub edx, 1
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], edx
jne 0x458134
mov eax, dword [esi]
xor ebp, ebp
shl edi, 6
mov dword [esp + 0x20], ebp
lea edx, [ebp + 1]
movzx ecx, byte [edi + eax + 0x4d0c90]
mov eax, dword [esp + 0x38]
lea eax, [eax + eax*2]
lea eax, [eax*2 - 7]
add eax, ebx
lea eax, [eax + eax*2]
lea eax, [ecx + eax*8]
mov ecx, dword [eax*4 + 0x5fda88]
mov dword [esp + 0x38], ecx
cmp ebx, edx
jbe 0x458262
lea eax, [ebx - 1]
mov dword [esp + 0x1c], eax
cmp eax, 2
jl 0x458231
mov ecx, ebx
shl ecx, 6
sub ecx, 0x40
xor ebx, ebx
nop word [eax + eax]
mov eax, dword [esi + edx*4]
movzx eax, byte [eax + edi + str._t_n_v_f_r]
add eax, ecx
add ebp, dword [eax*4 + 0x5fd388]
mov eax, dword [esi + edx*4 + 4]
add edx, 2
movzx eax, byte [eax + edi + str._t_n_v_f_r]
add eax, ecx
add ecx, 0xffffff80
add ebx, dword [eax*4 + 0x5fd288]
cmp edx, dword [esp + 0x1c]
jl 0x4581f0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x10]
cmp edx, ebx
jge 0x45825a
mov eax, dword [esi + edx*4]
movzx ecx, byte [eax + edi + str._t_n_v_f_r]
mov eax, ebx
sub eax, edx
shl eax, 6
add ecx, eax
mov eax, dword [esp + 0x38]
add eax, dword [ecx*4 + 0x5fd388]
mov dword [esp + 0x38], eax
mov ecx, eax
mov eax, dword [esp + 0x20]
add eax, ebp
add ecx, eax
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
mov edi, dword [edi + 4]
mov al, byte [eax + 0x29]
imul edi, ecx
mov dword [esp + 0x38], edi
test al, al
je 0x45844b
movzx edx, al
mov dword [esp + 0x20], edx
lea ebp, [edx + ebx]
mov dword [esp + 0x2c], ebp
cmp ebx, ebp
jae 0x4582d6
lea ecx, [ebx + 1]
mov dword [esp + 0x34], ecx
lea edi, [esi + ebx*4]
nop dword [eax + eax]
mov eax, ecx
cmp ecx, ebp
jge 0x4582c1
mov ecx, dword [esi + eax*4]
mov edx, dword [edi]
cmp edx, ecx
jle 0x4582b4
mov dword [edi], ecx
mov dword [esi + eax*4], edx
inc eax
cmp eax, ebp
jl 0x4582a6
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
inc ecx
add edi, 4
sub edx, 1
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], edx
jne 0x4582a0
mov edi, dword [esp + 0x38]
xor ecx, ecx
mov eax, ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
cmp ebx, ebp
jae 0x458434
mov dword [esp + 0x18], ecx
nop
mov edx, dword [esi + eax*4]
xor ecx, ecx
mov dword [esp + 0x34], 0
movd xmm0, edx
pshufd xmm7, xmm0, 0
test ebx, ebx
je 0x458399
cmp ebx, 8
jb 0x458399
movaps xmm6, xmmword [0x4e0f20]
mov eax, ebx
and eax, 0xfffffff8
xorps xmm4, xmm4
xorps xmm5, xmm5
xorps xmm3, xmm3
nop dword [eax]
movups xmm0, xmmword [esi + ecx*4]
movaps xmm1, xmm7
movaps xmm2, xmm7
pcmpgtd xmm1, xmm0
movaps xmm0, xmm6
pand xmm0, xmm1
pandn xmm1, xmm5
por xmm0, xmm1
paddd xmm4, xmm0
movups xmm0, xmmword [esi + ecx*4 + 0x10]
add ecx, 8
pcmpgtd xmm2, xmm0
movaps xmm0, xmm6
movaps xmm1, xmm2
pand xmm0, xmm2
pandn xmm1, xmm5
por xmm1, xmm0
paddd xmm3, xmm1
cmp ecx, eax
jl 0x458330
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd dword [esp + 0x34], xmm3
xor edi, edi
xor ebp, ebp
cmp ecx, ebx
jge 0x4583f7
mov eax, ebx
sub eax, ecx
cmp eax, 2
jl 0x4583d3
lea eax, [ebx - 1]
mov dword [esp + 0x28], eax
mov ebx, eax
xor eax, eax
cmp edx, dword [esi + ecx*4]
setg al
add edi, eax
xor eax, eax
cmp edx, dword [esi + ecx*4 + 4]
setg al
add ecx, 2
add ebp, eax
cmp ecx, ebx
jl 0x4583b3
mov ebx, dword [esp + 0x10]
cmp ecx, ebx
jge 0x4583ec
xor eax, eax
cmp edx, dword [esi + ecx*4]
mov ecx, dword [esp + 0x34]
setg al
add ecx, eax
lea eax, [edi + ebp]
add ecx, eax
jmp 0x4583fb
mov ecx, dword [esp + 0x34]
lea eax, [edi + ebp]
add ecx, eax
jmp 0x4583fb
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
mov eax, edi
mov ebp, dword [esp + 0x2c]
sub eax, ecx
mov ecx, dword [esp + 0x20]
add eax, edx
add edi, 0x40
mov dword [esp + 0x18], edi
add ecx, dword [eax*4 + 0x5fd468]
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
cmp eax, ebp
jl 0x4582f0
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + ebx*4 + 4]
mov ebx, ebp
imul eax, ecx
mov dword [esp + 0x10], ebx
add edi, eax
mov dword [esp + 0x38], edi
mov eax, dword [esp + 0x14]
cmp ebx, dword [esp + 0x24]
jae 0x458637
nop dword [eax]
movzx edx, byte [eax + ebx + 0x27]
mov dword [esp + 0x20], edx
lea ebp, [edx + ebx]
mov dword [esp + 0x28], ebp
cmp ebx, ebp
jge 0x4584b2
lea ecx, [ebx + 1]
mov dword [esp + 0x34], ecx
lea edi, [esi + ebx*4]
nop
mov eax, ecx
cmp ecx, ebp
jge 0x4584a1
mov ecx, dword [esi + eax*4]
mov edx, dword [edi]
cmp edx, ecx
jle 0x458494
mov dword [edi], ecx
mov dword [esi + eax*4], edx
inc eax
cmp eax, ebp
jl 0x458486
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
inc ecx
add edi, 4
sub edx, 1
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], edx
jne 0x458480
xor edx, edx
mov eax, ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], eax
cmp ebx, ebp
jge 0x458612
mov dword [esp + 0x1c], edx
nop word [eax + eax]
mov edx, dword [esi + eax*4]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x34], ecx
movd xmm0, edx
pshufd xmm6, xmm0, 0
test ebx, ebx
jle 0x458588
cmp ebx, 8
jb 0x458588
mov ecx, ebx
and ecx, 0x80000007
jns 0x458504
dec ecx
or ecx, 0xfffffff8
inc ecx
movaps xmm5, xmmword [0x4e0f20]
mov edi, ebx
sub edi, ecx
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm2, xmm2
nop dword [eax + eax]
movups xmm0, xmmword [esi + eax*4]
movaps xmm1, xmm6
pcmpgtd xmm1, xmm0
movaps xmm0, xmm1
pandn xmm1, xmm4
pand xmm0, xmm5
por xmm0, xmm1
movaps xmm1, xmm6
paddd xmm3, xmm0
movups xmm0, xmmword [esi + eax*4 + 0x10]
add eax, 8
pcmpgtd xmm1, xmm0
movaps xmm0, xmm1
pandn xmm1, xmm4
pand xmm0, xmm5
por xmm0, xmm1
paddd xmm2, xmm0
cmp eax, edi
jl 0x458520
paddd xmm2, xmm3
movaps xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
paddd xmm2, xmm0
movd ecx, xmm2
mov dword [esp + 0x34], ecx
xor edi, edi
xor ebp, ebp
cmp eax, ebx
jge 0x4585db
mov ecx, ebx
sub ecx, eax
cmp ecx, 2
jl 0x4585c2
lea ecx, [ebx - 1]
mov dword [esp + 0x2c], ecx
mov ebx, ecx
xor ecx, ecx
cmp edx, dword [esi + eax*4]
setg cl
add edi, ecx
xor ecx, ecx
cmp edx, dword [esi + eax*4 + 4]
setg cl
add eax, 2
add ebp, ecx
cmp eax, ebx
jl 0x4585a2
mov ebx, dword [esp + 0x10]
cmp eax, ebx
jge 0x4585d2
xor ecx, ecx
cmp edx, dword [esi + eax*4]
setg cl
add dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x34]
lea eax, [edi + ebp]
add ecx, eax
mov edi, dword [esp + 0x1c]
sub edx, ecx
mov eax, dword [esp + 0x18]
add edx, edi
mov ebp, dword [esp + 0x28]
add edi, 0x40
mov dword [esp + 0x1c], edi
add eax, dword [edx*4 + 0x5fd488]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, ebp
jl 0x4584d0
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x38]
mov ecx, dword [eax + ebx*4 + 4]
mov ebx, ebp
imul ecx, edx
mov dword [esp + 0x10], ebx
add edi, ecx
mov dword [esp + 0x38], edi
cmp ebp, dword [esp + 0x24]
jl 0x458460
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 8