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

Disassembly:
mov r11, rsp
push r15
sub rsp, 0x180
mov rax, qword [0x14007a8d0]
xor rax, rsp
mov qword [rsp + 0x160], rax
mov rax, qword [rcx + 0x50]
mov r15, rcx
test rax, rax
je 0x140016fdc
movzx ecx, byte [rax + 0x262]
test cl, cl
je 0x140016fdc
mov qword [r11 + 0x10], rbx
mov byte [rsp + 0x50], cl
mov qword [r11 - 0x10], rdi
lea rcx, [rsp + 0x50]
mov qword [r11 - 0x18], r14
xor r14d, r14d
mov byte [rsp + 0x51], r14b
dec rcx
nop dword [rax]
cmp byte [rcx + 1], r14b
lea rcx, [rcx + 1]
jne 0x140016db0
mov r8, qword [str.:iPod_ControlDeviceSysInfo]
xor edx, edx
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8 + rdx]
lea rdx, [rdx + 1]
mov byte [rcx + rdx - 1], al
test al, al
jne 0x140016dd0
mov qword [rsp + 0x30], r14
lea rcx, [rsp + 0x50]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x80000000
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x1a8], rsi
mov dword [rsp + 0x20], 3
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rbx, rax
cmp rax, 0xffffffffffffffff
jne 0x140016e34
lea rdx, str.CreateFile_failed
lea rcx, str.CIpodDevice::GetSysInfoData__
call fcn.140027ba0
xor edi, edi
jmp 0x140016f6f
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
cmp eax, 0x7fffffff
jbe 0x140016e6b
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rdx, str.GetFileSize_reports_invalid_size
lea rcx, str.CIpodDevice::GetSysInfoData__
call fcn.140027ba0
xor edi, edi
jmp 0x140016f6f
lea ecx, [rax + 1]
call fcn.14003cc90
mov rcx, rbx
mov r14, rax
test rax, rax
jne 0x140016ea1
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rdx, str.malloc_failed__size:__d
lea rcx, str.CIpodDevice::GetSysInfoData__
mov r8d, edi
call fcn.140027ba0
xor edi, edi
jmp 0x140016f6f
lea r9, [rsp + 0x40]
mov r8d, edi
mov rdx, rax
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov rcx, rbx
mov edi, eax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test edi, edi
je 0x140016f6f
lea rdx, str.buildID:
mov rcx, r14
mov qword [rsp + 0x1a0], rbp
call fcn.14003fb54
mov rbp, rax
test rax, rax
je 0x140016f65
add rbp, 9
mov edx, 0xa
mov rcx, rbp
call fcn.14003fe30
mov edx, 0x28
mov rcx, rbp
mov rsi, rax
call fcn.14003fe30
mov edx, 0x29
mov rcx, rbp
mov rbx, rax
call fcn.14003fe30
test rbx, rbx
je 0x140016f37
test rax, rax
je 0x140016f37
lea rcx, [rbx + 1]
cmp rax, rcx
jbe 0x140016f37
mov rsi, rax
mov rbp, rcx
test rsi, rsi
je 0x140016f65
sub rsi, rbp
cmp rsi, 0x14
jb 0x140016f9b
lea r9, str.Internal_Build_Number_calculation_Error_
lea rdx, str.DeviceManagementiPodDevice.cpp
lea rcx, str.len___BUILD_VERSION_MAXLEN
mov r8d, 0x530
call fcn.140027a80
xor edi, edi
mov rbp, qword [rsp + 0x1a0]
mov rcx, r14
call fcn.14003d32c
mov r14, qword [rsp + 0x170]
mov rsi, qword [rsp + 0x1a8]
mov rbx, qword [rsp + 0x198]
mov eax, edi
mov rdi, qword [rsp + 0x178]
jmp 0x140016ffa
lea rbx, [r15 + 0x1e0]
mov r8, rsi
mov rdx, rbp
mov rcx, rbx
call fcn.14003d5e0
mov byte [r15 + rsi + 0x1e0], 0
mov r9d, dword [r15 + 0x30]
lea r8, str.__d__build_version__s
lea rdx, str.CIpodDevice::GetSysInfoData__
mov ecx, 4
mov qword [rsp + 0x20], rbx
call fcn.140028400
jmp 0x140016f67
lea rdx, str.DeviceManagementiPodDevice.cpp
lea rcx, str.NULL___m_pDiskUtil__m_pDiskUtil__m_uchDriveLetter___0
xor r9d, r9d
mov r8d, 0x4d5
call fcn.140027a80
xor eax, eax
mov rcx, qword [rsp + 0x160]
xor rcx, rsp
call fcn.14003eed0
add rsp, 0x180
pop r15
ret