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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb8
mov eax, dword [ecx]
mov edi, dword [ecx + 4]
mov esi, dword [ecx + 8]
lea ebx, [eax + 8]
mov dword [esp + 0x54], eax
push ebx
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x4959da
mov dword [esp + 0x68], 0
mov ecx, dword [esp + 0x54]
movzx eax, byte [ecx + 0xc]
test al, al
jne 0x4959f5
mov dword [esp + 0xb0], ebx
lea ebx, [ecx + 0x160]
dec dword [ecx + 0x1a8]
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], esi
mov dword [esp + 0x70], ebx
mov eax, dword [0x94bccc]
test eax, eax
je 0x4953dc
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], esi
cmp dword [ebx + 0x38], edi
jbe 0x495b96
mov eax, dword [ebx + 0x34]
test eax, eax
je 0x495b96
imul ecx, edi, 0xf0
mov edx, dword [eax + ecx]
xor edx, 3
or edx, dword [eax + ecx + 4]
je 0x495b96
add eax, ecx
cmp dword [eax + 0xcc], esi
jne 0x495b96
mov ecx, dword [eax + 0xd0]
test ecx, ecx
je 0x495bf0
dec ecx
mov dword [eax + 0xd0], ecx
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
cmp dword [eax + 0x38], edx
jbe 0x495b50
mov eax, dword [eax + 0x34]
test eax, eax
je 0x495b50
imul esi, edx, 0xf0
mov edi, dword [eax + esi]
xor edi, 3
or edi, dword [eax + esi + 4]
je 0x495b50
add eax, esi
cmp dword [eax + 0xcc], ecx
jne 0x495b50
cmp dword [eax + 0xd0], 0
jne 0x49528f
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov edx, dword [eax]
xor edx, 3
or edx, dword [eax + 4]
je 0x495b50
cmp dword [eax + 0xcc], ecx
jne 0x495b50
cmp byte [eax + 0x20], 5
ja 0x49528f
cmp dword [eax + 0x64], 0
jne 0x49528f
cmp dword [eax + 0xd8], 0
jne 0x49528f
mov edx, dword [esp + 0x54]
mov eax, dword [edx + 0xe8]
mov ecx, dword [edx + 0xec]
mov dword [edx + 0xe8], 0
test eax, eax
je 0x49528f
push ecx
call dword [eax + 4]
add esp, 4
movsd xmm0, qword [esp + 0x70]
mov edx, dword [esp + 0x78]
movsd qword [esp + 0x98], xmm0
mov dword [esp + 0xa0], edx
mov ebx, dword [esp + 0x9c]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 4], eax
cmp dword [eax + 0x38], ebx
jbe 0x495b50
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x34]
test eax, eax
je 0x495b50
imul edi, ebx, 0xf0
mov ecx, dword [eax + edi]
xor ecx, 3
or ecx, dword [eax + edi + 4]
je 0x495b50
add eax, edi
cmp dword [eax + 0xcc], edx
jne 0x495b50
mov ecx, dword [esp + 0x54]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x50], edx
lea esi, [ecx + 0x10]
lea edx, [ecx + 0x40]
lea ecx, [esp + 0x98]
mov dword [esp + 0xac], eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x88], esi
push esi
mov esi, dword [esp + 0x54]
call fcn.00495c50
add esp, 4
mov eax, dword [esp + 4]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
mov ecx, dword [eax + 0x38]
cmp ecx, ebx
jbe 0x495b50
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x34]
test eax, eax
je 0x495b50
mov edx, dword [eax + edi]
xor edx, 3
or edx, dword [eax + edi + 4]
je 0x495b50
lea edx, [eax + edi]
cmp dword [edx + 0xcc], esi
jne 0x495b50
cmp dword [edx + 0xd0], 0
je 0x495574
xor eax, eax
cmp dword [esp + 0xac], 0x3b9aca00
mov ecx, dword [esp + 0x88]
lea edx, [esp + 0x98]
setne al
push eax
call fcn.00482f50
add esp, 4
cmp byte [esp + 0x68], 0
mov ebx, dword [esp + 0xb0]
jne 0x4953cd
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x495aee
push ebx
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movzx eax, byte [0x94a554]
test al, al
je 0x495189
movzx eax, al
cmp eax, 1
je 0x495412
cmp eax, 2
je 0x495462
mov ecx, 0x94a54c
call fcn.007d3740
test al, al
je 0x495189
movzx eax, al
cmp eax, 2
je 0x495462
mov eax, dword [0x94a54c]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x495189
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x495452
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
dec ecx
and ecx, 0xfffffff8
lea edx, [ecx + edx + 8]
mov ecx, dword [esp + 4]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x495189
mov eax, dword [0x94a54c]
mov edx, dword [eax + 0x20]
test edx, edx
je 0x495c0d
mov esi, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x38], 0x82849c
mov dword [esp + 0x3c], 1
mov dword [esp + 0x48], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], edx
lea edx, [esp + 0x70]
movlps qword [esp + 0x2c], xmm0
mov dword [esp + 0x34], 0
mov dword [esp + 0x8c], edx
lea edx, [esp + 0x8c]
mov dword [esp + 0x90], 0x492f60
mov dword [esp + 0x40], edx
lea edx, [esp + 0x24]
mov dword [esp + 0x44], 1
mov dword [esp + 0x7c], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x80], edx
lea edx, [esp + 0x7c]
mov dword [esp + 0x84], 0x81c698
mov dword [esp + 0x58], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x5c], 1
mov dword [esp + 0x60], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x495563
cmp dword [0x94bcc0], 0
mov edi, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x49554b
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edi, [eax + edi + 8]
lea ebx, [esp + 8]
push ebx
push edi
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x495563
push ebx
push edi
call dword [esi + 0x2c]
add esp, 8
mov ebx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
jmp 0x495189
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
mov esi, dword [edx]
xor esi, 3
or esi, dword [edx + 4]
mov esi, dword [esp + 0x50]
je 0x495b50
cmp dword [edx + 0xcc], esi
jne 0x495b50
cmp dword [edx + 0xdc], 0
je 0x4956b8
mov eax, dword [0x94bccc]
test eax, eax
je 0x4957c6
mov eax, dword [esp + 4]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
cmp dword [eax + 0x38], ebx
jbe 0x495b50
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x34]
test eax, eax
je 0x495b50
mov ecx, dword [eax + edi]
xor ecx, 3
or ecx, dword [eax + edi + 4]
je 0x495b50
add eax, edi
cmp dword [eax + 0xcc], esi
jne 0x495b50
mov ecx, dword [esp + 0x54]
mov edx, dword [eax + 0xdc]
lea esi, [ecx + 0xe8]
mov ecx, dword [esp + 0x6c]
push esi
mov esi, dword [esp + 0x54]
call fcn.0048f8c0
add esp, 4
mov eax, dword [esp + 4]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
cmp dword [eax + 0x38], ebx
jbe 0x495b96
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x34]
test eax, eax
je 0x495b96
mov ecx, dword [eax + edi]
xor ecx, 3
or ecx, dword [eax + edi + 4]
je 0x495b96
add eax, edi
cmp dword [eax + 0xcc], esi
jne 0x495b96
mov ecx, dword [esp + 4]
mov dword [eax + 0xdc], 0
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
cmp dword [ecx + 0x38], ebx
jbe 0x495b96
mov eax, dword [esp + 4]
mov edx, dword [eax + 0x34]
test edx, edx
je 0x495b96
mov eax, dword [edx + edi]
xor eax, 3
or eax, dword [edx + edi + 4]
je 0x495b96
add edx, edi
cmp dword [edx + 0xcc], esi
jne 0x495b96
mov ecx, dword [esp + 0x6c]
call fcn.00495df0
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x34]
mov ecx, dword [ecx + 0x38]
cmp ecx, ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
jbe 0x495b96
test eax, eax
je 0x495b96
mov ecx, dword [eax + edi]
xor ecx, 3
or ecx, dword [eax + edi + 4]
je 0x495b96
add eax, edi
cmp dword [eax + 0xcc], esi
jne 0x495b96
movsd xmm0, qword [eax + 0xb8]
movsd xmm1, qword [eax + 0xc0]
mov edi, dword [esp + 0x88]
lea esi, [esp + 0x24]
movsd qword [esp + 0x38], xmm0
movsd qword [esp + 0x40], xmm1
mov ecx, dword [eax + 0xc8]
mov dword [esp + 0x48], ecx
mov dword [eax + 0xb8], 0
nop dword [eax]
mov ecx, esi
lea edx, [esp + 0x38]
push dword [esp + 4]
call fcn.00491400
add esp, 4
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x495388
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], eax
cmp dword [ecx + 0x38], edx
jbe 0x495b1f
mov ecx, dword [ecx + 0x34]
test ecx, ecx
je 0x495b1f
imul edx, edx, 0xf0
mov ebx, dword [ecx + edx]
xor ebx, 3
or ebx, dword [ecx + edx + 4]
je 0x495b1f
add ecx, edx
cmp dword [ecx + 0xcc], eax
jne 0x495b1f
xor ebx, ebx
cmp dword [ecx + 0x18], 0x3b9aca00
mov edx, dword [esp + 0x6c]
mov ecx, esi
setne bl
push edi
call fcn.00495c50
add esp, 4
mov ecx, edi
mov edx, esi
push ebx
call fcn.00482f50
add esp, 4
jmp 0x495730
movzx eax, byte [0x94a35c]
test al, al
je 0x4955b4
movzx eax, al
cmp eax, 1
je 0x4957fc
cmp eax, 2
je 0x495844
mov ecx, 0x94a354
call fcn.007d3740
test al, al
je 0x4955b4
movzx eax, al
cmp eax, 2
je 0x495844
mov eax, dword [0x94a354]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x4955b4
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x495834
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
mov esi, dword [esp + 0x50]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x4955b4
mov eax, dword [0x94a354]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x495c21
mov edx, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 4]
movlps qword [esp + 0x2c], xmm0
mov dword [esp + 0x34], 0
cmp dword [ecx + 0x38], ebx
jbe 0x495c04
mov edx, dword [esp + 4]
mov edx, dword [edx + 0x34]
test edx, edx
je 0x495c04
mov esi, dword [edx + edi]
mov ecx, dword [esp + 0x50]
xor esi, 3
or esi, dword [edx + edi + 4]
je 0x495c04
add edx, edi
cmp dword [edx + 0xcc], ecx
jne 0x495c04
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ecx
mov esi, dword [edx]
xor esi, 3
or esi, dword [edx + 4]
je 0x495c04
lea esi, [edx + 0xcc]
cmp dword [esi], ecx
jne 0x495c04
add edx, 0xdc
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], 0x47c5e0
mov dword [esp + 0x38], 0x827410
mov dword [esp + 0x3c], 2
mov dword [esp + 0x48], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x60], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x64], fcn.00412930
mov dword [esp + 0x40], edx
lea edx, [esp + 0x24]
mov dword [esp + 0x44], 2
mov dword [esp + 0x8c], edx
lea edx, [esp + 0x38]
mov dword [esp + 0x90], edx
lea edx, [esp + 0x8c]
mov dword [esp + 0x94], 0x81c698
mov dword [esp + 0x7c], edx
lea edx, [esp + 0x7c]
mov dword [esp + 0x80], 1
mov dword [esp + 0x84], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x4959d1
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x4959a8
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edx, [eax + edx + 8]
lea eax, [esp + 8]
mov dword [esp + 0xa8], edx
push eax
push edx
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x4959d1
lea eax, [esp + 8]
push eax
push dword [esp + 0xac]
call dword [esi + 0x2c]
add esp, 8
mov esi, dword [esp + 0x50]
jmp 0x4955b4
call fcn.007d1b30
xor al, 1
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x54]
movzx eax, byte [ecx + 0xc]
test al, al
je 0x49515d
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
je 0x495bdc
call fcn.007d1b30
test al, al
jne 0x495bdc
mov eax, dword [0x94bccc]
test eax, eax
je 0x495a2b
cmp byte [esp + 0x68], 0
jne 0x4953cd
jmp 0x4953bd
movzx eax, byte [0x94a548]
test al, al
je 0x495a1b
movzx ecx, al
cmp ecx, 1
je 0x495a49
cmp ecx, 2
jne 0x495b08
mov al, 2
mov ecx, dword [0x94a540]
movzx edx, al
call fcn.007580e0
test al, al
je 0x495a1b
mov ecx, dword [0x94a540]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x495c35
mov esi, dword [ecx + 0x1c]
movsd xmm0, qword [ecx + 0x24]
lea eax, [ecx + 0x1c]
mov dword [esp + 8], 0x8284e4
mov dword [esp + 0xc], 1
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], 0x93d1f8
mov dword [esp + 0x14], 0
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edx
lea edx, [esp + 0x38]
movlps qword [esp + 0x40], xmm0
mov dword [esp + 0x48], 0
mov dword [esp + 0x58], edx
lea edx, [esp + 8]
mov dword [esp + 0x5c], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x60], 0x81c698
mov dword [esp + 0x24], edx
lea edx, [esp + 0x24]
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], eax
call fcn.007587f0
jmp 0x495a1b
call fcn.007d1b30
test al, al
jne 0x4953cd
mov eax, dword [esp + 0x54]
mov byte [eax + 0xc], 1
jmp 0x4953cd
mov ecx, 0x94a540
call fcn.007d3740
test al, al
jne 0x495a49
jmp 0x495a1b
lea eax, [esp + 0x80]
mov dword [esp + 8], 0x828150
mov dword [esp + 0xc], 1
mov dword [esp + 0x18], 0
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], 0x47c5e0
lea eax, [esp + 0x58]
jmp 0x495b7c
lea eax, [esp + 0x28]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
mov dword [esp + 8], 0x828150
mov dword [esp + 0xc], 1
mov dword [esp + 0x3c], 0x47c5e0
mov dword [esp + 0x18], 0
lea ecx, [esp + 8]
mov edx, 0x828158
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 1
call fcn.007c1b50
lea ecx, [esp + 0x38]
lea eax, [esp + 0x28]
mov dword [esp + 8], 0x828150
mov dword [esp + 0xc], 1
mov dword [esp + 0x18], 0
mov edx, 0x828168
mov dword [esp + 0x10], ecx
lea ecx, [esp + 8]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], 0x47c5e0
mov dword [esp + 0x14], 1
call fcn.007c1b50
mov ecx, str.StreamRef::drop__mutex_poisoned
mov edx, 0x1f
push 0x8284c4
call fcn.007c2530
mov ecx, 0x8282a8
mov edx, 0x24
push 0x8282cc
call fcn.007c1ca0
lea eax, [esp + 0x5c]
jmp 0x495b54
mov ecx, 0x8a6758
mov edx, 0x22
push 0x828474
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8273d8
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8284d4
call fcn.007c2000
int3