Function at 0x600520
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.00621490
mov eax, dword [0x704034]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xdc]
mov edx, dword [esp + 0xec]
push ebp
mov ebp, dword [esp + 0xec]
push esi
mov esi, dword [esp + 0x108]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xfc]
push edi
mov edi, dword [esp + 0xf0]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x104]
shr edi, 3
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x2c], edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x44], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x40], 2
cmp edi, 0x14
je 0x6005d3
cmp edi, 0x1c
je 0x6005d3
cmp edi, 0x20
je 0x6005d3
pop edi
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0xd4]
xor ecx, esp
call fcn.00620676
add esp, 0xd8
ret
test ebp, ebp
jne 0x6005e6
call fcn.005cffb0
mov edx, dword [esp + 0x2c]
mov ebp, eax
mov dword [esp + 0x38], eax
mov eax, 0x200
cmp dword [esp + 0xec], eax
cmovae eax, dword [esp + 0xec]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xfc]
test eax, eax
je 0x60061a
xor ecx, ecx
cmp eax, edi
cmovb edx, ecx
mov dword [esp + 0x2c], edx
cmp eax, edi
cmova eax, edi
mov dword [esp + 0xfc], eax
test edx, edx
je 0x60063c
push eax
push edx
lea eax, [esp + 0xa8]
push eax
call fcn.00638910
add esp, 0xc
call fcn.005c4370
mov dword [esp + 0x24], eax
test eax, eax
je 0x600c92
push ebx
call fcn.005bdf50
mov ebx, eax
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x600c85
push ebx
call fcn.005bdfd0
push ebx
call fcn.005bdef0
push dword [esp + 0x18]
mov ebx, eax
call fcn.005bdef0
push dword [esp + 0x1c]
mov dword [esp + 0x34], eax
call fcn.005bdef0
push dword [esp + 0x20]
mov dword [esp + 0x4c], eax
call fcn.005bdef0
push dword [esp + 0x24]
mov dword [esp + 0x38], eax
call fcn.005bdef0
push dword [esp + 0x28]
mov dword [esp + 0x6c], eax
call fcn.005bdef0
push dword [esp + 0x2c]
mov dword [esp + 0x6c], eax
call fcn.005bdef0
push dword [esp + 0x30]
mov dword [esp + 0x3c], eax
call fcn.005bdef0
add esp, 0x24
mov dword [esp + 0x14], eax
test eax, eax
je 0x600c72
mov eax, dword [esp + 0x34]
dec eax
push eax
call fcn.005b7610
push eax
push dword [esp + 0x1c]
call fcn.005d39c0
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x2c]
push 0
push esi
call fcn.005fe5b0
inc dword [esp + 0x38]
add esp, 0xc
test eax, eax
je 0x600c72
cmp dword [esp + 0x100], 0
je 0x60072c
cmp dword [esp + 0x30], 0
je 0x60072c
xor esi, esi
mov dword [esp + 0x100], esi
jmp 0x60074a
lea eax, [esp + 0xa4]
push edi
push eax
call fcn.005bfcf0
add esp, 8
test eax, eax
jle 0x600c72
mov esi, 1
push edi
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0x8c]
push eax
call fcn.00638910
push edi
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0xd8]
push eax
call fcn.00638910
lea eax, [edi - 1]
add esp, 0x18
test eax, eax
js 0x60078f
add byte [esp + eax + 0x84], 1
jne 0x60078f
sub eax, 1
jns 0x600780
push 0
push ebp
push 0
lea eax, [esp + 0x70]
push eax
lea eax, [esp + 0xb4]
push edi
push eax
call fcn.005d5140
add esp, 0x18
test eax, eax
je 0x600c72
push 0
push ebp
push 0
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0x94]
push edi
push eax
call fcn.005d5140
add esp, 0x18
test eax, eax
je 0x600c72
xor ecx, ecx
test edi, edi
je 0x600833
cmp edi, 0x20
jb 0x600833
mov eax, edi
and eax, 0x8000001f
jns 0x6007f1
dec eax
or eax, 0xffffffe0
inc eax
mov edx, edi
sub edx, eax
nop word [eax + eax]
movups xmm0, xmmword [esp + ecx + 0x64]
movups xmm1, xmmword [esp + ecx + 0xc4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x64], xmm1
movups xmm0, xmmword [esp + ecx + 0x74]
movups xmm1, xmmword [esp + ecx + 0xd4]
pxor xmm1, xmm0
movups xmmword [esp + ecx + 0x74], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x600800
cmp ecx, edi
jge 0x600850
nop word [eax + eax]
mov al, byte [esp + ecx + 0xc4]
xor byte [esp + ecx + 0x64], al
inc ecx
cmp ecx, edi
jl 0x600840
push dword [esp + 0x20]
or byte [esp + 0x68], 0x80
lea eax, [esp + 0x68]
or byte [esp + edi + 0x67], 1
push edi
push eax
call fcn.005b6c40
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x1c]
push esi
push dword [esp + 0x18]
push 0x32
push dword [esp + 0x30]
call fcn.005fe880
add esp, 0x14
test eax, eax
jg 0x60089e
jne 0x600c72
mov esi, dword [esp + 0x1c]
jmp 0x6006f5
mov ebp, dword [esp + 0x1c]
push 0
push 2
push ebp
call fcn.005fe5b0
add esp, 0xc
test eax, eax
je 0x600c72
push 0
push 3
push ebp
call fcn.005fe5b0
add esp, 0xc
test eax, eax
je 0x600c72
mov ecx, dword [esp + 0x34]
mov eax, 0xcccccccd
xor esi, esi
mov dword [esp + 0x40], esi
lea ecx, [ecx - 1]
mul ecx
mov ebp, edx
shr ebp, 7
test esi, esi
je 0x600900
push esi
push 0
push dword [esp + 0x24]
call fcn.005fe5b0
add esp, 0xc
test eax, eax
je 0x600c72
push 0
push dword [esp + 0x3c]
call fcn.005b7560
add esp, 8
xor esi, esi
test ebp, ebp
js 0x6009a9
lea eax, [edi - 1]
test eax, eax
js 0x60092f
nop
add byte [esp + eax + 0x84], 1
jne 0x60092f
sub eax, 1
jns 0x600920
push 0
push dword [esp + 0x40]
lea eax, [esp + 0x6c]
push 0
push eax
lea eax, [esp + 0x94]
push edi
push eax
call fcn.005d5140
add esp, 0x18
test eax, eax
je 0x600c72
push ebx
lea eax, [esp + 0x68]
push edi
push eax
call fcn.005b6c40
add esp, 0xc
test eax, eax
je 0x600c72
lea eax, [edi*8]
imul eax, esi
push eax
push ebx
push ebx
call fcn.005d39c0
add esp, 0xc
test eax, eax
je 0x600c72
mov eax, dword [esp + 0x38]
push ebx
push eax
push eax
call fcn.005be200
add esp, 0xc
test eax, eax
je 0x600c72
inc esi
cmp esi, ebp
jle 0x600918
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
dec eax
push eax
push esi
call fcn.005b72f0
add esp, 8
test eax, eax
je 0x600c72
push esi
mov esi, dword [esp + 0x54]
push esi
call fcn.005b7140
add esp, 8
test eax, eax
je 0x600c72
push dword [esp + 0x14]
push esi
push esi
call fcn.005be200
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x20]
push ebx
call fcn.005d3b40
add esp, 8
test eax, eax
je 0x600c72
push dword [esp + 0x10]
push ebx
push esi
push dword [esp + 0x58]
push 0
call fcn.005c3d80
add esp, 0x14
test eax, eax
je 0x600c72
call fcn.005b7610
push eax
push dword [esp + 0x50]
push ebx
call fcn.005be290
add esp, 0xc
test eax, eax
je 0x600c72
push ebx
push esi
mov esi, dword [esp + 0x20]
push esi
call fcn.005be290
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x14]
push esi
call fcn.005b6df0
add esp, 8
test eax, eax
js 0x600a87
mov esi, dword [esp + 0x1c]
push esi
push 1
push dword [esp + 0x18]
push 0x32
push dword [esp + 0x28]
call fcn.005fe880
add esp, 0x14
test eax, eax
jg 0x600aa9
jne 0x600c72
mov esi, dword [esp + 0x40]
inc esi
mov dword [esp + 0x40], esi
cmp esi, 0x1000
jl 0x6008e5
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x1c]
jmp 0x6006f5
push 1
push 2
push esi
call fcn.005fe5b0
add esp, 0xc
test eax, eax
je 0x600c72
call fcn.005b7610
push eax
push dword [esp + 0x1c]
push dword [esp + 0x1c]
call fcn.005be290
add esp, 0xc
test eax, eax
je 0x600c72
mov ebp, dword [esp + 0x10]
push ebp
push dword [esp + 0x24]
push dword [esp + 0x1c]
push 0
push ebx
call fcn.005c3d80
add esp, 0x14
test eax, eax
je 0x600c72
push 2
push dword [esp + 0x18]
call fcn.005b7560
add esp, 8
test eax, eax
je 0x600c72
push ebp
push dword [esp + 0x1c]
push dword [esp + 0x30]
call fcn.005c43d0
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x28]
push ebp
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x38]
call fcn.005c2810
add esp, 0x18
test eax, eax
je 0x600c72
nop dword [eax]
mov ecx, dword [esp + 0x24]
cmp dword [ecx + 4], 1
jne 0x600baa
mov eax, dword [ecx]
cmp dword [eax], 1
jne 0x600baa
cmp dword [ecx + 0xc], 0
jne 0x600baa
call fcn.005b7610
push eax
mov eax, dword [esp + 0x18]
push eax
push eax
call fcn.005be200
add esp, 0xc
test eax, eax
je 0x600c72
push dword [esp + 0x28]
inc dword [esp + 0x48]
push ebp
push dword [esp + 0x20]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x38]
call fcn.005c2810
add esp, 0x18
test eax, eax
jne 0x600b50
jmp 0x600c72
push 1
push 3
push esi
call fcn.005fe5b0
add esp, 0xc
test eax, eax
je 0x600c72
mov dword [esp + 0x48], 1
mov ebx, dword [esp + 0x54]
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x600bdb
push eax
call fcn.005b7250
add esp, 4
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x600beb
push eax
call fcn.005b7250
add esp, 4
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x600bfb
push eax
call fcn.005b7250
add esp, 4
push dword [esp + 0x18]
call fcn.005b7210
push dword [esp + 0x24]
mov dword [ebx + 0xc], eax
call fcn.005b7210
push dword [esp + 0x2c]
mov dword [ebx + 0x10], eax
call fcn.005b7210
add esp, 0xc
mov dword [ebx + 0x14], eax
cmp dword [ebx + 0xc], 0
je 0x600c6a
cmp dword [ebx + 0x10], 0
je 0x600c6a
test eax, eax
je 0x600c6a
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x600c40
mov eax, dword [esp + 0x40]
mov dword [ecx], eax
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x600c4e
mov eax, dword [esp + 0x44]
mov dword [ecx], eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x600c72
push edi
lea ecx, [esp + 0xa8]
push ecx
push eax
call fcn.00638910
add esp, 0xc
jmp 0x600c72
mov dword [esp + 0x48], 0
mov ebx, dword [esp + 0x10]
push ebx
call fcn.005bde80
push ebx
call fcn.005bdec0
add esp, 8
push dword [esp + 0x28]
call fcn.005c4330
add esp, 4
pop ebx
mov ecx, dword [esp + 0xe0]
mov eax, dword [esp + 0x44]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00620676
add esp, 0xd8
ret