Function at 0x7ece20
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x24]
mov word [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 8], 0
xorps xmm0, xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
cmp dword [0x9b7b60], 0
je 0x7ecf70
cmp dword [eax + 0x3cc], 0
je 0x7ed1d3
mov dword [esp + 0xc], eax
lea ebx, [eax + 0x4c]
lea esi, [ecx + 0x3c]
mov dword [esp + 0x14], 0xffffffff
xor edi, edi
jmp 0x7ecec7
mov ecx, eax
mov byte [ebx + 0x18], 1
mov dword [esp + 0x14], eax
mov dword [esi], eax
inc edi
add ebx, 0x1c
add esi, 0x28
cmp edi, 0x20
je 0x7ecf7a
mov edx, dword [ebx]
test edx, edx
je 0x7eceb7
mov eax, dword [ebx + 4]
cmp byte [eax], 4
jne 0x7eceb7
mov ecx, dword [ebp + 0xc]
push 0xc0000000
call fcn.007ee1b0
add esp, 4
cmp eax, 0xffffffff
jne 0x7eceb1
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push str.could_not_open_HID_device_in_R_W_mode__keyboard_or_mouse_____trying_without
push str.hid_open
push 2
push dword [eax + 4]
call fcn.005fe840
add esp, 0x10
mov edx, dword [ebx]
mov ecx, dword [ebp + 0xc]
push 0
call fcn.007ee1b0
add esp, 4
cmp eax, 0xffffffff
jne 0x7eceab
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
mov esi, dword [eax + 4]
mov eax, dword [esp + 0xc]
mov ebx, dword [eax + 0x44]
push 0
call fcn.00757ff0
add esp, 4
push eax
push edi
push ebx
push str.could_not_open_device__s__interface__d_:__s
push str.hid_open
push 1
push esi
call fcn.005fe840
add esp, 0x1c
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor ecx, ecx
cmp eax, 5
setne cl
neg ecx
or ecx, 0xfffffffd
cmp eax, 2
mov esi, 0xfffffffc
cmovne esi, ecx
jmp 0x7ed239
mov esi, 0xfffffffd
jmp 0x7ed239
mov dword [esp + 0x2c], 0xa
lea eax, [esp + 0x2c]
push eax
mov ebx, dword [esp + 0x18]
push ebx
call dword [0x9b7b64]
test eax, eax
je 0x7ed1f1
movzx eax, word [esp + 0x30]
mov edi, dword [esp + 0xc]
mov ecx, dword [edi + 0x3cc]
mov word [ecx], ax
movzx eax, word [esp + 0x32]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 2], ax
mov ecx, 0x20
mov esi, ecx
push ecx
push ebx
call dword [0x9b7b84]
lea ecx, [esi + esi]
test eax, eax
jne 0x7ecfc0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
shr esi, 1
push esi
push str.set_maximum_input_buffer_size_to__d
push str.hid_open
push 4
push dword [eax + 4]
call fcn.005fe840
add esp, 0x14
lea eax, [esp + 8]
push eax
push ebx
call dword [0x9b7b68]
test eax, eax
je 0x7ed1fe
mov eax, dword [esp + 8]
test eax, eax
je 0x7ed1fe
lea ecx, [esp + 0x40]
push ecx
push eax
call dword [0x9b7b80]
cmp eax, 0x110000
jne 0x7ed20b
movzx eax, word [esp + 0x70]
mov dword [esp + 0x18], eax
movzx eax, word [esp + 0x76]
mov dword [esp + 0x1c], eax
movzx eax, word [esp + 0x7c]
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x7ed08d
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push dword [esp + 0x28]
push str.__could_not_process__s_report_IDs
push str.hid_open
push 2
push dword [eax + 4]
call fcn.005fe840
add esp, 0x14
mov edi, esi
push dword [esp + 0x10]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov ecx, dword [esp + 4]
inc ecx
cmp ecx, 3
je 0x7ed243
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
mov edx, dword [ecx*4 + 0x93bf18]
mov dword [esp + 0x28], edx
push edx
push dword [esp + ecx*4 + 0x1c]
push str._lu_HID__s_report_value_s__found
push str.hid_open
push 4
push dword [eax + 4]
call fcn.005fe840
mov ecx, dword [esp + 0x1c]
add esp, 0x18
mov eax, dword [edi + 0x3cc]
mov byte [eax + ecx + 6], 0
mov eax, dword [esp + ecx*4 + 0x18]
test eax, eax
je 0x7ed083
mov esi, edi
push 0x48
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_calloc
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x7ed050
mov eax, dword [esp + 4]
lea edi, [esp + eax*4]
add edi, 0x18
push dword [esp + 8]
push edi
push dword [esp + 0x18]
push eax
call dword [0x9b7b90]
cmp eax, 0x110000
jne 0x7ed050
cmp dword [edi], 0
je 0x7ed050
mov eax, edi
mov edi, esi
jle 0x7ed073
mov esi, dword [esp + 0x10]
add esi, 2
xor edx, edx
xor ecx, ecx
xor ebx, ebx
mov dword [esp + 0x38], eax
nop word [eax + eax]
mov dword [esp + 0x3c], edx
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
mov edi, ecx
movzx ecx, byte [esi]
push ecx
push str.__Report_ID:_0x_02X
push str.hid_open
push 4
push dword [eax + 4]
call fcn.005fe840
mov edx, dword [esp + 0x50]
add esp, 0x14
xor eax, eax
xor ecx, ecx
cmp byte [esi], 0
setne al
sete cl
add edi, ecx
mov ecx, edi
add edx, eax
inc ebx
add esi, 0x48
mov eax, dword [esp + 0x38]
cmp ebx, dword [eax]
jl 0x7ed140
test edx, edx
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
je 0x7ed073
test ecx, ecx
je 0x7ed1bf
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push dword [esp + 0x28]
push str.program_assertion_failed___zero_and_nonzero_report_IDs_used_for__s
push str.hid_open
push 2
push dword [eax + 4]
call fcn.005fe840
add esp, 0x14
mov eax, dword [edi + 0x3cc]
mov ecx, dword [esp + 4]
mov byte [eax + ecx + 6], 1
jmp 0x7ed073
push str.program_assertion_failed___private_HID_structure_is_uninitialized
push str.hid_open
push 1
push dword [eax + 4]
call fcn.005fe840
add esp, 0x10
mov esi, 0xfffffffb
jmp 0x7ed239
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push str.could_not_gain_access_to_HID_top_collection__HidD_GetAttributes_
jmp 0x7ed216
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push str.could_not_read_HID_preparsed_data__HidD_GetPreparsedData_
jmp 0x7ed216
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x24]
push str.could_not_parse_HID_capabilities__HidP_GetCaps_
push str.hid_open
push 1
push dword [eax + 4]
call fcn.005fe840
add esp, 0x10
mov eax, dword [esp + 8]
xor esi, esi
test eax, eax
je 0x7ed239
push eax
call dword [0x9b7b6c]
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movzx eax, word [esp + 0x44]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 0xa], ax
movzx eax, word [esp + 0x46]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 0xc], ax
movzx eax, word [esp + 0x48]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 0xe], ax
movzx eax, word [esp + 0x40]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 0x10], ax
movzx eax, word [esp + 0x42]
mov ecx, dword [edi + 0x3cc]
mov word [ecx + 0x12], ax
movzx eax, byte [edi + 0x2e]
mov ecx, dword [edi + 0x3cc]
mov byte [ecx + 0x314], al
mov eax, dword [edi + 0x3cc]
cmp byte [eax + 0x314], 0
je 0x7ed2bf
add eax, 0x14
push 0x100
push eax
push ebx
call dword [0x9b7b70]
jmp 0x7ed2c5
mov word [eax + 0x14], 0
movzx eax, byte [edi + 0x2f]
mov ecx, dword [edi + 0x3cc]
mov byte [ecx + 0x315], al
mov eax, dword [edi + 0x3cc]
movzx ecx, byte [eax + 0x315]
test ecx, ecx
je 0x7ed2fb
add eax, 0x114
push 0x100
push eax
push ecx
push ebx
call dword [0x9b7b7c]
jmp 0x7ed304
mov word [eax + 0x114], 0
movzx eax, byte [edi + 0x30]
mov ecx, dword [edi + 0x3cc]
mov byte [ecx + 0x316], al
mov eax, dword [edi + 0x3cc]
cmp byte [eax + 0x316], 0
je 0x7ed33a
add eax, 0x214
push 0x100
push eax
push ebx
call dword [0x9b7b78]
jmp 0x7ed228
mov word [eax + 0x214], 0
jmp 0x7ed228