Function at 0x1000eff0
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, ecx
push esi
mov esi, edx
push ebx
sub esp, 0x70
mov dword [ebp - 0x5c], eax
cmp ecx, 2
je 0x1000f150
cmp ecx, 8
je 0x1000f140
mov ecx, 0x80070057
cmp edi, 1
jne 0x1000f12e
mov dword [ebp - 0x60], 0x80000000
mov dword [esp + 4], 0x38
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
mov ebx, eax
test eax, eax
je 0x1000f4a4
mov dword [eax + 0xc], sym._textstream_QueryInterface_12
mov dword [eax + 0x10], 1
mov dword [eax + 0x14], edi
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x60]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x5c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CreateFileW]
mov dword [ebx + 0x28], eax
sub esp, 0x1c
cmp eax, 0xffffffff
je 0x1000f310
cmp edi, 1
je 0x1000f278
mov dword [ebx + 0x20], 0
mov dword [ebx + 0x24], 0
cmp edi, 2
je 0x1000f160
cmp dword [ebp + 8], 0xfffffffe
je 0x1000f3d0
mov esi, dword [ebp + 8]
xor edx, edx
test esi, esi
setne dl
mov dword [ebx + 0x18], edx
lea edx, [ebp - 0x54]
mov dword [ebp - 0x54], 0
mov dword [esp + 8], edx
mov dword [esp + 0xc], 2
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_SetFilePointer]
mov edx, dword [ebx + 0x18]
sub esp, 0x10
test edx, edx
jne 0x1000f220
lea esi, [esi]
lea esi, [ebx + 0xc]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], 0x10016920
call sym._init_classinfo
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov dword [eax], esi
lea esp, [ebp - 0xc]
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0x60], 0xc0000000
jmp 0x1000f027
mov dword [ebp - 0x60], 0x40000000
jmp 0x1000f027
xor edx, edx
cmp dword [ebp + 8], 0xffffffff
sete dl
mov dword [ebx + 0x18], edx
jne 0x1000f110
mov edx, 0x26
bt edx, esi
jae 0x1000f110
lea edx, [ebp - 0x4c]
mov dword [ebp - 0x4c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edx
mov dword [esp + 8], 2
mov dword [esp + 4], 0x1001604c
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
test eax, eax
je 0x1000f1c0
cmp dword [ebp - 0x4c], 2
je 0x1000f110
lea esi, [esi]
nop
mov eax, dword [ebx + 0xc]
add ebx, 0xc
mov dword [esp], ebx
call dword [eax + 8]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
sub esp, 4
cmp eax, 5
je 0x1000f430
ja 0x1000f370
mov ecx, 0x800a0035
cmp eax, 2
je 0x1000f12e
mov ecx, 0x800a004c
cmp eax, 3
je 0x1000f12e
test byte [0x10012028], 1
jne 0x1000f44a
mov ecx, 0x80004005
jmp 0x1000f12e
or eax, dword [ebp - 0x54]
jne 0x1000f110
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 2
mov dword [esp + 4], 0x1001604c
mov eax, dword [ebx + 0x28]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
test eax, eax
je 0x1000f1c0
cmp dword [ebp - 0x50], 2
je 0x1000f110
jmp 0x1000f1c0
lea edx, [ebx + 0x20]
mov dword [esp], eax
lea esi, [ebp - 0x4c]
mov dword [esp + 4], edx
call dword [sym.imp.kernel32.dll_GetFileSizeEx]
lea eax, [ebp - 0x58]
sub esp, 8
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x40
mov dword [esp + 4], esi
mov eax, dword [ebx + 0x28]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
test eax, eax
je 0x1000f1c0
cmp dword [ebp + 8], 0xfffffffe
je 0x1000f4ae
mov ecx, dword [ebp + 8]
xor eax, eax
test ecx, ecx
setne al
mov dword [ebx + 0x18], eax
mov ecx, dword [ebp - 0x58]
mov edx, esi
test eax, eax
je 0x1000f2f0
cmp ecx, 1
jbe 0x1000f2f0
cmp byte [ebp - 0x4c], 0xff
je 0x1000f3b8
nop
mov eax, ebx
call sym._append_read_data
test eax, eax
js 0x1000f350
xor eax, eax
cmp dword [ebp - 0x58], 0x40
setne al
mov dword [ebx + 0x2c], eax
jmp 0x1000f110
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
cmp eax, 5
je 0x1000f440
ja 0x1000f390
mov ecx, 0x800a0035
cmp eax, 2
je 0x1000f338
mov ecx, 0x800a004c
cmp eax, 3
jne 0x1000f3a1
mov dword [ebp - 0x5c], ecx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov ecx, dword [ebp - 0x5c]
jmp 0x1000f12e
mov dword [ebp - 0x5c], eax
mov eax, dword [ebx + 0xc]
add ebx, 0xc
mov dword [esp], ebx
call dword [eax + 8]
mov ecx, dword [ebp - 0x5c]
sub esp, 4
jmp 0x1000f12e
mov ecx, 0x800a003a
cmp eax, 0x50
je 0x1000f12e
cmp eax, 0xb7
je 0x1000f12e
jmp 0x1000f203
mov ecx, 0x800a003a
cmp eax, 0x50
je 0x1000f338
cmp eax, 0xb7
je 0x1000f338
test byte [0x10012028], 1
jne 0x1000f477
mov ecx, 0x80004005
jmp 0x1000f338
xor eax, eax
cmp byte [ebp - 0x4b], 0xfe
sete al
add eax, eax
sub ecx, eax
add edx, eax
jmp 0x1000f2f0
lea edx, [ebp - 0x58]
lea esi, [ebp - 0x4c]
mov dword [esp], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x40
mov dword [esp + 4], esi
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
test eax, eax
je 0x1000f1c0
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x58]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.advapi32.dll_IsTextUnicode]
mov dword [ebx + 0x18], eax
sub esp, 0xc
mov eax, dword [ebx + 0x28]
jmp 0x1000f0d4
mov ecx, 0x800a0046
jmp 0x1000f12e
mov ecx, 0x800a0046
jmp 0x1000f338
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Unsupported_error_code:__ld_n
mov dword [esp + 8], str.create_error
mov dword [esp + 4], 0x10012028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x1000f210
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Unsupported_error_code:__ld_n
mov dword [esp + 8], str.create_error
mov dword [esp + 4], 0x10012028
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0_1
jmp 0x1000f3ae
mov ecx, 0x8007000e
jmp 0x1000f12e
xor edi, edi
mov dword [esp + 8], edi
mov eax, dword [ebp - 0x58]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.advapi32.dll_IsTextUnicode]
sub esp, 0xc
jmp 0x1000f2d4