Function at 0x401010
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
mov eax, dword [0x411238]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
lea edx, [ebp - 0x108]
push ebx
push esi
push edi
xor edi, edi
mov dword [ebp - 0x114], 0
cmp dword [ebp + 8], 1
jle 0x401055
mov ecx, dword [eax + 4]
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x401046
jmp 0x40106d
mov ecx, dword [eax]
sub edx, ecx
nop dword [eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x401060
lea ecx, [ebp - 0x108]
xor esi, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401078
sub ecx, edx
je 0x4010bd
mov ebx, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_toupper]
nop dword [eax]
movsx eax, byte [ebp + esi - 0x108]
push eax
call ebx
lea ecx, [ebp - 0x108]
mov byte [ebp + esi - 0x108], al
add esp, 4
lea edx, [ecx + 1]
inc esi
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4010b0
sub ecx, edx
cmp esi, ecx
jb 0x401090
lea eax, [ebp - 0x108]
push str..EXE
push eax
call sub.VCRUNTIME140.dll_strstr
add esp, 8
test eax, eax
jne 0x4010f9
lea ecx, [ebp - 0x108]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4010e0
mov eax, dword [str..EXE]
mov dword [ecx], eax
mov al, byte [0x402124]
mov byte [ecx + 4], al
lea eax, [ebp - 0x108]
push 0x402128
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
add esp, 8
mov dword [ebp - 0x118], eax
test eax, eax
jne 0x40112c
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004013c0
mov esp, ebp
pop ebp
ret
mov ebx, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fgetc]
xor esi, esi
push eax
call ebx
mov ecx, eax
add esp, 4
cmp ecx, 0xffffffff
je 0x401342
lea edx, [esi + 1]
nop dword [eax + eax]
movsx eax, byte [esi + str..ZrK3sFm5nMN]
cmp ecx, eax
jne 0x401163
inc esi
cmp esi, 0xc
jge 0x401191
jmp 0x401171
movsx eax, byte [str..ZrK3sFm5nMN]
xor esi, esi
cmp ecx, eax
cmove esi, edx
push dword [ebp - 0x118]
call ebx
mov ecx, eax
add esp, 4
mov edx, 1
cmp ecx, 0xffffffff
jne 0x401150
cmp esi, 0xc
jl 0x401342
mov ebx, dword [ebp - 0x118]
lea eax, [ebp - 0x10c]
mov esi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
push ebx
push 1
push 2
push eax
call esi
add esp, 0x10
cmp eax, 1
je 0x4011bd
mov esi, 0xfffffffd
jmp 0x401347
push ebx
push 1
lea eax, [ebp - 0x110]
push 2
push eax
call esi
add esp, 0x10
cmp eax, 1
je 0x4011dd
mov esi, 0xfffffffc
jmp 0x401347
cmp word [ebp - 0x10c], 1
jge 0x4011f9
push str._____no_entries_available______n
call fcn.00401390
add esp, 4
jmp 0x401355
push 0x101
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
jne 0x401215
lea esi, [eax - 5]
jmp 0x401347
mov bx, word [ebp - 0x114]
xor esi, esi
xor eax, eax
mov byte [edi + 0x100], 0
mov dword [ebp - 0x11c], esi
cmp ax, word [ebp - 0x10c]
jge 0x401332
nop word [eax + eax]
push dword [ebp - 0x118]
push pe_nt_image_headers32
push edi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fgets]
add esp, 0xc
test eax, eax
je 0x401347
mov edx, edi
mov eax, edi
lea esi, [edx + 1]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x401264
sub edx, esi
lea esi, [edx - 1]
xor edx, edx
test esi, esi
jle 0x4012ee
cmp esi, 0x40
jb 0x4012db
mov ecx, esi
and ecx, 0x8000003f
jns 0x40128a
dec ecx
or ecx, 0xffffffc0
inc ecx
movaps xmm1, xmmword [0x402170]
mov dword [ebp - 0x114], esi
sub dword [ebp - 0x114], ecx
mov ecx, dword [ebp - 0x114]
movups xmm0, xmmword [eax]
add edx, 0x40
pxor xmm0, xmm1
movups xmmword [eax], xmm0
movups xmm0, xmmword [eax + 0x10]
pxor xmm0, xmm1
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
pxor xmm0, xmm1
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
pxor xmm0, xmm1
movups xmmword [eax + 0x30], xmm0
add eax, 0x40
cmp edx, ecx
jl 0x4012a3
cmp edx, esi
jge 0x4012ee
mov ecx, esi
sub ecx, edx
xor byte [eax], 0xaa
lea eax, [eax + 1]
sub ecx, 1
jne 0x4012e3
xor edx, edx
test esi, esi
jle 0x401308
movzx eax, byte [edx + edi]
mov ecx, edx
and ecx, 3
inc edx
shl ax, cl
xor bx, ax
cmp edx, esi
jl 0x4012f4
push edi
push 0x40214c
call fcn.00401390
mov esi, dword [ebp - 0x11c]
add esp, 8
movsx eax, word [ebp - 0x10c]
inc esi
mov dword [ebp - 0x11c], esi
cmp esi, eax
jl 0x401240
cmp bx, word [ebp - 0x110]
je 0x401355
mov esi, 0xfffffffa
jmp 0x401347
mov esi, 0xfffffffe
push esi
push str._a_n__error_status__d___n
call fcn.00401390
add esp, 8
push dword [ebp - 0x118]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 4
test edi, edi
je 0x401372
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004013c0
mov esp, ebp
pop ebp
ret