Function at 0x5c1750
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x6480b4]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x30]
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x58], eax
push ebx
push esi
mov esi, dword [ebp + 0x24]
mov dword [ebp - 0x50], esi
push edi
mov edi, dword [ebp + 0x28]
cmp ecx, 4
jb 0x5c1be5
cmp ecx, 0x10
ja 0x5c1be5
test cl, 1
jne 0x5c1be5
cmp edx, 7
jb 0x5c1be5
cmp edx, 0xd
ja 0x5c1be5
mov ebx, dword [ebp + 0x20]
cmp ebx, 0xff00
ja 0x5c1be5
sub cl, 2
mov dword [ebp - 0x3c], 0
mov al, 0xf
and cl, 0xfe
sub al, dl
shl cl, 2
mov ah, al
mov byte [ebp - 0x35], al
dec ah
cmp dword [ebp - 0x3c], ebx
push edx
push dword [ebp - 0x54]
sbb al, al
mov byte [ebp - 0x3d], ah
and al, 0x40
or cl, al
or cl, ah
lea eax, [ebp - 0x13]
push eax
mov byte [ebp - 0x14], cl
call fcn.005c9900
mov dl, byte [ebp - 0x35]
add esp, 0xc
mov eax, dword [ebp + 0x10]
test dl, dl
je 0x5c1822
lea ecx, [ebp - 5]
movzx edx, dl
mov byte [ecx], al
lea ecx, [ecx - 1]
shr eax, 8
sub edx, 1
jne 0x5c1815
test eax, eax
jne 0x5c1be5
xorps xmm0, xmm0
xor ecx, ecx
movups xmmword [ebp - 0x24], xmm0
mov edx, 0x10
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c1840
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
test ebx, ebx
je 0x5c194d
mov eax, ebx
mov esi, 0xe
shr eax, 8
xorps xmm0, xmm0
cmp ebx, esi
movups xmmword [ebp - 0x14], xmm0
cmovb esi, ebx
mov byte [ebp - 0x14], al
push esi
push dword [ebp - 0x48]
lea eax, [ebp - 0x12]
mov byte [ebp - 0x13], bl
push eax
call fcn.005c9900
add dword [ebp - 0x48], esi
add esp, 0xc
sub ebx, esi
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c18b0
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
test ebx, ebx
je 0x5c194a
mov eax, dword [ebp - 0x48]
cmp ebx, 0x10
mov ecx, 0x10
mov esi, ebx
xorps xmm0, xmm0
cmova esi, ecx
push esi
push eax
lea eax, [ebp - 0x14]
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.005c9900
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c1910
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
mov eax, dword [ebp - 0x48]
add eax, esi
mov dword [ebp - 0x48], eax
sub ebx, esi
jne 0x5c18e5
mov esi, dword [ebp - 0x50]
push dword [ebp - 0x4c]
mov al, byte [ebp - 0x3d]
push dword [ebp - 0x54]
mov byte [ebp - 0x34], al
lea eax, [ebp - 0x33]
push eax
call fcn.005c9900
mov bl, byte [ebp - 0x35]
lea ecx, [ebp - 0x33]
movzx eax, bl
push eax
mov eax, dword [ebp - 0x4c]
add eax, ecx
push 0
push eax
call fcn.005c9220
mov eax, dword [ebp + 0x10]
add esp, 0x18
mov byte [ebp - 0x25], 1
test eax, eax
je 0x5c1b66
nop dword [eax + eax]
cmp eax, 0x10
mov ebx, eax
mov eax, 0x10
cmova ebx, eax
cmp dword [ebp + 0xc], 0
jne 0x5c19ee
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push esi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.005c9900
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c19c0
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x10
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
xor dl, dl
test ebx, ebx
je 0x5c1ac3
cmp ebx, 0x40
jb 0x5c1ac3
mov al, bl
dec al
movzx ecx, al
lea eax, [ebp - 0x14]
add eax, ecx
cmp edi, eax
ja 0x5c1a44
lea eax, [ebp - 0x14]
mov dword [ebp - 0x4c], eax
lea eax, [ecx + edi]
cmp eax, dword [ebp - 0x4c]
jae 0x5c1ac3
lea eax, [ecx + esi]
cmp edi, eax
ja 0x5c1a52
lea eax, [ecx + edi]
cmp eax, esi
jae 0x5c1ac3
mov eax, ebx
mov cl, 0x20
and eax, 0xffffffc0
mov dword [ebp - 0x4c], eax
xor eax, eax
nop
movups xmm0, xmmword [ebp + eax - 0x14]
add dl, 0x40
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
mov al, cl
sub al, 0x10
movzx eax, al
movups xmm0, xmmword [ebp + eax - 0x14]
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
movzx eax, cl
movups xmm0, xmmword [ebp + eax - 0x14]
movups xmm1, xmmword [eax + esi]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
mov al, cl
add cl, 0x40
add al, 0x10
movzx eax, al
movups xmm1, xmmword [eax + esi]
movups xmm0, xmmword [ebp + eax - 0x14]
pxor xmm1, xmm0
movups xmmword [eax + edi], xmm1
movzx eax, dl
cmp eax, dword [ebp - 0x4c]
jb 0x5c1a60
movzx eax, dl
cmp eax, ebx
jae 0x5c1ae3
nop word [eax + eax]
mov cl, byte [eax + esi]
inc dl
xor cl, byte [ebp + eax - 0x14]
mov byte [eax + edi], cl
movzx eax, dl
cmp eax, ebx
jb 0x5c1ad0
cmp dword [ebp + 0xc], 1
jne 0x5c1b33
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push edi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.005c9900
add esp, 0xc
mov edx, 0x10
xor ecx, ecx
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c1b05
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
mov eax, dword [ebp + 0x10]
add edi, ebx
sub eax, ebx
add esi, ebx
mov bl, byte [ebp - 0x35]
xor dl, dl
mov dword [ebp + 0x10], eax
test bl, bl
je 0x5c1b5e
movzx eax, dl
lea ecx, [ebp - 0x25]
sub ecx, eax
add byte [ecx], 1
jne 0x5c1b5b
inc dl
cmp dl, bl
jb 0x5c1b48
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x5c1990
xor dl, dl
test bl, bl
je 0x5c1b8a
nop dword [eax]
movzx eax, dl
mov ecx, 0xf
sub ecx, eax
cmp ecx, 0x10
jae 0x5c1bfb
inc dl
mov byte [ebp + ecx - 0x34], 0
cmp dl, bl
jb 0x5c1b70
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x10
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x44]
call fcn.005a8670
add esp, 0x14
test eax, eax
jne 0x5c1bea
xor ecx, ecx
mov edx, 0x10
nop
mov al, byte [ebp + ecx - 0x14]
lea ecx, [ecx + 1]
xor byte [ebp + ecx - 0x25], al
sub edx, 1
jne 0x5c1bb0
push dword [ebp + 0x30]
lea eax, [ebp - 0x24]
push eax
push dword [ebp - 0x58]
call fcn.005c9900
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0058bb64
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff3
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0058bb64
mov esp, ebp
pop ebp
ret
call fcn.0058c358
int3