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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov eax, dword [ebp + 8]
mov edi, ecx
test eax, eax
mov dword [esp + 0x5c], eax
js 0x49b9c3
mov esi, dword [edx]
mov ebx, edx
lea eax, [esi + 8]
mov dword [esp + 0x70], eax
push eax
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x49bb74
xor edx, edx
movzx eax, byte [esi + 0xc]
test al, al
jne 0x49bb8a
mov eax, dword [ebx + 4]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x6c], eax
mov eax, dword [0x94bccc]
test eax, eax
je 0x49b9cd
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
cmp dword [esi + 0x198], ecx
jbe 0x49bfc3
mov eax, dword [esi + 0x194]
test eax, eax
je 0x49bfc3
imul ebx, dword [esp + 0x24], 0xf0
mov ecx, dword [eax + ebx]
xor ecx, 3
or ecx, dword [eax + ebx + 4]
je 0x49bfc3
mov ecx, dword [esp + 0x1c]
add eax, ebx
cmp dword [eax + 0xcc], ecx
jne 0x49bfc3
mov eax, dword [eax + 0xdc]
mov byte [esp + 0x23], 4
cmp dword [esp + 0x5c], eax
mov dword [esp + 0x74], eax
ja 0x49bd77
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x5c]
lea eax, [esi + 0xe8]
lea ecx, [esi + 0x40]
push eax
call fcn.0048f8c0
add esp, 4
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
cmp dword [esi + 0x198], edx
jbe 0x49bfe9
mov ecx, dword [esi + 0x194]
test ecx, ecx
je 0x49bfe9
mov edx, dword [ecx + ebx]
xor edx, 3
or edx, dword [ecx + ebx + 4]
mov edx, dword [esp + 0x1c]
je 0x49bfe9
add ecx, ebx
cmp dword [ecx + 0xcc], edx
jne 0x49bfe9
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x24]
sub dword [ecx + 0xdc], eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edx
mov ecx, dword [esi + 0x198]
cmp ecx, edi
jbe 0x49bfe9
mov eax, dword [esi + 0x194]
test eax, eax
je 0x49bfe9
mov edx, dword [eax + ebx]
xor edx, 3
or edx, dword [eax + ebx + 4]
je 0x49bfe9
mov edi, dword [esp + 0x1c]
lea edx, [eax + ebx]
cmp dword [edx + 0xcc], edi
jne 0x49bfe9
mov edi, dword [edx + 0x4c]
add edi, dword [esp + 0x6c]
jo 0x49b826
mov dword [edx + 0x4c], edi
mov eax, dword [esi + 0x194]
mov ecx, dword [esi + 0x198]
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], edi
cmp ecx, edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x2c], edx
jbe 0x49bfc3
test eax, eax
je 0x49bfc3
mov ecx, dword [eax + ebx]
xor ecx, 3
or ecx, dword [eax + ebx + 4]
je 0x49bfc3
add eax, ebx
cmp dword [eax + 0xcc], edx
jne 0x49bfc3
mov ecx, dword [eax + 0x48]
mov eax, dword [eax + 0x4c]
mov byte [esp + 0x23], 0xc
sub eax, ecx
jle 0x49bd73
mov edx, ecx
shr edx, 0x1f
add edx, ecx
sar edx, 1
cmp eax, edx
jl 0x49bd73
mov eax, dword [0x94bccc]
test eax, eax
je 0x49bbb1
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
cmp dword [esi + 0x198], eax
jbe 0x49bfc3
mov eax, dword [esi + 0x194]
test eax, eax
je 0x49bfc3
mov ecx, dword [eax + ebx]
xor ecx, 3
or ecx, dword [eax + ebx + 4]
je 0x49bfc3
add eax, ebx
cmp dword [eax + 0xcc], edx
jne 0x49bfc3
cmp byte [eax + 0xe7], 0
je 0x49bc7d
mov eax, dword [0x94bccc]
test eax, eax
jne 0x49bd52
movzx eax, byte [0x94acf0]
test al, al
je 0x49bd52
movzx ecx, al
cmp ecx, 1
je 0x49b91d
cmp ecx, 2
jne 0x49bf7a
mov al, 2
mov ecx, dword [0x94ace8]
movzx edx, al
call fcn.007580e0
test al, al
je 0x49bd52
mov ecx, dword [0x94ace8]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x49c054
mov edi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp], str.____already_queued
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x93d1f8
mov dword [esp + 0xc], 0
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edx
lea edx, [esp + 0x40]
movlps qword [esp + 0x48], xmm0
mov dword [esp + 0x50], 0
mov dword [esp + 0x60], edx
mov edx, esp
mov dword [esp + 0x64], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x68], 0x81c698
mov dword [esp + 0x28], edx
lea edx, [esp + 0x28]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], eax
call fcn.007587f0
jmp 0x49bd2d
mov word [edi], 0x403
jmp 0x49bda9
movzx eax, byte [0x94a350]
test al, al
je 0x49b6e2
movzx eax, al
cmp eax, 1
je 0x49ba07
cmp eax, 2
je 0x49ba57
mov ecx, 0x94a348
mov ebx, edx
call fcn.007d3740
test al, al
je 0x49bf5c
movzx eax, al
mov edx, ebx
cmp eax, 2
je 0x49ba57
mov eax, dword [0x94a348]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x49b6e2
mov ebx, edx
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x49ba45
mov dword [esp + 0x3c], edi
mov edi, dword [ecx + 8]
dec edi
and edi, 0xfffffff8
lea edx, [edi + edx + 8]
mov edi, dword [esp + 0x3c]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
mov edx, ebx
je 0x49b6e2
mov eax, dword [0x94a348]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0x20]
test edx, edx
je 0x49c02c
mov ebx, edi
mov edi, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x40], 0x8273d0
mov dword [esp + 0x44], 1
mov dword [esp + 0x50], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edx
lea edx, [esp + 0x6c]
movlps qword [esp + 0x30], xmm0
mov dword [esp + 0x38], 0
mov edi, ebx
mov dword [esp + 0x78], edx
lea edx, [esp + 0x78]
mov dword [esp + 0x7c], 0x4631b0
mov dword [esp + 0x48], edx
lea edx, [esp + 0x28]
mov dword [esp + 0x4c], 1
mov dword [esp + 0x80], edx
lea edx, [esp + 0x40]
mov dword [esp + 0x84], edx
lea edx, [esp + 0x80]
mov dword [esp + 0x88], 0x81c698
mov dword [esp + 0x60], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x64], 1
mov dword [esp + 0x68], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0
mov dword [esp], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x49bb63
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ebx, dword [0x94bcc8]
je 0x49bb44
mov eax, dword [ebx + 8]
dec eax
and eax, 0xfffffff8
lea edx, [eax + edx + 8]
mov eax, esp
mov dword [esp + 0x5c], edx
push eax
push edx
call dword [ebx + 0x28]
add esp, 8
test al, al
je 0x49bb63
mov eax, esp
push eax
push dword [esp + 0x60]
call dword [ebx + 0x2c]
add esp, 8
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
jmp 0x49b6e2
call fcn.007d1b30
mov edx, eax
xor dl, 1
movzx eax, byte [esi + 0xc]
test al, al
je 0x49b6c0
mov eax, dword [esp + 0x70]
mov ecx, 0x93b384
mov dword [esp], eax
mov byte [esp + 4], dl
mov eax, esp
mov edx, 0x2b
push 0x828418
push 0x81c288
push eax
call fcn.007c1f60
movzx eax, byte [0x94accc]
test al, al
je 0x49b899
movzx ecx, al
cmp ecx, 1
je 0x49bbd3
cmp ecx, 2
jne 0x49bf63
mov al, 2
mov ecx, dword [0x94acc4]
movzx edx, al
call fcn.007580e0
test al, al
je 0x49b899
mov ecx, dword [0x94acc4]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x49c040
mov edi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp], str.Queue::push_back_
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x93d1f8
mov dword [esp + 0xc], 0
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edx
lea edx, [esp + 0x40]
movlps qword [esp + 0x48], xmm0
mov dword [esp + 0x50], 0
mov dword [esp + 0x60], edx
mov edx, esp
mov dword [esp + 0x64], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x68], 0x81c698
mov dword [esp + 0x28], edx
lea edx, [esp + 0x28]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], eax
call fcn.007587f0
mov edi, dword [esp + 0x3c]
jmp 0x49b899
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
mov ecx, dword [eax]
xor ecx, 3
or ecx, dword [eax + 4]
je 0x49bfe9
cmp dword [eax + 0xcc], edx
jne 0x49bfe9
mov byte [eax + 0xe7], 1
cmp dword [esi + 0x68], 0
mov eax, dword [0x94bccc]
je 0x49bd33
test eax, eax
je 0x49bdc0
mov edx, dword [esi + 0x74]
mov eax, dword [esi + 0x78]
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
cmp dword [esi + 0x198], edx
jbe 0x49bfe9
mov ecx, dword [esi + 0x194]
test ecx, ecx
je 0x49bfe9
imul edx, edx, 0xf0
mov edi, dword [ecx + edx]
xor edi, 3
or edi, dword [ecx + edx + 4]
je 0x49bfe9
add ecx, edx
cmp dword [ecx + 0xcc], eax
jne 0x49bfe9
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x94], 1
mov dword [ecx + 0x98], edx
mov dword [ecx + 0x9c], eax
mov dword [esi + 0x74], edx
mov dword [esi + 0x78], eax
mov edi, dword [esp + 0x3c]
jmp 0x49bd52
test eax, eax
je 0x49be88
mov eax, dword [esp + 0x24]
mov dword [esi + 0x68], 1
mov dword [esi + 0x6c], eax
mov dword [esi + 0x70], edx
mov dword [esi + 0x74], eax
mov dword [esi + 0x78], edx
mov eax, dword [esi + 0xe8]
mov ecx, dword [esi + 0xec]
mov dword [esi + 0xe8], 0
test eax, eax
je 0x49bd73
push ecx
call dword [eax + 4]
add esp, 4
mov edx, dword [esp + 0x58]
test dl, dl
jne 0x49bd87
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x49bdb1
push dword [esp + 0x70]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 0x74]
cmp dword [esp + 0x5c], eax
mov al, 5
jbe 0x49bda7
movzx eax, byte [esp + 0x23]
mov byte [edi + 1], al
mov al, 3
mov byte [edi], al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.007d1b30
test al, al
jne 0x49bd87
mov byte [esi + 0xc], 1
jmp 0x49bd87
movzx eax, byte [0x94ace4]
test al, al
je 0x49bcbd
movzx ecx, al
cmp ecx, 1
je 0x49bde2
cmp ecx, 2
jne 0x49bf91
mov al, 2
mov ecx, dword [0x94acdc]
movzx edx, al
call fcn.007580e0
test al, al
je 0x49bcbd
mov ecx, dword [0x94acdc]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x49c068
mov edi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp], str.____existing_entries
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x93d1f8
mov dword [esp + 0xc], 0
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edx
lea edx, [esp + 0x40]
movlps qword [esp + 0x48], xmm0
mov dword [esp + 0x50], 0
mov dword [esp + 0x60], edx
mov edx, esp
mov dword [esp + 0x64], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x68], 0x81c698
mov dword [esp + 0x28], edx
lea edx, [esp + 0x28]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], eax
call fcn.007587f0
jmp 0x49bcbd
movzx eax, byte [0x94acd8]
test al, al
je 0x49bd3b
movzx ecx, al
cmp ecx, 1
je 0x49beaa
cmp ecx, 2
jne 0x49bfa8
mov al, 2
mov ecx, dword [0x94acd0]
movzx edx, al
call fcn.007580e0
mov edx, dword [esp + 0x1c]
test al, al
je 0x49bd3b
mov ecx, dword [0x94acd0]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x49c07c
mov edi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp], str.____first_entry
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x93d1f8
mov dword [esp + 0xc], 0
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edx
lea edx, [esp + 0x40]
movlps qword [esp + 0x48], xmm0
mov dword [esp + 0x50], 0
mov dword [esp + 0x60], edx
mov edx, esp
mov dword [esp + 0x64], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x68], 0x81c698
mov dword [esp + 0x28], edx
lea edx, [esp + 0x28]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], eax
call fcn.007587f0
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
jmp 0x49bd3b
mov edx, ebx
jmp 0x49b6e2
mov ecx, 0x94acc4
call fcn.007d3740
test al, al
jne 0x49bbd3
jmp 0x49b899
mov ecx, 0x94ace8
call fcn.007d3740
test al, al
jne 0x49b91d
jmp 0x49bd52
mov ecx, 0x94acdc
call fcn.007d3740
test al, al
jne 0x49bde2
jmp 0x49bcbd
mov ecx, 0x94acd0
call fcn.007d3740
mov edx, dword [esp + 0x1c]
test al, al
jne 0x49beaa
jmp 0x49bd3b
lea ecx, [esp + 0x40]
lea eax, [esp + 0x2c]
mov dword [esp], 0x828150
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov edx, 0x828158
jmp 0x49c00d
lea ecx, [esp + 0x40]
lea eax, [esp + 0x2c]
mov dword [esp], 0x828150
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov edx, 0x828168
mov dword [esp + 8], ecx
mov ecx, esp
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], 0x47c5e0
mov dword [esp + 0xc], 1
call fcn.007c1b50
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8273a8
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8aac2c
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8aac74
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8aac64
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8aac54
call fcn.007c2000