Function at 0x40a200
Capabilities:
Enumerate files on windows
Get common file path
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x46c
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x250
xor ebx, ebx
lea eax, [ebp - 0x468]
push ebx
push eax
call fcn.004ad600
add esp, 0xc
lea eax, [ebp - 0x210]
push 0x208
push ebx
push eax
call fcn.004ad600
add esp, 0xc
push 0x208
push 0x4de7c8
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x40a268
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_getting_work_path:0x_X
jmp 0x40a5b3
mov esi, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push 0x4de7c8
call esi
test eax, eax
jne 0x40a28a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_finishing_work_path:0x_X
jmp 0x40a5b3
push 0
push 0x2e
push 0x4de9e8
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
jne 0x40a2b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Cannot_get_profile_folder:0x_X
jmp 0x40a5b3
push 0x4de9e8
call esi
test eax, eax
je 0x40a5a7
push 0x4de9e8
call esi
test eax, eax
je 0x40a5a7
push 0x4de9e8
push str._s
lea eax, [ebp - 0x210]
push 0x208
push eax
call fcn.004010a0
add esp, 0x10
test eax, eax
jns 0x40a301
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_setting_the_search_path:0x_X
jmp 0x40a5b3
lea eax, [ebp - 0x468]
push eax
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x214], eax
cmp eax, 0xffffffff
jne 0x40a331
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_finding_profile_data:0x_X
jmp 0x40a5b3
mov edx, 0x4de7c8
mov ecx, 1
call fcn.0040a5d0
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [ebp - 0x214]
nop dword [eax]
cmp word [ebp - 0x43c], 0x2e
je 0x40a428
test dword [ebp - 0x468], 0x10
je 0x40a428
lea ecx, [ebp - 0x43c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a377
sub ecx, edx
sar ecx, 1
push 0xc
push 0x40
lea edi, [ecx*2 + 2]
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov esi, eax
test esi, esi
jne 0x40a3b7
call ebx
push eax
push str.Error_creating_a_new_list_entry:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x40a422
test edi, edi
je 0x40a3e1
push edi
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
inc dword [0x4de7b4]
mov dword [esi], eax
test eax, eax
je 0x40a3f2
push edi
lea ecx, [ebp - 0x43c]
push ecx
push eax
call fcn.004ae080
add esp, 0xc
cmp dword [0x4de7bc], 0
jne 0x40a406
mov dword [0x4de7bc], esi
jmp 0x40a416
call ebx
push eax
push str.Error_copying_list_value:0x_X
push 1
call fcn.00408d60
add esp, 0xc
jmp 0x40a422
mov eax, dword [0x4de7c0]
mov dword [esi + 4], eax
mov eax, dword [0x4de7c0]
mov dword [eax + 8], esi
inc dword [0x4de7b8]
mov dword [0x4de7c0], esi
mov edi, dword [ebp - 0x214]
lea eax, [ebp - 0x468]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x40a350
push str.key.bin
push 0x4de7c8
push 0x4cbe14
lea eax, [ebp - 0x210]
push 0x208
push eax
call fcn.004010a0
add esp, 0x14
test eax, eax
jns 0x40a493
call ebx
push eax
push str.Error_setting_the_public_key_path:0x_X
push 1
call fcn.00408d60
add esp, 0xc
xor esi, esi
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004ac4d4
mov esp, ebp
pop ebp
ret
push str.___Initializing_key
push 3
mov dword [ebp - 0x214], 0
call fcn.00408d60
add esp, 8
lea eax, [ebp - 0x210]
push 0
push 0
push 3
push 0
push 1
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
jne 0x40a4e8
call ebx
push eax
push str.key.bin
push str.Error_opening_the_key_file__s__error:0x_0X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x40a579
lea eax, [ebp - 0x214]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
jne 0x40a514
call ebx
push eax
push str.key.bin
push str.Error_getting_file_size_for__s__error:0x_0X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x40a572
cmp eax, 0x1000
jbe 0x40a532
push 0x1000
push eax
push str.Encryption_key_size___d__is_larger_than_buffer_size__d_
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x40a572
push 0
push 0x4db458
push eax
push 0x4df140
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x40a563
call ebx
push eax
push str.key.bin
push str.Error_reading_key_file__s__error:0x_X
push 1
call fcn.00408d60
add esp, 0x10
jmp 0x40a572
push str.Key_initialized
push 3
call fcn.00408d60
add esp, 8
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.Initializing_key___
push 3
call fcn.00408d60
add esp, 8
mov esi, 1
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004ac4d4
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_finishing_profile_path:0x_X
push 1
call fcn.00408d60
mov ecx, dword [ebp - 4]
add esp, 0xc
mov eax, ebx
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004ac4d4
mov esp, ebp
pop ebp
ret