Function at 0x10164510
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x10415990]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
xor esi, esi
mov dword [ebp - 0x2c], edi
cmp edi, esi
jne 0x101645d7
push 0x1016baa0
push 2
push 0x1f
push str.w_ivw.cpp
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x30], esi
call fcn.101697a0
mov eax, dword [ebp - 0x2c]
push 0x2718
push 0x10377e00
push str.WIVW_ERROR_NULL_HANDLE
push str._handle_is_NULL.
push str.ppIvwMgr
push 0x1028fb6c
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x30]
call fcn.1016cac0
pop edi
pop esi
mov eax, 0x2718
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015eea7
mov esp, ebp
pop ebp
ret 8
cmp ebx, esi
je 0x10164695
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x101645f4
cmp eax, 0x10
jne 0x10164695
push 0x1016baa0
push 2
push 0x20
push str.w_ivw.cpp
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x30], esi
call fcn.101697a0
mov eax, dword [ebp - 0x2c]
push 0x2717
push 0x10377e00
push str.WIVW_ERROR_INVALID_PARA_VALUE
push str._is_NULL.
push str.pWorkDir__NULL__spIvw::is_file_exist_pWorkDir_
push str.__para
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x30]
call fcn.1016cac0
pop edi
pop esi
mov eax, 0x2717
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015eea7
mov esp, ebp
pop ebp
ret 8
push 0x10454ee0
mov dword [edi], esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x10454ed8], esi
jne 0x10164bac
push ebx
call fcn.1016b5f0
mov ecx, eax
call fcn.1016ee10
call fcn.10169430
mov edi, 4
mov dword [eax + 4], edi
mov eax, str.Iflytek.com
call fcn.10161720
test al, al
je 0x10164767
call fcn.1016b5f0
cmp dword [eax + 0x10], esi
jl 0x10164767
call fcn.1016b5f0
cmp dword [eax + 0x10], edi
jge 0x10164767
lea eax, [ebp - 0x20]
push eax
call fcn.1016b5f0
mov ecx, eax
call fcn.10167890
cmp dword [eax + 0x14], 0x10
jb 0x10164711
mov edi, dword [eax]
jmp 0x10164713
mov edi, eax
call fcn.1016b5f0
mov eax, dword [eax + 0x10]
push edi
push eax
call fcn.10167810
mov ecx, eax
call fcn.1016b390
lea ecx, [ebp - 0x20]
call fcn.10048190
call fcn.101616a0
test eax, eax
jg 0x101647cd
push 0x1016baa0
push esi
push 0x2e
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov ecx, dword [ebp - 0x24]
push str.wIvwInitialize__sglog_open_succeed_
add ecx, 0xbc0
push ecx
jmp 0x101647bd
test byte [0x10455d90], 1
jne 0x1016478e
or dword [0x10455d90], 1
mov ecx, 0x10455b90
call fcn.101651b0
push 0x101b4ca0
call fcn.1015f6af
add esp, 4
cmp dword [0x10455d68], esi
jg 0x101647cd
push 0x1016baa0
push esi
push 0x32
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov edx, dword [ebp - 0x24]
push str.wIvwInitialize__sglog_inst_has_been_created__
add edx, 0xbc0
push edx
call fcn.10167060
add esp, 8
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push ebx
mov dword [0x10454ea4], 0x10194550
mov dword [0x10454e9c], 0x10192fd0
mov dword [0x10454e88], 0x101930d0
mov dword [0x10454ebc], 0x10193290
mov dword [0x10454eac], 0x10193e90
mov dword [0x10454e6c], 0x101941f0
mov dword [0x10454ecc], 0x10193440
mov dword [0x10454e70], 0x10193700
mov dword [0x10454ec8], 0x10193c70
mov dword [0x10454eb0], 0x10193dd0
mov dword [0x10454ea0], 0x10193930
mov dword [0x10454eb4], 0x10193ad0
call fcn.10194550
push 0x10454e9c
lea ecx, [ebp - 0x44]
mov edi, eax
call fcn.1016ac20
cmp edi, esi
je 0x10164916
push 0x1016baa0
push 2
push 0x39
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push edi
push str._wFeaInitialize_err_ret_
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x1016baa0
push 2
push 0x39
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push edi
add eax, 0xbc0
push str.Error:_ret
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x10454ee0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x44]
call fcn.10167710
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015eea7
mov esp, ebp
pop ebp
ret 8
push ebx
mov dword [0x10454ea8], 0x10183940
mov dword [0x10454e7c], 0x1017f590
call fcn.10183940
push 0x10454e7c
push 0x10454ed0
lea ecx, [ebp - 0x44]
mov dword [0x10454ed0], eax
call fcn.1016ac70
cmp dword [0x10454ed0], esi
jne 0x10164a06
push 0x1016baa0
push 2
push 0x42
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push str._createResMgr_err
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x1016baa0
push 2
push 0x42
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push 0x2718
add eax, 0xbc0
push str.Error:_ret
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x10454ee0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x44]
call fcn.10167710
pop edi
pop esi
mov eax, 0x2718
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015eea7
mov esp, ebp
pop ebp
ret 8
push ebx
mov dword [0x10454e78], 0x1017de60
mov dword [0x10454e84], 0x1017c8f0
mov dword [0x10454e98], 0x1017c970
mov dword [0x10454e94], 0x1017cac0
mov dword [0x10454e68], 0x1017d420
mov dword [0x10454e74], 0x1017d890
mov dword [0x10454e90], 0x1017cbf0
mov dword [0x10454e80], 0x1017cdc0
mov dword [0x10454ec0], 0x1017cf90
mov dword [0x10454e64], 0x1017d360
mov dword [0x10454ec4], 0x1017d170
call fcn.1017de60
push 0x10454e84
lea ecx, [ebp - 0x44]
mov edi, eax
call fcn.1016ac20
cmp edi, esi
je 0x10164ae8
push 0x1016baa0
push 2
push 0x47
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push edi
push str._wVadInitialize_err_ret_
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
mov ecx, eax
call fcn.10167af0
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x1016baa0
push 2
push 0x47
jmp 0x101649a1
push ebx
push 0x10454ed4
mov dword [0x10454e8c], 0x1017a9e0
mov dword [0x10454eb8], 0x1017a8a0
call fcn.1017a9e0
push 0x10454eb8
push 0x10454ed4
lea ecx, [ebp - 0x44]
mov edi, eax
call fcn.1016acc0
cmp edi, esi
je 0x10164b72
push 0x1016baa0
push 2
push 0x4d
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push str._wDecInitialize_err
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
lea ecx, [ebp - 0x28]
call fcn.1016cac0
push 0x1016baa0
push 2
push 0x4d
jmp 0x101649a1
push 4
call sub.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, esi
je 0x10164b89
mov ecx, eax
call fcn.10161bf0
jmp 0x10164b8b
xor eax, eax
mov dword [0x10454ed8], eax
call fcn.10163dc0
mov eax, dword [0x10454ed8]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], eax
lea ecx, [ebp - 0x44]
call fcn.101654b0
jmp 0x10164c2c
test byte [0x10455d90], 1
jne 0x10164bd3
or dword [0x10455d90], 1
mov ecx, 0x10455b90
call fcn.101651b0
push 0x101b4ca0
call fcn.1015f6af
add esp, 4
cmp dword [0x10455d68], esi
jg 0x10164c1f
push 0x1016baa0
push esi
push 0x56
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push str.__sglog_inst_has_been_created_
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
lea ecx, [ebp - 0x28]
call fcn.1016cac0
mov edx, dword [0x10454ed8]
mov dword [edi], edx
call fcn.10163dc0
test byte [0x10455d90], 1
jne 0x10164c53
or dword [0x10455d90], 1
mov ecx, 0x10455b90
call fcn.101651b0
push 0x101b4ca0
call fcn.1015f6af
add esp, 4
cmp dword [0x10455d68], esi
jg 0x10164cd7
lea eax, [ebp - 0x20]
push eax
call fcn.1016b5f0
mov ecx, eax
call fcn.1016be30
cmp dword [eax + 0x14], 0x10
jb 0x10164c75
mov edi, dword [eax]
jmp 0x10164c77
mov edi, eax
push 0x1016baa0
push esi
push 0x5b
push str.w_ivw.cpp
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], esi
call fcn.101697a0
mov eax, dword [ebp - 0x24]
push edi
push 0x10290200
add eax, 0xbc0
push str.wIvwInitialize
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
push eax
call fcn.10167060
add esp, 8
lea ecx, [ebp - 0x28]
call fcn.1016cac0
cmp dword [ebp - 0xc], 0x10
jb 0x10164cd7
mov ecx, dword [ebp - 0x20]
push ecx
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
add esp, 4
push 0x10454ee0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x44]
call fcn.10167710
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.1015eea7
mov esp, ebp
pop ebp
ret 8