Function at 0x4572f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x274
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 8], edi
call fcn.0040fc50
mov esi, eax
mov dword [ebp - 0x20], esi
test esi, esi
js 0x457535
lea eax, [esi*2 + 2]
cmp ebx, eax
jb 0x457535
push ebx
lea eax, [ebp - 0x270]
push 0
push eax
call fcn.00469c30
add esp, 8
lea ecx, [ebp - 0x270]
mov eax, ebx
inc edi
sub eax, esi
add edi, esi
dec eax
mov dword [ebp - 0x24], edi
push esi
push ecx
mov ecx, dword [ebp + 0x10]
mov edx, edi
push eax
mov dword [ebp - 4], eax
call fcn.00456ef0
add esp, 0x10
test eax, eax
jne 0x45753a
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x270]
inc eax
push esi
mov edx, eax
mov dword [ebp - 0x10], eax
call fcn.00455230
push dword [ebp - 4]
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x270]
add eax, esi
lea edx, [ebp - 0x270]
push eax
push esi
call fcn.00456ef0
add esp, 0x10
test eax, eax
je 0x4573c2
lea ecx, [ebp - 0x270]
test esi, esi
je 0x45753a
nop dword [eax]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub esi, 1
jne 0x4573b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp - 4]
lea edx, [ebp - 0x270]
mov ecx, edi
add edx, esi
call fcn.00455230
add esp, 4
lea ecx, [ebp - 0x270]
mov eax, ebx
test ebx, ebx
je 0x4573ee
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x4573e3
mov eax, dword [ebp - 0x1c]
lea ecx, [esi*2 + 1]
dec eax
mov dword [ebp - 0x18], 0
mov edx, ecx
mov dword [ebp - 4], 0
mov dword [ebp - 0xc], ecx
mov ebx, 1
mov dword [ebp - 0x14], eax
cmp edx, eax
jae 0x4574ab
sub eax, edx
mov ecx, ebx
cmp eax, 2
jb 0x45747e
mov eax, dword [ebp - 0x14]
mov edi, ecx
dec eax
xor esi, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
movzx ecx, byte [edx + eax]
mov eax, edi
neg ecx
shr ecx, 0x1f
sub eax, ecx
and ebx, eax
mov eax, dword [ebp - 0x10]
add esi, ebx
movzx ecx, byte [eax + edx]
mov eax, edi
neg ecx
add edx, 2
shr ecx, 0x1f
sub eax, ecx
mov ecx, edx
and ebx, eax
mov eax, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 4], eax
cmp edx, dword [ebp - 0xc]
jb 0x457430
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x20]
mov dword [ebp - 4], eax
cmp ecx, dword [ebp - 0x14]
jae 0x457499
mov ecx, 1
mov eax, dword [ebp - 8]
movzx eax, byte [edx + eax]
neg eax
shr eax, 0x1f
sub ecx, eax
and ecx, ebx
lea ebx, [esi*2 + 1]
add ebx, ecx
jmp 0x4574a0
lea ebx, [esi*2 + 1]
mov eax, dword [ebp - 0x18]
add eax, dword [ebp - 4]
add ebx, eax
mov dword [ebp - 0xc], ebx
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x68]
push esi
push eax
push 0
xor edx, edx
call fcn.0040fd50
add esp, 0xc
test eax, eax
jne 0x45753a
xor ebx, ebx
xor edx, edx
test esi, esi
jle 0x4574e5
nop dword [eax + eax]
movzx ecx, byte [ebp + edx - 0x68]
lea edi, [edi + 1]
movzx eax, byte [edi - 1]
inc edx
xor ecx, eax
or ebx, ecx
cmp edx, esi
jl 0x4574d0
mov edi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
movzx ecx, byte [edi + eax]
movzx eax, byte [eax]
xor ecx, 1
add ecx, ebx
mov ebx, dword [ebp - 0x1c]
add ecx, eax
lea eax, [ecx - 1]
not ecx
shr eax, 0x1f
neg al
shr ecx, 0x1f
movsx esi, al
neg cl
movsx eax, cl
mov ecx, dword [ebp - 8]
and esi, eax
mov edx, esi
lea eax, [edi + 1]
not edx
and eax, esi
and edx, ebx
or edx, eax
mov eax, dword [ebp + 8]
add ecx, edx
sub ebx, edx
mov dword [eax], ecx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff53
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret