Function at 0x4e252f
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2c
mov eax, dword [0x5c9040]
xor eax, esp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x34]
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x18], eax
test byte [esi + 0x78], 0x10
jne 0x4e2571
cmp dword [esi + 0x6c], 0
lea edx, [esi + 0x70]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x10], edx
je 0x4e2585
mov eax, dword [edx]
add eax, ebx
cmp eax, dword [esi + 0x64]
jbe 0x4e2589
push 0xfffffffffffffff3
pop eax
mov ecx, dword [esp + 0x30]
pop esi
pop ebx
xor ecx, esp
call fcn.0051b034
add esp, 0x2c
ret
mov dword [esp + 0x10], edx
cmp dword [esp + 0x40], ebx
jb 0x4e2571
push edi
xor edi, edi
mov dword [ecx], ebx
mov dword [esp + 0x10], edi
test ebx, ebx
je 0x4e272e
push ebp
mov ecx, dword [edx]
mov edi, ebx
mov ebp, ecx
and ebp, 0xf
push 0x10
pop eax
sub eax, ebp
cmp eax, ebx
cmovbe edi, eax
lea eax, [edi + ecx]
mov dword [edx], eax
mov al, byte [esi + 0x75]
cmp al, 1
je 0x4e25c4
cmp al, 3
jne 0x4e263d
test edi, edi
je 0x4e25ea
mov ebx, dword [esp + 0x1c]
xor eax, eax
mov dl, al
lea ecx, [eax + esi]
mov al, byte [eax + ebx]
xor byte [ecx + ebp], al
inc dl
movzx eax, dl
cmp eax, edi
jb 0x4e25d0
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
lea eax, [edi + ebp]
cmp eax, 0x10
je 0x4e25f9
mov eax, dword [edx]
cmp eax, dword [esi + 0x64]
jne 0x4e261a
lea eax, [esp + 0x24]
mov edx, esi
push eax
push esi
push 0x10
lea ecx, [esi + 0x20]
call fcn.004c86a7
add esp, 0xc
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4e2725
push dword [esp + 0x20]
mov edx, ebp
mov ecx, esi
push dword [esp + 0x20]
push edi
call fcn.004e223e
mov edx, eax
add esp, 0xc
mov dword [esp + 0x14], edx
test edx, edx
jne 0x4e2729
mov al, byte [esi + 0x75]
test al, al
je 0x4e264c
cmp al, 2
jne 0x4e26db
lea eax, [esp + 0x28]
mov edx, ebp
push eax
push dword [esp + 0x20]
mov ecx, esi
push edi
call fcn.004e223e
add esp, 0xc
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4e2729
xor dl, dl
test edi, edi
je 0x4e2687
lea ecx, [eax + esi]
mov al, byte [esp + eax + 0x28]
xor byte [ecx + ebp], al
inc dl
movzx eax, dl
cmp eax, edi
jb 0x4e2674
push edi
lea eax, [esp + 0x2c]
push eax
push dword [esp + 0x28]
call fcn.0051c650
push 0x10
lea eax, [esp + 0x38]
push 0
push eax
mov eax, dword [fcn.0051c010]
call eax
lea eax, [edi + ebp]
add esp, 0x18
cmp eax, 0x10
je 0x4e26bc
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, dword [esi + 0x64]
jne 0x4e26e7
lea eax, [esp + 0x24]
mov edx, esi
push eax
push esi
push 0x10
lea ecx, [esi + 0x20]
call fcn.004c86a7
mov edx, eax
add esp, 0xc
mov dword [esp + 0x14], edx
test edx, edx
jne 0x4e2725
lea eax, [edi + ebp]
cmp eax, 0x10
je 0x4e26ee
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, dword [esi + 0x64]
jne 0x4e270d
xor dl, dl
cmp byte [esi + 0x74], dl
jbe 0x4e2709
movzx eax, dl
mov ecx, esi
sub ecx, eax
add byte [ecx + 0x1f], 1
jne 0x4e2709
inc dl
cmp dl, byte [esi + 0x74]
jb 0x4e26f5
mov edx, dword [esp + 0x18]
add dword [esp + 0x1c], edi
sub ebx, edi
add dword [esp + 0x20], edi
mov dword [esp + 0x40], ebx
test ebx, ebx
jne 0x4e25a1
jmp 0x4e2729
or dword [esi + 0x78], 0x10
mov edi, dword [esp + 0x14]
pop ebp
push 0x10
lea eax, [esp + 0x28]
push 0
push eax
mov eax, dword [fcn.0051c010]
call eax
add esp, 0xc
mov eax, edi
pop edi
jmp 0x4e2574