Function at 0x4a5320
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x1250]
mov eax, 0x1250
call fcn.00530230
push 0xffffffffffffffff
push 0x551b4d
mov eax, dword fs:[0]
push eax
sub esp, 0x64
mov eax, dword [0x58cb30]
xor eax, ebp
mov dword [ebp + 0x124c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0x1258]
lea ecx, [ebp]
mov edi, dword [ebp + 0x125c]
xor eax, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp], 0x558718
mov dword [ebp + 4], 0x558718
mov dword [ebp + 8], 0x558718
mov dword [ebp + 0xc], 0x558718
mov dword [ebp + 0x10], 0x558718
mov dword [ebp + 0x14], 0x558718
mov dword [ebp + 0x18], 0x558718
mov dword [ebp + 0x1c], 0x558718
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], eax
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], eax
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], 0x91
call fcn.004bf7b0
mov eax, dword [ebx + 0x1aa4]
mov dword [ebp - 0x48], eax
mov eax, dword [ebx]
push 0
push 0
mov byte [ebx + 0x6d53], 1
mov esi, dword [eax + 0x10]
mov ecx, esi
mov eax, dword [ebx + 0x6d58]
add eax, dword [ebx + 0x24a0]
push eax
call dword [0x55770c]
mov ecx, ebx
call esi
push 0
push 0
push 0
push 1
mov ecx, ebx
call fcn.004750e0
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
mov ebx, eax
mov dword [ebp - 0x18], edx
push edx
push ebx
push edi
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], edx
call fcn.004a5bb0
mov edi, dword [ebp - 0x10]
push 0x14
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x38], 0
lea ecx, [edi + 0x4890]
mov dword [ebp - 0x1c], 0
call fcn.00495840
lea ecx, [edi + 0x58f8]
mov byte [edi + 0x48a0], 1
push 2
call fcn.004954c0
push 0
push 0x567d44
push 0
push 0
push 0
push 0
mov ecx, edi
call fcn.00470380
mov eax, dword [edi]
push 0
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, edi
call esi
mov eax, dword [ebp - 0x20]
xor esi, esi
mov dword [ebp - 0x58], esi
xor edi, edi
shl eax, 9
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x54], eax
test eax, eax
je 0x4a5515
cmp eax, 0x20
ja 0x4a54e8
mov eax, 0x20
push eax
push 0
mov dword [ebp - 0x14], eax
call fcn.0053869a
mov esi, eax
add esp, 8
mov dword [ebp - 0x30], esi
test esi, esi
jne 0x4a5509
mov ecx, 0x5d381c
call fcn.00487da0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 4], 0
push eax
push 0
push esi
call fcn.00532770
mov esi, dword [ebp - 0x18]
add esp, 0xc
mov dword [ebp - 0x14], 0xfffffff
test esi, esi
jl 0x4a5711
jg 0x4a5544
test ebx, ebx
je 0x4a5711
call fcn.004be750
test esi, esi
ja 0x4a5582
jb 0x4a5557
cmp ebx, 0x200
jae 0x4a5582
mov edi, ebx
mov eax, 0x200
sub eax, edi
push eax
lea eax, [ebp + 0x104c]
add eax, edi
push 0
push eax
call fcn.00532770
add esp, 0xc
mov dword [ebp - 0x2c], 0
xor edx, edx
mov dword [ebp - 0x18], edx
jmp 0x4a5596
add ebx, 0xfffffe00
mov edi, 0x200
mov dword [ebp - 0x2c], ebx
adc esi, 0xffffffff
mov dword [ebp - 0x18], esi
mov ebx, dword [ebp - 0x10]
push edi
mov eax, dword [ebx]
mov esi, dword [eax + 0xc]
lea eax, [ebp + 0x104c]
push eax
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
mov eax, dword [ebp - 0x28]
lea edx, [ebp + 0x104d]
mov ecx, dword [ebp - 0x30]
lea ebx, [ebp + 0x104c]
shl eax, 9
mov esi, edx
add ecx, eax
sub ebx, ecx
sub esi, ecx
mov dword [ebp - 0x44], esi
mov esi, 0x80
mov edi, dword [ebp - 0x44]
lea eax, [ecx + 2]
lea ecx, [ecx]
movzx ecx, byte [edx - 1]
lea edx, [edx + 4]
xor byte [eax - 2], cl
lea eax, [eax + 4]
movzx ecx, byte [edx - 4]
xor byte [eax - 5], cl
movzx ecx, byte [ebx + eax - 4]
xor byte [eax - 4], cl
movzx ecx, byte [edi + eax - 4]
xor byte [eax - 3], cl
sub esi, 1
jne 0x4a55e0
mov edi, dword [ebp - 0x24]
lea eax, [ebp + 0x104c]
push 0x200
push eax
push 0xffffffffffffffff
call fcn.00482e80
mov byte [ebp + edi + 0x4c], al
shr eax, 8
mov byte [ebp + edi + 0x4d], al
add edi, 2
mov dword [ebp - 0x24], edi
cmp edi, 0x1000
jne 0x4a56ad
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
mov ecx, dword [ebp - 0x10]
mov ebx, eax
push 2
push 0
push 0
mov ecx, dword [ecx]
mov edi, edx
mov esi, dword [ecx + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, dword [ebp - 0x10]
call esi
mov esi, dword [ebp - 0x10]
lea eax, [ebp + 0x4c]
push 0x1000
push eax
mov ecx, esi
call fcn.00490400
mov eax, dword [esi]
push 0
push edi
push ebx
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, dword [ebp - 0x10]
call esi
push 0x1000
lea eax, [ebp + 0x4c]
push eax
push dword [ebp - 0x14]
call fcn.00482e80
xor edi, edi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x24], edi
mov ebx, dword [ebp - 0x38]
movzx ecx, bl
or ecx, 0
jne 0x4a56e1
mov eax, dword [ebp - 0x48]
cmp byte [eax + 0x704c], cl
jne 0x4a56e1
push dword [ebp - 0x3c]
mov eax, dword [ebp - 0x1c]
mov ecx, ebx
push dword [ebp - 0x40]
shld eax, ecx, 9
push eax
shl ecx, 9
push ecx
push 0x5687f4
call fcn.004c1330
mov eax, dword [ebp - 0x28]
add ebx, 1
mov esi, dword [ebp - 0x18]
adc dword [ebp - 0x1c], 0
inc eax
cmp eax, dword [ebp - 0x20]
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x2c]
sbb ecx, ecx
and ecx, eax
mov dword [ebp - 0x28], ecx
test esi, esi
jg 0x4a5544
jl 0x4a5711
test ebx, ebx
jne 0x4a5544
mov ebx, dword [ebp - 0x10]
push 2
push 0
push 0
mov eax, dword [ebx]
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
push edi
lea eax, [ebp + 0x4c]
mov ecx, ebx
push eax
call fcn.00490400
push edi
lea eax, [ebp + 0x4c]
push eax
push dword [ebp - 0x14]
call fcn.00482e80
push dword [ebp - 0x34]
mov edi, dword [ebp - 0x30]
mov ecx, ebx
push edi
mov esi, eax
call fcn.00490400
push dword [ebp - 0x34]
push edi
push esi
call fcn.00482e80
not eax
mov dword [ebx + 0x58f8], 2
mov dword [ebx + 0x58fc], eax
mov eax, dword [ebx]
push 0
push dword [ebp - 0x3c]
mov esi, dword [eax + 0x10]
mov ecx, esi
push dword [ebp - 0x40]
call dword [0x55770c]
mov ecx, ebx
call esi
lea ecx, [ebp - 0x70]
call fcn.004a7f40
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x70]
push 8
push str.Protect
call fcn.004a82a0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x70]
call fcn.004a8190
push dword [ebp - 0x1c]
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x70]
push esi
call fcn.004a81f0
lea eax, [ebx + 0x58b8]
push eax
lea ecx, [ebp - 0x70]
call fcn.004a8070
mov eax, dword [ebp - 0x20]
mov ecx, ebx
push 0
push 0x567d44
shl eax, 8
push 0
add eax, esi
push 0
add eax, eax
push eax
push 0
call fcn.00470380
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55770c]
mov ecx, ebx
call esi
xor eax, eax
mov dword [ebp], 0x558718
lea ecx, [ebp]
mov dword [ebp + 4], 0x558718
mov dword [ebp + 8], 0x558718
mov dword [ebp + 0xc], 0x558718
mov dword [ebp + 0x10], 0x558718
mov dword [ebp + 0x14], 0x558718
mov dword [ebp + 0x18], 0x558718
mov dword [ebp + 0x1c], 0x558718
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], eax
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], eax
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], eax
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x44], eax
mov dword [ebp + 0x48], 0x92
call fcn.004bf7b0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x4a587e
push eax
call fcn.0053867f
add esp, 4
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x4a5892
push edi
call fcn.0053867f
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x124c]
xor ecx, ebp
call fcn.00530218
lea esp, [ebp + 0x1250]
pop ebp
ret 8