Function at 0x401420
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [str.siappdll]
sub esp, 0x20c
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x4a0018], eax
test eax, eax
je 0x402a69
mov ecx, dword [str.SpwErrorVal]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push esi
push edi
push ecx
mov esi, 2
push eax
mov dword [ebp - 8], esi
mov dword [ebp - 4], 0
call ebx
mov dword [0x49ff64], eax
lea edi, [esi - 1]
test eax, eax
jne 0x40147a
mov dword [ebp - 8], edi
mov dword [ebp - 4], 3
mov edx, dword [str.SiBeep]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a007c], eax
test eax, eax
jne 0x401498
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSetLEDs]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a00b4], eax
mov eax, dword [str.SiInitialize]
push eax
push ecx
call ebx
mov dword [0x49ffac], eax
test eax, eax
jne 0x4014cb
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiTerminate]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a00ac], eax
test eax, eax
jne 0x4014e9
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiGetNumDevices]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ffe8], eax
test eax, eax
jne 0x401508
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiGetDeviceID]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ff8c], eax
test eax, eax
jne 0x401526
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiDeviceIndex]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a002c], eax
test eax, eax
jne 0x401544
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiDispatch]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff4c], eax
test eax, eax
jne 0x401563
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiOpenWinInit]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a00d4], eax
test eax, eax
jne 0x401581
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiOpen]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0064], eax
test eax, eax
jne 0x40159f
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiOpenPort]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a00f0], eax
mov eax, dword [str.SiClose]
push eax
push ecx
call ebx
mov dword [0x4a0034], eax
test eax, eax
jne 0x4015d2
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiGetEventWinInit]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0090], eax
test eax, eax
jne 0x4015f0
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiIsSpaceWareEvent]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff90], eax
test eax, eax
jne 0x40160f
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiGetEvent]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a00c4], eax
test eax, eax
jne 0x40162d
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiPeekEvent]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x49ffd8], eax
test eax, eax
jne 0x40164b
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiRezero]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a0108], eax
test eax, eax
jne 0x40166a
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiGrabDevice]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a008c], eax
test eax, eax
jne 0x401688
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiReleaseDevice]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0068], eax
test eax, eax
jne 0x4016a6
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiButtonPressed]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a0054], eax
test eax, eax
jne 0x4016c5
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiButtonReleased]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a00a4], eax
test eax, eax
jne 0x4016e3
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSetUiMode]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a004c], eax
test eax, eax
jne 0x401701
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiGetDevicePort]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a00a0], eax
test eax, eax
jne 0x401720
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiGetDriverInfo]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a0030], eax
test eax, eax
jne 0x40173e
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiGetLibraryInfo]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0110], eax
test eax, eax
jne 0x40175c
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiGetDeviceInfo]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff5c], eax
test eax, eax
jne 0x40177b
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SpwErrorString]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ffa8], eax
test eax, eax
jne 0x401799
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSendQuery]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a00bc], eax
test eax, eax
jne 0x4017b7
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncGetVersion]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a0070], eax
test eax, eax
jne 0x4017d6
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetNumberOfFunctions]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a0048], eax
test eax, eax
jne 0x4017f4
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncGetFunction]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0078], eax
test eax, eax
jne 0x401812
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncGetButtonAssignment]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a00d8], eax
test eax, eax
jne 0x401831
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSetButtonAssignment]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ffe4], eax
test eax, eax
jne 0x40184f
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetButtonAssignmentAbsolute]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a00d0], eax
test eax, eax
jne 0x40186d
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncSetButtonName]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff84], eax
test eax, eax
jne 0x40188c
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetAxisLabel]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a0004], eax
test eax, eax
jne 0x4018aa
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetAxisLabel]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a003c], eax
test eax, eax
jne 0x4018c8
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncGetFilter]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ffb8], eax
test eax, eax
jne 0x4018e7
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSetFilter]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49fff4], eax
test eax, eax
jne 0x401905
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncGetOrientation]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x49ff6c], eax
test eax, eax
jne 0x401923
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncSetOrientation]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a000c], eax
test eax, eax
jne 0x401942
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetAxesState]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ffc0], eax
test eax, eax
jne 0x401960
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetAxesState]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0074], eax
test eax, eax
jne 0x40197e
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncSetInfoLine]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff70], eax
test eax, eax
jne 0x40199d
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetScaleOverall]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ff80], eax
test eax, eax
jne 0x4019bb
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetScaleOverall]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a00fc], eax
test eax, eax
jne 0x4019d9
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncGetScaleTx]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a00e8], eax
test eax, eax
jne 0x4019f8
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSetScaleTx]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a00f8], eax
test eax, eax
jne 0x401a16
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncGetScaleTy]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0000], eax
test eax, eax
jne 0x401a34
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncSetScaleTy]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a00b0], eax
test eax, eax
jne 0x401a53
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetScaleTz]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a0080], eax
test eax, eax
jne 0x401a71
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetScaleTz]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a005c], eax
test eax, eax
jne 0x401a8f
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncGetScaleRx]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff50], eax
test eax, eax
jne 0x401aae
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSetScaleRx]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x4a0088], eax
test eax, eax
jne 0x401acc
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncGetScaleRy]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a0104], eax
test eax, eax
jne 0x401aea
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncSetScaleRy]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x49ff98], eax
test eax, eax
jne 0x401b09
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncGetScaleRz]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ffec], eax
test eax, eax
jne 0x401b27
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiSyncSetScaleRz]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x49fff8], eax
test eax, eax
jne 0x401b45
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiSyncInvokeAbsoluteFunction]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a0094], eax
test eax, eax
jne 0x401b64
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSetButtonState]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ff78], eax
test eax, eax
jne 0x401b82
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiGetDeviceName]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x4a00dc], eax
test eax, eax
jne 0x401ba0
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiGetButtonName]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a006c], eax
test eax, eax
jne 0x401bbf
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiGetDeviceImageFileName]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov dword [0x49ff58], eax
test eax, eax
jne 0x401bdd
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov edx, dword [str.SiGetCompanyIcon]
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov dword [0x49ff7c], eax
test eax, eax
jne 0x401bfb
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov ecx, dword [str.SiGetCompanyLogoFileName]
mov edx, dword [0x4a0018]
push ecx
push edx
call ebx
mov dword [0x4a00e0], eax
test eax, eax
jne 0x401c1a
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
mov eax, dword [str.SiSyncSuspendFileWriting]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncResumeFileWriting]
mov dword [0x4a0114], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiGetButtonV3DK]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0044], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a00c0], eax
mov eax, dword [str.SiGetButtonNameV3DK]
push eax
push ecx
call ebx
mov edx, dword [str.SiAppCmdWriteActions]
mov dword [0x49ffa4], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiAppCmdWriteActionSet]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a00b8], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ffd4], eax
mov eax, dword [str.SiAppCmdActivateActionSet]
push eax
push ecx
call ebx
mov edx, dword [str.SiAppCmdWriteActionImages]
mov dword [0x49fffc], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiAppCfgGetValue]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0028], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ffbc], eax
mov eax, dword [str.SiAppCfgSetValue]
push eax
push ecx
call ebx
mov edx, dword [str.SiAppCfgAddValueChangedHandler]
mov dword [0x4a00f4], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiAppCfgRemoveValueChangedHandler]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x49ffb4], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49fff0], eax
mov eax, dword [str.SiGetConnectionID]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncInvokeActionID]
mov dword [0x49ffe0], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncCreateButtonBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a00a8], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a0014], eax
mov eax, dword [str.SiSyncDeleteButtonBank]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncSetCurrentButtonBank]
mov dword [0x4a00e4], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncPreviousButtonBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0060], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a010c], eax
mov eax, dword [str.SiSyncNextButtonBank]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncGetCurrentButtonBank]
mov dword [0x49ff60], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncCreateAxisBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0038], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ffa0], eax
mov eax, dword [str.SiSyncDeleteAxisBank]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncSetCurrentAxisBank]
mov dword [0x4a0100], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncPreviousAxisBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0058], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a0050], eax
mov eax, dword [str.SiSyncNextAxisBank]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncGetCurrentAxisBank]
mov dword [0x49ffd0], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncCreateApplicationBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x49ff94], eax
call ebx
mov dword [0x49ff68], eax
mov eax, dword [str.SiSyncDeleteApplicationBank]
mov ecx, dword [0x4a0018]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncSetCurrentApplicationBank]
mov dword [0x4a0024], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncPreviousApplicationBank]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x49ff9c], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a00ec], eax
mov eax, dword [str.SiSyncNextApplicationBank]
push eax
push ecx
call ebx
mov edx, dword [str.SiSyncGetCurrentApplicationBank]
mov dword [0x4a0008], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiSyncSetGrabSyncID]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a00c8], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a0020], eax
mov eax, dword [str.SiSyncSetSyncID]
push eax
push ecx
call ebx
mov edx, dword [str.SiMessageBox]
mov dword [0x4a0098], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiOpenWinInitEx]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a009c], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x4a0010], eax
mov eax, dword [str.SiOpenWinAddHintBoolEnum]
push eax
push ecx
call ebx
mov edx, dword [str.SiOpenWinAddHintIntEnum]
mov dword [0x49ff74], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiOpenWinAddHintFloatEnum]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a00cc], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ffb0], eax
mov eax, dword [str.SiOpenWinAddHintStringEnum]
push eax
push ecx
call ebx
mov edx, dword [str.SiOpenWinAddHintBool]
mov dword [0x49ffc8], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiOpenWinAddHintInt]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x49ff54], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ff88], eax
mov eax, dword [str.SiOpenWinAddHintFloat]
push eax
push ecx
call ebx
mov edx, dword [str.SiOpenWinAddHintString]
mov dword [0x49ffcc], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
mov ecx, dword [str.SiOpenEx]
mov edx, dword [0x4a0018]
push ecx
push edx
mov dword [0x4a0040], eax
call ebx
mov ecx, dword [0x4a0018]
mov dword [0x49ffdc], eax
mov eax, dword [str.SiSyncSetButtonAssignmentV3DKey]
push eax
push ecx
call ebx
mov edx, dword [0x49c4ec]
mov dword [0x4a0084], eax
mov eax, dword [0x4a0018]
push edx
push eax
call ebx
push str.hid.dll
mov dword [0x4a001c], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x49fa08], eax
test eax, eax
je 0x4023f3
xor ecx, ecx
mov dl, 0x33
mov al, 0x53
mov byte [ebp - 0xe0], dl
mov byte [ebp - 0xdf], 0x2a
mov byte [ebp - 0xde], al
mov byte [ebp - 0xdd], 6
mov byte [ebp - 0xdc], 0x1b
mov byte [ebp - 0xdb], 4
mov byte [ebp - 0xda], 0x5d
mov byte [ebp - 0xd9], 0x35
mov byte [ebp - 0xd8], 4
mov byte [ebp - 0xd7], 0x59
mov byte [ebp - 0xd6], 0x4c
mov byte [ebp - 0xd5], 0x31
mov byte [ebp - 0xd4], 0x2f
mov byte [ebp - 0xd3], 0x26
mov byte [ebp - 0xd2], 0x58
mov byte [ebp - 0xd1], 0x40
mov byte [ebp - 0xd0], 0x5c
mov byte [ebp - 0xcf], 0x42
mov byte [ebp - 0xce], 0x37
mov byte [ebp - 0x20], 0
mov dword [ebp - 0x1f], ecx
mov dword [ebp - 0x1b], ecx
mov dword [ebp - 0x17], ecx
mov dword [ebp - 0x13], ecx
mov word [ebp - 0xf], cx
mov byte [ebp - 0xd], cl
mov byte [ebp - 0xc8], dl
mov byte [ebp - 0xc7], 0x2a
mov byte [ebp - 0xc6], al
mov byte [ebp - 0xc5], 6
mov byte [ebp - 0xc4], 0x1b
mov byte [ebp - 0xc3], 4
mov byte [ebp - 0xc2], 0x5d
mov byte [ebp - 0xc1], 0x35
mov byte [ebp - 0xc0], 0xd
mov byte [ebp - 0xbf], 0x44
mov byte [ebp - 0xbe], 0x5c
mov byte [ebp - 0xbd], 4
mov byte [ebp - 0xbc], dl
mov byte [ebp - 0xbb], 0x2d
mov byte [ebp - 0xba], 0x49
mov byte [ebp - 0xb9], 0x34
mov byte [ebp - 0x68], cl
mov dword [ebp - 0x67], ecx
mov dword [ebp - 0x63], ecx
mov dword [ebp - 0x5f], ecx
mov dword [ebp - 0x5b], ecx
mov byte [ebp - 0x38], dl
mov byte [ebp - 0x37], 0x2a
mov byte [ebp - 0x36], al
mov byte [ebp - 0x35], 6
mov byte [ebp - 0x34], 0x1b
mov byte [ebp - 0x33], 4
mov byte [ebp - 0x32], 0x5d
mov byte [ebp - 0x31], 0x35
mov byte [ebp - 0x30], 0x15
mov byte [ebp - 0x2f], 0x5f
mov byte [ebp - 0x2e], 0x5d
mov byte [ebp - 0x2d], dl
mov byte [ebp - 0x2c], 0x27
mov byte [ebp - 0x2b], 0x36
mov byte [ebp - 0x2a], 0x5e
mov byte [ebp - 0x29], 0x51
mov byte [ebp - 0x28], 0x5d
mov byte [ebp - 0x27], 0x75
mov byte [ebp - 0x26], 0x56
mov byte [ebp - 0x25], 0x59
mov byte [ebp - 0x24], 0x59
mov byte [ebp - 0x23], 0x36
mov byte [ebp - 0x94], cl
mov dword [ebp - 0x93], ecx
mov dword [ebp - 0x8f], ecx
mov dword [ebp - 0x8b], ecx
mov dword [ebp - 0x87], ecx
mov dword [ebp - 0x83], ecx
mov word [ebp - 0x7f], cx
mov byte [ebp - 0xb4], dl
mov byte [ebp - 0xb3], 0x2a
mov byte [ebp - 0x50], cl
mov dword [ebp - 0x4f], ecx
mov dword [ebp - 0x4b], ecx
mov dword [ebp - 0x47], ecx
mov dword [ebp - 0x43], ecx
mov dword [ebp - 0x3f], ecx
mov word [ebp - 0x3b], cx
mov byte [ebp - 0x39], cl
mov ecx, 0x13
mov esi, str.C7BDC8AE_8CFD_4917_86AA_345CB106EEB3_C7BDC8AE_8CFD_4917_86AA_345CB106EEB3
lea edi, [ebp - 0x15c]
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0xb2], al
mov byte [ebp - 0xb1], 6
mov byte [ebp - 0xb0], 0x1b
mov byte [ebp - 0xaf], 5
mov byte [ebp - 0xae], 0x4a
mov byte [ebp - 0xad], 0x24
mov byte [ebp - 0xac], 0x20
mov byte [ebp - 0xab], 0x7d
mov byte [ebp - 0xaa], 0x4a
mov byte [ebp - 0xa9], 0x26
mov byte [ebp - 0xa8], 0x36
mov byte [ebp - 0xa7], 0x25
mov byte [ebp - 0xa6], 0x5f
mov byte [ebp - 0xa5], 0x47
mov byte [ebp - 0xa4], 0x5c
mov byte [ebp - 0xa3], 0x55
mov byte [ebp - 0xa2], 0x73
mov byte [ebp - 0xa1], 0x4c
mov byte [ebp - 0xa0], 0x4c
mov byte [ebp - 0x9f], 0x57
mov byte [ebp - 0x9e], 0x41
movsw word es:[edi], word [esi]
xor eax, eax
jmp 0x402260
mov cl, byte [ebp + eax - 0x15c]
xor cl, byte [ebp + eax - 0xe0]
inc eax
mov byte [ebp + eax - 0x21], cl
cmp eax, 0x13
jb 0x402260
mov byte [ebp + eax - 0x20], 0
xor ecx, ecx
nop
movzx edx, byte [ebp + ecx - 0x15c]
movzx eax, byte [ebp + ecx - 0x15b]
xor dl, byte [ebp + ecx - 0xc8]
xor al, byte [ebp + ecx - 0xc7]
mov byte [ebp + ecx - 0x68], dl
movzx edx, byte [ebp + ecx - 0x15a]
xor dl, byte [ebp + ecx - 0xc6]
mov byte [ebp + ecx - 0x67], al
movzx eax, byte [ebp + ecx - 0x159]
xor al, byte [ebp + ecx - 0xc5]
mov byte [ebp + ecx - 0x66], dl
mov byte [ebp + ecx - 0x65], al
add ecx, 4
cmp ecx, 0x10
jb 0x402280
mov byte [ebp + ecx - 0x68], 0
xor eax, eax
jmp 0x4022e0
mov cl, byte [ebp + eax - 0x15c]
mov dl, byte [ebp + eax - 0x15b]
xor cl, byte [ebp + eax - 0x38]
xor dl, byte [ebp + eax - 0x37]
mov byte [ebp + eax - 0x94], cl
mov byte [ebp + eax - 0x93], dl
add eax, 2
cmp eax, 0x16
jb 0x4022e0
mov byte [ebp + eax - 0x94], 0
xor eax, eax
jmp 0x402320
mov cl, byte [ebp + eax - 0x15c]
xor cl, byte [ebp + eax - 0xb4]
inc eax
mov byte [ebp + eax - 0x51], cl
cmp eax, 0x17
jb 0x402320
lea edx, [ebp - 0x20]
mov byte [ebp + eax - 0x50], 0
mov eax, dword [0x49fa08]
push edx
push eax
call ebx
xor esi, esi
mov dword [0x49f9f4], eax
cmp eax, esi
jne 0x40235d
mov ecx, dword [0x49fa08]
push ecx
jmp 0x4023d7
mov eax, dword [0x49fa08]
lea edx, [ebp - 0x68]
push edx
push eax
call ebx
mov dword [0x49f9f8], eax
cmp eax, esi
jne 0x40237b
mov ecx, dword [0x49fa08]
push ecx
jmp 0x4023d7
mov eax, dword [0x49fa08]
lea edx, [ebp - 0x94]
push edx
push eax
call ebx
mov dword [0x49f9fc], eax
cmp eax, esi
jne 0x40239c
mov ecx, dword [0x49fa08]
push ecx
jmp 0x4023d7
mov eax, dword [0x49fa08]
lea edx, [ebp - 0x50]
push edx
push eax
call ebx
mov dword [0x49fa00], eax
cmp eax, esi
jne 0x4023ba
mov ecx, dword [0x49fa08]
push ecx
jmp 0x4023d7
mov edx, dword [0x49fa08]
push str.HidP_GetCaps
push edx
call ebx
mov dword [0x49fa04], eax
cmp eax, esi
jne 0x4023fb
mov eax, dword [0x49fa08]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x49fa08], esi
mov dword [ebp - 8], 1
mov dword [ebp - 4], 2
jmp 0x4023fb
mov dword [ebp - 8], edi
mov dword [ebp - 4], edi
xor esi, esi
push str.setupapi.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x49fa1c], eax
cmp eax, esi
je 0x402876
xor ecx, ecx
mov al, 7
mov dl, 0x43
mov byte [ebp - 0x54], 0x28
mov byte [ebp - 0x53], 0x26
mov byte [ebp - 0x52], dl
mov byte [ebp - 0x51], 0x37
mov byte [ebp - 0x50], 0x34
mov byte [ebp - 0x4f], al
mov byte [ebp - 0x4e], 0x51
mov byte [ebp - 0x4d], 4
mov byte [ebp - 0x4c], 0x2b
mov byte [ebp - 0x4b], 0x58
mov byte [ebp - 0x4a], 0x55
mov byte [ebp - 0x49], al
mov byte [ebp - 0x48], 0x23
mov byte [ebp - 0x47], 0x32
mov byte [ebp - 0x46], 0x44
mov byte [ebp - 0x45], 0x57
mov byte [ebp - 0x44], 0x5c
mov byte [ebp - 0x43], 0x78
mov byte [ebp - 0x42], 0x59
mov byte [ebp - 0x41], 0x59
mov byte [ebp - 0x40], 0x5d
mov byte [ebp - 0x3f], 0x44
mov byte [ebp - 0x3e], 0x27
mov byte [ebp - 0x3d], 0x20
mov byte [ebp - 0x3c], 0x4e
mov byte [ebp - 0x3b], 0x56
mov byte [ebp - 0x3a], 0x47
mov byte [ebp - 0x39], 0x35
mov byte [ebp - 0xb8], 0
mov dword [ebp - 0xb7], ecx
mov dword [ebp - 0xb3], ecx
mov dword [ebp - 0xaf], ecx
mov dword [ebp - 0xab], ecx
mov dword [ebp - 0xa7], ecx
mov dword [ebp - 0xa3], ecx
mov dword [ebp - 0x9f], ecx
mov byte [ebp - 0x20], 0x28
mov byte [ebp - 0x1f], 0x26
mov byte [ebp - 0x1e], dl
mov byte [ebp - 0x1d], 0x37
mov byte [ebp - 0x1c], 0x34
mov byte [ebp - 0x1b], al
mov byte [ebp - 0x1a], 0x51
mov byte [ebp - 0x19], 6
mov byte [ebp - 0x18], 0x20
mov byte [ebp - 0x17], 0x59
mov byte [ebp - 0x16], 0x7b
mov byte [ebp - 0x15], 0x2f
mov byte [ebp - 0x14], 0x27
mov byte [ebp - 0x13], 0x37
mov byte [ebp - 0x12], 0x5e
mov byte [ebp - 0x11], 0x70
mov byte [ebp - 0x10], 0x5c
mov byte [ebp - 0xf], 0x47
mov byte [ebp - 0xe], 0x44
mov byte [ebp - 0xd], 0x7a
mov byte [ebp - 0xc], 0x38
mov byte [ebp - 0x38], cl
mov dword [ebp - 0x37], ecx
mov dword [ebp - 0x33], ecx
mov dword [ebp - 0x2f], ecx
mov dword [ebp - 0x2b], ecx
mov dword [ebp - 0x27], ecx
mov byte [ebp - 0x23], cl
mov byte [ebp - 0x98], 0x28
mov byte [ebp - 0x97], 0x26
mov byte [ebp - 0x96], dl
mov byte [ebp - 0x95], 0x37
mov byte [ebp - 0x94], 0x34
mov byte [ebp - 0x93], al
mov byte [ebp - 0x92], 0x51
mov byte [ebp - 0x91], 5
mov byte [ebp - 0x90], 0x20
mov byte [ebp - 0x8f], 0x5e
mov byte [ebp - 0x8e], 0x4c
mov byte [ebp - 0x8d], 0x31
mov byte [ebp - 0x8c], 0x29
mov byte [ebp - 0x8b], 0x3d
mov byte [ebp - 0xe8], cl
mov dword [ebp - 0xe7], ecx
mov dword [ebp - 0xe3], ecx
mov dword [ebp - 0xdf], ecx
mov dword [ebp - 0xdb], ecx
mov dword [ebp - 0xd7], ecx
mov dword [ebp - 0xd3], ecx
mov dword [ebp - 0xcf], ecx
mov byte [ebp - 0xcb], cl
mov byte [ebp - 0x10c], cl
mov dword [ebp - 0x10b], ecx
mov dword [ebp - 0x107], ecx
mov dword [ebp - 0x103], ecx
mov dword [ebp - 0xff], ecx
mov dword [ebp - 0xfb], ecx
mov dword [ebp - 0xf7], ecx
mov dword [ebp - 0xf3], ecx
mov dword [ebp - 0xef], ecx
mov byte [ebp - 0xeb], cl
mov ecx, 0x13
mov esi, str.C7BDC8AE_8CFD_4917_86AA_345CB106EEB3_C7BDC8AE_8CFD_4917_86AA_345CB106EEB3
lea edi, [ebp - 0x15c]
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x73], al
mov al, 0x22
mov byte [ebp - 0x8a], 0x69
mov byte [ebp - 0x89], 0x51
mov byte [ebp - 0x88], 0x4f
mov byte [ebp - 0x87], 0x58
mov byte [ebp - 0x86], 0x54
mov byte [ebp - 0x85], 0x48
mov byte [ebp - 0x84], 0x71
mov byte [ebp - 0x83], 0x58
mov byte [ebp - 0x82], 0x27
mov byte [ebp - 0x81], 0x2e
mov byte [ebp - 0x80], 0x61
mov byte [ebp - 0x7f], 0x5a
mov byte [ebp - 0x7e], 0x47
mov byte [ebp - 0x7d], 0x41
mov byte [ebp - 0x7c], dl
mov byte [ebp - 0x78], 0x28
mov byte [ebp - 0x77], 0x26
mov byte [ebp - 0x76], dl
mov byte [ebp - 0x75], 0x37
mov byte [ebp - 0x74], 0x34
mov byte [ebp - 0x72], 0x51
mov byte [ebp - 0x71], 6
mov byte [ebp - 0x70], 0x20
mov byte [ebp - 0x6f], 0x59
mov byte [ebp - 0x6e], 0x7c
mov byte [ebp - 0x6d], 0x26
mov byte [ebp - 0x6c], 0x30
mov byte [ebp - 0x6b], 0x2d
mov byte [ebp - 0x6a], 0x4e
mov byte [ebp - 0x69], 0x51
mov byte [ebp - 0x68], 0x70
mov byte [ebp - 0x67], 0x5f
mov byte [ebp - 0x66], dl
mov byte [ebp - 0x65], 0x48
mov byte [ebp - 0x64], 0x4a
mov byte [ebp - 0x63], 0x50
mov byte [ebp - 0x62], 0x20
mov byte [ebp - 0x61], al
mov byte [ebp - 0x60], 0x48
mov byte [ebp - 0x5f], 0x77
mov byte [ebp - 0x5e], 0x51
mov byte [ebp - 0x5d], 0x41
mov byte [ebp - 0x5c], al
mov byte [ebp - 0x5b], 0x2b
mov byte [ebp - 0x5a], 0x5d
mov byte [ebp - 0x59], 0x67
mov byte [ebp - 0x58], 0x36
movsw word es:[edi], word [esi]
xor ecx, ecx
movzx edx, byte [ebp + ecx - 0x15c]
movzx eax, byte [ebp + ecx - 0x15b]
xor dl, byte [ebp + ecx - 0x54]
xor al, byte [ebp + ecx - 0x53]
mov byte [ebp + ecx - 0xb8], dl
movzx edx, byte [ebp + ecx - 0x15a]
xor dl, byte [ebp + ecx - 0x52]
mov byte [ebp + ecx - 0xb7], al
movzx eax, byte [ebp + ecx - 0x159]
xor al, byte [ebp + ecx - 0x51]
mov byte [ebp + ecx - 0xb6], dl
mov byte [ebp + ecx - 0xb5], al
add ecx, 4
cmp ecx, 0x1c
jb 0x4026e0
mov byte [ebp + ecx - 0xb8], 0
xor eax, eax
mov edi, edi
movzx ecx, byte [ebp + eax - 0x15c]
xor cl, byte [ebp + eax - 0x20]
mov dl, byte [ebp + eax - 0x15b]
xor dl, byte [ebp + eax - 0x1f]
mov byte [ebp + eax - 0x38], cl
movzx ecx, byte [ebp + eax - 0x15a]
xor cl, byte [ebp + eax - 0x1e]
mov byte [ebp + eax - 0x37], dl
mov byte [ebp + eax - 0x36], cl
add eax, 3
cmp eax, 0x15
jb 0x402740
mov byte [ebp + eax - 0x38], 0
xor eax, eax
mov edi, edi
mov dl, byte [ebp + eax - 0x15c]
xor dl, byte [ebp + eax - 0x98]
inc eax
mov byte [ebp + eax - 0xe9], dl
cmp eax, 0x1d
jb 0x402780
mov byte [ebp + eax - 0xe8], 0
xor eax, eax
jmp 0x4027b0
movzx ecx, byte [ebp + eax - 0x15c]
xor cl, byte [ebp + eax - 0x78]
mov dl, byte [ebp + eax - 0x15b]
xor dl, byte [ebp + eax - 0x77]
mov byte [ebp + eax - 0x10c], cl
movzx ecx, byte [ebp + eax - 0x15a]
xor cl, byte [ebp + eax - 0x76]
mov byte [ebp + eax - 0x10b], dl
mov byte [ebp + eax - 0x10a], cl
add eax, 3
cmp eax, 0x21
jb 0x4027b0
lea edx, [ebp - 0xb8]
mov byte [ebp + eax - 0x10c], 0
mov eax, dword [0x49fa1c]
push edx
push eax
call ebx
mov dword [0x49fa0c], eax
test eax, eax
je 0x402855
mov eax, dword [0x49fa1c]
lea edx, [ebp - 0x38]
push edx
push eax
call ebx
mov dword [0x49fa10], eax
test eax, eax
je 0x402855
mov eax, dword [0x49fa1c]
lea edx, [ebp - 0xe8]
push edx
push eax
call ebx
mov dword [0x49fa14], eax
test eax, eax
je 0x402855
mov eax, dword [0x49fa1c]
lea edx, [ebp - 0x10c]
push edx
push eax
call ebx
mov dword [0x49fa18], eax
test eax, eax
jne 0x402881
mov ecx, dword [0x49fa1c]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov esi, 1
mov dword [0x49fa1c], 0
lea edi, [esi + 1]
jmp 0x402887
mov eax, 1
mov esi, eax
mov edi, eax
jmp 0x402887
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
push str.User32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x49f9f0], eax
test eax, eax
je 0x402a5a
mov cl, 0x45
mov dl, 0x1a
mov al, 0x11
mov byte [ebp - 0x1f], cl
mov byte [ebp - 0x10], cl
mov byte [ebp - 0x37], cl
mov byte [ebp - 0x28], cl
mov ecx, dword [0x47f404]
mov byte [ebp - 0x14], al
mov byte [ebp - 0x12], dl
mov byte [ebp - 0x2c], al
mov eax, dword [0x47f400]
mov byte [ebp - 0x2a], dl
mov byte [ebp - 0x26], dl
mov edx, dword [str.A_very_long_test_string]
mov dword [ebp - 0x48], ecx
mov ecx, dword [0x47f410]
mov dword [ebp - 0x50], edx
mov edx, dword [0x47f408]
mov dword [ebp - 0x4c], eax
mov eax, dword [0x47f40c]
mov dword [ebp - 0x3c], ecx
mov byte [ebp - 0x20], 6
mov byte [ebp - 0x1e], 2
mov byte [ebp - 0x1d], 0x37
mov byte [ebp - 0x1c], 0x13
mov byte [ebp - 0x1b], 0xe
mov byte [ebp - 0x1a], 0x69
mov byte [ebp - 0x19], 2
mov byte [ebp - 0x18], 0x1f
mov byte [ebp - 0x17], 0x1b
mov byte [ebp - 0x16], 0x13
mov byte [ebp - 0x15], 0x64
mov byte [ebp - 0x13], 0x13
mov byte [ebp - 0x11], 0x17
mov byte [ebp - 0xf], 0x3f
mov byte [ebp - 0xe], 0x1d
mov byte [ebp - 0xd], 1
mov byte [ebp - 0xc], 0x1d
mov byte [ebp - 0xb], 0
mov byte [ebp - 0x38], 6
mov byte [ebp - 0x36], 2
mov byte [ebp - 0x35], 0x37
mov byte [ebp - 0x34], 0x13
mov byte [ebp - 0x33], 0xe
mov byte [ebp - 0x32], 0x69
mov byte [ebp - 0x31], 2
mov byte [ebp - 0x30], 0x1f
mov byte [ebp - 0x2f], 0x1b
mov byte [ebp - 0x2e], 0x13
mov byte [ebp - 0x2d], 0x64
mov byte [ebp - 0x2b], 0x13
mov byte [ebp - 0x29], 0x17
mov byte [ebp - 0x27], 0x3a
mov byte [ebp - 0x25], 0x14
mov byte [ebp - 0x24], 6
mov byte [ebp - 0x23], 0x39
mov byte [ebp - 0x22], 0
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], eax
xor ecx, ecx
jmp 0x402990
movzx edx, byte [ebp + ecx - 0x50]
xor dl, byte [ebp + ecx - 0x20]
mov al, byte [ebp + ecx - 0x4f]
xor al, byte [ebp + ecx - 0x1f]
mov byte [ebp + ecx - 0x18c], dl
movzx edx, byte [ebp + ecx - 0x4e]
xor dl, byte [ebp + ecx - 0x1e]
mov byte [ebp + ecx - 0x18b], al
mov byte [ebp + ecx - 0x18a], dl
add ecx, 3
cmp ecx, 0x15
jl 0x402990
mov ecx, dword [0x49f9f0]
lea eax, [ebp - 0x18c]
push eax
push ecx
mov byte [ebp - 0x177], 0
call ebx
mov dword [0x49f9e8], eax
xor eax, eax
jmp 0x4029f0
mov dl, byte [ebp + eax - 0x50]
mov cl, byte [ebp + eax - 0x4f]
xor dl, byte [ebp + eax - 0x38]
xor cl, byte [ebp + eax - 0x37]
mov byte [ebp + eax - 0x20c], dl
mov byte [ebp + eax - 0x20b], cl
add eax, 2
cmp eax, 0x16
jl 0x4029f0
mov eax, dword [0x49f9f0]
lea edx, [ebp - 0x20c]
push edx
push eax
mov byte [ebp - 0x1f6], 0
call ebx
mov dword [0x49f9ec], eax
test eax, eax
jne 0x402a4c
mov ecx, dword [0x49f9f0]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x49f9f0], 0
call fcn.00401310
test al, al
jne 0x402a5a
call fcn.004011a0
mov eax, edi
pop edi
mov dword [0x49f9e0], esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, 1
mov eax, ecx
mov dword [0x49f9e0], ecx
mov esp, ebp
pop ebp
ret