Function at 0x438240
Capabilities:
Check for time delay via gettickcount

Disassembly:
sub esp, 0x54
push ebx
mov ebx, dword [esp + 0x5c]
push ebp
push esi
push edi
mov edi, dword [esp + 0x6c]
push edi
push ebx
push str.DeviceRemoved__s___u_...
xor ebp, ebp
push ebp
call fcn.004452a3
add esp, 0x10
cmp dword [0x4fc948], ebp
je 0x438ceb
cmp dword [0x4fac58], ebp
jne 0x438ceb
cmp edi, ebp
jne 0x43828a
push ebp
push ebx
call fcn.00444153
mov edi, eax
mov dword [esp + 0x6c], edi
cmp edi, dword [0x506990]
jne 0x438298
mov dword [0x506990], ebp
cmp edi, ebp
je 0x4382ab
mov ecx, dword [0x4fc948]
push ebp
push edi
call fcn.004076dc
jmp 0x4382c0
cmp ebx, ebp
je 0x4382c6
cmp word [ebx], bp
je 0x4382c6
mov ecx, dword [0x4fc948]
push ebx
call fcn.00407417
mov esi, eax
cmp esi, ebp
jne 0x4382fb
cmp dword [0x492a68], ebp
je 0x4382e1
push str._no_treenode_found____ignore
push 3
call fcn.004452a3
pop ecx
pop ecx
jmp 0x438ceb
push str._no_treenode_found____try_child_devices
push 3
call fcn.004452a3
pop ecx
pop ecx
push edi
push ebx
call fcn.00434d50
jmp 0x438cee
push dword [esi + 0x81c]
push str.treenode_s
push 3
call fcn.004452a3
xor eax, eax
inc eax
add esp, 0xc
mov dword [esi + 0xcdc], eax
cmp dword [0x4fc97c], ebp
je 0x438378
cmp dword [esi + 8], ebp
je 0x438378
cmp dword [esi + 0xff8], ebp
jne 0x438378
cmp dword [0x492a5c], ebp
jne 0x43833b
cmp dword [esi + 0x10], eax
je 0x438378
push edi
call fcn.00443fb3
test eax, eax
je 0x438378
push edi
call fcn.00443367
test eax, eax
jne 0x438378
push dword [esi + 8]
push 9
push 0x110b
push dword [0x4fa550]
call dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
je 0x438378
mov ecx, dword [esi + 0xd48]
cmp ecx, ebp
je 0x438378
call fcn.004070e9
mov edi, dword [esi + 0xfc0]
cmp edi, ebp
jne 0x4383d1
push str._treenode_found_but_has_no_deviceinfo
push 3
call fcn.004452a3
mov esi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
pop ecx
pop ecx
push str.a5dcbf10_6530_11d2_901f_00c04fb951ed
push ebx
call esi
test eax, eax
jne 0x4383ca
push str.f18a0e88_c30c_11d0_8815_00a0c906bed8
push ebx
call esi
test eax, eax
jne 0x4383ca
push str.3abf6f2d_71c4_462a_8a92_1e6861e6af27
push ebx
call esi
test eax, eax
jne 0x4383ca
push str.ROOT_HUB
push ebx
call esi
test eax, eax
je 0x438ceb
xor eax, eax
jmp 0x438cee
push ebp
lea eax, [edi + 0x10]
push dword [eax]
lea ecx, [edi + 0x39e4]
push ecx
lea ebx, [edi + 0x39e0]
push ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ecx
call dword [sym.imp.CFGMGR32.dll_CM_Get_DevNode_Status]
push dword [ebx]
mov ecx, dword [esp + 0x14]
push dword [ecx]
mov dword [esp + 0x1c], eax
push eax
call fcn.00440521
push eax
mov eax, dword [esp + 0x24]
push dword [eax]
push str.CM_Get_DevNode_Status__u___cret_S_problem_u_status0x_08x
push 3
call fcn.004452a3
mov eax, dword [esp + 0x30]
add esp, 0x18
cmp dword [eax], ebp
je 0x438449
cmp dword [esp + 0x6c], ebp
jne 0x438449
push str.looks_like_a_just_uninstalled_device____fake_CR_NO_SUCH_DEVINST__CM_PROB_PHANTOM
push 3
call fcn.004452a3
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
mov dword [esp + 0x14], 0xd
mov dword [eax], 0x2d
cmp dword [esp + 0x14], ebp
jne 0x4384f2
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
cmp eax, ebp
jne 0x438496
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x18]
push ebp
push dword [eax]
push dword [esp + 0x18]
push ebx
call dword [sym.imp.CFGMGR32.dll_CM_Get_DevNode_Status]
mov dword [esp + 0x14], eax
cmp eax, ebp
jne 0x4384f2
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
cmp eax, ebp
jne 0x438496
push str._device_is_present____ignore
jmp 0x4382d3
push eax
call fcn.00444652
xor ebx, ebx
inc ebx
test eax, eax
je 0x4384b7
push ebp
push 0x433356
push dword [esi + 8]
mov dword [esi + 0xffc], ebx
call fcn.0042e943
cmp dword [edi + 0x3a28], ebp
je 0x4384df
lea eax, [edi + 0x3a74]
mov ecx, dword [eax]
cmp ecx, ebp
je 0x4384df
xor edx, edx
mov word [ecx + 0x930], dx
mov eax, dword [eax]
xor ecx, ecx
mov word [eax + 0x848], cx
push ebx
mov ecx, esi
mov dword [esi + 0xcdc], ebx
call fcn.0040a1f8
jmp 0x438685
mov eax, dword [esp + 0x10]
mov dword [eax], 0x2d
mov dword [edi + 8], ebp
cmp dword [esi + 0x10], 6
jl 0x43850c
mov dword [esi + 0x10], 8
xor eax, eax
mov word [esi + 0x18], ax
mov word [esi + 0x41c], ax
mov word [esi + 0x860], ax
mov word [esi + 0xa5c], ax
mov word [esi + 0xdac], ax
cmp dword [edi + 0x3a28], ebp
je 0x43854f
cmp dword [edi + 0x3a74], ebp
je 0x43854f
mov eax, dword [0x4fc94c]
push dword [esp + 0x68]
mov ecx, dword [eax + 8]
call fcn.00405b81
mov ecx, dword [edi + 0x24]
cmp ecx, ebp
je 0x43855e
push edi
call fcn.004010e0
jmp 0x438565
push ebp
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [edi + 0x828]
cmp eax, ebp
je 0x43861b
mov ecx, 0x200
cmp eax, ecx
jb 0x43857e
mov eax, ecx
dec eax
cmp eax, ebp
mov dword [esp + 0x68], eax
jl 0x43861b
lea eax, [edi + eax*4 + 0x28]
mov dword [esp + 0x1c], eax
cmp dword [0x506fb4], 4
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax]
jl 0x4385c6
lea eax, [ebx + 0xc2c]
push eax
push dword [ebx + 8]
lea eax, [ebx + 0xe34]
push eax
push dword [esp + 0x74]
push str.Child__i___s_present_i_devpath_s
push 4
call fcn.004452a3
add esp, 0x18
cmp dword [ebx + 8], ebp
je 0x438608
lea eax, [ebx + 0xc2c]
mov dword [esp + 0x20], eax
cmp word [eax], bp
jne 0x438608
push dword [ebx + 0x10]
call fcn.00443efe
test eax, eax
jne 0x438608
lea eax, [ebx + 0xe34]
push eax
push str.fake_removal_event_for_child_device_without_interface:__s
push 4
call fcn.004452a3
add esp, 0xc
push dword [ebx + 0x10]
push dword [esp + 0x24]
call fcn.00438240
dec dword [esp + 0x68]
sub dword [esp + 0x1c], 4
cmp dword [esp + 0x68], ebp
jge 0x438593
mov eax, dword [esi + 0xfcc]
cmp eax, ebp
je 0x438685
mov ecx, dword [0x4fc94c]
push eax
call fcn.004011ae
test eax, eax
jne 0x438652
lea eax, [esi + 0x41c]
push eax
push dword [esi + 0xfcc]
push str.pTNI__pDeviceInfoParent0x_08Ix_is_invalid__pTNI_s
push ebp
call fcn.004452a3
add esp, 0x10
jmp 0x438685
mov eax, dword [esi + 0xfcc]
cmp word [eax + 0xc2c], bp
jne 0x438685
cmp dword [eax + 8], ebp
je 0x438685
push dword [eax + 0x10]
call fcn.00443efe
test eax, eax
jne 0x438685
mov eax, dword [esi + 0xfcc]
push dword [eax + 0x10]
push 0x449d24
call fcn.00438240
mov ecx, esi
call fcn.0040beca
cmp dword [edi + 0x3a2c], ebp
je 0x4386a4
xor eax, eax
or dword [edi + 0x3a20], 0xffffffff
mov word [edi + 0x3a34], ax
mov dword [edi + 0x3a78], ebp
mov ecx, dword [0x4fc94c]
push edi
call fcn.0040477f
push 0x46b4fc
push ebp
push 0x7f8a
call fcn.0042ed07
xor ecx, ecx
cmp dword [edi + 0x828], ebp
jle 0x4386f6
lea eax, [edi + 0x28]
cmp dword [eax], ebp
je 0x4386ea
mov edx, dword [eax]
mov ebx, dword [esp + 0x10]
mov dword [edx + 8], ebp
mov edx, dword [eax]
mov ebx, dword [ebx]
mov dword [edx + 0x39e4], ebx
inc ecx
add eax, 4
cmp ecx, dword [edi + 0x828]
jl 0x4386d3
mov dword [edi + 0x18], ebp
mov dword [edi + 0x1c], ebp
mov eax, dword [0x4fa5e8]
mov ecx, dword [0x4fa5e4]
add eax, ecx
je 0x4387b0
mov dword [esi + 0xfe0], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, esi
mov dword [esi + 0xfdc], eax
call fcn.0040a1a8
cmp dword [0x506fb4], 4
mov ebx, fcn.00434073
jl 0x438760
push dword [esi + 0x81c]
push dword [esi + 8]
push ebx
push dword [0x4fa5e4]
push esi
push dword [0x4fa548]
push str.SetTimer_0x_08Ix__0x_08Ix___u__0x_08Ix_EndOfTreeNodeHighlight_TimerProc___hTreeItem0x_08Ix___s
push 4
call fcn.004452a3
add esp, 0x20
push ebx
push dword [0x4fa5e4]
push esi
push dword [0x4fa548]
call dword [sym.imp.USER32.dll_SetTimer]
cmp dword [0x4fa5f0], ebp
je 0x4387c8
push dword [esi + 8]
call fcn.0042fb24
test eax, eax
je 0x4387c8
cmp dword [esi + 0x10], 1
jne 0x438799
mov ecx, esi
call fcn.004071d5
test eax, eax
je 0x4387c8
push dword [esi + 8]
push ebp
push 0x1114
push dword [0x4fa550]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x4387c8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push esi
push 0x113
push dword [0x4fa548]
call fcn.00434073
cmp dword [esi + 0xfac], ebp
je 0x438824
mov eax, dword [esi + 0xfb0]
cmp eax, ebp
je 0x438824
mov eax, dword [eax + 0x40]
cmp eax, ebp
je 0x438824
mov dword [esp + 0x68], ebp
jle 0x438819
push 0x30
pop ebx
mov eax, dword [esi + 0xfb0]
mov eax, dword [ebx + eax]
cmp eax, ebp
je 0x438803
mov ecx, dword [0x4fc948]
push eax
call fcn.00407ad0
inc dword [esp + 0x68]
mov eax, dword [esi + 0xfb0]
mov ecx, dword [esp + 0x68]
add ebx, 4
cmp ecx, dword [eax + 0x40]
jl 0x4387ea
mov ecx, dword [0x4fc948]
call fcn.00408b78
mov eax, dword [esi + 0xfb4]
cmp eax, ebp
je 0x4388b2
mov eax, dword [eax + 0x10c]
cmp eax, ebp
je 0x438859
mov ebx, dword [eax]
push eax
mov dword [eax], ebp
call fcn.0043f70d
pop ecx
mov eax, ebx
cmp ebx, ebp
jne 0x43883c
mov eax, dword [esi + 0xfb4]
mov dword [eax + 0x10c], ebp
cmp dword [edi + 8], ebp
jne 0x4388b2
lea ebx, [esi + 0x1000]
mov eax, dword [ebx]
mov dword [esp + 0x68], ebp
cmp eax, ebp
je 0x438888
push 0xea60
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebx]
mov dword [esp + 0x6c], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebx], ebp
cmp dword [esp + 0x14], ebp
je 0x4388b2
cmp dword [esp + 0x68], ebp
jne 0x4388ac
mov ebx, dword [esi + 0xfb4]
cmp ebx, ebp
je 0x4388ac
mov ecx, ebx
call fcn.00406eee
push ebx
call fcn.0043f70d
pop ecx
mov dword [esi + 0xfb4], ebp
cmp dword [esi + 0xfac], ebp
je 0x43897a
cmp dword [esp + 0x14], ebp
jne 0x4388d2
push 1
mov ecx, esi
call fcn.0040a1f8
jmp 0x438ce1
mov eax, dword [esi + 0xd48]
cmp eax, ebp
je 0x43891d
add eax, 0xcf6
cmp word [eax], bp
push eax
mov eax, dword [esi + 0xfc0]
je 0x4388fa
add eax, 0x1834
push eax
push str._s_removed_from_port__s
jmp 0x438905
add eax, 0x1834
push eax
push str._s_removed
push dword [0x492a4c]
push 1
push dword [0x4fac78]
call fcn.00405605
add esp, 0x18
jmp 0x438938
push str.Device_removed
push dword [0x492a4c]
push 1
push dword [0x4fac78]
call fcn.00405605
add esp, 0x10
mov dword [esi + 0xfc0], ebp
push dword [edi + 4]
mov ecx, dword [0x4fc94c]
call fcn.0040413a
mov esi, dword [esi + 0xfb0]
cmp esi, ebp
je 0x438960
mov esi, dword [esi + 0x10]
cmp esi, ebp
je 0x438960
mov dword [esi + 0x1f], ebp
call fcn.0042e58a
call fcn.004323fc
call fcn.0043546a
push ebp
call fcn.0042e718
jmp 0x438ce1
mov eax, dword [esi + 0xd48]
cmp eax, ebp
je 0x438bd0
cmp dword [esi + 0xfcc], ebp
je 0x438bd0
cmp dword [eax + 0xfac], ebp
je 0x438bd0
push 0x42df24
push 0xa
push 0x12340003
push dword [0x4fa548]
call dword [sym.imp.USER32.dll_SetTimer]
cmp edi, dword [esi + 0xfc0]
je 0x4389e7
push str.DeviceRemoved
push 0x1d46
push str..UsbTreeView.cpp
push str.INT3_in__S_line__u__function__S
push 1
call fcn.004452a3
add esp, 0x14
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
int3
cmp dword [esp + 0x14], ebp
jne 0x438a94
xor ebx, ebx
inc ebx
push ebx
mov ecx, esi
call fcn.0040a1f8
mov edi, dword [esp + 0x10]
push dword [edi]
call fcn.00444652
test eax, eax
je 0x438a25
lea eax, [esi + 0xcf6]
push eax
mov eax, dword [esi + 0xfc0]
add eax, 0x1834
push eax
push str._s_prepared_for_safe_removal_from_port__s
jmp 0x438a42
cmp dword [edi], 0x16
jne 0x438a5c
lea eax, [esi + 0xcf6]
push eax
mov eax, dword [esi + 0xfc0]
add eax, 0x1834
push eax
push str._s_disabled_at_port__s
push dword [0x492a4c]
push ebx
push dword [0x4fac78]
call fcn.00405605
add esp, 0x18
jmp 0x438b3d
mov eax, dword [esi + 0xfc0]
lea ecx, [esi + 0xcf6]
push ecx
push dword [eax + 0x39e4]
add eax, 0x1834
push eax
push str._s_got_problem__u_at_port__s
push dword [0x492a4c]
push ebx
push dword [0x4fac78]
call fcn.00405605
add esp, 0x1c
jmp 0x438b3d
xor eax, eax
mov word [esi + 0x18], ax
mov word [esi + 0x41c], ax
mov word [esi + 0x860], ax
mov word [esi + 0xa5c], ax
mov word [esi + 0xdac], ax
lea eax, [esi + 0xcf6]
push eax
mov eax, dword [esi + 0xfc0]
add eax, 0x1834
push eax
push str._s_removed_from_port__s
mov dword [esi + 0x10], 8
push dword [0x492a4c]
push 1
push dword [0x4fac78]
call fcn.00405605
mov eax, dword [esi + 0xfb0]
add esp, 0x18
cmp eax, ebp
je 0x438aff
mov eax, dword [eax + 0x10]
cmp eax, ebp
je 0x438aff
mov dword [eax + 0x1f], ebp
mov dword [esi + 0xfc0], ebp
push dword [edi + 4]
mov ecx, dword [0x4fc94c]
call fcn.0040413a
push dword [esi + 8]
push dword [0x4fa550]
call fcn.00425804
mov eax, dword [0x4fac6c]
cmp dword [esi + 8], eax
jne 0x438b3d
push eax
push dword [0x4fa550]
push dword [0x4fa554]
call fcn.004143c5
mov eax, dword [esi + 0xfcc]
cmp eax, ebp
je 0x438cae
cmp dword [eax], 1
jne 0x438cae
add eax, 0xc2c
push eax
call fcn.0042961e
test eax, eax
je 0x438cae
mov eax, dword [esi + 0xfcc]
push ebp
push ebp
push 3
push ebp
push 3
push 0x80000000
add eax, 0xc2c
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
cmp edi, 0xffffffff
je 0x438cae
mov eax, dword [esi + 0xd48]
mov ecx, dword [0x4fc948]
push esi
push dword [eax + 0xfac]
push edi
call fcn.0040a9f4
push dword [esi + 0xd48]
mov ecx, dword [0x4fc948]
push esi
call fcn.00408464
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 1
push ebp
push esi
call fcn.004331c5
jmp 0x438cae
cmp dword [esi + 0x10], 1
jne 0x438c15
xor edi, edi
inc edi
push edi
mov ecx, esi
mov dword [esi + 0xcdc], edi
call fcn.0040a1f8
mov ecx, dword [0x4fc948]
push edi
push dword [esp + 0x70]
call fcn.004076dc
cmp eax, ebp
je 0x438cae
xor ecx, ecx
inc ecx
mov dword [eax + 0xcdc], ecx
push ecx
mov ecx, eax
call fcn.0040a1f8
jmp 0x438cae
mov ecx, str.removed
cmp dword [esp + 0x14], ebp
jne 0x438c5f
mov ebx, dword [esp + 0x10]
push dword [ebx]
call fcn.0043fe9f
push eax
lea eax, [esp + 0x28]
push str.got_problem__s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [ebx]
add esp, 0xc
sub eax, 0x15
lea ecx, [esp + 0x24]
je 0x438c5a
dec eax
je 0x438cf8
dec eax
dec eax
je 0x438c5a
sub eax, 0x17
jne 0x438c5f
mov ecx, str.prepared_for_safe_removal
mov eax, dword [esi + 0xfc0]
push ecx
add eax, 0x1934
push eax
push str._s__S
push dword [0x492a4c]
push 1
push dword [0x4fac78]
call fcn.00405605
add esp, 0x18
cmp dword [edi + 8], ebp
jne 0x438cae
push dword [esi + 8]
push dword [0x4fa550]
call fcn.0042fb3c
mov dword [esi + 0xfc0], ebp
push dword [edi + 4]
mov ecx, dword [0x4fc94c]
call fcn.0040413a
mov eax, dword [esp + 0x18]
push 0x42e329
push 0x64
push dword [eax]
push dword [0x4fa548]
call dword [sym.imp.USER32.dll_SetTimer]
call fcn.0042e58a
call fcn.004323fc
call fcn.0043546a
push ebp
call fcn.0042e718
call fcn.004321ab
push 0xc8
call fcn.004320b5
xor eax, eax
inc eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret 8
mov ecx, str.disabled
jmp 0x438c5f