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

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x17]
sub rsp, 0xa0
mov qword [rbp - 0x29], 0xfffffffffffffffe
mov qword [rsp + 0xe0], rbx
mov rax, qword [0x1804610b0]
xor rax, rsp
mov qword [rbp + 0xf], rax
mov r14d, r9d
mov r12, r8
mov rdi, rdx
mov rax, qword [rbp + 0x7f]
mov qword [rbp - 0x31], rax
test r8, r8
je 0x18009114d
test r9d, r9d
je 0x18009114d
cmp qword [rdx + 0x10], 0
je 0x18009114d
mov qword [rbp - 0x39], 0
mov ecx, 8
call fcn.1802994e4
mov qword [rbp + 7], rax
mov r15, 0xffffffffffffffff
mov qword [rax], r15
mov qword [rbp - 0x39], rax
mov dword [rsp + 0x20], 3
lea r9d, [r15 + 2]
mov r8d, 0x80000000
mov rdx, rdi
lea rcx, [rbp - 0x39]
call fcn.18016bb70
mov rbx, qword [rbp - 0x39]
test al, al
jne 0x180090d7b
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r15d, eax
call fcn.1802a90c0
mov r12d, dword [rax]
call fcn.180174410
test al, al
je 0x180091112
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r14, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rsi, rax
test r14, r14
je 0x180090d6a
test rax, rax
je 0x180090d62
xor edx, edx
mov r8d, 0x2000
mov rcx, r14
call fcn.18029c350
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], r15d
lea rax, [0x1803775f8]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCWordLibFileUtil::LoadFromFile
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x5f
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcwordlibfileutil.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, r14
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rsi
call fcn.18029c350
cmp qword [rdi + 0x18], 8
jb 0x180090d39
mov rdi, qword [rdi]
mov r9, rdi
mov r8, r14
mov edx, 0x1000
mov rcx, rsi
call fcn.180034d20
mov r8, rsi
lea rdx, [0x180377650]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, r14
call fcn.180299904
test rsi, rsi
je 0x180091112
mov rcx, rsi
jmp 0x18009110d
xor esi, esi
test rbx, rbx
je 0x180091008
mov rcx, qword [rbx]
cmp rcx, 0xffffffffffffffff
je 0x180091008
lea rdx, [rbp + 7]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov r13d, eax
cmp eax, 0xffffffff
jne 0x180090db3
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x180091008
mov esi, dword [rbp + 7]
shl rsi, 0x20
add rsi, r13
je 0x180091008
cmp r14, rsi
cmovbe esi, r14d
xor eax, eax
mov qword [rbp - 0x19], rax
mov qword [rbp - 0x11], rax
mov qword [rbp - 9], rax
mov qword [rbp - 1], rax
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x19], xmm0
mov qword [rbp - 9], rax
mov qword [rbp - 1], rax
movzx r13d, byte [rbp + 0x77]
test r13b, r13b
je 0x180090e08
mov edx, esi
lea rcx, [rbp - 0x19]
call fcn.18018c430
mov r14, rax
xor eax, eax
jmp 0x180090e0b
mov r14, r12
test r14, r14
je 0x180090f7a
mov dword [rbp - 0x21], eax
cmp qword [rbx], 0xffffffffffffffff
je 0x180090e66
mov qword [rsp + 0x20], rax
lea r9, [rbp - 0x21]
mov r8d, esi
mov rdx, r14
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x180090e66
mov eax, dword [rbp - 0x21]
cmp eax, esi
jne 0x180090e66
mov rcx, qword [rbp - 0x31]
test rcx, rcx
je 0x180090e4b
mov dword [rcx], eax
test r13b, r13b
je 0x180090e5e
mov r8d, esi
mov rdx, r14
mov rcx, r12
call fcn.18029c510
mov sil, 1
jmp 0x180090f7d
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r13d, eax
call fcn.1802a90c0
mov eax, dword [rax]
mov dword [rbp - 0x31], eax
call fcn.180174410
test al, al
je 0x180090f7a
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r12, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r14, rax
test r12, r12
je 0x180090f6d
test rax, rax
je 0x180090f65
xor edx, edx
mov r8d, 0x2000
mov rcx, r12
call fcn.18029c350
mov eax, dword [rbp - 0x31]
mov dword [rsp + 0x40], eax
mov dword [rsp + 0x38], r13d
lea rax, [0x1803776f0]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCWordLibFileUtil::LoadFromFile
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x7d
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcwordlibfileutil.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, r12
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, r14
call fcn.18029c350
cmp qword [rdi + 0x18], 8
jb 0x180090f31
mov rdi, qword [rdi]
mov eax, dword [rbp - 0x21]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], esi
mov r9, rdi
mov r8, r12
mov edx, 0x1000
mov rcx, r14
call fcn.180034d20
mov r8, r14
lea rdx, [0x180377650]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, r12
call fcn.180299904
test r14, r14
je 0x180090f7a
mov rcx, r14
call fcn.180299904
xor sil, sil
cmp qword [rbp - 0x11], 0
je 0x180090f99
lea rcx, [rbp - 0x11]
call fcn.18003d460
xor r14d, r14d
mov ecx, r14d
mov qword [rbp - 0x19], rcx
jmp 0x180090fa0
mov rcx, qword [rbp - 0x19]
xor r14d, r14d
mov rax, qword [rbp - 1]
test rax, rax
je 0x180090fba
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbp - 1], r14
mov rcx, qword [rbp - 0x19]
test rcx, rcx
je 0x180090fc8
call fcn.180299904
mov qword [rbp - 0x19], r14
mov rdi, qword [rbp - 9]
test rdi, rdi
je 0x180091118
mov eax, r15d
lock xadd dword [rdi + 8], eax
sub eax, 1
jne 0x180090fff
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax]
lock xadd dword [rdi + 0xc], r15d
cmp r15d, 1
jne 0x180090fff
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rbp - 0x39]
jmp 0x180091118
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
call fcn.1802a90c0
mov r13d, dword [rax]
call fcn.180174410
test al, al
je 0x180091112
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r15, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r14, rax
test r15, r15
je 0x180091105
test rax, rax
je 0x1800910fd
xor edx, edx
mov r8d, 0x2000
mov rcx, r15
call fcn.18029c350
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], r12d
lea rax, [0x180377618]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCWordLibFileUtil::LoadFromFile
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x67
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcwordlibfileutil.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, r15
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, r14
call fcn.18029c350
cmp qword [rdi + 0x18], 8
jb 0x1800910cf
mov rdi, qword [rdi]
mov qword [rsp + 0x20], rsi
mov r9, rdi
mov r8, r15
mov edx, 0x1000
mov rcx, r14
call fcn.180034d20
mov r8, r14
lea rdx, [0x180377650]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, r15
call fcn.180299904
test r14, r14
je 0x180091112
mov rcx, r14
call fcn.180299904
xor sil, sil
xor r14d, r14d
test rbx, rbx
je 0x180091144
mov rcx, qword [rbx]
lea r8, [rcx - 1]
cmp r8, 0xfffffffffffffffd
ja 0x180091133
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx], r14
mov edx, 8
mov rcx, rbx
call fcn.180299904
mov qword [rbp - 0x39], r14
movzx eax, sil
jmp 0x180091254
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
call fcn.1802a90c0
mov r15d, dword [rax]
call fcn.180174410
test al, al
je 0x180091252
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rsi, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test rsi, rsi
je 0x180091245
test rax, rax
je 0x18009123d
xor edx, edx
mov r8d, 0x2000
mov rcx, rsi
call fcn.18029c350
mov dword [rsp + 0x40], r15d
mov dword [rsp + 0x38], r14d
lea rax, [0x1803775e0]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCWordLibFileUtil::LoadFromFile
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x57
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcwordlibfileutil.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, rsi
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rbx
call fcn.18029c350
cmp qword [rdi + 0x18], 8
jb 0x180091214
mov rdi, qword [rdi]
mov r9, rdi
mov r8, rsi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
mov r8, rbx
lea rdx, [0x180377650]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, rsi
call fcn.180299904
test rbx, rbx
je 0x180091252
mov rcx, rbx
call fcn.180299904
xor al, al
mov rcx, qword [rbp + 0xf]
xor rcx, rsp
call fcn.1802994c0
mov rbx, qword [rsp + 0xe0]
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret