Function at 0x524120
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x613384]
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, 2
je 0x5245b5
cmp ecx, 0x10
ja 0x5245b5
test cl, 1
jne 0x5245b5
cmp edx, 7
jb 0x5245b5
cmp edx, 0xd
ja 0x5245b5
mov ebx, dword [ebp + 0x20]
cmp ebx, 0xff00
jae 0x5245b5
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.005478f0
mov dl, byte [ebp - 0x35]
add esp, 0xc
mov eax, dword [ebp + 0x10]
test dl, dl
je 0x5241f2
lea ecx, [ebp - 5]
movzx edx, dl
mov byte [ecx], al
lea ecx, [ecx - 1]
shr eax, 8
sub edx, 1
jne 0x5241e5
test eax, eax
jne 0x5245b5
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 0x524210
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
test ebx, ebx
je 0x52431d
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.005478f0
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 0x524280
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
test ebx, ebx
je 0x52431a
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.005478f0
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 0x5242e0
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
mov eax, dword [ebp - 0x48]
add eax, esi
mov dword [ebp - 0x48], eax
sub ebx, esi
jne 0x5242b5
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.005478f0
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.00546c70
mov eax, dword [ebp + 0x10]
add esp, 0x18
mov byte [ebp - 0x25], 1
test eax, eax
je 0x524536
nop dword [eax + eax]
cmp eax, 0x10
mov ebx, eax
mov eax, 0x10
cmova ebx, eax
cmp dword [ebp + 0xc], 0
jne 0x5243be
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push esi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.005478f0
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 0x524390
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
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.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
xor dl, dl
test ebx, ebx
je 0x524493
cmp ebx, 0x40
jb 0x524493
mov al, bl
dec al
movzx ecx, al
lea eax, [ebp - 0x14]
add eax, ecx
cmp edi, eax
ja 0x524414
lea eax, [ebp - 0x14]
mov dword [ebp - 0x4c], eax
lea eax, [ecx + edi]
cmp eax, dword [ebp - 0x4c]
jae 0x524493
lea eax, [ecx + esi]
cmp edi, eax
ja 0x524422
lea eax, [ecx + edi]
cmp eax, esi
jae 0x524493
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 0x524430
movzx eax, dl
cmp eax, ebx
jae 0x5244b3
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 0x5244a0
cmp dword [ebp + 0xc], 1
jne 0x524503
push ebx
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
push edi
push eax
movups xmmword [ebp - 0x14], xmm0
call fcn.005478f0
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 0x5244d5
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x24]
push eax
push 0x10
push eax
push dword [ebp - 0x44]
call fcn.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
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 0x52452e
movzx eax, dl
lea ecx, [ebp - 0x25]
sub ecx, eax
add byte [ecx], 1
jne 0x52452b
inc dl
cmp dl, bl
jb 0x524518
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x524360
xor dl, dl
test bl, bl
je 0x52455a
nop dword [eax]
movzx eax, dl
mov ecx, 0xf
sub ecx, eax
cmp ecx, 0x10
jae 0x5245cb
inc dl
mov byte [ebp + ecx - 0x34], 0
cmp dl, bl
jb 0x524540
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.00519ab0
add esp, 0x14
test eax, eax
jne 0x5245ba
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 0x524580
push dword [ebp + 0x30]
lea eax, [ebp - 0x24]
push eax
push dword [ebp - 0x58]
call fcn.005478f0
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00544c5a
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.00544c5a
mov esp, ebp
pop ebp
ret
call fcn.005453ce
int3