Function at 0x46a9b0
Capabilities:
Get file size
Read file on windows

Disassembly:
mov eax, 0x203c
call fcn.0047aea0
mov eax, dword [esp + 0x2048]
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push ebx
push ebx
push 3
push ebx
push 3
push 0x80000000
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileW]
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x24], ebp
je 0x46ac6e
push ebx
push ebp
call dword [sym.imp.KERNEL32.DLL_GetFileSize]
mov esi, eax
cmp esi, ebx
jbe 0x46ac67
lea ecx, [esi + 1]
push ecx
call sub.msvcrt.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
push ebx
lea edx, [esp + 0x18]
push edx
mov edi, eax
push esi
push edi
push ebp
mov dword [esp + 0x34], edi
mov dword [esp + 0x28], ebx
call dword [sym.imp.KERNEL32.DLL_ReadFile]
push 0x3ff
lea eax, [esp + 0x2d]
push ebx
push eax
mov byte [edi + esi], bl
mov dword [esp + 0x20], ebx
mov byte [esp + 0x34], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x3ff
lea ecx, [esp + 0x82d]
push ebx
push ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
xor ebp, ebp
mov byte [esp + 0x834], bl
call sub.msvcrt.dll_memset
add esp, 0xc
push 0x141c
lea edx, [esp + 0xc2c]
push ebx
push edx
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esp + 0x14]
push eax
push edi
lea ecx, [esp + 0x30]
push ecx
call fcn.0046a640
test eax, eax
je 0x46ac5a
cmp dword [esp + 0x18], ebx
jle 0x46ac39
mov edi, 0x47dfd8
lea esi, [esp + 0x28]
mov ecx, 2
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x46aaf0
cmp dword [esp + 0x1c], ebx
je 0x46aae1
mov byte [esp + 0xc28], bl
mov byte [esp + 0x1028], bl
mov byte [esp + 0x1428], bl
mov byte [esp + 0x1828], bl
mov byte [esp + 0x828], bl
xor ebp, ebp
jmp 0x46ac39
mov dword [esp + 0x1c], 1
xor ebp, ebp
jmp 0x46ac39
cmp dword [esp + 0x1c], ebx
je 0x46ac39
cmp ebp, ebx
jne 0x46ab17
xor eax, eax
mov cl, byte [esp + eax + 0x28]
mov byte [esp + eax + 0x828], cl
add eax, 1
cmp cl, bl
jne 0x46ab00
jmp 0x46ac36
cmp ebp, 1
jne 0x46ab37
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x28]
mov byte [esp + eax + 0x1428], cl
add eax, 1
cmp cl, bl
jne 0x46ab20
jmp 0x46ac36
cmp ebp, 2
jne 0x46ab57
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x28]
mov byte [esp + eax + 0xc28], cl
add eax, 1
cmp cl, bl
jne 0x46ab40
jmp 0x46ac36
cmp ebp, 3
jne 0x46ab77
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x28]
mov byte [esp + eax + 0x1828], cl
add eax, 1
cmp cl, bl
jne 0x46ab60
jmp 0x46ac36
cmp ebp, 4
jne 0x46ac18
xor eax, eax
mov cl, byte [esp + eax + 0x28]
mov byte [esp + eax + 0x1028], cl
add eax, 1
cmp cl, bl
jne 0x46ab82
push 0x3ff
lea eax, [esp + 0x42d]
push ebx
push eax
mov byte [esp + 0x434], bl
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x2060]
add esp, 0xc
push ebx
push ebx
push 0x3ff
lea ecx, [esp + 0x434]
push ecx
push 0xffffffffffffffff
push edx
push ebx
push 0xfde9
call dword [sym.imp.KERNEL32.DLL_WideCharToMultiByte]
mov eax, dword [esp + 0x205c]
mov ecx, dword [esp + 0x2058]
mov edx, dword [esp + 0x2050]
push eax
push ecx
push edx
lea esi, [esp + 0x834]
call fcn.0046a7c0
mov byte [esp + 0xc28], bl
mov byte [esp + 0x1028], bl
mov byte [esp + 0x1428], bl
mov byte [esp + 0x1828], bl
jmp 0x46ac36
jle 0x46ac36
cmp byte [esp + 0x28], bl
je 0x46ac34
mov edi, 0x47dfdc
lea esi, [esp + 0x28]
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x46ac36
xor ebp, ebp
add ebp, 1
mov edi, dword [esp + 0x20]
add dword [esp + 0x18], 1
lea ecx, [esp + 0x14]
push ecx
push edi
lea edx, [esp + 0x30]
push edx
call fcn.0046a640
test eax, eax
jne 0x46aa93
push edi
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
mov ebp, dword [esp + 0x28]
add esp, 4
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x203c
ret 0x10