Function at 0x18009b2f0
Capabilities:
Get file size

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x30]
sub rsp, 0x130
mov qword [rbp - 0x70], 0xfffffffffffffffe
mov qword [rsp + 0x180], rbx
mov rax, qword [0x1804610b0]
xor rax, rsp
mov qword [rbp + 0x20], rax
movzx r12d, dl
mov r15, rcx
xor r14d, r14d
mov dword [rsp + 0x50], r14d
add rcx, 0x18
mov rax, qword [rcx]
lea rdx, [rbp - 0x20]
call qword [rax + 0x58]
nop
cmp qword [rbp - 0x10], r14
je 0x18009b41c
lea rcx, [rbp - 0x20]
call fcn.1801dbd90
test al, al
jne 0x18009b456
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x48]
call fcn.1801dcc70
mov rbx, rax
mov dword [rsp + 0x50], 1
lea rcx, [rbp - 0x68]
call fcn.18016fd60
nop
lea r8d, [r14 + 5]
lea rdx, str.dict_
mov rcx, rax
call fcn.180033c20
mov qword [rbp - 0x80], r14
mov qword [rbp - 0x78], r14
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x70], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x80], xmm1
mov qword [rax + 0x10], r14
mov qword [rax + 0x18], 7
mov word [rax], r14w
mov dword [rsp + 0x50], 3
mov r8, rbx
lea rdx, [rsp + 0x70]
lea rcx, [rbp]
call fcn.1800804c0
nop
mov ebx, 3
and ebx, 0xfffffffd
mov dword [rsp + 0x50], ebx
lea rcx, [rsp + 0x70]
call fcn.1800338a0
nop
lea rcx, [rbp - 0x68]
call fcn.1800338a0
and ebx, 0xfffffffe
mov dword [rsp + 0x50], ebx
lea rcx, [rbp - 0x48]
call fcn.1800338a0
lea rcx, [rbp]
call fcn.1801dbd90
test al, al
jne 0x18009b424
lea rcx, [rbp]
call fcn.1800338a0
xor dil, dil
jmp 0x18009bd0c
mov rax, qword [r15]
lea rdx, [rbp]
mov rcx, r15
call qword [rax + 0x28]
lea rdx, [rbp]
cmp qword [rbp + 0x18], 8
cmovae rdx, qword [rbp]
mov r8, qword [rbp + 0x10]
lea rcx, [rbp - 0x20]
call fcn.180033930
nop
lea rcx, [rbp]
call fcn.1800338a0
mov qword [rsp + 0x58], r14
mov ecx, 8
call fcn.1802994e4
mov qword [rsp + 0x68], rax
mov qword [rax], 0xffffffffffffffff
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x20], 3
mov r9d, 1
mov r8d, 0x80000000
lea rdx, [rbp - 0x20]
lea rcx, [rsp + 0x58]
call fcn.18016bb70
test al, al
jne 0x18009b587
test r12b, r12b
je 0x18009bccd
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.1802a90c0
mov r14d, dword [rax]
call fcn.180174410
test al, al
je 0x18009bccd
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rdi, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test rdi, rdi
je 0x18009bcc0
test rax, rax
je 0x18009bcb8
xor edx, edx
mov r8d, 0x2000
mov rcx, rdi
call fcn.18029c350
mov dword [rsp + 0x40], r14d
mov dword [rsp + 0x38], esi
lea rax, [0x1803775f8]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0xd2
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, rdi
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rbx
call fcn.18029c350
lea r9, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae r9, qword [rbp - 0x20]
mov r8, rdi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
jmp 0x18009bca2
mov r13, r14
mov rbx, qword [rsp + 0x58]
test rbx, rbx
je 0x18009bbbb
mov rcx, qword [rbx]
cmp rcx, 0xffffffffffffffff
je 0x18009bbbb
lea rdx, [rbp - 0x28]
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
cmp eax, 0xffffffff
jne 0x18009b5c4
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x18009bbbb
mov r13d, dword [rbp - 0x28]
shl r13, 0x20
add r13, rbx
cmp r13, 0x1258
jb 0x18009bbbb
mov dword [r15 + 0xf0], r13d
mov byte [rsp + 0x20], r12b
mov r9d, 0x1258
xor r8d, r8d
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.18009bd40
mov rdi, rax
mov qword [rsp + 0x60], rax
test rax, rax
jne 0x18009b701
test r12b, r12b
je 0x18009bccd
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.1802a90c0
mov r14d, dword [rax]
call fcn.180174410
test al, al
je 0x18009bccd
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rdi, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test rdi, rdi
je 0x18009bcc0
test rax, rax
je 0x18009bcb8
xor edx, edx
mov r8d, 0x2000
mov rcx, rdi
call fcn.18029c350
mov dword [rsp + 0x40], r14d
mov dword [rsp + 0x38], esi
lea rax, [0x180378950]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0xeb
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, rdi
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rbx
call fcn.18029c350
lea rax, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae rax, qword [rbp - 0x20]
mov qword [rsp + 0x20], rax
mov r9d, 0x1258
mov r8, rdi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
jmp 0x18009bca2
lea rbx, [r15 + 0xd8]
mov rdx, qword [rbx + 8]
cmp qword [rbx + 0x10], rdx
je 0x18009b71c
mov qword [rdx], rdi
add qword [rbx + 8], 8
jmp 0x18009b729
lea r8, [rsp + 0x60]
mov rcx, rbx
call fcn.18009c2f0
mov eax, dword [rdi + 0x48]
test eax, eax
jle 0x18009b882
mov ecx, dword [rdi + 0x4c]
test ecx, ecx
jle 0x18009b882
lea esi, [rcx + rax]
mov byte [rsp + 0x20], r12b
mov r9d, esi
mov r8d, 0x1258
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.18009bd40
mov qword [rsp + 0x60], rax
test rax, rax
jne 0x18009b88f
test r12b, r12b
je 0x18009b882
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
call fcn.1802a90c0
mov r12d, dword [rax]
call fcn.180174410
test al, al
je 0x18009b882
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rdi, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test rdi, rdi
je 0x18009b875
test rax, rax
je 0x18009b86d
xor edx, edx
mov r8d, 0x2000
mov rcx, rdi
call fcn.18029c350
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], r14d
lea rax, [0x180378990]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x104
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, rdi
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rbx
call fcn.18029c350
lea rax, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae rax, qword [rbp - 0x20]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, rdi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
mov r8, rbx
lea rdx, [0x180378780]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, rdi
call fcn.180299904
test rbx, rbx
je 0x18009b882
mov rcx, rbx
call fcn.180299904
mov rcx, r15
call fcn.18009b110
jmp 0x18009bccd
mov rdx, qword [rbx + 8]
cmp qword [rbx + 0x10], rdx
je 0x18009b8a3
mov qword [rdx], rax
add qword [rbx + 8], 8
jmp 0x18009b8b0
lea r8, [rsp + 0x60]
mov rcx, rbx
call fcn.18009c2f0
mov rax, qword [rbx + 8]
mov edi, r14d
mov rcx, qword [rbx]
sub rax, rcx
sar rax, 3
cmp rax, 2
jb 0x18009bab1
mov rax, qword [rcx]
test rax, rax
je 0x18009bab1
mov rdx, qword [rcx + 8]
test rdx, rdx
je 0x18009bab1
movsxd rax, dword [rax + 0x4c]
mov edi, dword [rax + rdx]
mov dword [rbp - 0x28], edi
add rdx, 4
add rdx, rax
mov qword [rsp + 0x68], rdx
je 0x18009bab1
cmp edi, 3
jb 0x18009bab1
cmp dword [rdx], 0
jne 0x18009bab1
cmp dword [rdx + 4], 0x1258
jne 0x18009bab1
mov esi, 2
cmp edi, esi
jbe 0x18009b99a
lea eax, [rdi - 1]
lea r14, [rdx + 8]
nop
mov r8d, dword [r14]
cmp esi, eax
jae 0x18009b93f
lea eax, [rsi + 1]
mov edi, dword [rdx + rax*4]
jmp 0x18009b942
mov edi, r13d
sub edi, r8d
mov byte [rsp + 0x20], r12b
mov r9d, edi
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.18009bd40
mov qword [rsp + 0x60], rax
test rax, rax
je 0x18009b9a2
mov rdx, qword [rbx + 8]
cmp qword [rbx + 0x10], rdx
je 0x18009b978
mov qword [rdx], rax
add qword [rbx + 8], 8
jmp 0x18009b985
lea r8, [rsp + 0x60]
mov rcx, rbx
call fcn.18009c2f0
inc esi
add r14, 4
mov edi, dword [rbp - 0x28]
cmp esi, edi
mov rdx, qword [rsp + 0x68]
lea eax, [rdi - 1]
jb 0x18009b930
mov dil, 1
jmp 0x18009bcd0
test r12b, r12b
je 0x18009b882
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
call fcn.1802a90c0
mov r13d, dword [rax]
call fcn.180174410
test al, al
je 0x18009b882
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov r14, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test r14, r14
je 0x18009b875
test rax, rax
je 0x18009baa9
xor edx, edx
mov r8d, 0x2000
mov rcx, r14
call fcn.18029c350
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], r12d
lea rax, [0x180378910]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x134
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.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, rbx
call fcn.18029c350
lea rax, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae rax, qword [rbp - 0x20]
lea r9d, [rsi + 1]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], edi
mov r8, r14
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
mov r8, rbx
lea rdx, [0x180378780]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, r14
jmp 0x18009b870
test r12b, r12b
je 0x18009b882
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r14d, eax
call fcn.1802a90c0
mov r12d, dword [rax]
call fcn.180174410
test al, al
je 0x18009b882
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 0x18009b875
test rax, rax
je 0x18009bbb3
xor edx, edx
mov r8d, 0x2000
mov rcx, rsi
call fcn.18029c350
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], r14d
lea rax, [0x1803788c0]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0x118
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.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
lea rax, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae rax, qword [rbp - 0x20]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov r8, rsi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
mov r8, rbx
lea rdx, [0x180378780]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, rsi
jmp 0x18009b870
test r12b, r12b
je 0x18009bccd
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.1802a90c0
mov r14d, dword [rax]
call fcn.180174410
test al, al
je 0x18009bccd
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rdi, rax
lea rdx, [0x180488a90]
mov ecx, 0x2000
call fcn.180299938
mov rbx, rax
test rdi, rdi
je 0x18009bcc0
test rax, rax
je 0x18009bcb8
xor edx, edx
mov r8d, 0x2000
mov rcx, rdi
call fcn.18029c350
mov dword [rsp + 0x40], r14d
mov dword [rsp + 0x38], esi
lea rax, [0x180378798]
mov qword [rsp + 0x30], rax
lea rax, str.RC::RCReadonlyWordLib::LoadWordLibByBlocks
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], 0xe0
lea r9, str.e:zhanlue2345inputprojectlibpinyindata_src_rcreadonlywordlib.cpp
lea r8, str._s__d___s:__s_LastError_d_errno_d
mov edx, 0x1000
mov rcx, rdi
call fcn.180034d20
xor edx, edx
mov r8d, 0x2000
mov rcx, rbx
call fcn.18029c350
lea r9, [rbp - 0x20]
cmp qword [rbp - 8], 8
cmovae r9, qword [rbp - 0x20]
mov qword [rsp + 0x20], r13
mov r8, rdi
mov edx, 0x1000
mov rcx, rbx
call fcn.180034d20
mov r8, rbx
lea rdx, [0x180378780]
lea rcx, str.ResErr
call fcn.180174430
mov rcx, rdi
call fcn.180299904
test rbx, rbx
je 0x18009bccd
mov rcx, rbx
call fcn.180299904
xor dil, dil
mov rbx, qword [rsp + 0x58]
test rbx, rbx
je 0x18009bd0c
mov rcx, qword [rbx]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x18009bcf4
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx], 0
mov edx, 8
mov rcx, qword [rsp + 0x58]
call fcn.180299904
mov qword [rsp + 0x58], 0
lea rcx, [rbp - 0x20]
call fcn.1800338a0
movzx eax, dil
mov rcx, qword [rbp + 0x20]
xor rcx, rsp
call fcn.1802994c0
mov rbx, qword [rsp + 0x180]
add rsp, 0x130
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret