Function at 0x10104890
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 0x10104d2a
mov ecx, dword [edx + 0x14]
mov ebx, eax
call fcn.100f4810
mov eax, dword [0x104dec50]
test eax, eax
jne 0x101056b1
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 0x10105825
mov dword [esp + 0x48], 0
jmp 0x1010493f
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 0x10104c3d
test bl, 1
je 0x10104920
mov eax, esi
or eax, dword [esp + 8]
jne 0x10104962
mov eax, edi
xor eax, 1
or eax, dword [esp + 0x10]
jne 0x10104962
cmp dword [esp + 0xc], 0
je 0x10104c80
test byte [esp + 0x48], 1
jne 0x10104985
mov ecx, ebx
add ecx, 2
jb 0x1010571f
mov eax, ebx
lock cmpxchg dword [edx + 0x10], ecx
mov ebx, eax
jne 0x1010493f
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 0x10104a28
mov esi, edx
call fcn.100fe060
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 0x101049cb
cmp eax, ecx
jne 0x10105789
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 0x10104adc
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 0x10104aa3
mov ebx, dword [esp + 0x24]
jmp 0x10104adc
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 0x10104a4c
cmp eax, ecx
jne 0x10105789
mov edi, dword [edx + 0x14]
mov esi, dword [edx + 0x1c]
mov ebx, edx
mov edx, dword [0x104decc0]
test edx, edx
jne 0x10104a7d
mov ecx, 0x10422624
mov edx, 0x19
call fcn.100f2ce0
test eax, eax
mov ecx, 0x100fa8b0
cmove edx, ecx
mov dword [0x104decc0], edx
push 0
push 0xffffffffffffffff
push edi
push esi
call edx
movzx eax, byte [ebx + 0x18]
test al, al
jne 0x101057a2
mov edx, ebx
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
mov ebx, dword [ebx + 0x10]
jmp 0x1010493f
imul eax, ebx, 0x68c26139
ror eax, 6
cmp eax, 0x10c6
jbe 0x10104ac1
add esi, 1
adc ecx, 0
setae al
movzx eax, al
jmp 0x10104ac6
mov eax, 1
mov ebx, dword [esp + 0x24]
cmp esi, 0xffffffff
sbb ecx, 0
mov ecx, 0xffffffff
cmovae esi, ecx
test eax, eax
jne 0x10104ae1
mov esi, 0xffffffff
mov edx, dword [0x104decc0]
test edx, edx
jne 0x10104b0a
mov ecx, 0x10422624
mov edx, 0x19
call fcn.100f2ce0
test eax, eax
mov ecx, 0x100fa8b0
cmove edx, ecx
mov dword [0x104decc0], 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 0x101057c6
call fcn.100fe060
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.100fe310
add esp, 4
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x20]
xor eax, 1
or eax, dword [esp + 0x34]
jne 0x10105741
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 0x10104be3
test bl, bl
jne 0x10104c1f
cmp eax, dword [esp + 0xc]
mov edx, eax
jb 0x10104be5
mov dword [esp + 0xc], 0
xor esi, esi
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
jmp 0x10104c31
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 0x10105730
cmp ecx, edx
jae 0x10104c17
sub esi, 1
sbb dword [esp + 8], 0
jb 0x10105730
add ecx, 0x3b9aca00
sub ecx, edx
mov dword [esp + 0xc], ecx
jmp 0x10104c31
mov dword [esp + 0xc], 0
xor esi, esi
mov dword [esp + 8], 0
mov edx, dword [esp + 4]
mov ebx, dword [edx + 0x10]
jmp 0x1010493f
cmp byte [esp + 0x18], 0
mov ebx, edi
mov edi, esi
jne 0x10104c55
mov eax, dword [0x104dec50]
test eax, eax
jne 0x101056eb
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov eax, dword [0x104dec60]
test eax, eax
je 0x10104ccf
cmp eax, 0x100f30b0
jne 0x10104cf8
mov eax, dword [esi]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10104d22
test byte [esp + 0x48], 1
je 0x10104c8c
lock sub dword [edx + 0x10], 2
cmp byte [esp + 0x18], 0
jne 0x10104ca0
mov eax, dword [0x104dec50]
test eax, eax
jne 0x10105705
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov eax, dword [0x104dec60]
test eax, eax
je 0x10105446
cmp eax, 0x100f30b0
jne 0x1010546f
mov eax, dword [esi]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10105499
mov ecx, 0x10421629
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f30b0
cmovne eax, edx
mov dword [0x104dec60], eax
cmp eax, 0x100f30b0
je 0x10104c6f
mov eax, dword [0x104dec78]
test eax, eax
jne 0x10104d1f
mov ecx, 0x10421918
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f4ef0
cmovne eax, edx
mov dword [0x104dec78], 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 0x10104d44
mov eax, esi
or eax, dword [esp + 8]
jne 0x10104d44
cmp dword [esp + 0xc], 0
je 0x10104d81
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 0x10104d7a
mov ecx, dword [esi + 0x20]
cmp eax, ecx
jne 0x10104d81
mov dword [edx + 0x10], 0
mov eax, ecx
lock cmpxchg dword [esi + 0x18], edx
cmp ecx, eax
jne 0x10104d81
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x1c], edx
jmp 0x10104da0
mov eax, dword [esi + 0x18]
cmp edx, eax
je 0x10104da0
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 0x10104db6
sub ecx, eax
mov dword [esp + 0xc], ecx
call fcn.100fe060
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], ecx
mov ebx, eax
mov eax, dword [0x104debf8]
cmp eax, 5
jb 0x10104dd4
mov eax, dword [0x104debfc]
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x10], 0
mov eax, dword [0x104debf8]
mov edx, dword [esp + 4]
cmp eax, 5
jb 0x10104df2
mov eax, dword [0x104debfc]
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 0x10104e7f
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 0x10104f98
call sub.KERNEL32.dll_GetLastError
cmp eax, 0x102
je 0x1010501a
mov ecx, eax
mov edi, eax
call fcn.100f4550
cmp al, 0xf
jne 0x1010530e
mov edi, dword [esp + 0x1c]
mov eax, edi
or eax, dword [esp + 0x10]
jne 0x10104db6
call fcn.100fe060
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.100fe310
add esp, 4
mov eax, dword [esp + 0x30]
xor eax, 1
or eax, dword [esp + 0x34]
jne 0x10105741
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 0x10104f63
test bl, bl
jne 0x10105029
cmp eax, dword [esp + 0xc]
jae 0x10105029
sub esi, edx
mov ecx, dword [esp + 0xc]
sbb dword [esp + 8], edi
mov edi, dword [esp + 0x1c]
jb 0x10105730
cmp ecx, eax
jae 0x10104db0
sub esi, 1
sbb dword [esp + 8], 0
jb 0x10105730
add ecx, 0x3b9aca00
jmp 0x10104db0
mov esi, dword [esp + 0x30]
cmp esi, edi
ja 0x101058ec
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 4]
cmp edx, esi
jb 0x101058f7
test esi, esi
je 0x1010501a
mov eax, dword [esp + 0x14]
shl esi, 4
mov ecx, dword [eax]
lea edi, [ecx + esi - 0x10]
add esi, ecx
mov eax, ecx
jmp 0x10104fdc
push eax
call ecx
add esp, 4
cmp esi, ebx
mov eax, ebx
je 0x1010501a
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x10104ffc
mov ecx, dword [ecx + 0x14]
mov edx, dword [0x104debf8]
lea ebx, [eax + 0x10]
cmp edx, 5
jb 0x10104fd0
mov edx, dword [0x104debfc]
jmp 0x10104fd0
mov ecx, dword [eax]
mov dword [esp + 0x7c], 0xffffffff
cmp ecx, 0xffffffff
mov dword [esp + 0x78], ecx
jne 0x1010587e
lea ecx, [eax + 0x10]
cmp edi, eax
jne 0x10104fc6
mov eax, dword [0x104debf8]
cmp eax, 5
jb 0x10105029
mov eax, dword [0x104debfc]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x10]
cmp eax, dword [ecx + 0xc]
jne 0x1010505c
mov eax, dword [esp + 4]
mov edx, dword [eax + 0xc]
mov ecx, dword [edx + 0x24]
cmp dword [edx + 0x1c], ecx
jne 0x1010505c
mov esi, dword [edx + 0x20]
mov eax, ecx
mov dword [esi + 0x10], 0
lock cmpxchg dword [edx + 0x18], esi
cmp ecx, eax
jne 0x1010505c
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 0x10105326
mov dword [esp + 0x10], 0
jmp 0x1010509c
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 0x10105326
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
add ecx, 8
call fcn.10048d60
test eax, eax
jne 0x1010531b
mov eax, dword [edx]
mov ebx, edx
nop word [eax + eax]
test eax, 0x20000
jne 0x10105180
mov esi, eax
shr esi, 4
and esi, eax
and esi, 0xf
test eax, 0x100
jne 0x101050f0
mov ecx, eax
and ecx, 0xfffeffff
test esi, esi
cmovne ecx, eax
jmp 0x10105109
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 0x10105128
lock cmpxchg dword [ebx], edx
jne 0x101050c0
test ecx, 0x10000
je 0x101051f0
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 0x101051b0
mov ecx, eax
lock cmpxchg dword [edx + 0x18], ebx
cmp ecx, eax
jne 0x10105160
mov dword [ecx + 0x10], ebx
jmp 0x101051f0
lock dec dword [ebx + 0x18]
jne 0x10105088
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x1010507a
mov dword [esp + 0x30], eax
lock dec dword [eax]
jne 0x1010507a
lea ecx, [esp + 0x30]
call fcn.10048c80
jmp 0x1010507a
cmp dword [edx + 0x20], ebx
je 0x101051f0
lock dec dword [ebx + 0x18]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 4]
jne 0x101051f8
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x101052df
mov dword [esp + 0x30], eax
lock dec dword [eax]
jne 0x101051e0
lea ecx, [esp + 0x30]
call fcn.10048c80
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 0x10105300
shr edi, 0xc
je 0x1010521d
cmp edi, 1
je 0x10105218
cmp edi, 2
jne 0x10105770
add ebx, 0xc
jmp 0x10105220
add ebx, 8
jmp 0x10105220
add ebx, 4
mov edi, dword [ebx]
mov ebx, dword [eax + 0x10]
cmp ebx, dword [eax + 0xc]
jne 0x10105296
mov eax, ebx
mov dword [esp + 8], edi
inc eax
je 0x10105769
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 0x10105769
test edi, edi
js 0x10105769
mov cl, al
test ebx, ebx
mov eax, ebx
je 0x10105275
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 8]
shl ecx, 2
test eax, eax
je 0x1010529b
shl ebx, 3
test ebx, ebx
je 0x1010529b
mov ebx, eax
call sub.KERNEL32.dll_GetProcessHeap
push edi
push ebx
push 0
push eax
call sub.KERNEL32.dll_HeapReAlloc
jmp 0x101052ad
mov ecx, dword [eax + 8]
jmp 0x101052cf
test edi, edi
je 0x101052af
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 0x10105817
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 0x10105303
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 0x10105200
nop dword [eax]
mov esi, dword [eax + 0x10]
cmp esi, dword [eax + 0xc]
jb 0x1010509c
jmp 0x10105326
mov edx, dword [esp + 4]
xor esi, esi
mov ebx, 1
jmp 0x1010532a
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 0x10105330
cmp eax, 1
je 0x10105434
mov ecx, dword [edx + 0x14]
call fcn.100f4810
mov eax, dword [0x104dec50]
test eax, eax
jne 0x101056c1
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 0x1010584f
mov dword [esp + 8], edx
mov ebx, dword [ecx + 0x1c]
mov eax, dword [0x104decc4]
test eax, eax
jne 0x101053a6
mov ecx, str.WakeConditionVariable
mov edx, 0x15
call fcn.100f2ce0
test eax, eax
mov eax, 0x100fb870
cmovne eax, edx
mov dword [0x104decc4], eax
push ebx
call eax
cmp byte [esp + 0xc], 0
jne 0x101053bd
mov eax, dword [0x104dec50]
test eax, eax
jne 0x101056d1
mov eax, dword [esp + 8]
mov ebx, dword [eax]
mov eax, dword [0x104dec60]
test eax, eax
je 0x101053e1
cmp eax, 0x100f30b0
jne 0x10105406
mov eax, dword [ebx]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10105430
mov ecx, 0x10421629
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f30b0
cmovne eax, edx
mov dword [0x104dec60], eax
cmp eax, 0x100f30b0
je 0x101053d3
mov eax, dword [0x104dec78]
test eax, eax
jne 0x1010542d
mov ecx, 0x10421918
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f4ef0
cmovne eax, edx
mov dword [0x104dec78], eax
push ebx
call eax
mov ebx, dword [esp + 0x10]
test ebx, ebx
je 0x10105499
mov eax, dword [esp + 0x74]
mov dword [eax], esi
mov dword [eax + 4], edi
jmp 0x101056a9
mov ecx, 0x10421629
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f30b0
cmovne eax, edx
mov dword [0x104dec60], eax
cmp eax, 0x100f30b0
je 0x10104cbe
mov eax, dword [0x104dec78]
test eax, eax
jne 0x10105496
mov ecx, 0x10421918
mov edx, 0x17
call fcn.100f2ce0
test eax, eax
mov eax, 0x100f4ef0
cmovne eax, edx
mov dword [0x104dec78], eax
push esi
call eax
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x10], 0
je 0x101056a2
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 0x10105500
mov eax, dword [ebx + 0x40]
mov ecx, dword [eax]
nop dword [eax + eax]
test ecx, 0x20000
jne 0x10105620
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 0x101054d0
jmp 0x10105620
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, edi
and eax, 0x3fff
lea ecx, [eax + 0x20]
shr ecx, 6
je 0x1010551d
bsr edx, ecx
xor edx, 0x1f
jmp 0x10105522
mov edx, 0x20
mov ecx, 0x20
sub ecx, edx
mov edx, dword [ebx + 0x30]
cmp ecx, edx
ja 0x10105620
jae 0x1010575a
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 0x10105620
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 0x10105620
mov esi, eax
and esi, 3
or esi, ebx
or esi, edi
lock cmpxchg dword [ecx + 4], esi
jne 0x10105580
xor esi, esi
test byte [esp + 8], 2
mov edi, 0
je 0x101055c9
mov eax, dword [ecx + 0x14]
nop
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 0x14], edx
jne 0x101055b0
test eax, eax
mov edi, 0
je 0x1010566a
test dword [esp + 8], 0xfffffffd
je 0x101055f2
mov eax, dword [ecx + 8]
nop word cs:[eax + eax]
mov edx, eax
or edx, 2
lock cmpxchg dword [ecx + 8], edx
jne 0x101055e0
xor esi, esi
test eax, eax
je 0x1010563d
mov al, 1
xor ebx, ebx
mov dword [esp + 8], eax
test edi, edi
je 0x10105608
push dword [esp + 4]
call dword [edi + 4]
add esp, 4
mov eax, dword [esp + 8]
or al, bl
jne 0x10105620
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 0x101056a2
lea eax, [edx*8]
inc edx
add eax, dword [ecx + 8]
jmp 0x101054b0
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 0x10105693
push eax
call dword [esi + 4]
add esp, 4
mov bl, 1
mov dword [esp + 8], 0
jmp 0x101055fa
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 0x101055d3
jmp 0x101055f2
mov al, 1
xor esi, esi
xor ebx, ebx
mov dword [esp + 8], eax
jmp 0x101055fa
mov eax, dword [esp + 0x74]
mov byte [eax], 3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.100fa7c0
xor al, 1
mov dword [esp + 0x18], eax
jmp 0x101048fc
call fcn.100fa7c0
xor al, 1
mov dword [esp + 0xc], eax
jmp 0x10105362
call fcn.100fa7c0
test al, al
jne 0x101053bd
mov eax, dword [esp + 4]
mov byte [eax + 0x18], 1
jmp 0x101053bd
call fcn.100fa7c0
mov ecx, dword [esp + 4]
test al, al
jne 0x10104c55
mov byte [ecx + 0x18], 1
jmp 0x10104c55
call fcn.100fa7c0
mov ecx, dword [esp + 4]
test al, al
jne 0x10104ca0
mov byte [ecx + 0x18], 1
jmp 0x10104ca0
mov ecx, 0x1042575c
mov edx, 8
push 0x10418494
jmp 0x10105750
mov ecx, 0x103e876d
mov edx, 0x23
push 0x103e8790
jmp 0x10105750
mov ecx, 0x10422dcf
mov edx, 0x23
push 0x10422df4
call fcn.1000a730
add esp, 4
ud2
push 0x10424524
call fcn.10008300
add esp, 4
ud2
call fcn.10006550
ud2
mov ecx, 0x1044acbf
mov edx, 0x28
push 0x104184f4
call fcn.10048e50
add esp, 4
ud2
mov ecx, str.attempted_to_use_a_condition_variable_with_two_mutexes
mov edx, 0x36
push 0x10422614
call fcn.100f30d0
add esp, 4
ud2
mov eax, dword [esp + 0x28]
mov ecx, 0x1044a65b
mov edx, 0x2b
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov byte [esp + 0x34], al
push 0x104184a4
jmp 0x1010586a
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, 0x1044a65b
mov edx, 0x2b
push 0x104184c4
push 0x104184b4
jmp 0x1010586f
mov ecx, edi
mov edx, 4
call fcn.10006540
ud2
mov eax, dword [esp + 0x28]
mov ecx, 0x1044a65b
mov edx, 0x2b
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov byte [esp + 0x34], al
lea eax, [esp + 0x30]
push 0x10418484
push 0x10418474
jmp 0x10105873
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], edx
mov ecx, 0x1044a65b
mov edx, 0x2b
mov byte [esp + 0x34], al
push 0x10418504
push 0x10418474
lea eax, [esp + 0x38]
push eax
call fcn.1000a790
add esp, 0xc
ud2
lea edx, [esp + 0x7c]
lea ecx, [esp + 0x80]
lea eax, [esp + 0x78]
mov dword [esp + 0x30], 0x10424444
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], 0x100b98b0
mov dword [esp + 0x80], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x30]
mov edx, 0x104184d4
mov dword [esp + 0x5c], 0x100b98b0
mov dword [esp + 0x44], 2
call fcn.100f9210
ud2
mov edx, edi
mov ecx, esi
push 0x1041889c
jmp 0x101058fe
mov ecx, esi
push 0x104184e4
call fcn.100088f0
add esp, 4
ud2