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

Disassembly:
sub esp, 0x94
push ebx
push ebp
xor ebp, ebp
cmp dword [0x4298ec], ebp
push esi
mov ebx, ecx
je 0x42327c
push 0x40f220
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
push ebp
push ebp
mov dword [esp + 0x18], ebp
mov dword [ebx + 0x44], ebp
mov dword [ebx + 0x48], ebp
mov dword [ebx + 0x4c], ebp
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
cmp esi, ebp
jge 0x4232b9
cmp dword [0x4298ec], ebp
je 0x4232b2
push esi
push 0x40f1ec
push 0x10002
call fcn.0041d4f0
add esp, 0xc
mov eax, esi
jmp 0x4236ac
push edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
lea eax, [esp + 0x80]
push 0x40f1e4
push eax
call dword [sym.imp.msvcrt.dll_swprintf]
add esp, 0xc
push 0xa
xor eax, eax
pop ecx
lea edi, [esp + 0x54]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x7c]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x54]
push eax
mov dword [esp + 0x5c], 0x423013
call dword [sym.imp.USER32.dll_RegisterClassW]
cmp ax, bp
mov dword [esp + 0x10], eax
jne 0x423331
cmp dword [0x4298ec], ebp
je 0x423327
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40f1a4
push 0x10002
call fcn.0041d4f0
add esp, 0xc
mov edi, 0x80004005
jmp 0x423488
push ebx
push ebp
push ebp
push ebp
mov eax, SysReAllocString
push eax
push eax
push eax
push eax
push ebp
push 0x40f16c
lea eax, [esp + 0xa4]
push eax
push ebp
call dword [sym.imp.USER32.dll_CreateWindowExW]
cmp eax, ebp
mov dword [ebx + 0x4c], eax
jne 0x42336c
cmp dword [0x4298ec], ebp
je 0x423327
push 0x40f130
jmp 0x42340a
cmp dword [0x4298ec], ebp
je 0x423385
push 0x40f0f8
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
push 8
pop ecx
xor eax, eax
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
mov dword [esp + 0x18], 0x20
mov dword [esp + 0x1c], 5
mov esi, 0x403d70
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push ebp
lea eax, [esp + 0x1c]
movsd dword es:[edi], dword [esi]
push eax
push dword [ebx + 0x4c]
movsd dword es:[edi], dword [esi]
call dword [sym.imp.USER32.dll_RegisterDeviceNotificationW]
cmp eax, ebp
mov dword [ebx + 0x44], eax
jne 0x4233d6
cmp dword [0x4298ec], ebp
je 0x423327
push 0x40f0b0
jmp 0x42340a
mov esi, 0x403d80
lea edi, [esp + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push ebp
lea eax, [esp + 0x1c]
movsd dword es:[edi], dword [esi]
push eax
push dword [ebx + 0x4c]
movsd dword es:[edi], dword [esi]
call dword [sym.imp.USER32.dll_RegisterDeviceNotificationW]
cmp eax, ebp
mov dword [ebx + 0x48], eax
jne 0x42341b
cmp dword [0x4298ec], ebp
je 0x423327
push 0x40f068
push 0x10002
call fcn.0041d4f0
pop ecx
pop ecx
jmp 0x423327
cmp dword [0x4298ec], ebp
je 0x423434
push 0x40f020
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
push 2
push 0x4ff
push 0xffffffffffffffff
lea eax, [ebx + 0x3c]
push eax
push 1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjectsEx]
cmp eax, ebp
je 0x4234f2
cmp eax, 1
je 0x4234f2
cmp eax, 0xc0
je 0x4235fb
cmp dword [0x4298ec], ebp
je 0x423486
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40efe0
push 0x10002
call fcn.0041d4f0
add esp, 0xc
xor edi, edi
mov eax, dword [ebx + 0x44]
cmp eax, ebp
mov esi, dword [sym.imp.USER32.dll_UnregisterDeviceNotification]
je 0x4234b7
push eax
call esi
cmp eax, ebp
jge 0x4234b7
cmp dword [0x4298ec], ebp
je 0x4234b7
push eax
push 0x40ef88
push 0x10002
call fcn.0041d4f0
add esp, 0xc
mov eax, dword [ebx + 0x48]
cmp eax, ebp
je 0x42360a
push eax
call esi
cmp eax, ebp
jge 0x42360a
cmp dword [0x4298ec], ebp
je 0x42360a
push eax
push 0x40ef30
mov esi, 0x10002
push esi
call fcn.0041d4f0
add esp, 0xc
jmp 0x42360f
cmp dword [0x4298ec], ebp
je 0x42350b
push 0x40ef1c
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
lea eax, [ebx + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea edi, [ebx + 0x34]
jmp 0x4235bb
mov esi, dword [edi]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov dword [eax + 4], ecx
lea eax, [ebx + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esi + 8]
sub eax, ebp
je 0x423560
dec eax
jne 0x4235aa
cmp dword [0x4298ec], ebp
je 0x423556
push 0x40eef0
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
mov dword [esp + 0x14], 1
jmp 0x4235aa
cmp dword [0x4298ec], ebp
je 0x423579
push 0x40eec0
push 0x80002
call fcn.0041d4f0
pop ecx
pop ecx
push dword [esi + 0x10]
call dword [esi + 0xc]
mov eax, dword [esi + 0x14]
cmp eax, ebp
je 0x4235aa
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
jne 0x4235aa
cmp dword [0x4298ec], ebp
je 0x4235aa
push 0x40ee78
push 0x10002
call fcn.0041d4f0
pop ecx
pop ecx
push esi
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
pop ecx
lea eax, [ebx + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [edi], edi
jne 0x42351d
lea eax, [ebx + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [sym.imp.USER32.dll_PeekMessageW]
jmp 0x4235eb
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 1
push ebp
push ebp
lea eax, [esp + 0x44]
push ebp
push eax
call esi
test eax, eax
jne 0x4235d5
cmp dword [esp + 0x14], ebp
je 0x423434
jmp 0x423486
mov esi, 0x10002
mov ebx, dword [ebx + 0x4c]
cmp ebx, ebp
je 0x42363e
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
test eax, eax
jne 0x42363e
cmp dword [0x4298ec], ebp
je 0x42363e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40ee34
push esi
call fcn.0041d4f0
add esp, 0xc
cmp word [esp + 0x10], bp
je 0x42367a
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
movzx eax, word [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_UnregisterClassW]
test eax, eax
jne 0x42367a
cmp dword [0x4298ec], ebp
je 0x42367a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40edf0
push esi
call fcn.0041d4f0
add esp, 0xc
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [0x4298ec], ebp
je 0x4236a9
xor eax, eax
cmp edi, ebp
setge al
push edi
push 0x40edc4
dec eax
and eax, 0xfff90000
add eax, 0x80002
push eax
call fcn.0041d4f0
add esp, 0xc
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x94
ret