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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc0
mov edi, edx
mov esi, ecx
lea ebx, [edx + 8]
push ebx
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x65c3dd
mov dword [esp + 0x94], 0
movzx eax, byte [edi + 0xc]
test al, al
jne 0x65c3f7
mov eax, dword [ebp + 8]
cmp dword [eax + 0x30], 0
je 0x65b9a8
cmp dword [eax + 0x34], 0
setne byte [edi + 0xc9]
cmp dword [eax + 0x18], 0
je 0x65bb4a
mov dword [esp + 0x90], esi
mov esi, dword [eax + 0x1c]
mov eax, edi
mov dword [esp + 8], eax
mov dword [esp + 0xac], esi
mov edi, dword [edi + 0xb8]
mov dword [esp + 0xb0], edi
mov dword [eax + 0xb8], esi
mov eax, dword [0x94bccc]
test eax, eax
je 0x65bb60
mov eax, esi
xor edx, edx
mov ecx, 0xff
sub eax, edi
setne dl
cmovae ecx, edx
test cl, cl
je 0x65c044
movzx ecx, cl
mov dword [esp + 0x28], ebx
cmp ecx, 1
jne 0x65bd1c
mov dword [esp + 0x3c], eax
mov eax, dword [0x94bccc]
test eax, eax
je 0x65c0be
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x188]
test ecx, ecx
mov dword [esp + 0x34], ecx
je 0x65c040
mov ecx, dword [eax + 0x174]
test ecx, ecx
mov dword [esp + 0x7c], ecx
je 0x65c462
mov edx, dword [eax + 0x194]
mov ecx, dword [eax + 0x178]
test edx, edx
mov dword [esp + 0x30], ecx
je 0x65c44e
mov eax, dword [eax + 0x198]
mov ecx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
xor esi, esi
mov dword [esp + 0x2c], edx
mov dword [esp + 4], eax
mov dword [esp + 0x38], ecx
nop
cmp dword [esp + 0x30], esi
mov dword [esp + 0xc], ebx
jbe 0x65c462
mov ecx, dword [esp + 0x7c]
lea eax, [esi + esi*2]
mov dword [esp + 0x80], esi
mov ebx, dword [ecx + eax*4 + 8]
mov esi, dword [ecx + eax*4 + 4]
cmp dword [esp + 4], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], esi
jbe 0x65c492
imul edi, ebx, 0xf0
mov eax, dword [edx + edi]
xor eax, 3
or eax, dword [edx + edi + 4]
je 0x65c492
add edi, edx
cmp dword [edi + 0xcc], esi
jne 0x65c492
mov edx, dword [esp + 0x38]
lea ecx, [edi + 0x48]
call fcn.004848c0
test eax, eax
jne 0x65c05e
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], esi
mov eax, dword [edi]
xor eax, 3
or eax, dword [edi + 4]
je 0x65c492
cmp dword [edi + 0xcc], esi
jne 0x65c492
mov eax, dword [edi + 0x4c]
add eax, dword [esp + 0x38]
jo 0x65c05e
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x2c]
mov dword [edi + 0x4c], eax
cmp ecx, ebx
sbb esi, 0xffffffff
cmp ecx, ebx
sbb ebx, 0
cmp esi, ebx
jb 0x65ba80
jmp 0x65c040
mov byte [esi], 3
cmp byte [esp + 0x94], 0
jne 0x65c0af
jmp 0x65c09f
movzx eax, byte [0x94a374]
test al, al
je 0x65b9e9
movzx eax, al
cmp eax, 1
je 0x65bb96
cmp eax, 2
je 0x65bbe2
mov ecx, 0x94a36c
call fcn.007d3740
test al, al
je 0x65b9e9
movzx eax, al
cmp eax, 2
je 0x65bbe2
mov eax, dword [0x94a36c]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x65b9e9
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x65bbd2
mov dword [esp + 0x28], ebx
mov ebx, dword [ecx + 8]
dec ebx
and ebx, 0xfffffff8
lea edx, [ebx + edx + 8]
mov ebx, dword [esp + 0x28]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x65b9e9
mov eax, dword [0x94a36c]
mov edx, dword [eax + 0x20]
test edx, edx
je 0x65c46c
mov esi, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x40], 0x8274a8
mov dword [esp + 0x44], 2
mov dword [esp + 0x50], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], edx
lea edx, [esp + 0xac]
movlps qword [esp + 0x60], xmm0
mov dword [esp + 0x68], 0
mov dword [esp + 0x98], edx
lea edx, [esp + 0xb0]
mov dword [esp + 0x9c], 0x4631b0
mov dword [esp + 0xa0], edx
lea edx, [esp + 0x98]
mov dword [esp + 0xa4], 0x4631b0
mov dword [esp + 0x48], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x4c], 2
mov dword [esp + 0x84], edx
lea edx, [esp + 0x40]
mov dword [esp + 0x88], edx
lea edx, [esp + 0x84]
mov dword [esp + 0x8c], 0x81c698
mov dword [esp + 0x70], edx
lea edx, [esp + 0x70]
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x65bd09
cmp dword [0x94bcc0], 0
mov edi, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x65bced
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edi, [eax + edi + 8]
lea eax, [esp + 0x10]
push eax
push edi
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x65bd09
lea eax, [esp + 0x10]
push eax
push edi
call dword [esi + 0x2c]
add esp, 8
mov esi, dword [esp + 0xac]
mov edi, dword [esp + 0xb0]
jmp 0x65b9e9
sub edi, esi
mov dword [esp + 0xb4], edi
mov eax, dword [0x94bccc]
test eax, eax
je 0x65c24c
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x188]
test eax, eax
mov dword [esp + 0x80], eax
je 0x65c040
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x174]
test eax, eax
mov dword [esp + 0x30], eax
je 0x65c462
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x194]
mov ecx, dword [eax + 0x178]
test edx, edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edx
je 0x65c45b
mov eax, dword [eax + 0x198]
mov ecx, dword [esp + 0xb4]
mov ebx, dword [esp + 0x80]
xor edi, edi
mov dword [esp + 0x7c], eax
mov dword [esp + 0xc], ecx
nop
cmp dword [esp + 0x34], edi
jbe 0x65c462
mov edx, dword [esp + 0x30]
lea ecx, [edi + edi*2]
mov eax, dword [edx + ecx*4 + 4]
mov ecx, dword [edx + ecx*4 + 8]
cmp dword [esp + 0x7c], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
jbe 0x65c492
mov edx, dword [esp + 0x38]
imul esi, ecx, 0xf0
mov ecx, dword [edx + esi]
xor ecx, 3
or ecx, dword [edx + esi + 4]
je 0x65c492
add esi, dword [esp + 0x38]
cmp dword [esi + 0xcc], eax
jne 0x65c492
mov ecx, dword [esp + 0xc]
lea edx, [esi + 0x48]
mov dword [esp + 0x3c], ecx
mov eax, dword [0x94bccc]
test eax, eax
je 0x65be50
mov eax, dword [edx]
sub eax, ecx
jo 0x65c05e
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x4c]
sub eax, ecx
jo 0x65c05e
mov ecx, dword [esp + 0x80]
mov dword [esi + 0x4c], eax
cmp ecx, ebx
sbb edi, 0xffffffff
cmp ecx, ebx
sbb ebx, 0
cmp edi, ebx
jb 0x65bda0
jmp 0x65c040
movzx eax, byte [0x94a248]
mov ecx, dword [esp + 0xc]
test al, al
je 0x65be09
movzx eax, al
cmp eax, 1
je 0x65be8e
cmp eax, 2
je 0x65beea
mov ecx, 0x94a240
mov dword [esp + 4], edx
call fcn.007d3740
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0xc]
test al, al
je 0x65be09
movzx eax, al
cmp eax, 2
je 0x65beea
mov eax, dword [0x94a240]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
mov ecx, dword [esp + 0xc]
jne 0x65be09
mov dword [esp + 4], edx
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x65bed2
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 8]
dec eax
and eax, 0xfffffff8
lea edx, [eax + edx + 8]
mov eax, dword [esp + 0x2c]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 4]
test al, al
je 0x65be09
mov eax, dword [0x94a240]
mov dword [esp + 4], edx
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x65c43a
mov edx, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x58], 0x826cfc
mov dword [esp + 0x5c], 3
mov dword [esp + 0x68], 0
mov dword [esp + 0x98], edx
lea edx, [esp + 0x3c]
mov dword [esp + 0x9c], ecx
lea ecx, [esi + 0x4c]
movlps qword [esp + 0xa0], xmm0
mov dword [esp + 0xa8], 0
mov dword [esp + 0x40], edx
mov edx, dword [esp + 4]
mov dword [esp + 0x44], 0x4631b0
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], 0x470660
mov dword [esp + 0x50], ecx
lea edx, [esp + 0x84]
lea ecx, [eax + 0x1c]
mov dword [esp + 0x54], 0x470660
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], ecx
lea ecx, [esp + 0x40]
lea edx, [esp + 0x70]
mov dword [esp + 0x60], ecx
lea ecx, [esp + 0x98]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x64], 3
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov dword [esp + 0x84], ecx
lea ecx, [esp + 0x58]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], 0x81c698
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x65c033
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x65c002
mov eax, dword [ecx + 8]
dec eax
and eax, 0xfffffff8
lea edx, [eax + edx + 8]
lea eax, [esp + 0x10]
mov dword [esp + 0xb8], edx
push eax
push edx
mov dword [esp + 0x34], ecx
call dword [ecx + 0x28]
add esp, 8
test al, al
je 0x65c033
lea eax, [esp + 0x10]
push eax
push dword [esp + 0xbc]
mov eax, dword [esp + 0x34]
call dword [eax + 0x2c]
add esp, 8
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 4]
jmp 0x65be09
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 8]
mov byte [esi], 3
cmp byte [esp + 0x94], 0
jne 0x65c0af
jmp 0x65c09f
mov eax, dword [esp + 0x90]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 8]
mov word [eax], 0x101
mov dword [eax + 4], 3
mov dword [eax + 8], 0x81c308
mov dword [eax + 0xc], 0x93d1f8
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
cmp byte [esp + 0x94], 0
jne 0x65c0af
mov eax, dword [0x94bfbc]
test eax, 0x7fffffff
jne 0x65c424
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 [0x94a38c]
test al, al
je 0x65ba23
movzx eax, al
cmp eax, 1
je 0x65c0f4
cmp eax, 2
je 0x65c138
mov ecx, 0x94a384
call fcn.007d3740
test al, al
je 0x65ba23
movzx eax, al
cmp eax, 2
je 0x65c138
mov eax, dword [0x94a384]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x65ba23
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x65c128
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x65ba23
mov eax, dword [0x94a384]
mov edx, dword [eax + 0x20]
test edx, edx
je 0x65c4d8
mov esi, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x40], 0x8274f8
mov dword [esp + 0x44], 1
mov dword [esp + 0x50], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], edx
lea edx, [esp + 0x3c]
movlps qword [esp + 0x60], xmm0
mov dword [esp + 0x68], 0
mov dword [esp + 0x84], edx
lea edx, [esp + 0x84]
mov dword [esp + 0x88], 0x4631b0
mov dword [esp + 0x48], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x4c], 1
mov dword [esp + 0x70], edx
lea edx, [esp + 0x40]
mov dword [esp + 0x74], edx
lea edx, [esp + 0x70]
mov dword [esp + 0x78], 0x81c698
mov dword [esp + 0x98], edx
lea edx, [esp + 0x98]
mov dword [esp + 0x9c], 1
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x65ba23
cmp dword [0x94bcc0], 0
mov edi, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x65c22b
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edi, [eax + edi + 8]
lea ebx, [esp + 0x10]
push ebx
push edi
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x65ba23
push ebx
push edi
call dword [esi + 0x2c]
add esp, 8
jmp 0x65ba23
movzx eax, byte [0x94a380]
test al, al
je 0x65bd32
movzx eax, al
cmp eax, 1
je 0x65c282
cmp eax, 2
je 0x65c2c6
mov ecx, 0x94a378
call fcn.007d3740
test al, al
je 0x65bd32
movzx eax, al
cmp eax, 2
je 0x65c2c6
mov eax, dword [0x94a378]
mov ecx, dword [0x94bfb8]
cmp ecx, 2
jne 0x65bd32
cmp dword [0x94bcc0], 0
mov edx, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov ecx, dword [0x94bcc8]
je 0x65c2b6
mov esi, dword [ecx + 8]
dec esi
and esi, 0xfffffff8
lea edx, [esi + edx + 8]
push eax
push edx
call dword [ecx + 0x14]
add esp, 8
test al, al
je 0x65bd32
mov eax, dword [0x94a378]
mov edx, dword [eax + 0x20]
test edx, edx
je 0x65c4ec
mov esi, dword [eax + 0x1c]
movsd xmm0, qword [eax + 0x24]
mov dword [esp + 0x40], 0x8aa9cc
mov dword [esp + 0x44], 1
mov dword [esp + 0x50], 0
lea ecx, [eax + 0x1c]
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], edx
lea edx, [esp + 0xb4]
movlps qword [esp + 0x60], xmm0
mov dword [esp + 0x68], 0
mov dword [esp + 0x84], edx
lea edx, [esp + 0x84]
mov dword [esp + 0x88], 0x4631b0
mov dword [esp + 0x48], edx
lea edx, [esp + 0x58]
mov dword [esp + 0x4c], 1
mov dword [esp + 0x70], edx
lea edx, [esp + 0x40]
mov dword [esp + 0x74], edx
lea edx, [esp + 0x70]
mov dword [esp + 0x78], 0x81c698
mov dword [esp + 0x98], edx
lea edx, [esp + 0x98]
mov dword [esp + 0x9c], 1
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 1
mov eax, dword [0x94bfb8]
cmp eax, 2
jne 0x65bd32
cmp dword [0x94bcc0], 0
mov edi, dword [str.SetGlobalDefaultErrora_global_default_trace_dispatcher_has_already_been_set]
mov esi, dword [0x94bcc8]
je 0x65c3bc
mov eax, dword [esi + 8]
dec eax
and eax, 0xfffffff8
lea edi, [eax + edi + 8]
lea ebx, [esp + 0x10]
push ebx
push edi
call dword [esi + 0x28]
add esp, 8
test al, al
je 0x65bd32
push ebx
push edi
call dword [esi + 0x2c]
add esp, 8
jmp 0x65bd32
call fcn.007d1b30
xor al, 1
mov dword [esp + 0x94], eax
movzx eax, byte [edi + 0xc]
test al, al
je 0x65b994
mov eax, dword [esp + 0x94]
mov dword [esp + 0x10], ebx
mov ecx, 0x93b384
mov edx, 0x2b
mov byte [esp + 0x14], al
lea eax, [esp + 0x10]
push 0x8ab000
push 0x8abf8c
push eax
call fcn.007c1f60
call fcn.007d1b30
test al, al
jne 0x65c0af
mov byte [edi + 0xc], 1
jmp 0x65c0af
mov ecx, 0x8a6758
mov edx, 0x22
push 0x826cd8
call fcn.007c2000
cmp dword [esp + 0x30], 0
je 0x65c462
mov eax, dword [esp + 0x7c]
jmp 0x65c484
cmp dword [esp + 0x34], 0
jne 0x65c480
mov ecx, 0x8aac84
call fcn.007c1fe0
mov ecx, 0x8a6758
mov edx, 0x22
push 0x827478
call fcn.007c2000
mov eax, dword [esp + 0x30]
movsd xmm0, qword [eax + 4]
shufps xmm0, xmm0, 0xe1
movlps qword [esp + 0x58], xmm0
lea ecx, [esp + 0x40]
lea eax, [esp + 0x5c]
mov dword [esp + 0x10], 0x828150
mov dword [esp + 0x14], 1
mov dword [esp + 0x20], 0
mov edx, 0x828168
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x10]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], 0x47c5e0
mov dword [esp + 0x1c], 1
call fcn.007c1b50
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8274c8
call fcn.007c2000
mov ecx, 0x8a6758
mov edx, 0x22
push 0x8274b8
call fcn.007c2000