Function at 0x40986b
Capabilities:
Create thread

Disassembly:
push ebp
lea ebp, [esp - 0x4ec]
sub esp, 0x56c
mov eax, dword [0x498b28]
xor eax, ebp
mov dword [ebp + 0x4e8], eax
mov eax, dword [ebp + 0x4f4]
push ebx
push esi
mov esi, ecx
mov dword [ebp - 0x78], eax
movzx eax, word [esi + 0xc]
cmp ax, 0x3e8
push edi
ja 0x409c3b
movzx ecx, word [esi + 0x24e]
cmp cx, 0x3e8
ja 0x409c3b
movzx eax, ax
imul eax, eax, 9
movzx ecx, cx
add eax, ecx
lea eax, [eax + eax + 0xf]
push eax
mov dword [ebp - 0x74], eax
call fcn.00439dca
mov edi, eax
xor ebx, ebx
cmp edi, ebx
pop ecx
jne 0x4098cb
cmp byte [0x4a59e4], 2
jb 0x409c52
push str.SDP_IF___malloc_failed
push ebx
jmp 0x409c4b
call fcn.00403aff
test eax, eax
je 0x40993d
mov edi, dword [0x49a3ac]
imul edi, edi, 0x18
add edi, 0x49a3b0
inc dword [0x49a3ac]
cmp dword [0x49a3ac], 4
jl 0x4098f8
mov dword [0x49a3ac], ebx
mov eax, dword [ebp + 0x4f8]
push 6
push dword [ebp - 0x78]
mov dword [edi + 4], eax
xor ebx, ebx
lea eax, [edi + 0xc]
inc ebx
push eax
mov dword [edi], ebx
mov dword [edi + 8], esi
call fcn.00439860
lea eax, [ebp - 0x74]
push eax
xor esi, esi
push esi
push edi
push 0x4084dc
push esi
push esi
call fcn.00436914
add esp, 0x24
test eax, eax
jne 0x409c1b
mov dword [edi], esi
jmp 0x409c52
cmp word [esi + 0xc], 0xffff
je 0x409974
call fcn.00406f86
test al, al
je 0x409c52
call fcn.00406fca
test eax, eax
je 0x40996c
push 0x64
call dword [0x46732c]
inc ebx
cmp ebx, 0x262
jl 0x40993d
cmp word [esi + 0xc], 0xffff
jne 0x40998b
cmp byte [0x4a59e4], 2
jb 0x409c52
push str.SDP_IF___search_aborted
jmp 0x409c49
mov eax, dword [esi]
and dword [ebp - 0x6c], 0
add eax, 0x294
mov dword [edi], eax
mov ax, word [esi + 0xc]
mov word [edi + 4], ax
movzx ebx, word [edi + 4]
mov ax, word [esi + 0x24e]
imul ebx, ebx, 0x12
mov word [edi + 6], ax
lea eax, [edi + 0xf]
add ebx, eax
cmp word [esi + 0xc], 0
jbe 0x4099f9
lea ecx, [esi + 0x10]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x70], ecx
jmp 0x4099cf
mov ecx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x68]
mov dx, word [ecx - 2]
push 0x10
mov word [eax], dx
push ecx
add eax, 2
push eax
call fcn.00439860
movzx eax, word [esi + 0xc]
add dword [ebp - 0x70], 0x12
add dword [ebp - 0x68], 0x12
add esp, 0xc
inc dword [ebp - 0x6c]
cmp dword [ebp - 0x6c], eax
jl 0x4099c9
movzx ecx, word [edi + 6]
add ecx, ecx
push ecx
lea eax, [esi + 0x250]
push eax
push ebx
call fcn.00439860
mov al, byte [ebp + 0x4fc]
push 6
push dword [ebp - 0x78]
mov byte [edi + 0xe], al
lea eax, [edi + 8]
push eax
call fcn.00439860
mov ebx, dword [0x467354]
add esp, 0x18
push 0
lea eax, [ebp - 0x7c]
push eax
push 0x3fc
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x74]
push edi
push 0x2a0600
push dword [0x498014]
call ebx
test eax, eax
jne 0x409b90
call dword [0x467358]
cmp byte [0x4a59e4], 2
mov dword [ebp - 0x74], eax
jb 0x409a7d
call dword [0x467358]
push eax
push str.SDP_IF___start_search_IOCtl_failed__Code:__d
push 0
call fcn.00421c1f
add esp, 0xc
cmp dword [ebp - 0x74], 0x7a
jne 0x409b85
cmp dword [0x49a33c], 0x10314
ja 0x409b85
mov eax, dword [esi]
mov cx, word [esi + 0x24e]
and dword [ebp - 0x6c], 0
add eax, 0x294
mov dword [ebp + 0x398], eax
movzx eax, word [esi + 0xc]
test ax, ax
mov word [ebp + 0x39c], ax
mov word [ebp + 0x4be], cx
jbe 0x409b05
lea ecx, [ebp + 0x3a0]
lea eax, [esi + 0x10]
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x68], eax
jmp 0x409add
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x70]
mov dx, word [eax - 2]
push 0x10
push eax
push ecx
mov word [ecx - 2], dx
call fcn.00439860
movzx eax, word [esi + 0xc]
add dword [ebp - 0x68], 0x12
add dword [ebp - 0x70], 0x12
add esp, 0xc
inc dword [ebp - 0x6c]
cmp dword [ebp - 0x6c], eax
jl 0x409ad7
push 0x20
lea eax, [esi + 0x250]
push eax
lea eax, [ebp + 0x4c0]
push eax
call fcn.00439860
mov al, byte [ebp + 0x4fc]
push 6
push dword [ebp - 0x78]
mov byte [ebp + 0x4e6], al
lea eax, [ebp + 0x4e0]
push eax
call fcn.00439860
add esp, 0x18
push 0
lea eax, [ebp - 0x7c]
push eax
push 0x3fc
lea eax, [ebp - 0x64]
push eax
push 0x14f
lea eax, [ebp + 0x398]
push eax
push 0x2a0600
push dword [0x498014]
call ebx
test eax, eax
jne 0x409b90
cmp byte [0x4a59e4], 2
jb 0x409b85
call dword [0x467358]
push eax
push str.SDP_IF___start_search_IOCtl_failed__Code:__d
push 0
call fcn.00421c1f
add esp, 0xc
push edi
call fcn.00439c78
jmp 0x409c51
cmp word [ebp - 0x64], 0
jne 0x409c1f
cmp word [ebp - 0x62], 4
jae 0x409c1f
push edi
call fcn.00439c78
movzx eax, word [ebp - 0x62]
mov edi, eax
imul edi, edi, 0x18
xor ebx, ebx
add edi, 0x49a3b0
inc ebx
cmp dword [edi], 0
pop ecx
je 0x409be1
cmp byte [0x4a59e4], bl
jb 0x409bd8
push eax
push str.SDP_IF___start_search___reusing_driver_sdp_inx:__d
push 0
call fcn.00421c1f
add esp, 0xc
push 0xfff3
call dword [edi + 4]
pop ecx
mov eax, dword [ebp + 0x4f8]
push 6
push dword [ebp - 0x78]
mov dword [edi + 4], eax
lea eax, [edi + 0xc]
push eax
mov dword [edi], ebx
mov dword [edi + 8], esi
call fcn.00439860
movzx ecx, word [ebp - 0x62]
lea eax, [ebp - 0x80]
push eax
xor eax, eax
push eax
push ecx
push 0x4095fb
push eax
push eax
call fcn.00436914
add esp, 0x24
mov dword [edi + 0x14], eax
mov al, bl
jmp 0x409c54
cmp byte [0x4a59e4], 2
jb 0x409b85
movzx eax, word [ebp - 0x64]
push eax
push str.SDP_IF___start_search_failed__error:_0x_x
jmp 0x409b7b
cmp byte [0x4a59e4], 2
jb 0x409c52
push str.SDP_IF___too_big_num_attr_filters__or_num_uuid_filters
push 0
call fcn.00421c1f
pop ecx
pop ecx
xor al, al
mov ecx, dword [ebp + 0x4e8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004369c2
add ebp, 0x4ec
leave
ret