Function at 0x45bdb0
Capabilities:
Get common file path
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x478a1c
mov eax, dword fs:[0]
push eax
sub esp, 0x810
mov eax, dword [0x483014]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
cmp dword [esi + 0x17d2], 0
jne 0x45bdfd
push 0xb05e0
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
mov dword [esi + 0x17d2], eax
mov eax, dword [esi + 0x17d2]
test eax, eax
je 0x45c1ad
push 0xb05e0
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x814]
call dword [sym.imp.mfc140u.dll_Ordinal_296]
push 0x400
lea eax, [ebp - 0x810]
mov dword [ebp - 4], 0
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push 0x400
lea eax, [ebp - 0x410]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0x18
lea eax, [ebp - 0x410]
push 0
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
cmp dword [0x496a54], 0
push dword [esi + 0x3ea]
je 0x45bed0
movzx eax, byte [esi + 0x4a7]
push eax
movzx eax, byte [esi + 0x4a5]
push eax
lea eax, [ebp - 0x410]
push eax
lea eax, [ebp - 0x810]
push 0x47c1c0
push eax
call fcn.0045dc60
push dword [esi + 0x3ea]
movzx eax, byte [esi + 0x4a7]
mov ebx, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__12]
push eax
movzx eax, byte [esi + 0x4a5]
push eax
lea eax, [ebp - 0x814]
push 0x47c1dc
push eax
call ebx
add esp, 0x2c
jmp 0x45bf15
lea eax, [ebp - 0x410]
push eax
lea eax, [ebp - 0x810]
push 0x47c1f4
push eax
call fcn.0045dc60
push dword [esi + 0x3ea]
movzx eax, byte [esi + 0x4a7]
mov ebx, dword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__12]
push eax
movzx eax, byte [esi + 0x4a5]
push eax
lea eax, [ebp - 0x814]
push 0x47c208
push eax
call ebx
add esp, 0x24
push dword [ebp - 0x814]
mov edi, dword [ebp + 8]
mov ecx, dword [0x496a94]
push 0xf
push edi
call dword [sym.imp.mfc140u.dll_CListCtrl::SetItemText]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x81c], eax
cmp eax, 0xffffffff
jne 0x45bf89
push dword [esi + 0x3ea]
movzx eax, byte [esi + 0x4a7]
push eax
movzx eax, byte [esi + 0x4a5]
push eax
lea eax, [ebp - 0x814]
push 0x47c220
push eax
call ebx
add esp, 0x14
push dword [ebp - 0x814]
push 0xf
push edi
jmp 0x45c194
lea ecx, [ebp - 0x818]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
push 0
mov edi, eax
lea eax, [ebp - 0x818]
push eax
push edi
push dword [esi + 0x17d2]
push dword [ebp - 0x81c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [ebp - 0x818], edi
jne 0x45c1a1
push dword [ebp - 0x81c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
je 0x45c162
cmp dword [esi + 0x17d2], 0
je 0x45c162
mov eax, 0xfe03f81
mul edi
shr edx, 6
mov dword [esi + 0x17d6], edx
cmp edx, 0x32
jge 0x45c006
mov dword [esi + 0x3b2], 1
jmp 0x45c1a1
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x2328
call ebx
cmp dword [esi + 0x17d6], 0
mov dword [esi + 0x17da], 0
jle 0x45c159
nop word [eax + eax]
mov eax, dword [esi + 0x17d2]
test eax, eax
je 0x45c159
cmp byte [esi + 0x497], 0
jne 0x45c159
cmp dword [0x496a44], 0
je 0x45c159
cmp byte [esi + 0x4d7], 0
je 0x45c159
cmp byte [esi + 0x4ad], 0
je 0x45c159
cmp dword [esi + 0x47e], 0
je 0x45c159
cmp dword [0x496a54], 0
jne 0x45c095
cmp byte [esi + 0x4ba], 0
jne 0x45c1a1
push 4
push eax
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x45c141
imul edi, dword [esi + 0x17da], 0x408
mov eax, 0xaaaaaaab
add edi, dword [esi + 0x17d2]
mul dword [edi]
mov eax, 0xaaaaaaab
mov ecx, edx
mul dword [edi + 4]
shr ecx, 1
shr edx, 1
cmp ecx, 0x7b
jne 0x45c0e5
push edx
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.0045d690
push 0xfa0
call ebx
jmp 0x45c141
cmp dword [0x496a54], 0
jne 0x45c12d
cmp ecx, 0x77
jne 0x45c101
push edx
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.0045bbd0
jmp 0x45c141
cmp ecx, 0x4e81
jne 0x45c117
push edx
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.0045bcc0
jmp 0x45c141
cmp ecx, 0xa5
jne 0x45c12d
push edx
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.0045c1d0
jmp 0x45c141
cmp ecx, 0x3a6
jne 0x45c141
push edx
lea eax, [edi + 8]
mov ecx, esi
push eax
call fcn.0045c2c0
inc dword [esi + 0x17da]
mov eax, dword [esi + 0x17da]
cmp eax, dword [esi + 0x17d6]
jl 0x45c030
mov byte [esi + 0x4bc], 1
jmp 0x45c1a1
push dword [esi + 0x3ea]
movzx eax, byte [esi + 0x4a7]
push eax
movzx eax, byte [esi + 0x4a5]
push eax
lea eax, [ebp - 0x814]
push 0x47c220
push eax
call ebx
add esp, 0x14
push dword [ebp - 0x814]
push 0xf
push dword [ebp + 8]
mov ecx, dword [0x496a94]
mov eax, dword [sym.imp.mfc140u.dll_CListCtrl::SetItemText]
call eax
lea ecx, [ebp - 0x814]
call dword [sym.imp.mfc140u.dll_Ordinal_1045]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0047724d
mov esp, ebp
pop ebp
ret 4