Function at 0x40248e
Capabilities:
Encode data using xor

Disassembly:
mov dword [esp - 4], 0
add dword [esp - 4], ebp
sub esp, 4
push esp
pop ebp
sub esp, 0x144
push ebx
push esi
and dword [ebp - 4], 0
push ecx
pop esi
lea eax, [ebp - 0xc]
push edi
push dword [ebp + 0x18]
pop edi
mov dword [0x4de6f4], eax
mov eax, dword [esi + 0x80]
mov dword [ebp - 0xc], 0x6d4e
mov dword [esp - 4], 0
add dword [esp - 4], edi
sub esp, 4
pop ecx
lea ecx, [eax + ecx + 0x2c]
sub ecx, 0x2c
cmp dword [esi + 0x7c], ecx
jge 0x40269d
mov ebx, 0x400
test eax, eax
jle 0x402526
push dword [esi + 0x7c]
pop edx
push dword [esi + 0x78]
pop ecx
sub edx, eax
lea eax, [ecx + eax + 0x14]
sub eax, 0x14
push edx
push eax
push ecx
call dword [sym.imp.MSVCRT.dll_memmove]
cmp eax, dword [esi + 0x80]
je 0x402519
push dword [esi + 0x80]
pop eax
add esp, 0xc
sub dword [esi + 0x7c], eax
and dword [esi + 0x80], 0
lea eax, [ebp - 0x14]
push 5
push eax
push esi
pop ecx
call fcn.0040274f
cmp dword [esp - 4], eax
je 0x40253d
mov dword [esp - 4], eax
sub esp, 4
sub eax, ebx
pop eax
je 0x4026e1
push dword [ebp - 0x11]
call dword [0x4dfcb4]
movzx edi, ax
cmp edi, 0x3e24
jg 0x4026e1
cmp edi, 4
jb 0x4026e1
lea eax, [ebp - 4]
push 4
push eax
push esi
pop ecx
call fcn.0040274f
mov dword [esp - 4], 0
add dword [esp - 4], eax
sub esp, 4
sub eax, ebx
pop eax
je 0x4026e1
sub edi, 4
cmp edi, dword [ebp - 4]
jl 0x4026e1
cmp dword [ebp - 4], 0x12e
jae 0x4026e1
push dword [ebp - 4]
lea eax, [ebp - 0x144]
push esi
pop ecx
push eax
call fcn.0040274f
mov dword [esp - 4], 0
add dword [esp - 4], eax
sub esp, 4
sub eax, ebx
pop eax
je 0x4026e1
sub edi, dword [ebp - 4]
push dword [esi + 0x7c]
pop eax
cmp dword [esp - 4], edi
je 0x4025ea
mov dword [esp - 4], 0
add dword [esp - 4], edi
sub esp, 4
pop ecx
lea ecx, [eax + ecx + 0x10]
sub ecx, 0x10
cmp ecx, 0x3ea6
jg 0x4026e1
push dword [esi + 0x78]
pop ecx
mov dword [esp - 4], 0
add dword [esp - 4], edi
sub esp, 4
lea ecx, [eax + ecx + 0x18]
sub ecx, 0x18
push ecx
push esi
pop ecx
call fcn.0040274f
mov dword [esp - 4], eax
sub esp, 4
sub eax, ebx
pop eax
je 0x4026e1
cmp dword [ebp + 0x1c], 0
je 0x40266f
test edi, edi
jle 0x40266f
mov eax, dword [esi + 0x78]
and dword [ebp - 8], 0
add eax, dword [esi + 0x7c]
test edi, edi
jle 0x40266f
push dword [ebp - 8]
pop ecx
mov dl, byte [esi + 0x74]
lea ecx, [eax + ecx + 4]
sub ecx, 4
xor byte [ecx], dl
mov cl, byte [esi + 0x74]
add cl, 0x25
xor cl, 0xe8
inc dword [ebp - 8]
cmp dword [ebp - 8], edi
mov byte [esi + 0x74], cl
jl 0x40264b
mov eax, dword [esi + 0x80]
xor edx, edx
add edx, dword [ebp + 0x18]
add dword [esi + 0x7c], edi
xor ecx, ecx
add ecx, dword [esi + 0x7c]
lea edx, [eax + edx + 0x40]
sub edx, 0x40
mov dword [esp - 4], ecx
sub esp, 4
sub ecx, edx
pop ecx
jl 0x4024ec
push dword [ebp + 0x18]
pop edi
push dword [esi + 0x78]
pop eax
cmp dword [esp - 4], edi
je 0x4026bf
cmp dword [esp - 4], edi
je 0x4026bf
cmp dword [esp - 4], edi
je 0x4026bf
mov dword [esp - 4], 0
add dword [esp - 4], edi
sub esp, 4
add eax, dword [esi + 0x80]
push eax
push dword [ebp + 0x14]
call sub.MSVCRT.dll_memcpy
add esp, 0xc
add dword [esi + 0x80], edi
mov eax, 0x3e8
jmp 0x4026ef
push ebx
push eax
pop ebx
pop eax
push ebx
push eax
pop ebx
pop eax
push eax
mov eax, ebx
pop ebx
mov ebx, eax
pop edi
pop esi
pop ebx
leave
ret 0x28