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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x23c
mov eax, dword [0x1000a018]
xor eax, esp
mov dword [esp + 0x238], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov esi, ecx
xor ecx, ecx
push 0x21e
push ecx
lea edx, [esp + 0x2a]
push edx
mov dword [esp + 0x20], eax
or ebx, 0xffffffff
mov dword [esp + 0x1c], 0
mov word [esp + 0x2c], cx
call sub.MSVCR90.dll_memset
add esp, 0xc
test esi, esi
jne 0x100039d0
mov esi, 0xd948009
call fcn.100026d0
test eax, eax
je 0x10003bb0
push 0xd9
push esi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x18]
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
call edx
add esp, 0x18
jmp 0x10003bb0
mov edx, esi
lea edi, [esp + 0x20]
call fcn.10005000
test eax, eax
jne 0x100039f9
mov esi, 0xdc4800c
call fcn.100026d0
test eax, eax
je 0x10003bb0
push 0xdc
push esi
jmp 0x100039b7
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x10003a37
mov esi, 0xe348105
call fcn.100026d0
test eax, eax
je 0x10003bb0
push 0xe3
push esi
jmp 0x100039b7
lea eax, [esp + 0x18]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
jne 0x10003a64
mov esi, 0xe648001
call fcn.100026d0
test eax, eax
je 0x10003bb0
push 0xe6
push esi
jmp 0x100039b7
mov eax, dword [esp + 0x18]
push eax
call sub.MSVCR90.dll_void____cdecl_operator_new___unsigned_int_
mov edi, eax
add esp, 4
test edi, edi
jne 0x10003aa5
mov esi, 0xe948008
call fcn.100026d0
test eax, eax
je 0x10003ba3
mov ecx, dword [eax]
mov edx, dword [ecx + 0x18]
push 0xe9
push esi
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
call edx
jmp 0x10003ba0
mov ecx, dword [esp + 0x18]
push 0
lea eax, [esp + 0x14]
push eax
push ecx
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x10003ae9
mov esi, 0xec48106
call fcn.100026d0
test eax, eax
je 0x10003ba3
mov edx, dword [eax]
push 0xec
push esi
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
mov eax, dword [edx + 0x18]
jmp 0x10003b9e
cmp dword [esp + 0x10], 0
ja 0x10003b1e
mov esi, 0xed4800c
call fcn.100026d0
test eax, eax
je 0x10003ba3
mov ecx, dword [eax]
mov edx, dword [ecx + 0x18]
push 0xed
push esi
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
call edx
jmp 0x10003ba0
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x10003b50
mov esi, 0xf048001
call fcn.100026d0
test eax, eax
je 0x10003ba3
mov ecx, dword [eax]
mov edx, dword [ecx + 0x18]
push 0xf0
push esi
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
call edx
jmp 0x10003ba0
mov ecx, dword [esp + 0x14]
push 0
add ecx, 4
or ebx, 0xffffffff
call fcn.10001450
mov esi, eax
test esi, 0xfff
jne 0x10003b7f
mov esi, dword [esp + 0x10]
push edi
call 0x100019a0
mov esi, eax
test esi, 0xfff
je 0x10003ba3
call fcn.100026d0
test eax, eax
je 0x10003ba3
mov ecx, dword [eax]
mov edx, esi
shr edx, 0x14
push edx
push esi
push str.TbDataSwap:_Error__0x_x__Line___d
push 0x48
push 1
push eax
mov eax, dword [ecx + 0x18]
call eax
add esp, 0x18
test edi, edi
je 0x10003bb0
push edi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov edi, dword [esp + 0x14]
add edi, 4
cmp dword [edi + 4], 0
jne 0x10003bc2
cmp dword [edi], 0
je 0x10003bf5
mov eax, edi
mov dword [edi], 0
mov dword [edi + 4], 0
call fcn.10001fb0
mov eax, dword [edi + 8]
test eax, eax
je 0x10003bed
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
mov dword [edi + 8], 0
lea eax, [edi + 0xc]
call fcn.100020e0
test ebx, ebx
je 0x10003c05
cmp ebx, 0xffffffff
je 0x10003c05
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x244]
mov eax, esi
and eax, 0xfff
pop edi
neg eax
pop esi
sbb eax, eax
pop ebx
xor ecx, esp
inc eax
call fcn.1000503f
mov esp, ebp
pop ebp
ret 4