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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x88
mov eax, dword [ebp + 8]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x14], edx
mov edx, dword [edx + 0x14]
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov esi, dword [eax + 8]
mov dword [esp + 0x10], ecx
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov ecx, 1
xor eax, eax
lock cmpxchg dword [edx + 0x10], ecx
mov dword [esp + 4], edx
je 0x1010500a
mov ecx, dword [edx + 0x14]
mov ebx, eax
call fcn.100f4af0
mov eax, dword [0x10551f14]
test eax, eax
jne 0x10105991
mov dword [esp + 0x18], 0
mov edx, dword [esp + 4]
lea eax, [edx + 0x14]
mov dword [esp + 0x28], eax
mov al, byte [edx + 0x18]
test al, al
jne 0x10105b05
mov dword [esp + 0x48], 0
jmp 0x10104c1f
mov eax, ebx
or eax, 1
test byte [esp + 0x48], 1
lea ecx, [eax - 2]
cmove ecx, eax
mov eax, ebx
lock cmpxchg dword [edx + 0x10], ecx
mov ebx, eax
je 0x10104f1d
test bl, 1
je 0x10104c00
mov eax, esi
or eax, dword [esp + 8]
jne 0x10104c42
mov eax, edi
xor eax, 1
or eax, dword [esp + 0x10]
jne 0x10104c42
cmp dword [esp + 0xc], 0
je 0x10104f60
test byte [esp + 0x48], 1
jne 0x10104c65
mov ecx, ebx
add ecx, 2
jb 0x101059ff
mov eax, ebx
lock cmpxchg dword [edx + 0x10], ecx
mov ebx, eax
jne 0x10104c1f
mov al, 1
mov dword [esp + 0x48], eax
mov eax, edi
mov dword [esp + 0x20], esi
xor eax, 1
or eax, dword [esp + 0x10]
jne 0x10104d08
mov esi, edx
call fcn.100fe340
cmp byte [esp + 0x18], 0
mov dword [esp + 0x1c], ecx
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x10], eax
mov dword [esp + 0x4c], edx
setne al
mov dword [esp + 0x18], eax
xor eax, eax
lock cmpxchg dword [esi + 0x20], ecx
je 0x10104cab
cmp eax, ecx
jne 0x10105a69
mov eax, dword [esp + 8]
mov ecx, 0x3e8
mov edi, dword [esp + 4]
mul ecx
mov ebx, eax
mov eax, dword [esp + 0x20]
seto byte [esp + 0x24]
mul ecx
mov ecx, edx
mov esi, eax
add ecx, ebx
mov ebx, dword [edi + 0x14]
mov edi, dword [edi + 0x1c]
setb al
or al, byte [esp + 0x24]
jne 0x10104dbc
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0xc]
mov edx, 0x431bde83
mov eax, ebx
mul edx
shr edx, 0x12
add esi, edx
adc ecx, 0
jae 0x10104d83
mov ebx, dword [esp + 0x24]
jmp 0x10104dbc
cmp byte [esp + 0x18], 0
mov ecx, dword [edx + 0x14]
mov dword [esp + 0x1c], edi
setne al
mov dword [esp + 0x18], eax
xor eax, eax
lock cmpxchg dword [edx + 0x20], ecx
je 0x10104d2c
cmp eax, ecx
jne 0x10105a69
mov edi, dword [edx + 0x14]
mov esi, dword [edx + 0x1c]
mov ebx, edx
mov edx, dword [0x10551f84]
test edx, edx
jne 0x10104d5d
mov ecx, str.SleepConditionVariableSRW
mov edx, 0x19
call fcn.100f2fc0
test eax, eax
mov ecx, 0x100fab90
cmove edx, ecx
mov dword [0x10551f84], edx
push 0
push 0xffffffffffffffff
push edi
push esi
call edx
movzx eax, byte [ebx + 0x18]
test al, al
jne 0x10105a82
mov edx, ebx
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov ebx, dword [ebx + 0x10]
jmp 0x10104c1f
imul eax, ebx, 0x68c26139
ror eax, 6
cmp eax, 0x10c6
jbe 0x10104da1
add esi, 1
adc ecx, 0
setae al
movzx eax, al
jmp 0x10104da6
mov eax, 1
mov ebx, dword [esp + 0x24]
cmp esi, 0xffffffff
sbb ecx, 0
mov ecx, 0xffffffff
cmovae esi, ecx
test eax, eax
jne 0x10104dc1
mov esi, 0xffffffff
mov edx, dword [0x10551f84]
test edx, edx
jne 0x10104dea
mov ecx, str.SleepConditionVariableSRW
mov edx, 0x19
call fcn.100f2fc0
test eax, eax
mov ecx, 0x100fab90
cmove edx, ecx
mov dword [0x10551f84], edx
push 0
push esi
push ebx
push edi
call edx
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx + 0x18]
test cl, cl
jne 0x10105aa6
call fcn.100fe340
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x30]
lea edx, [esp + 0x60]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x58], eax
lea eax, [esp + 0x50]
push eax
call fcn.100fe5f0
add esp, 4
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
xor eax, 1
or eax, dword [esp + 0x34]
jne 0x10105a21
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 8]
xor ebx, ebx
mov dword [esp + 0x10], 0
mov eax, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], edx
xor eax, esi
mov esi, edx
xor esi, edi
or esi, eax
mov eax, dword [esp + 0x40]
setne bl
cmp ecx, dword [esp + 0x20]
mov ecx, 0xff
sbb edx, edi
mov edi, 1
cmovb ebx, ecx
cmp bl, 0xff
je 0x10104ec3
test bl, bl
jne 0x10104eff
cmp eax, dword [esp + 0xc]
mov edx, eax
jb 0x10104ec5
mov dword [esp + 0xc], 0
xor esi, esi
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
jmp 0x10104f11
mov edx, eax
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xc]
sub esi, dword [esp + 0x4c]
sbb dword [esp + 8], eax
jb 0x10105a10
cmp ecx, edx
jae 0x10104ef7
sub esi, 1
sbb dword [esp + 8], 0
jb 0x10105a10
add ecx, 0x3b9aca00
sub ecx, edx
mov dword [esp + 0xc], ecx
jmp 0x10104f11
mov dword [esp + 0xc], 0
xor esi, esi
mov dword [esp + 8], 0
mov edx, dword [esp + 4]
mov ebx, dword [edx + 0x10]
jmp 0x10104c1f
cmp byte [esp + 0x18], 0
mov ebx, edi
mov edi, esi
jne 0x10104f35
mov eax, dword [0x10551f14]
test eax, eax
jne 0x101059cb
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov eax, dword [0x10551f24]
test eax, eax
je 0x10104faf
cmp eax, 0x100f3390
jne 0x10104fd8
mov eax, dword [esi]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10105002
test byte [esp + 0x48], 1
je 0x10104f6c
lock sub dword [edx + 0x10], 2
cmp byte [esp + 0x18], 0
jne 0x10104f80
mov eax, dword [0x10551f14]
test eax, eax
jne 0x101059e5
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov eax, dword [0x10551f24]
test eax, eax
je 0x10105726
cmp eax, 0x100f3390
jne 0x1010574f
mov eax, dword [esi]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10105779
mov ecx, 0x103a03b9
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f3390
cmovne eax, edx
mov dword [0x10551f24], eax
cmp eax, 0x100f3390
je 0x10104f4f
mov eax, dword [0x10551f3c]
test eax, eax
jne 0x10104fff
mov ecx, str.ReleaseSRWLockExclusive
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f51d0
cmovne eax, edx
mov dword [0x10551f3c], eax
push esi
call eax
mov edx, dword [esp + 4]
mov esi, edi
mov edi, ebx
mov eax, edi
xor eax, 1
or eax, dword [esp + 0x10]
jne 0x10105024
mov eax, esi
or eax, dword [esp + 8]
jne 0x10105024
cmp dword [esp + 0xc], 0
je 0x10105061
mov ebx, edi
mov edi, esi
mov esi, dword [edx + 0xc]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x24]
cmp eax, edx
je 0x1010505a
mov ecx, dword [esi + 0x20]
cmp eax, ecx
jne 0x10105061
mov dword [edx + 0x10], 0
mov eax, ecx
lock cmpxchg dword [esi + 0x18], edx
cmp ecx, eax
jne 0x10105061
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x1c], edx
jmp 0x10105080
mov eax, dword [esi + 0x18]
cmp edx, eax
je 0x10105080
mov ebx, 1
mov dword [esp + 0x10], 0
xor edi, edi
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
xor ebx, 1
mov esi, edi
mov edi, ebx
mov dword [esp + 0x1c], ebx
jmp 0x10105096
sub ecx, eax
mov dword [esp + 0xc], ecx
call fcn.100fe340
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], ecx
mov ebx, eax
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x101050b4
mov eax, dword [0x10551ec0]
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x10], 0
mov eax, dword [0x10551ebc]
mov edx, dword [esp + 4]
cmp eax, 5
jb 0x101050d2
mov eax, dword [0x10551ec0]
mov eax, edi
mov edi, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], esi
or eax, dword [esp + 0x10]
mov eax, dword [edx + 8]
mov edx, 0xffffffff
mov dword [esp + 0x30], 0
mov dword [esp + 0x48], eax
jne 0x1010515f
mov eax, dword [esp + 8]
mov dword [esp + 0x4c], ebx
mov ebx, 0x3e8
mov dword [esp + 0x24], ecx
mul ebx
mov ecx, eax
mov eax, esi
seto byte [esp + 0x2f]
mul ebx
mov esi, eax
mov eax, dword [esp + 0xc]
mov ebx, edx
mov edx, 0x431bde83
add ebx, ecx
setb cl
mul edx
shr edx, 0x12
add edx, esi
mov esi, dword [esp + 0x20]
adc ebx, 0
setb al
cmp edx, 0xffffffff
sbb ebx, 0
mov ebx, 0xffffffff
cmovae edx, ebx
test al, al
mov eax, 0xfffffffe
mov ebx, dword [esp + 0x4c]
cmovne edx, eax
or cl, byte [esp + 0x2f]
mov ecx, dword [esp + 0x24]
cmovne edx, eax
push 0
push edx
lea eax, [esp + 0x38]
push eax
push ecx
push edi
mov eax, dword [esp + 0x5c]
push dword [eax + 0xc]
mov edi, ecx
call sub.KERNEL32.dll_GetQueuedCompletionStatusEx
test eax, eax
jne 0x10105278
call sub.KERNEL32.dll_GetLastError
cmp eax, 0x102
je 0x101052fa
mov ecx, eax
mov edi, eax
call fcn.100f4830
cmp al, 0xf
jne 0x101055ee
mov edi, dword [esp + 0x1c]
mov eax, edi
or eax, dword [esp + 0x10]
jne 0x10105096
call fcn.100fe340
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x64], edx
mov dword [esp + 0x68], ecx
lea ecx, [esp + 0x30]
lea edx, [esp + 0x60]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x58], eax
lea eax, [esp + 0x50]
push eax
call fcn.100fe5f0
add esp, 4
mov eax, dword [esp + 0x30]
xor eax, 1
or eax, dword [esp + 0x34]
jne 0x10105a21
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 8]
xor ebx, ebx
mov eax, edx
xor eax, esi
mov esi, edi
xor esi, ecx
or esi, eax
mov esi, dword [esp + 0x20]
mov eax, edi
setne bl
cmp edx, esi
sbb eax, ecx
mov eax, dword [esp + 0x40]
mov ecx, 0xff
cmovb ebx, ecx
cmp bl, 0xff
je 0x10105243
test bl, bl
jne 0x10105309
cmp eax, dword [esp + 0xc]
jae 0x10105309
sub esi, edx
mov ecx, dword [esp + 0xc]
sbb dword [esp + 8], edi
mov edi, dword [esp + 0x1c]
jb 0x10105a10
cmp ecx, eax
jae 0x10105090
sub esi, 1
sbb dword [esp + 8], 0
jb 0x10105a10
add ecx, 0x3b9aca00
jmp 0x10105090
mov esi, dword [esp + 0x30]
cmp esi, edi
ja 0x10105bcc
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 4]
cmp edx, esi
jb 0x10105bd7
test esi, esi
je 0x101052fa
mov eax, dword [esp + 0x14]
shl esi, 4
mov ecx, dword [eax]
lea edi, [ecx + esi - 0x10]
add esi, ecx
mov eax, ecx
jmp 0x101052bc
push eax
call ecx
add esp, 4
cmp esi, ebx
mov eax, ebx
je 0x101052fa
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x101052dc
mov ecx, dword [ecx + 0x14]
mov edx, dword [0x10551ebc]
lea ebx, [eax + 0x10]
cmp edx, 5
jb 0x101052b0
mov edx, dword [0x10551ec0]
jmp 0x101052b0
mov ecx, dword [eax]
mov dword [esp + 0x7c], 0xffffffff
cmp ecx, 0xffffffff
mov dword [esp + 0x78], ecx
jne 0x10105b5e
lea ecx, [eax + 0x10]
cmp edi, eax
jne 0x101052a6
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x10105309
mov eax, dword [0x10551ec0]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x10]
cmp eax, dword [ecx + 0xc]
jne 0x1010533c
mov eax, dword [esp + 4]
mov edx, dword [eax + 0xc]
mov ecx, dword [edx + 0x24]
cmp dword [edx + 0x1c], ecx
jne 0x1010533c
mov esi, dword [edx + 0x20]
mov eax, ecx
mov dword [esi + 0x10], 0
lock cmpxchg dword [edx + 0x18], esi
cmp ecx, eax
jne 0x1010533c
mov dword [edx + 0x1c], esi
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
mov esi, dword [eax + 0x10]
cmp esi, dword [eax + 0xc]
jae 0x10105606
mov dword [esp + 0x10], 0
jmp 0x1010537c
call sub.KERNEL32.dll_GetProcessHeap
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
mov esi, dword [eax + 0x10]
cmp esi, dword [eax + 0xc]
jae 0x10105606
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
add ecx, 8
call fcn.10049010
test eax, eax
jne 0x101055fb
mov eax, dword [edx]
mov ebx, edx
nop word [eax + eax]
test eax, 0x20000
jne 0x10105460
mov esi, eax
shr esi, 4
and esi, eax
and esi, 0xf
test eax, 0x100
jne 0x101053d0
mov ecx, eax
and ecx, 0xfffeffff
test esi, esi
cmovne ecx, eax
jmp 0x101053e9
test esi, esi
mov ecx, 0xfffeff0f
mov edx, 0xfffeffff
cmove ecx, edx
test eax, 0x400
cmove ecx, edx
and ecx, eax
mov edi, ecx
mov edx, ecx
shr edi, 2
and edx, 0xffffcfff
and edi, 0x3000
or edx, edi
cmp eax, edx
je 0x10105408
lock cmpxchg dword [ebx], edx
jne 0x101053a0
test ecx, 0x10000
je 0x101054d0
mov eax, dword [esp + 0x10]
test eax, eax
cmove eax, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 4]
mov edx, dword [eax + 0xc]
mov dword [ebx + 0x10], 0
mov eax, dword [edx + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
cmp eax, dword [edx + 0x28]
je 0x10105490
mov ecx, eax
lock cmpxchg dword [edx + 0x18], ebx
cmp ecx, eax
jne 0x10105440
mov dword [ecx + 0x10], ebx
jmp 0x101054d0
lock dec dword [ebx + 0x18]
jne 0x10105368
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x1010535a
mov dword [esp + 0x30], eax
lock dec dword [eax]
jne 0x1010535a
lea ecx, [esp + 0x30]
call fcn.10048f30
jmp 0x1010535a
cmp dword [edx + 0x20], ebx
je 0x101054d0
lock dec dword [ebx + 0x18]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
jne 0x101054d8
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x101055bf
mov dword [esp + 0x30], eax
lock dec dword [eax]
jne 0x101054c0
lea ecx, [esp + 0x30]
call fcn.10048f30
call sub.KERNEL32.dll_GetProcessHeap
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
nop
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
test esi, esi
je 0x101055e0
shr edi, 0xc
je 0x101054fd
cmp edi, 1
je 0x101054f8
cmp edi, 2
jne 0x10105a50
add ebx, 0xc
jmp 0x10105500
add ebx, 8
jmp 0x10105500
add ebx, 4
mov edi, dword [ebx]
mov ebx, dword [eax + 0x10]
cmp ebx, dword [eax + 0xc]
jne 0x10105576
mov eax, ebx
mov dword [esp + 8], edi
inc eax
je 0x10105a49
lea ecx, [ebx + ebx]
mov edx, 8
cmp ecx, eax
cmova eax, ecx
mov ecx, 4
cmp eax, 4
cmovbe eax, ecx
xor ecx, ecx
mul edx
mov edi, eax
setno al
jo 0x10105a49
test edi, edi
js 0x10105a49
mov cl, al
test ebx, ebx
mov eax, ebx
je 0x10105555
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 8]
shl ecx, 2
test eax, eax
je 0x1010557b
shl ebx, 3
test ebx, ebx
je 0x1010557b
mov ebx, eax
call sub.KERNEL32.dll_GetProcessHeap
push edi
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
jmp 0x1010558d
mov ecx, dword [eax + 8]
jmp 0x101055af
test edi, edi
je 0x1010558f
call sub.KERNEL32.dll_GetProcessHeap
push edi
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
mov ecx, eax
mov edx, dword [esp + 4]
test ecx, ecx
je 0x10105af7
mov eax, dword [esp + 0x14]
shr edi, 3
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edi
mov edi, dword [esp + 8]
mov ebx, dword [eax + 0x10]
mov dword [ecx + ebx*8], esi
mov dword [ecx + ebx*8 + 4], edi
mov esi, dword [eax + 0x10]
inc esi
mov dword [eax + 0x10], esi
jmp 0x101055e3
call sub.KERNEL32.dll_GetProcessHeap
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x14]
test esi, esi
jne 0x101054e0
nop dword [eax]
mov esi, dword [eax + 0x10]
cmp esi, dword [eax + 0xc]
jb 0x1010537c
jmp 0x10105606
mov edx, dword [esp + 4]
xor esi, esi
mov ebx, 1
jmp 0x1010560a
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
mov esi, dword [eax + 0x10]
xor ebx, ebx
xor edi, edi
mov eax, dword [edx + 0x10]
nop dword [eax]
mov ecx, eax
and ecx, 0xfffffffe
lock cmpxchg dword [edx + 0x10], ecx
jne 0x10105610
cmp eax, 1
je 0x10105714
mov ecx, dword [edx + 0x14]
call fcn.100f4af0
mov eax, dword [0x10551f14]
test eax, eax
jne 0x101059a1
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 4]
mov dword [esp + 0x10], ebx
mov al, byte [ecx + 0x18]
lea edx, [ecx + 0x14]
test al, al
jne 0x10105b2f
mov dword [esp + 8], edx
mov ebx, dword [ecx + 0x1c]
mov eax, dword [0x10551f88]
test eax, eax
jne 0x10105686
mov ecx, str.WakeConditionVariable
mov edx, 0x15
call fcn.100f2fc0
test eax, eax
mov eax, 0x100fbb50
cmovne eax, edx
mov dword [0x10551f88], eax
push ebx
call eax
cmp byte [esp + 0xc], 0
jne 0x1010569d
mov eax, dword [0x10551f14]
test eax, eax
jne 0x101059b1
mov eax, dword [esp + 8]
mov ebx, dword [eax]
mov eax, dword [0x10551f24]
test eax, eax
je 0x101056c1
cmp eax, 0x100f3390
jne 0x101056e6
mov eax, dword [ebx]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10105710
mov ecx, 0x103a03b9
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f3390
cmovne eax, edx
mov dword [0x10551f24], eax
cmp eax, 0x100f3390
je 0x101056b3
mov eax, dword [0x10551f3c]
test eax, eax
jne 0x1010570d
mov ecx, str.ReleaseSRWLockExclusive
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f51d0
cmovne eax, edx
mov dword [0x10551f3c], eax
push ebx
call eax
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x10105779
mov eax, dword [esp + 0x74]
mov dword [eax], esi
mov dword [eax + 4], edi
jmp 0x10105989
mov ecx, 0x103a03b9
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f3390
cmovne eax, edx
mov dword [0x10551f24], eax
cmp eax, 0x100f3390
je 0x10104f9e
mov eax, dword [0x10551f3c]
test eax, eax
jne 0x10105776
mov ecx, str.ReleaseSRWLockExclusive
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f51d0
cmovne eax, edx
mov dword [0x10551f3c], eax
push esi
call eax
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x10], 0
je 0x10105982
mov eax, dword [ecx + 8]
mov edx, 1
nop
mov edi, dword [eax + 4]
mov ebx, dword [ecx + 0x14]
mov dword [esp + 0x10], edx
cmp edi, 0x7fffffff
jne 0x101057e0
mov eax, dword [ebx + 0x40]
mov ecx, dword [eax]
nop dword [eax + eax]
test ecx, 0x20000
jne 0x10105900
mov esi, dword [ebx + 0x40]
mov edx, ecx
mov eax, ecx
and edx, 0xfffffff0
lock cmpxchg dword [esi], edx
cmp ecx, eax
mov ecx, eax
jne 0x101057b0
jmp 0x10105900
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, edi
and eax, 0x3fff
lea ecx, [eax + 0x20]
shr ecx, 6
je 0x101057fd
bsr edx, ecx
xor edx, 0x1f
jmp 0x10105802
mov edx, 0x20
mov ecx, 0x20
sub ecx, edx
mov edx, dword [ebx + 0x30]
cmp ecx, edx
ja 0x10105900
jae 0x10105a3a
mov edx, dword [ebx + 0x2c]
lea ebx, [ecx + ecx*4]
sub eax, dword [edx + ebx*4 + 8]
mov esi, dword [edx + ebx*4 + 0xc]
mov ecx, eax
shl ecx, 5
add ecx, esi
cmp dword [edx + ebx*4 + 0x10], eax
mov eax, 0
cmovbe ecx, eax
test esi, esi
cmove ecx, esi
test ecx, ecx
je 0x10105900
mov eax, dword [ecx + 4]
mov ebx, dword [esp + 8]
shr edi, 0x1a
mov edx, edi
shl edi, 0x1f
and edx, 1
and ebx, 0x7fffffff
mov esi, eax
shr esi, 0x1f
cmp esi, edx
jne 0x10105900
mov esi, eax
and esi, 3
or esi, ebx
or esi, edi
lock cmpxchg dword [ecx + 4], esi
jne 0x10105860
xor esi, esi
test byte [esp + 8], 2
mov edi, 0
je 0x101058a9
mov eax, dword [ecx + 0x14]
nop
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x14], edx
jne 0x10105890
test eax, eax
mov edi, 0
je 0x1010594a
test dword [esp + 8], 0xfffffffd
je 0x101058d2
mov eax, dword [ecx + 8]
nop word cs:[eax + eax]
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 8], edx
jne 0x101058c0
xor esi, esi
test eax, eax
je 0x1010591d
mov al, 1
xor ebx, ebx
mov dword [esp + 8], eax
test edi, edi
je 0x101058e8
push dword [esp + 4]
call dword [edi + 4]
add esp, 4
mov eax, dword [esp + 8]
or al, bl
jne 0x10105900
push dword [esp + 0xc]
call dword [esi + 0xc]
add esp, 4
nop
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
cmp dword [ecx + 0x10], edx
jbe 0x10105982
lea eax, [edx*8]
inc edx
add eax, dword [ecx + 8]
jmp 0x10105790
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx + 0xc]
mov dword [ecx + 0x10], 0
lock and dword [ecx + 8], 0xfffffffd
test esi, esi
mov dword [esp + 0xc], eax
je 0x10105973
push eax
call dword [esi + 4]
add esp, 4
mov bl, 1
mov dword [esp + 8], 0
jmp 0x101058da
mov eax, dword [ecx + 0x18]
mov edi, dword [ecx + 0x1c]
mov dword [ecx + 0x1c], 0
mov dword [esp + 4], eax
lock and dword [ecx + 0x14], 0xfffffffd
test dword [esp + 8], 0xfffffffd
jne 0x101058b3
jmp 0x101058d2
mov al, 1
xor esi, esi
xor ebx, ebx
mov dword [esp + 8], eax
jmp 0x101058da
mov eax, dword [esp + 0x74]
mov byte [eax], 3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.100faaa0
xor al, 1
mov dword [esp + 0x18], eax
jmp 0x10104bdc
call fcn.100faaa0
xor al, 1
mov dword [esp + 0xc], eax
jmp 0x10105642
call fcn.100faaa0
test al, al
jne 0x1010569d
mov eax, dword [esp + 4]
mov byte [eax + 0x18], 1
jmp 0x1010569d
call fcn.100faaa0
mov ecx, dword [esp + 4]
test al, al
jne 0x10104f35
mov byte [ecx + 0x18], 1
jmp 0x10104f35
call fcn.100faaa0
mov ecx, dword [esp + 4]
test al, al
jne 0x10104f80
mov byte [ecx + 0x18], 1
jmp 0x10104f80
mov ecx, 0x103a44ec
mov edx, 8
push 0x10397224
jmp 0x10105a30
mov ecx, 0x103674fd
mov edx, 0x23
push 0x10367520
jmp 0x10105a30
mov ecx, 0x103a1b5f
mov edx, 0x23
push 0x103a1b84
call fcn.1000a9c0
add esp, 4
ud2
push 0x103a32b4
call fcn.10008590
add esp, 4
ud2
call fcn.100067e0
ud2
mov ecx, 0x103c9a4f
mov edx, 0x28
push 0x10397284
call fcn.10049100
add esp, 4
ud2
mov ecx, str.attempted_to_use_a_condition_variable_with_two_mutexes
mov edx, 0x36
push 0x103a13a4
call fcn.100f33b0
add esp, 4
ud2
mov eax, dword [esp + 0x28]
mov ecx, 0x103c93eb
mov edx, 0x2b
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov byte [esp + 0x34], al
push 0x10397234
jmp 0x10105b4a
test eax, eax
mov eax, dword [esp + 0x28]
movzx esi, word [esp + 0x50]
mov ch, byte [esp + 0x52]
movzx edx, word [esp + 0x60]
mov cl, byte [esp + 0x62]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov byte [esp + 0x34], al
mov word [esp + 0x35], si
mov byte [esp + 0x37], ch
sete byte [esp + 0x38]
mov word [esp + 0x39], dx
mov byte [esp + 0x3b], cl
mov ecx, 0x103c93eb
mov edx, 0x2b
push 0x10397254
push 0x10397244
jmp 0x10105b4f
mov ecx, edi
mov edx, 4
call fcn.100067d0
ud2
mov eax, dword [esp + 0x28]
mov ecx, 0x103c93eb
mov edx, 0x2b
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov byte [esp + 0x34], al
lea eax, [esp + 0x30]
push 0x10397214
push 0x10397204
jmp 0x10105b53
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], edx
mov ecx, 0x103c93eb
mov edx, 0x2b
mov byte [esp + 0x34], al
push 0x10397294
push 0x10397204
lea eax, [esp + 0x38]
push eax
call fcn.1000aa20
add esp, 0xc
ud2
lea edx, [esp + 0x7c]
lea ecx, [esp + 0x80]
lea eax, [esp + 0x78]
mov dword [esp + 0x30], 0x103a31d4
mov dword [esp + 0x34], 3
mov dword [esp + 0x38], 0
mov dword [esp + 0x50], ecx
mov dword [esp + 0x60], edx
lea ecx, [esp + 0x50]
lea edx, [esp + 0x60]
mov dword [esp + 0x54], 0x100b9ba0
mov dword [esp + 0x80], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x30]
mov edx, 0x10397264
mov dword [esp + 0x5c], 0x100b9ba0
mov dword [esp + 0x44], 2
call fcn.100f94f0
ud2
mov edx, edi
mov ecx, esi
push 0x1039762c
jmp 0x10105bde
mov ecx, esi
push 0x10397274
call fcn.10008b80
add esp, 4
ud2