Function at 0x5ff950
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov ebx, ecx
test edx, edx
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x44]
movzx edx, byte [esp + 0x40]
jne 0x6003a4
mov ebx, ecx
mov ebp, ecx
mov dword [esp + 0x10], edx
and ebx, 0xffffffe0
and ebp, 0x1f
lea esi, [eax + ebx]
mov eax, ecx
mov ecx, 1
mov dword [esp], esi
mov esi, dword [esp + 0x4c]
push eax
push dword [esp + 0x58]
mov eax, dword [esp + 0x58]
push eax
push esi
push dword [esp + 0x58]
push edi
push eax
call fcn.006003d0
mov ecx, dword [esp + 0x1c]
add esp, 0x1c
test ebx, ebx
mov dword [esp + 0xc], ebp
je 0x5ffaee
mov edx, dword [esp + 0x54]
mov eax, ebx
mov dword [esp + 0x18], ebx
xor ebx, ebx
pxor xmm0, xmm0
mov ecx, 0xffffffff
xor ebp, ebp
neg eax
nop dword [eax + eax]
movdqu xmm1, xmmword [edx]
movdqu xmm2, xmmword [edx + 0x10]
pxor xmm3, xmm3
add edx, 0x20
psubb xmm3, xmm1
pminub xmm3, xmm1
pxor xmm1, xmm1
psubb xmm1, xmm2
psadbw xmm3, xmm0
pminub xmm1, xmm2
psadbw xmm1, xmm0
paddq xmm3, xmm1
pshufd xmm1, xmm3, 0xee
paddq xmm1, xmm3
pshufd xmm2, xmm1, 0x55
movd edi, xmm1
movd esi, xmm2
add ebx, edi
adc ebp, esi
cmovb ebp, ecx
cmovb ebx, ecx
add eax, 0x20
jne 0x5ff9e0
mov eax, dword [esp]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1c], ebp
xor ebp, ebp
mov dword [esp + 0x14], ebx
lea esi, [eax + ecx]
test ecx, ecx
mov dword [esp + 4], esi
je 0x5ffc62
xor edi, edi
cmp ecx, 1
mov ebx, 0
je 0x5ffad0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0xc]
mov esi, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and ecx, 1
sub edx, ecx
lea eax, [esi + edx]
nop dword [eax]
movzx edi, word [esi]
pxor xmm3, xmm3
add esi, 2
add edx, 0xfffffffe
movd xmm2, edi
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x5ffa80
pshufd xmm1, xmm0, 0xee
mov esi, dword [esp + 4]
test ecx, ecx
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd edi, xmm1
movd ebx, xmm0
je 0x5ffc66
nop dword [eax]
movzx ecx, byte [eax]
inc eax
mov edx, ecx
sar dl, 7
xor cl, dl
sub cl, dl
movzx ecx, cl
add edi, ecx
adc ebx, 0
cmp eax, esi
jne 0x5ffad0
jmp 0x5ffc66
lea eax, [ecx + ebp]
test ebp, ebp
mov dword [esp + 4], eax
je 0x600151
xor edi, edi
cmp ebp, 1
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x48]
mov esi, 0
mov eax, ecx
je 0x5ffb80
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0xc]
mov edi, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and ecx, 1
sub edx, ecx
lea eax, [edi + edx]
nop
movzx ebx, word [edi]
pxor xmm3, xmm3
add edi, 2
add edx, 0xfffffffe
movd xmm2, ebx
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x5ffb30
pshufd xmm1, xmm0, 0xee
mov ebx, dword [esp + 0x48]
test ecx, ecx
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd edi, xmm1
movd esi, xmm0
je 0x5ffb99
nop dword [eax]
movzx ecx, byte [eax]
inc eax
mov edx, ecx
sar dl, 7
xor cl, dl
sub cl, dl
movzx ecx, cl
add edi, ecx
adc esi, 0
cmp eax, ebp
jne 0x5ffb80
mov edx, dword [esp + 0x10]
mov ecx, 2
push dword [esp + 0x58]
push dword [esp + 0x58]
mov eax, dword [esp + 0x58]
push eax
push dword [esp + 0x58]
push ebx
push dword [esp + 0x58]
push eax
call fcn.006003d0
add esp, 0x1c
mov ebx, dword [esp + 0xc]
mov eax, dword [esp]
xor ecx, ecx
mov edx, 0
cmp ebx, 2
jb 0x5ffc40
mov eax, dword [esp + 0x58]
mov edx, dword [esp]
mov ecx, ebx
pxor xmm1, xmm1
pxor xmm0, xmm0
and eax, 1
sub ecx, eax
mov ebx, eax
lea eax, [edx + ecx]
nop
movzx ebp, word [edx]
pxor xmm3, xmm3
add edx, 2
add ecx, 0xfffffffe
movd xmm2, ebp
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x5ffbf0
pshufd xmm1, xmm0, 0xee
mov ebp, dword [esp + 4]
test ebx, ebx
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd ecx, xmm1
movd edx, xmm0
je 0x5ffc59
nop dword [eax]
movzx ebx, byte [eax]
inc eax
mov bh, bl
sar bh, 7
xor bl, bh
sub bl, bh
movzx ebx, bl
add ecx, ebx
adc edx, 0
cmp eax, ebp
jne 0x5ffc40
mov ebx, dword [esp + 0x50]
jmp 0x600181
xor edi, edi
xor ebx, ebx
mov edx, dword [esp + 0x10]
mov dword [esp + 8], edi
mov ecx, 2
push dword [esp + 0x58]
mov edi, dword [esp + 0x58]
push edi
mov eax, dword [esp + 0x58]
push eax
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push eax
call fcn.006003d0
add esp, 0x1c
mov eax, dword [esp + 0x18]
pxor xmm0, xmm0
xor esi, esi
mov edx, edi
neg eax
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [edx]
movdqu xmm2, xmmword [edx + 0x10]
pxor xmm3, xmm3
add edx, 0x20
psubb xmm3, xmm1
pminub xmm3, xmm1
pxor xmm1, xmm1
psubb xmm1, xmm2
psadbw xmm3, xmm0
pminub xmm1, xmm2
psadbw xmm1, xmm0
paddq xmm3, xmm1
pshufd xmm1, xmm3, 0xee
paddq xmm1, xmm3
pshufd xmm2, xmm1, 0x55
movd edi, xmm1
add esi, edi
movd ecx, xmm2
mov edi, 0xffffffff
adc ebp, ecx
cmovb ebp, edi
cmovb esi, edi
add eax, 0x20
jne 0x5ffcb0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, 0xffffffff
add eax, dword [esp + 8]
adc ecx, ebx
cmovb eax, edx
cmovb ecx, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], ecx
xor ecx, ecx
test eax, eax
je 0x5ffddf
cmp eax, 1
mov eax, dword [esp]
mov edx, 0
je 0x5ffdc0
mov ebx, dword [esp + 0x58]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and ebx, 1
sub ecx, ebx
lea eax, [edx + ecx]
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx edi, word [edx]
pxor xmm3, xmm3
add edx, 2
add ecx, 0xfffffffe
movd xmm2, edi
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x5ffd70
pshufd xmm1, xmm0, 0xee
test ebx, ebx
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd ecx, xmm1
movd edx, xmm0
je 0x5ffde1
nop word cs:[eax + eax]
nop
movzx ebx, byte [eax]
inc eax
mov bh, bl
sar bh, 7
xor bl, bh
sub bl, bh
movzx edi, bl
mov ebx, dword [esp + 4]
add ecx, edi
adc edx, 0
cmp eax, ebx
jne 0x5ffdc0
jmp 0x5ffde1
xor edx, edx
add esi, ecx
mov eax, 0xffffffff
mov ecx, 3
adc ebp, edx
mov edx, dword [esp + 0x10]
cmovb ebp, eax
cmovb esi, eax
mov dword [esp + 0x28], ebp
push dword [esp + 0x58]
mov ebx, dword [esp + 0x58]
push ebx
mov eax, dword [esp + 0x58]
push eax
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push eax
call fcn.006003d0
add esp, 0x1c
mov eax, dword [esp + 0x18]
pxor xmm0, xmm0
xor edi, edi
mov ecx, ebx
xor ebp, ebp
neg eax
movdqu xmm1, xmmword [ecx]
movdqu xmm2, xmmword [ecx + 0x10]
pxor xmm3, xmm3
add ecx, 0x20
psubb xmm3, xmm1
pminub xmm3, xmm1
pxor xmm1, xmm1
psubb xmm1, xmm2
psadbw xmm3, xmm0
pminub xmm1, xmm2
psadbw xmm1, xmm0
paddq xmm3, xmm1
pshufd xmm1, xmm3, 0xee
paddq xmm1, xmm3
pshufd xmm2, xmm1, 0x55
movd ebx, xmm1
add edi, ebx
movd edx, xmm2
mov ebx, 0xffffffff
adc ebp, edx
cmovb ebp, ebx
cmovb edi, ebx
add eax, 0x20
jne 0x5ffe30
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov dword [esp + 8], ebp
cmp esi, ecx
mov eax, ecx
mov ebp, ecx
cmovb eax, esi
cmp ebx, edx
cmovb ebp, esi
cmove ebp, eax
mov eax, edx
cmovb eax, ebx
cmp ecx, esi
mov cl, 2
mov dword [esp + 0x24], ebp
sbb edx, ebx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [esp]
sbb cl, 0
xor esi, esi
mov byte [esp + 0x14], cl
test edx, edx
je 0x5fff7b
mov ebp, dword [esp + 4]
xor ecx, ecx
cmp edx, 1
mov edx, 0
je 0x5fff60
mov ebx, dword [esp + 0x58]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and ebx, 1
sub ecx, ebx
lea eax, [edx + ecx]
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebp, word [edx]
pxor xmm3, xmm3
add edx, 2
add ecx, 0xfffffffe
movd xmm2, ebp
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x5fff10
pshufd xmm1, xmm0, 0xee
mov ebp, dword [esp + 4]
test ebx, ebx
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd ecx, xmm1
movd edx, xmm0
je 0x5fff7f
nop dword [eax]
movzx ebx, byte [eax]
inc eax
mov bh, bl
sar bh, 7
xor bl, bh
sub bl, bh
movzx ebx, bl
add ecx, ebx
adc edx, 0
cmp eax, ebp
jne 0x5fff60
jmp 0x5fff7f
xor ecx, ecx
xor edx, edx
mov eax, dword [esp + 8]
add edi, ecx
mov ecx, 0xffffffff
adc eax, edx
mov edx, dword [esp + 0x10]
cmovb eax, ecx
cmovb edi, ecx
mov ecx, 4
mov dword [esp + 8], eax
push dword [esp + 0x58]
mov ebp, dword [esp + 0x58]
push ebp
mov eax, dword [esp + 0x58]
push eax
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push eax
call fcn.006003d0
add esp, 0x1c
mov edx, dword [esp + 0x18]
pxor xmm0, xmm0
xor ecx, ecx
mov eax, ebp
neg edx
movdqu xmm1, xmmword [eax]
movdqu xmm2, xmmword [eax + 0x10]
pxor xmm3, xmm3
mov ebx, edx
add eax, 0x20
psubb xmm3, xmm1
pminub xmm3, xmm1
pxor xmm1, xmm1
psubb xmm1, xmm2
psadbw xmm3, xmm0
pminub xmm1, xmm2
psadbw xmm1, xmm0
paddq xmm3, xmm1
pshufd xmm1, xmm3, 0xee
paddq xmm1, xmm3
pshufd xmm2, xmm1, 0x55
movd ebp, xmm1
add ecx, ebp
movd edx, xmm2
mov ebp, 0xffffffff
adc esi, edx
mov edx, ebx
cmovb esi, ebp
cmovb ecx, ebp
add edx, 0x20
jne 0x5fffd0
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x20]
cmp edi, ebx
mov eax, ebx
mov edx, ebx
cmovb eax, edi
cmp dword [esp + 8], ebp
cmovb edx, edi
cmove edx, eax
mov eax, ebp
mov dword [esp + 0x18], edx
mov edx, dword [esp + 8]
cmovb eax, edx
cmp ebx, edi
movzx edi, byte [esp + 0x14]
sbb ebp, edx
mov ebp, dword [esp + 0xc]
mov edx, 3
mov dword [esp + 0x1c], eax
cmovb edx, edi
test ebp, ebp
mov dword [esp + 8], edx
je 0x600089
xor edi, edi
cmp ebp, 1
jne 0x600092
mov eax, dword [esp]
mov edx, dword [esp + 4]
xor ebp, ebp
jmp 0x600100
xor edi, edi
xor ebp, ebp
jmp 0x600119
mov edx, dword [esp + 0x58]
mov ebx, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and edx, 1
sub ebp, edx
lea eax, [ebx + ebp]
nop dword [eax]
movzx edi, word [ebx]
pxor xmm3, xmm3
add ebx, 2
add ebp, 0xfffffffe
movd xmm2, edi
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x6000b0
pshufd xmm1, xmm0, 0xee
test edx, edx
mov edx, dword [esp + 4]
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd edi, xmm1
movd ebp, xmm0
je 0x600119
nop dword [eax]
movzx ebx, byte [eax]
inc eax
mov bh, bl
sar bh, 7
xor bl, bh
sub bl, bh
movzx ebx, bl
add edi, ebx
adc ebp, 0
cmp eax, edx
jne 0x600100
add ecx, edi
mov eax, 0xffffffff
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 8]
adc esi, ebp
mov ebp, dword [esp + 0x50]
cmovb ecx, eax
cmovb esi, eax
mov al, 4
cmp dword [esp + 0x18], ecx
sbb dword [esp + 0x1c], esi
mov esi, dword [esp + 0x4c]
jb 0x6003a4
jmp 0x6003c1
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov ecx, 2
push eax
mov eax, dword [esp + 0x58]
push eax
mov ebx, dword [esp + 0x58]
push ebx
push esi
mov eax, dword [esp + 0x58]
push eax
push edi
push ebx
call fcn.006003d0
add esp, 0x1c
xor edi, edi
xor esi, esi
xor ecx, ecx
xor edx, edx
cmp ecx, edi
mov eax, edi
mov ebp, edi
cmovb eax, ecx
cmp edx, esi
cmovb ebp, ecx
cmove ebp, eax
mov eax, esi
cmovb eax, edx
cmp edi, ecx
mov ecx, 3
sbb esi, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 8], eax
mov al, 2
sbb al, 0
mov byte [esp + 0x18], al
push dword [esp + 0x58]
push dword [esp + 0x58]
push ebx
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x58]
push ebx
call fcn.006003d0
add esp, 0x1c
mov eax, dword [esp + 0xc]
xor ecx, ecx
test eax, eax
je 0x60027b
cmp eax, 1
mov eax, dword [esp]
mov edi, dword [esp + 4]
mov edx, 0
je 0x600260
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and edi, 1
sub ecx, edi
lea eax, [edx + ecx]
nop dword [eax + eax]
movzx esi, word [edx]
pxor xmm3, xmm3
add edx, 2
add ecx, 0xfffffffe
movd xmm2, esi
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x600210
pshufd xmm1, xmm0, 0xee
test edi, edi
mov edi, dword [esp + 4]
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd ecx, xmm1
movd edx, xmm0
je 0x60027d
nop dword [eax]
movzx ebx, byte [eax]
inc eax
mov bh, bl
sar bh, 7
xor bl, bh
sub bl, bh
movzx esi, bl
add ecx, esi
adc edx, 0
cmp eax, edi
jne 0x600260
jmp 0x60027d
xor edx, edx
mov esi, dword [esp + 8]
cmp ecx, ebp
mov eax, ebp
mov edi, ebp
cmovb eax, ecx
cmp edx, esi
cmovb edi, ecx
cmove edi, eax
mov eax, esi
cmovb eax, edx
cmp ebp, ecx
mov ecx, 3
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x18]
sbb esi, edx
mov edx, dword [esp + 0x10]
cmovb ecx, eax
mov dword [esp + 8], ecx
mov ecx, 4
push dword [esp + 0x58]
push dword [esp + 0x58]
mov ebp, dword [esp + 0x58]
push ebp
mov eax, dword [esp + 0x58]
push eax
push dword [esp + 0x58]
push dword [esp + 0x58]
push ebp
call fcn.006003d0
add esp, 0x1c
mov ebx, dword [esp + 0xc]
mov al, 4
test ebx, ebx
je 0x6003c1
xor esi, esi
cmp ebx, 1
jne 0x6002fc
mov ecx, dword [esp]
mov ebp, dword [esp + 4]
xor ebx, ebx
jmp 0x600370
mov ebp, dword [esp + 0x58]
mov esi, dword [esp]
pxor xmm1, xmm1
pxor xmm0, xmm0
and ebp, 1
sub ebx, ebp
lea ecx, [esi + ebx]
nop word cs:[eax + eax]
nop dword [eax]
movzx edx, word [esi]
pxor xmm3, xmm3
add esi, 2
add ebx, 0xfffffffe
movd xmm2, edx
psubb xmm3, xmm2
pminub xmm3, xmm2
punpcklbw xmm3, xmm1
punpcklwd xmm3, xmm1
punpckldq xmm3, xmm1
paddq xmm0, xmm3
jne 0x600320
pshufd xmm1, xmm0, 0xee
test ebp, ebp
mov ebp, dword [esp + 4]
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0x55
movd esi, xmm1
movd ebx, xmm0
je 0x600388
nop dword [eax]
mov ah, byte [ecx]
inc ecx
mov dl, ah
sar dl, 7
xor ah, dl
sub ah, dl
movzx edx, ah
add esi, edx
adc ebx, 0
cmp ecx, ebp
jne 0x600370
cmp edi, esi
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x50]
sbb dword [esp + 0x14], ebx
mov ebx, dword [esp + 8]
jae 0x6003c1
movzx ecx, bl
push dword [esp + 0x58]
push dword [esp + 0x58]
push ebp
push esi
push dword [esp + 0x58]
push edi
push ebp
call fcn.006003d0
add esp, 0x1c
mov eax, ebx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret