Function at 0x68c01f50
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, 0x68c07008
push edi
push esi
mov esi, 4
push ebx
mov ebx, eax
sub esp, 0x34c
mov edi, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov dword [esp + 0x28], 4
mov eax, dword [ebp - 4]
sub esi, 1
test eax, eax
je 0x68c02050
mov dword [esp + 4], ebp
mov dword [esp], ebx
call edi
test eax, eax
je 0x68c02034
sub ebp, 0x508
test esi, esi
jne 0x68c01f74
cmp dword [esp + 0x28], 4
je 0x68c02039
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x60000000
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 3
mov dword [esp + 4], 0xc0000000
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov esi, eax
cmp eax, 0xffffffff
je 0x68c02034
lea eax, [esp + 0x6c]
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 0x6c], 0
call sub.hid.dll_HidD_GetPreparsedData
sub esp, 8
test al, al
jne 0x68c02060
test byte [0x68c074c0], 4
jne 0x68c020c0
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
mov dword [esp], esi
call ebx
sub esp, 4
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call sub.hid.dll_HidD_FreePreparsedData
sub esp, 4
mov esi, 1
add esp, 0x34c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x28], esi
jmp 0x68c01f93
lea eax, [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call sub.hid.dll_HidP_GetCaps
sub esp, 8
cmp eax, 0x110000
je 0x68c020f6
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
test byte [0x68c074c0], 4
je 0x68c0201d
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.ignoring_HID_device__HidP_GetCaps_returned__lx_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0201d
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.ignoring_HID_device__HidD_GetPreparsedData_failed_with_error__lu_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
mov dword [esp + 0x10], eax
call fcn.68c01520
jmp 0x68c02017
movzx eax, word [esp + 0x7a]
cmp ax, 1
je 0x68c02141
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
test byte [0x68c074c0], 4
je 0x68c0201d
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.ignoring_HID_device__unsupported_usage_page__04x_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0201d
movzx eax, word [esp + 0x78]
lea edx, [eax - 4]
cmp dx, 1
jbe 0x68c0219d
cmp ax, 8
je 0x68c0219d
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
test byte [0x68c074c0], 4
je 0x68c0201d
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], str.ignoring_HID_device__unsupported_usage__04x:_04x_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0201d
mov eax, esi
call fcn.68c01570
mov dword [esp + 0x34], eax
test eax, eax
je 0x68c021e8
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
test byte [0x68c074c0], 4
je 0x68c0201d
mov dword [esp + 0xc], str.ignoring_HID_device__overridden_for_dinput_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0201d
mov edx, dword [esp + 0x78]
imul ecx, dword [esp + 0x28], 0x508
mov eax, dword [esp + 0x6c]
mov dword [ecx + 0x68c06300], edx
mov edx, dword [esp + 0x7c]
lea edi, [ecx + 0x68c060a0]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], edi
mov dword [ecx + 0x68c06304], edx
mov edx, dword [esp + 0x80]
mov dword [ecx + 0x68c06308], edx
mov edx, dword [esp + 0x84]
mov dword [ecx + 0x68c0630c], edx
mov edx, dword [esp + 0x88]
mov dword [ecx + 0x68c06310], edx
mov edx, dword [esp + 0x8c]
mov dword [ecx + 0x68c06314], edx
mov edx, dword [esp + 0x90]
mov dword [ecx + 0x68c06318], edx
mov edx, dword [esp + 0x94]
mov dword [ecx + 0x68c0631c], edx
mov edx, dword [esp + 0x98]
mov dword [ecx + 0x68c06320], edx
mov edx, dword [esp + 0x9c]
mov dword [ecx + 0x68c06324], edx
mov edx, dword [esp + 0xa0]
mov dword [ecx + 0x68c06328], edx
mov edx, dword [esp + 0xa4]
mov dword [ecx + 0x68c0632c], edx
mov edx, dword [esp + 0xa8]
mov dword [ecx + 0x68c06330], edx
mov edx, dword [esp + 0xac]
mov dword [ecx + 0x68c06334], edx
mov edx, dword [esp + 0xb0]
movzx eax, word [ecx + 0x68c06308]
mov dword [esp], 1
mov dword [ecx + 0x68c06338], edx
mov edx, dword [esp + 0xb4]
mov dword [esp + 4], eax
mov eax, dword [sym.imp.ucrtbase.dll_calloc]
mov dword [ecx + 0x68c0633c], edx
mov dword [esp + 0x54], eax
call eax
mov dword [edi + 0x470], eax
test eax, eax
je 0x68c026b9
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov dword [esp + 0x70], 0
mov word [esp + 0x68], cx
mov dword [eax + 0x68c060b8], 0
lea ecx, [eax + 0x18]
mov dword [eax + 0x68c060bc], 0
mov dword [eax + 0x68c060c0], 0
mov dword [eax + 0x68c060c4], 0
mov dword [eax + 0x68c060c8], 0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x4c], ecx
movzx eax, word [eax + 0x28e]
lea eax, [eax + eax*8]
shl eax, 3
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_malloc]
mov dword [esp + 0x44], eax
call eax
mov edi, eax
test eax, eax
je 0x68c026b9
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edi
mov dword [esp], 0
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x38]
add eax, 0x68c0632e
mov dword [esp + 8], eax
call sub.hid.dll_HidP_GetButtonCaps
sub esp, 0x10
cmp eax, 0x110000
je 0x68c02dbd
test byte [0x68c074c0], 4
jne 0x68c02d54
mov dword [esp], edi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
mov eax, dword [esp + 0x2c]
mov edx, 0xffffffff
mov word [eax + 0x1c], dx
imul eax, dword [esp + 0x28], 0x508
lea ecx, [eax + 0x68c060a0]
movzx eax, word [eax + 0x68c06330]
mov dword [esp + 0x40], ecx
lea eax, [eax + eax*8]
shl eax, 3
mov dword [esp], eax
mov eax, dword [esp + 0x44]
call eax
mov ebp, eax
test eax, eax
je 0x68c026bf
mov eax, dword [esp + 0x30]
mov dword [esp + 4], ebp
mov dword [esp], 0
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x38]
add eax, 0x68c06330
mov dword [esp + 8], eax
call sub.hid.dll_HidP_GetValueCaps
sub esp, 0x10
cmp eax, 0x110000
je 0x68c02b91
test byte [0x68c074c0], 4
jne 0x68c02b64
mov dword [esp], ebp
call edi
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c063d0], 0
jne 0x68c02b57
test byte [0x68c074c0], 4
jne 0x68c02eb6
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c064a8], 0
lea edx, [eax + 0x68c060a0]
jne 0x68c02cce
test byte [0x68c074c0], 4
jne 0x68c02e29
cmp word [edx + 0x2a0], 0
jne 0x68c02c78
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06388], 0
je 0x68c024b5
mov eax, dword [esp + 0x2c]
mov word [eax + 0x22], 7
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06418], 0
lea edx, [eax + 0x68c060a0]
jne 0x68c02c22
test byte [0x68c074c0], 4
jne 0x68c02e8d
cmp word [edx + 0x3c0], 0
je 0x68c024f2
mov eax, dword [esp + 0x2c]
mov word [eax + 0x26], 7
mov eax, dword [esp + 0x4c]
mov edx, 0x101
mov word [eax + 0x68c060a0], dx
imul eax, dword [esp + 0x28], 0x508
movzx eax, word [eax + 0x68c0632c]
mov dword [esp + 0x70], eax
lea eax, [eax + eax*4]
shl eax, 2
mov dword [esp], eax
mov eax, dword [esp + 0x44]
call eax
mov ebp, eax
test eax, eax
je 0x68c026bf
mov eax, dword [esp + 0x30]
mov dword [esp], ebp
mov dword [esp + 8], eax
lea eax, [esp + 0x70]
mov dword [esp + 4], eax
call sub.hid.dll_HidP_GetLinkCollectionNodes
sub esp, 0xc
cmp eax, 0x110000
je 0x68c0278b
test byte [0x68c074c0], 4
jne 0x68c0275e
mov dword [esp], ebp
call edi
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06518], 0
jne 0x68c02749
cmp word [eax + 0x68c06560], 0
jne 0x68c02749
xor eax, eax
mov dword [esp + 4], 1
mov dword [esp + 0xc], eax
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CreateEventW]
sub esp, 0x10
mov dword [esp + 0x34], eax
test eax, eax
je 0x68c026bf
test byte [0x68c074c0], 8
jne 0x68c02e59
mov eax, dword [esp + 0x30]
mov dword [esp], 1
imul edx, dword [esp + 0x28], 0x508
mov ebp, dword [esp + 0x54]
mov dword [edx + 0x68c062fc], eax
mov eax, dword [esp + 0x34]
mov dword [edx + 0x68c064f0], eax
movzx eax, word [edx + 0x68c06304]
add edx, 0x68c060a0
mov dword [esp + 0x30], edx
mov dword [esp + 4], eax
call ebp
mov edx, dword [esp + 0x30]
mov dword [edx + 0x468], eax
test eax, eax
je 0x68c026c5
movzx eax, word [edx + 0x266]
mov dword [esp], 1
mov dword [esp + 4], eax
call ebp
mov edx, dword [esp + 0x30]
mov dword [edx + 0x46c], eax
test eax, eax
je 0x68c026c5
mov ebp, dword [esp + 0x38]
xor eax, eax
mov ecx, 4
lea edx, [ebp + 0x68c060cc]
mov edi, edx
rep stosd dword es:[edi], eax
lea ecx, [ebx + 0x206]
xor eax, eax
mov dword [ebp + 0x68c060e8], eax
lea eax, [ebp + 0x68c060f0]
jmp 0x68c02672
add ebx, 2
add eax, 2
mov word [eax - 2], dx
cmp ebx, ecx
je 0x68c0267a
movzx edx, word [ebx]
test dx, dx
jne 0x68c02664
mov edi, dword [esp + 0x2c]
xor ecx, ecx
mov word [eax], 0
imul ebx, dword [esp + 0x28], 0x508
mov dword [esp], edi
mov dword [ebx + 0x68c062f8], ecx
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, edi
mov dword [ebx + 0x68c060ec], esi
push ebp
call fcn.68c01e60
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push eax
jmp 0x68c02034
mov edi, dword [sym.imp.ucrtbase.dll_free]
xor edx, edx
mov dword [esp + 0x34], edx
imul ebx, dword [esp + 0x28], 0x508
mov eax, dword [ebx + 0x68c06508]
mov dword [esp], eax
call edi
mov eax, dword [ebx + 0x68c0650c]
mov dword [esp], eax
call edi
mov eax, dword [ebx + 0x68c06510]
mov dword [esp], eax
call edi
mov edx, dword [esp + 0x38]
xor eax, eax
mov ecx, 0xab
mov ebx, dword [sym.imp.kernel32.dll_CloseHandle]
add edx, 0x68c062fc
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call ebx
push eax
test byte [0x68c074c0], 4
je 0x68c0201d
mov dword [esp + 0xc], str.ignoring_HID_device__failed_to_initialize_n
mov dword [esp + 8], str.try_add_device
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0201d
mov eax, dword [esp + 0x2c]
or word [eax + 0x1a], 1
mov dword [eax + 0x28], 0xff00ff
jmp 0x68c0258a
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.HidP_GetLinkCollectionNodes_returned__lx_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02561
cmp dword [esp + 0x70], 0
je 0x68c02561
xor eax, eax
xor edx, edx
mov dword [esp + 0x44], ebx
mov ebx, ebp
mov dword [esp + 0x3c], eax
xor eax, eax
mov dword [esp + 0x48], edi
mov edi, esi
mov esi, edx
mov dword [esp + 0x40], eax
cmp word [ebx + 2], 0xe
jne 0x68c027c3
cmp word [ebx], 0x10
je 0x68c02a7c
add dword [esp + 0x3c], 1
add ebx, 0x14
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x70]
jb 0x68c027b2
mov edx, esi
mov ebx, dword [esp + 0x44]
mov esi, edi
mov edi, dword [esp + 0x48]
test dx, dx
je 0x68c02561
imul eax, dword [esp + 0x28], 0x508
lea ecx, [esp + 0x100]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x4c], esi
mov ebx, ecx
mov dword [esp + 0x5c], edi
add eax, 0x68c060a0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x74], 0
movzx edi, word [ebx + 6]
movzx esi, word [eax + 0x268]
mov eax, dword [eax + 0x470]
mov dword [esp + 0x3c], eax
jmp 0x68c02844
movzx edi, word [eax + 4]
test edi, edi
je 0x68c02903
lea eax, [edi + edi*4]
lea eax, [ebp + eax*4]
cmp dword [eax], 0xe0001
jne 0x68c02838
movzx eax, word [eax + 4]
lea eax, [eax + eax*4]
lea eax, [ebp + eax*4]
movzx ecx, word [eax + 2]
movzx eax, word [eax]
mov dword [esp + 0x10], esi
mov word [esp + 0x50], cx
mov word [esp + 0x44], ax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 8], eax
movzx eax, byte [ebx + 2]
mov dword [esp], 2
mov dword [esp + 4], eax
call sub.hid.dll_HidP_InitializeReportForID
sub esp, 0x14
cmp eax, 0x110000
je 0x68c028ae
test byte [0x68c074c0], 4
jne 0x68c02a22
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call sub.hid.dll_HidD_GetFeature
sub esp, 0xc
test al, al
jne 0x68c0293f
test byte [0x68c074c0], 4
jne 0x68c02d1e
add dword [esp + 0x34], 1
add ebx, 0x48
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jne 0x68c02810
mov esi, dword [esp + 0x4c]
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
jmp 0x68c02561
cmp dword [ebp], 0xe0001
je 0x68c02e52
test byte [0x68c074c0], 4
je 0x68c028da
mov dword [esp + 0xc], str.Failed_to_find_haptics_simple_controller_collection_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c028da
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x74]
mov dword [esp + 0x10], eax
movzx eax, word [ebx + 0x38]
mov dword [esp + 0xc], eax
movzx eax, word [ebx + 6]
mov dword [esp + 8], eax
movzx eax, word [ebx]
mov dword [esp], 2
mov dword [esp + 4], eax
call sub.hid.dll_HidP_GetUsageValue
sub esp, 0x20
cmp eax, 0x110000
je 0x68c02995
test byte [0x68c074c0], 4
jne 0x68c02a4f
mov eax, dword [esp + 0x30]
mov edx, 1
mov dword [esp + 8], edi
lea esi, [esp + 0xb8]
mov dword [esp + 0xc], 0x23
mov dword [esp + 0x10], esi
mov dword [esp + 4], 0xe
mov dword [esp + 0x18], eax
lea eax, [esp + 0x6a]
mov dword [esp + 0x14], eax
mov dword [esp], 1
mov word [esp + 0x6a], dx
call sub.hid.dll_HidP_GetSpecificValueCaps
sub esp, 0x1c
cmp eax, 0x110000
je 0x68c02ae9
test byte [0x68c074c0], 4
je 0x68c028da
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_get_waveform_intensity_caps__status__lx_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c028da
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.HidP_InitializeReportForID_returned__lx_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c028ae
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.HidP_GetUsageValue_returned__lx_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02995
mov eax, 8
xor ecx, ecx
mov dword [esp + 4], 0xa
sub eax, esi
mov dword [esp + 0xc], ecx
mov word [esp + 0x68], ax
mov eax, dword [esp + 0x30]
mov dword [esp], 2
mov dword [esp + 0x18], eax
lea eax, [esp + 0x68]
mov dword [esp + 0x14], eax
imul eax, dword [esp + 0x40], 0x48
lea eax, [esp + eax + 0x100]
mov dword [esp + 0x10], eax
movzx eax, word [esp + 0x3c]
mov dword [esp + 8], eax
call sub.hid.dll_HidP_GetSpecificValueCaps
sub esp, 0x1c
cmp eax, 0x110000
jne 0x68c027c3
add esi, dword [esp + 0x68]
movzx eax, si
mov dword [esp + 0x40], eax
jmp 0x68c027c3
cmp word [esp + 0x6a], 0
je 0x68c029e8
cmp word [esp + 0x50], 1
movzx eax, byte [0x68c074c0]
je 0x68c02f3f
mov edx, dword [esp + 0x74]
cmp edx, 0x1005
je 0x68c02f0f
cmp edx, 0x1004
je 0x68c02edf
test al, 1
je 0x68c028da
xor eax, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Unsupported_waveform_type__lx_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], eax
call fcn.68c01520
jmp 0x68c028da
mov eax, dword [esp + 0x2c]
mov byte [eax + 0x1e], 3
jmp 0x68c02462
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.HidP_GetValueCaps_returned__lx_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c0243a
xor eax, eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x40]
cmp word [eax + 0x290], 0
je 0x68c0243a
mov dword [esp + 0x58], ebx
mov ebx, ebp
mov dword [esp + 0x50], esi
jmp 0x68c02bdb
mov eax, dword [esp + 0x2c]
mov ecx, ebx
call fcn.68c01120
mov eax, dword [esp + 0x40]
add ebx, 0x48
add dword [esp + 0x3c], 1
mov ecx, dword [esp + 0x3c]
movzx eax, word [eax + 0x290]
cmp ecx, eax
jge 0x68c02c15
cmp word [ebx], 1
jne 0x68c02bc0
cmp byte [ebx + 0xc], 0
movzx edx, word [ebx + 0x38]
je 0x68c02bb5
movzx esi, word [ebx + 0x3a]
cmp esi, edx
jl 0x68c02bc0
mov dword [esp + 0x48], ebx
mov ebx, edx
mov ecx, dword [esp + 0x48]
mov edx, ebx
add ebx, 1
mov eax, dword [esp + 0x2c]
call fcn.68c01120
cmp ebx, esi
jle 0x68c02bf9
mov ebx, dword [esp + 0x48]
jmp 0x68c02bc0
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x58]
jmp 0x68c0243a
mov eax, dword [esp + 0x2c]
mov word [eax + 0x24], 7
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06460], 0
jne 0x68c024e8
test byte [0x68c074c0], 4
je 0x68c024f2
mov dword [esp + 0xc], str.Missing_axis_ThumbRY_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c024f2
mov eax, dword [esp + 0x2c]
mov word [eax + 0x20], 7
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06388], 0
jne 0x68c024ab
test byte [0x68c074c0], 4
je 0x68c024b5
mov dword [esp + 0xc], str.Missing_axis_ThumbLY_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c024b5
mov eax, dword [esp + 0x2c]
mov byte [eax + 0x1f], 3
imul eax, dword [esp + 0x28], 0x508
cmp word [eax + 0x68c06340], 0
jne 0x68c02c78
test byte [0x68c074c0], 4
je 0x68c02499
mov dword [esp + 0xc], str.Missing_axis_ThumbLX_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02c82
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.Failed_to_get_waveform_list_report__error__lu_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
mov dword [esp + 0x10], eax
call fcn.68c01520
jmp 0x68c028da
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.HidP_GetButtonCaps_returned__lx_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
mov dword [esp], edi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
test byte [0x68c074c0], 4
je 0x68c023bb
mov dword [esp + 0xc], str.Too_few_buttons__continuing_anyway_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c023bb
mov eax, dword [esp + 0x2c]
movzx edx, word [eax + 0x28e]
test dx, dx
je 0x68c02e19
imul edx, edx, 0x48
mov eax, edi
xor ebp, ebp
lea ecx, [edx + edi]
jmp 0x68c02de9
movzx edx, word [eax + 0x3a]
cmp ebp, edx
cmovl ebp, edx
add eax, 0x48
cmp eax, ecx
je 0x68c02e00
cmp word [eax], 9
jne 0x68c02de2
cmp byte [eax + 0xc], 0
jne 0x68c02dd9
movzx edx, word [eax + 0x38]
cmp ebp, edx
cmovl ebp, edx
jmp 0x68c02de2
mov dword [esp], edi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
cmp ebp, 0xa
jg 0x68c023bb
jmp 0x68c02d87
mov dword [esp], edi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
jmp 0x68c02d87
mov dword [esp + 0xc], str.Missing_axis_RightTrigger_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02cd6
mov eax, ebp
jmp 0x68c02853
mov eax, ebx
call fcn.68c012a0
mov dword [esp + 0xc], str.Found_gamepad__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.controller_init
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 3
call fcn.68c01520
jmp 0x68c025c3
mov dword [esp + 0xc], str.Missing_axis_ThumbRX_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02c2c
mov dword [esp + 0xc], str.Missing_axis_LeftTrigger_n
mov dword [esp + 8], str.controller_check_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 2
call fcn.68c01520
jmp 0x68c02462
test al, 8
jne 0x68c02f88
movzx eax, byte [esp + 0xba]
mov ecx, 0x12
imul edi, dword [esp + 0x28], 0x508
mov byte [edi + 0x68c06514], al
add edi, 0x68c06560
rep movsd dword es:[edi], dword [esi]
jmp 0x68c028da
test al, 8
jne 0x68c02fc9
movzx eax, byte [esp + 0xba]
mov ecx, 0x12
imul edi, dword [esp + 0x28], 0x508
mov byte [edi + 0x68c06514], al
add edi, 0x68c06518
rep movsd dword es:[edi], dword [esi]
jmp 0x68c028da
cmp word [esp + 0x44], 0x32
je 0x68c0300a
cmp word [esp + 0x44], 0x35
jne 0x68c02b08
test al, 8
je 0x68c028da
mov dword [esp + 0xc], str.Ignoring_right_rumble_caps_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 3
call fcn.68c01520
jmp 0x68c028da
movzx eax, word [esp + 0xbe]
mov dword [esp + 0xc], str.Found_buzz_caps__report__u_collection__u_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 3
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0xba]
mov dword [esp + 0x10], eax
call fcn.68c01520
jmp 0x68c02ee7
movzx eax, word [esp + 0xbe]
mov dword [esp + 0xc], str.Found_rumble_caps__report__u_collection__u_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 3
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0xba]
mov dword [esp + 0x10], eax
call fcn.68c01520
jmp 0x68c02f17
test al, 8
je 0x68c028da
mov dword [esp + 0xc], str.Ignoring_left_rumble_caps_n
mov dword [esp + 8], str.check_waveform_caps
mov dword [esp + 4], 0x68c074c0
mov dword [esp], 3
call fcn.68c01520
jmp 0x68c028da