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

Disassembly:
mov eax, 0x10916a8
call fcn.010826d8
sub esp, 0x38
mov eax, dword [ebp + 0x10]
push ebx
push esi
mov ecx, eax
neg ecx
sbb ecx, ecx
push edi
mov edi, 0x7ff8ffa9
and ecx, edi
mov esi, 0x80070057
add ecx, esi
mov edx, ecx
xor ebx, ebx
cmp edx, ebx
je 0x1086ab7
push 3
pop edx
cmp edx, edx
jne 0x1086aac
mov edx, ecx
cmp edx, ebx
setl dl
jmp 0x1086aae
mov dl, 1
cmp dl, bl
je 0x1086ab7
push 3
pop edx
jmp 0x1086ae2
mov ecx, dword [ebp + 0xc]
neg ecx
sbb ecx, ecx
and ecx, edi
push 3
add ecx, esi
cmp ecx, ebx
pop edx
mov dword [eax], ebx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], ecx
je 0x1086aef
cmp edx, edx
jne 0x1086adc
cmp ecx, ebx
setl al
jmp 0x1086ade
mov al, 1
cmp al, bl
je 0x1086aef
mov eax, dword [ebp + 8]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp 0x1086d4c
push ebx
push 0x80
push 3
push ebx
push 1
push 0x80000000
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp + 0xc], esi
push esi
mov dword [ebp - 4], ebx
call fcn.01083c9f
test al, al
jne 0x1086b35
lea ecx, [ebp - 0x20]
call dword [sym.imp.mmcbase.DLL_public:_class_mmcerror::SC____thiscall_mmcerror::SC::FromLastError_void_]
mov ecx, dword [eax]
mov esi, dword [ebp + 8]
mov dword [esi], ecx
mov eax, dword [eax + 4]
mov dword [esi + 4], eax
jmp 0x1086cef
lea eax, [ebp - 0x2c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp dword [ebp - 0x2c], ebx
mov dword [ebp - 0x30], eax
je 0x1086b5d
mov esi, dword [ebp + 8]
mov dword [esi], 3
mov dword [esi + 4], 0x8000ffff
jmp 0x1086cef
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
cmp eax, ebx
mov byte [ebp - 4], 1
je 0x1086c66
push ebx
push eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x44]
call fcn.010853fd
mov edi, dword [eax]
mov dword [ebp - 0x20], edi
mov eax, dword [eax + 4]
cmp eax, ebx
mov dword [ebp - 0x1c], eax
je 0x1086bae
cmp edi, 3
jne 0x1086b9b
cmp eax, ebx
setl cl
jmp 0x1086b9d
mov cl, 1
cmp cl, bl
je 0x1086bae
mov esi, dword [ebp + 8]
mov dword [esi], edi
mov dword [esi + 4], eax
jmp 0x1086ce4
lea eax, [ebp - 0x44]
mov byte [ebp - 0x28], bl
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
mov dword [ebp - 0x14], ebx
call fcn.010854cf
mov edi, dword [ebp - 0x34]
cmp edi, ebx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edi
je 0x1086c09
cmp eax, 3
jne 0x1086bea
cmp edi, ebx
setl cl
jmp 0x1086bec
mov cl, 1
cmp cl, bl
je 0x1086c09
mov esi, dword [ebp + 8]
mov dword [esi], eax
mov dword [esi + 4], edi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x28]
call fcn.01085493
jmp 0x1086ce4
push ebx
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x30]
mov dword [ebp - 0x18], ebx
push dword [ebp - 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp eax, ebx
jne 0x1086c3a
lea ecx, [ebp - 0x20]
call dword [sym.imp.mmcbase.DLL_public:_class_mmcerror::SC____thiscall_mmcerror::SC::FromLastError_void_]
mov ecx, dword [eax]
mov esi, dword [ebp + 8]
mov dword [esi], ecx
mov eax, dword [eax + 4]
mov dword [esi + 4], eax
jmp 0x1086bf8
mov eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x18]
mov byte [ebp - 4], 1
je 0x1086c5e
mov esi, dword [ebp + 8]
push 3
pop eax
mov ecx, 0x8000ffff
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], ecx
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x1086bfc
lea ecx, [ebp - 0x28]
call fcn.01085493
mov dword [ebp - 0x10], ebx
mov esi, dword [ebp - 0x44]
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0102e0e5
push eax
push 1
push esi
call dword [sym.imp.ole32.dll_CreateILockBytesOnHGlobal]
cmp eax, ebx
push 3
pop ecx
mov edi, eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edi
je 0x1086c98
setl al
cmp al, bl
jne 0x1086ccb
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
call fcn.010213c0
push dword [ebp - 0x2c]
mov ecx, dword [eax]
push dword [ebp - 0x30]
push eax
call dword [ecx + 0x18]
cmp eax, ebx
push 3
pop ecx
mov edi, eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edi
je 0x1086cfb
setl al
cmp al, bl
je 0x1086cfb
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
cmp eax, ebx
mov dword [esi], ecx
mov dword [esi + 4], edi
mov byte [ebp - 4], 1
je 0x1086ce4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], bl
call fcn.01027de3
lea ecx, [ebp + 0xc]
call fcn.01084340
mov eax, esi
jmp 0x1086d4c
push dword [ebp + 0x10]
push ebx
push ebx
push 0x12
push ebx
push dword [ebp - 0x10]
call dword [sym.imp.ole32.dll_StgOpenStorageOnILockBytes]
cmp eax, ebx
push 3
pop ecx
mov esi, eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], esi
je 0x1086d1e
setl al
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
cmp eax, ebx
mov dword [edi], ecx
mov dword [edi + 4], esi
mov byte [ebp - 4], 1
je 0x1086d37
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], bl
call fcn.01027de3
lea ecx, [ebp + 0xc]
call fcn.01084340
mov eax, edi
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0xc