Function at 0x4e5020
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5600a5
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x60
cmp byte [0x6bc3ca], 0
push esi
push edi
jne 0x4e547b
push 0x2220
call dword [sym.imp.SDL2.dll_SDL_Init]
add esp, 4
test eax, eax
je 0x4e5227
call dword [sym.imp.SDL2.dll_SDL_GetError]
mov esi, dword [0x6ba4f8]
mov edi, eax
mov eax, dword [0x6ba4fc]
sub eax, esi
mov dword [ebp - 0x1c], 0x6bc8f8
cmp eax, 0xffffffff
jne 0x4e50a1
mov ecx, 0x6bc8f8
call fcn.004facc0
jmp 0x4e50ab
inc eax
lea ecx, [ebp - 0x1c]
push eax
call fcn.004fac70
add eax, esi
mov byte [ebp - 0x39], 0
xor edx, edx
mov dword [ebp - 0x28], 0
mov ecx, 0x7e
mov dword [ebp - 0x24], 0
div ecx
xorps xmm0, xmm0
mov ch, dl
inc ch
mov al, ch
mov byte [ebp - 0x13], ch
xor al, 0x45
mov byte [ebp - 0x54], ch
mov byte [ebp - 0x53], al
mov cl, ch
mov al, ch
xor cl, 0x72
xor al, 0x6f
mov byte [ebp - 0x52], cl
mov byte [ebp - 0x50], al
mov ah, ch
mov al, ch
mov byte [ebp - 0x51], cl
xor al, 0x74
mov byte [ebp - 0x4f], cl
mov byte [ebp - 0x4a], al
xor ah, 0x20
mov al, ch
mov byte [ebp - 0x4e], ah
xor al, 0x61
mov byte [ebp - 0x41], ah
mov byte [ebp - 0x48], al
mov dl, ch
mov al, ch
mov byte [ebp - 0x3c], ah
xor al, 0x6c
xor dl, 0x69
mov byte [ebp - 0x47], al
mov cl, ch
mov al, ch
mov byte [ebp - 0x4d], dl
xor al, 0x7a
mov byte [ebp - 0x4b], dl
mov byte [ebp - 0x45], al
xor cl, 0x6e
mov al, ch
mov byte [ebp - 0x4c], cl
xor al, 0x67
mov byte [ebp - 0x49], dl
mov byte [ebp - 0x42], al
mov al, ch
xor al, 0x53
mov byte [ebp - 0x46], dl
mov byte [ebp - 0x40], al
mov al, ch
xor al, 0x44
mov byte [ebp - 0x44], dl
mov byte [ebp - 0x3f], al
mov al, ch
xor al, 0x4c
mov byte [ebp - 0x43], cl
mov byte [ebp - 0x3e], al
mov al, ch
xor al, 0x3a
mov byte [ebp - 0x3d], al
mov al, ch
xor al, 0x25
mov byte [ebp - 0x3b], al
mov al, ch
xor al, 0x73
push 0x20
mov byte [ebp - 0x3a], al
movups xmmword [ebp - 0x38], xmm0
call fcn.0055e97b
xorps xmm0, xmm0
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], 0x1a
add esp, 4
mov dword [ebp - 0x24], 0x1f
movups xmmword [eax], xmm0
mov ch, byte [ebp - 0x13]
xor edx, edx
movq qword [eax + 0x10], xmm0
mov word [eax + 0x18], 0
mov byte [eax + 0x1a], 0
mov cl, byte [ebp + edx - 0x53]
lea eax, [ebp - 0x38]
xor cl, ch
cmp dword [ebp - 0x24], 0xf
cmova eax, dword [ebp - 0x38]
mov byte [eax + edx], cl
inc edx
cmp edx, 0x1a
jb 0x4e51a4
mov dword [ebp - 4], 0
lea eax, [ebp - 0x38]
cmp dword [ebp - 0x24], 0xf
push edi
cmova eax, dword [ebp - 0x38]
push eax
call fcn.00545d90
mov ecx, dword [ebp - 0x24]
add esp, 8
cmp ecx, 0xf
jbe 0x4e547b
mov edx, dword [ebp - 0x38]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4e520a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4e520a
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.0055ec01
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
push 0
call dword [sym.imp.SDL2.dll_SDL_GameControllerOpen]
add esp, 4
mov dword [0x6bb490], eax
test eax, eax
jne 0x4e545c
call dword [sym.imp.SDL2.dll_SDL_GetError]
mov esi, dword [0x6ba4f8]
mov edi, eax
mov eax, dword [0x6ba4fc]
sub eax, esi
mov dword [ebp - 0x1c], 0x6bc8f8
cmp eax, 0xffffffff
jne 0x4e526c
mov ecx, 0x6bc8f8
call fcn.004facc0
jmp 0x4e5276
inc eax
lea ecx, [ebp - 0x1c]
push eax
call fcn.004fac70
add eax, esi
xor edx, edx
mov ecx, 0x7e
div ecx
inc dl
mov al, dl
mov byte [ebp - 0x12], dl
xor al, 0x4e
mov byte [ebp - 0x6d], dl
mov byte [ebp - 0x6c], al
mov ah, dl
mov al, dl
xor ah, 0x74
xor al, 0x20
mov byte [ebp - 0x15], ah
mov byte [ebp - 0x11], al
mov cl, dl
mov byte [ebp - 0x6a], al
xor cl, 0x6f
mov al, dl
mov byte [ebp - 0x66], ah
mov ah, byte [ebp - 0x12]
xor al, 0x63
mov byte [ebp - 0x14], al
mov ch, dl
mov byte [ebp - 0x69], al
xor ch, 0x6e
mov al, byte [ebp - 0x11]
mov dh, dl
mov byte [ebp - 0x5f], al
xor dh, 0x72
mov al, ah
mov byte [ebp - 0x13], cl
xor al, 0x66
mov byte [ebp - 0x6b], cl
mov byte [ebp - 0x5e], al
xor dl, 0x6c
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x5d], al
mov al, ah
xor al, 0x75
mov byte [ebp - 0x68], cl
mov byte [ebp - 0x5c], al
mov al, ah
xor al, 0x64
mov byte [ebp - 0x64], cl
mov byte [ebp - 0x5a], al
mov cl, ah
mov al, byte [ebp - 0x11]
xor cl, 0x65
mov ah, byte [ebp - 0x11]
mov byte [ebp - 0x59], al
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x58], al
mov byte [ebp - 0x52], al
mov byte [ebp - 0x4f], al
mov byte [ebp - 0x56], ah
mov byte [ebp - 0x50], ah
mov ah, byte [ebp - 0x12]
mov al, ah
mov byte [ebp - 0x67], ch
xor al, 0x70
mov byte [ebp - 0x65], dh
mov byte [ebp - 0x4e], al
mov al, ah
xor al, 0x69
mov byte [ebp - 0x63], dl
mov byte [ebp - 0x4b], al
mov al, ah
mov byte [ebp - 0x62], dl
mov byte [ebp - 0x61], cl
mov byte [ebp - 0x60], dh
mov byte [ebp - 0x5b], ch
mov byte [ebp - 0x57], dh
mov byte [ebp - 0x55], cl
mov byte [ebp - 0x54], dh
mov byte [ebp - 0x53], dh
mov byte [ebp - 0x51], dh
mov byte [ebp - 0x4d], cl
mov byte [ebp - 0x4c], ch
mov byte [ebp - 0x4a], ch
xor al, 0x67
mov ah, byte [ebp - 0x15]
mov byte [ebp - 0x49], al
xorps xmm0, xmm0
mov al, byte [ebp - 0x11]
mov byte [ebp - 0x48], al
mov al, byte [ebp - 0x14]
mov byte [ebp - 0x47], al
mov al, byte [ebp - 0x13]
mov byte [ebp - 0x46], al
mov byte [ebp - 0x42], al
mov byte [ebp - 0x3f], cl
mov cl, byte [ebp - 0x12]
mov al, cl
mov byte [ebp - 0x45], ch
xor al, 0x3a
mov byte [ebp - 0x44], ah
mov byte [ebp - 0x3d], al
mov al, byte [ebp - 0x11]
mov byte [ebp - 0x3c], al
mov al, cl
xor al, 0x25
mov byte [ebp - 0x43], dh
mov byte [ebp - 0x3b], al
mov al, cl
xor al, 0x73
mov byte [ebp - 0x41], dl
push 0x40
mov byte [ebp - 0x40], dl
mov byte [ebp - 0x3e], dh
mov byte [ebp - 0x3a], al
mov byte [ebp - 0x39], 0
movups xmmword [ebp - 0x38], xmm0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
call fcn.0055e97b
add esp, 4
mov dword [ebp - 0x28], 0x33
mov esi, eax
mov dword [ebp - 0x24], 0x3f
mov dword [ebp - 0x38], esi
push 0x33
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov ch, byte [ebp - 0x12]
add esp, 0xc
mov byte [esi + 0x33], 0
xor edx, edx
nop dword [eax]
mov cl, byte [ebp + edx - 0x6c]
lea eax, [ebp - 0x38]
xor cl, ch
cmp dword [ebp - 0x24], 0xf
cmova eax, dword [ebp - 0x38]
mov byte [eax + edx], cl
inc edx
cmp edx, 0x33
jb 0x4e53f0
mov dword [ebp - 4], 1
lea eax, [ebp - 0x38]
cmp dword [ebp - 0x24], 0xf
push edi
cmova eax, dword [ebp - 0x38]
push eax
call fcn.00545d90
mov ecx, dword [ebp - 0x24]
add esp, 8
cmp ecx, 0xf
jbe 0x4e545c
mov edx, dword [ebp - 0x38]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4e5452
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4e5452
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.0055ec01
add esp, 8
lea ecx, [ebp - 0x20]
call fcn.004df5b0
mov byte [0x6bc3ca], 1
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [0x6bb428], ecx
mov dword [0x6bb42c], eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret