Function at 0x4a4940
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x1250]
mov eax, 0x1250
call fcn.0052f720
push 0xffffffffffffffff
push 0x550dbd
mov eax, dword fs:[0]
push eax
sub esp, 0x64
mov eax, dword [0x58bb30]
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], 0x557718
mov dword [ebp + 4], 0x557718
mov dword [ebp + 8], 0x557718
mov dword [ebp + 0xc], 0x557718
mov dword [ebp + 0x10], 0x557718
mov dword [ebp + 0x14], 0x557718
mov dword [ebp + 0x18], 0x557718
mov dword [ebp + 0x1c], 0x557718
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.004bed70
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 [0x55670c]
mov ecx, ebx
call esi
push 0
push 0
push 0
push 1
mov ecx, ebx
call fcn.00474910
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebx
call esi
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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.004a51d0
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.00494ea0
lea ecx, [edi + 0x58f8]
mov byte [edi + 0x48a0], 1
push 2
call fcn.00494b20
push 0
push 0x566d34
push 0
push 0
push 0
push 0
mov ecx, edi
call fcn.0046fbb0
mov eax, dword [edi]
push 0
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55670c]
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 0x4a4b35
cmp eax, 0x20
ja 0x4a4b08
mov eax, 0x20
push eax
push 0
mov dword [ebp - 0x14], eax
call fcn.00537b8a
mov esi, eax
add esp, 8
mov dword [ebp - 0x30], esi
test esi, esi
jne 0x4a4b29
mov ecx, 0x5d281c
call fcn.004875a0
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.00531c60
mov esi, dword [ebp - 0x18]
add esp, 0xc
mov dword [ebp - 0x14], 0xfffffff
test esi, esi
jl 0x4a4d31
jg 0x4a4b64
test ebx, ebx
je 0x4a4d31
call fcn.004bdd00
test esi, esi
ja 0x4a4ba2
jb 0x4a4b77
cmp ebx, 0x200
jae 0x4a4ba2
mov edi, ebx
mov eax, 0x200
sub eax, edi
push eax
lea eax, [ebp + 0x104c]
add eax, edi
push 0
push eax
call fcn.00531c60
add esp, 0xc
mov dword [ebp - 0x2c], 0
xor edx, edx
mov dword [ebp - 0x18], edx
jmp 0x4a4bb6
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 [0x55670c]
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 0x4a4c00
mov edi, dword [ebp - 0x24]
lea eax, [ebp + 0x104c]
push 0x200
push eax
push 0xffffffffffffffff
call fcn.004826b0
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 0x4a4ccd
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebx]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x55670c]
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 [0x55670c]
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.0048fd00
mov eax, dword [esi]
push 0
push edi
push ebx
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55670c]
mov ecx, dword [ebp - 0x10]
call esi
push 0x1000
lea eax, [ebp + 0x4c]
push eax
push dword [ebp - 0x14]
call fcn.004826b0
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 0x4a4d01
mov eax, dword [ebp - 0x48]
cmp byte [eax + 0x704c], cl
jne 0x4a4d01
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 0x5675f4
call fcn.004c08f0
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 0x4a4b64
jl 0x4a4d31
test ebx, ebx
jne 0x4a4b64
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 [0x55670c]
mov ecx, ebx
call esi
push edi
lea eax, [ebp + 0x4c]
mov ecx, ebx
push eax
call fcn.0048fd00
push edi
lea eax, [ebp + 0x4c]
push eax
push dword [ebp - 0x14]
call fcn.004826b0
push dword [ebp - 0x34]
mov edi, dword [ebp - 0x30]
mov ecx, ebx
push edi
mov esi, eax
call fcn.0048fd00
push dword [ebp - 0x34]
push edi
push esi
call fcn.004826b0
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 [0x55670c]
mov ecx, ebx
call esi
lea ecx, [ebp - 0x70]
call fcn.004a7560
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x70]
push 8
push str.Protect
call fcn.004a78c0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x70]
call fcn.004a77b0
push dword [ebp - 0x1c]
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x70]
push esi
call fcn.004a7810
lea eax, [ebx + 0x58b8]
push eax
lea ecx, [ebp - 0x70]
call fcn.004a7690
mov eax, dword [ebp - 0x20]
mov ecx, ebx
push 0
push 0x566d34
shl eax, 8
push 0
add eax, esi
push 0
add eax, eax
push eax
push 0
call fcn.0046fbb0
mov eax, dword [ebx]
push 2
push 0
push 0
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x55670c]
mov ecx, ebx
call esi
xor eax, eax
mov dword [ebp], 0x557718
lea ecx, [ebp]
mov dword [ebp + 4], 0x557718
mov dword [ebp + 8], 0x557718
mov dword [ebp + 0xc], 0x557718
mov dword [ebp + 0x10], 0x557718
mov dword [ebp + 0x14], 0x557718
mov dword [ebp + 0x18], 0x557718
mov dword [ebp + 0x1c], 0x557718
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.004bed70
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x4a4e9e
push eax
call fcn.00537b6f
add esp, 4
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x4a4eb2
push edi
call fcn.00537b6f
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.0052f708
lea esp, [ebp + 0x1250]
pop ebp
ret 8